<?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>88692</bug_id>
          
          <creation_ts>2012-06-08 16:42:55 -0700</creation_ts>
          <short_desc>DFG should be able to set watchpoints on global variables</short_desc>
          <delta_ts>2012-06-13 13:55:14 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>88976</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>milian.wolff</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>645131</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-08 16:42:55 -0700</bug_when>
    <thetext>Work in progress patch on the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645132</commentid>
    <comment_count>1</comment_count>
      <attachid>146663</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-08 16:45:50 -0700</bug_when>
    <thetext>Created attachment 146663
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645237</commentid>
    <comment_count>2</comment_count>
      <attachid>146684</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-08 22:15:21 -0700</bug_when>
    <thetext>Created attachment 146684
more things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645252</commentid>
    <comment_count>3</comment_count>
      <attachid>146687</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-08 23:33:03 -0700</bug_when>
    <thetext>Created attachment 146687
did some more stuff

Messed around with the interface between global variable creation, global variable access, and watch pointing.  It&apos;s starting to make sense.

Still more code to write, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645384</commentid>
    <comment_count>4</comment_count>
      <attachid>146716</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-09 12:00:30 -0700</bug_when>
    <thetext>Created attachment 146716
even more

I just have to link together a few more things and it should start working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645437</commentid>
    <comment_count>5</comment_count>
      <attachid>146721</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-09 17:32:16 -0700</bug_when>
    <thetext>Created attachment 146721
more code

Still more stuff to do but it&apos;s getting there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645616</commentid>
    <comment_count>6</comment_count>
      <attachid>146747</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-10 13:28:50 -0700</bug_when>
    <thetext>Created attachment 146747
it might be done

Now I need to compile it.  And test it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645620</commentid>
    <comment_count>7</comment_count>
      <attachid>146749</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-10 14:11:50 -0700</bug_when>
    <thetext>Created attachment 146749
omg it compiles!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645649</commentid>
    <comment_count>8</comment_count>
      <attachid>146758</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-10 17:11:12 -0700</bug_when>
    <thetext>Created attachment 146758
it does things

It looks like I can set a watchpoint on a global variable.  Note I said &quot;set&quot;, not &quot;fire&quot;.  I&apos;m guessing it&apos;ll crash in hilarious ways if I actually try to fire a watchpoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645651</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-10 17:12:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=146758) [details]
&gt; it does things
&gt; 
&gt; It looks like I can set a watchpoint on a global variable.  Note I said &quot;set&quot;, not &quot;fire&quot;.  I&apos;m guessing it&apos;ll crash in hilarious ways if I actually try to fire a watchpoint.

Actually, it can fire the watchpoints as well.  Fantastic!

Still have to do way more tests though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646576</commentid>
    <comment_count>10</comment_count>
      <attachid>146996</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-11 20:07:06 -0700</bug_when>
    <thetext>Created attachment 146996
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647235</commentid>
    <comment_count>11</comment_count>
      <attachid>146996</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-12 13:31:01 -0700</bug_when>
    <thetext>Comment on attachment 146996
the patch

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

r=me, please remember to ARM before landing.

&gt; Source/JavaScriptCore/assembler/RepatchBuffer.h:125
&gt; +    

Boo.

&gt; Source/JavaScriptCore/assembler/X86Assembler.h:1737
&gt; +        // FIXME: need to know the size of the last watchpoint as well.

No longer true.

&gt; Source/JavaScriptCore/assembler/X86Assembler.h:1739
&gt; +        while (UNLIKELY(static_cast&lt;int&gt;(result.m_offset) &lt; m_indexOfTailOfLastWatchpoint)) {
&gt; +            nop();

I think the ARMv7 code will also need to nop() pad in front of jumps, because of this case:

before jump relaxation:
watch_point
big jump
label:

after jump relaxation:
watch_point
small jump
label: [now inside the watchpoint]

&gt; Source/JavaScriptCore/assembler/X86Assembler.h:1823
&gt; +        int8_t *ptr = reinterpret_cast&lt;int8_t*&gt;(instructionStart);
&gt; +        int8_t *dstPtr = reinterpret_cast&lt;int8_t*&gt;(to);
&gt; +        intptr_t distance = (intptr_t)(dstPtr - (ptr + 5));

Move the &quot;*&quot;, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647282</commentid>
    <comment_count>12</comment_count>
      <attachid>147154</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-12 14:00:41 -0700</bug_when>
    <thetext>Created attachment 147154
rebased patch

Putting up for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647286</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 14:02:44 -0700</bug_when>
    <thetext>Attachment 147154 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.h:103:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:120:  The parameter name &quot;watchpointSet&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/SymbolTable.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/SymbolTable.h:69:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WTF/wtf/SegmentedVector.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:805:  cmpb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:962:  testb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:583:  The parameter name &quot;constantMode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:583:  The parameter name &quot;functionMode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/bytecode/Watchpoint.h:52:  The parameter name &quot;linkBuffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 in 62 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>647320</commentid>
    <comment_count>14</comment_count>
      <attachid>147154</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-12 14:18:33 -0700</bug_when>
    <thetext>Comment on attachment 147154
rebased patch

Attachment 147154 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12945666</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647353</commentid>
    <comment_count>15</comment_count>
      <attachid>147154</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-12 14:40:02 -0700</bug_when>
    <thetext>Comment on attachment 147154
rebased patch

Attachment 147154 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12939819</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647484</commentid>
    <comment_count>16</comment_count>
      <attachid>147193</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-12 16:52:36 -0700</bug_when>
    <thetext>Created attachment 147193
the patch

Fixed Mac build issues.  I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647489</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 16:54:46 -0700</bug_when>
    <thetext>Attachment 147193 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.h:103:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:120:  The parameter name &quot;watchpointSet&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/SymbolTable.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/SymbolTable.h:69:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WTF/wtf/SegmentedVector.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:805:  cmpb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:962:  testb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:583:  The parameter name &quot;constantMode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:583:  The parameter name &quot;functionMode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 9 in 60 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>647511</commentid>
    <comment_count>18</comment_count>
      <attachid>147193</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-12 17:15:55 -0700</bug_when>
    <thetext>Comment on attachment 147193
the patch

Attachment 147193 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12944699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647513</commentid>
    <comment_count>19</comment_count>
      <attachid>147193</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-12 17:17:36 -0700</bug_when>
    <thetext>Comment on attachment 147193
the patch

Attachment 147193 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12951098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647526</commentid>
    <comment_count>20</comment_count>
      <attachid>147193</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-12 17:31:10 -0700</bug_when>
    <thetext>Comment on attachment 147193
the patch

Attachment 147193 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12948609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647540</commentid>
    <comment_count>21</comment_count>
      <attachid>147193</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-12 17:55:53 -0700</bug_when>
    <thetext>Comment on attachment 147193
the patch

Attachment 147193 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12941797</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647563</commentid>
    <comment_count>22</comment_count>
      <attachid>147207</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-12 18:27:47 -0700</bug_when>
    <thetext>Created attachment 147207
backup

Still working on build systems, ports, crashes, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647702</commentid>
    <comment_count>23</comment_count>
      <attachid>147235</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-12 22:41:14 -0700</bug_when>
    <thetext>Created attachment 147235
real patch

Still doing more things but it&apos;s starting to work.

Unlike the previous patch, this one actually includes all of the files I&apos;ve added!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647708</commentid>
    <comment_count>24</comment_count>
      <attachid>147238</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-12 22:49:24 -0700</bug_when>
    <thetext>Created attachment 147238
ummmm please apply?

Rebased the patch in the hopes that the bots can apply it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647711</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 22:54:52 -0700</bug_when>
    <thetext>Attachment 147238 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.h:103:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:120:  The parameter name &quot;watchpointSet&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/SymbolTable.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/SymbolTable.h:69:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WTF/wtf/SegmentedVector.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:805:  cmpb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:962:  testb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:583:  The parameter name &quot;constantMode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:583:  The parameter name &quot;functionMode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/bytecode/Watchpoint.h:52:  The parameter name &quot;linkBuffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 in 68 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>647731</commentid>
    <comment_count>26</comment_count>
      <attachid>147238</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-12 23:28:48 -0700</bug_when>
    <thetext>Comment on attachment 147238
ummmm please apply?

Attachment 147238 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12941861</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647748</commentid>
    <comment_count>27</comment_count>
      <attachid>147245</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-13 00:04:58 -0700</bug_when>
    <thetext>Created attachment 147245
attempting to fix Win</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647751</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 00:08:54 -0700</bug_when>
    <thetext>Attachment 147245 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.h:103:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:120:  The parameter name &quot;watchpointSet&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/SymbolTable.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/SymbolTable.h:69:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WTF/wtf/SegmentedVector.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:805:  cmpb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:962:  testb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 7 in 68 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>647771</commentid>
    <comment_count>29</comment_count>
      <attachid>147245</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-13 00:28:26 -0700</bug_when>
    <thetext>Comment on attachment 147245
attempting to fix Win

Attachment 147245 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12939939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647773</commentid>
    <comment_count>30</comment_count>
      <attachid>147252</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-13 00:34:27 -0700</bug_when>
    <thetext>Created attachment 147252
attempt to fix the compiler&apos;s failed attempts to be smart</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647776</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 00:37:38 -0700</bug_when>
    <thetext>Attachment 147252 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.h:103:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:120:  The parameter name &quot;watchpointSet&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/SymbolTable.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/SymbolTable.h:69:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WTF/wtf/SegmentedVector.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:805:  cmpb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:962:  testb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 7 in 68 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>647785</commentid>
    <comment_count>32</comment_count>
      <attachid>147252</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-13 01:00:53 -0700</bug_when>
    <thetext>Comment on attachment 147252
attempt to fix the compiler&apos;s failed attempts to be smart

Attachment 147252 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12941882</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647787</commentid>
    <comment_count>33</comment_count>
      <attachid>147255</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-13 01:03:00 -0700</bug_when>
    <thetext>Created attachment 147255
fix link errors on Windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647793</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 01:06:39 -0700</bug_when>
    <thetext>Attachment 147255 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.h:103:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:120:  The parameter name &quot;watchpointSet&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/SymbolTable.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/SymbolTable.h:69:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WTF/wtf/SegmentedVector.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:805:  cmpb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:962:  testb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 7 in 69 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>647801</commentid>
    <comment_count>35</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-13 01:21:21 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/120172</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647864</commentid>
    <comment_count>36</comment_count>
    <who name="Milian Wolff">milian.wolff</who>
    <bug_when>2012-06-13 03:33:13 -0700</bug_when>
    <thetext>This commit breaks compilation on platforms where the ENALBE_JIT and hence ENABLE_ASSEMBLER is false (e.g. QNX).

The reason is that MacroAssembler::Label is used in Watchpoint.h, but the former is not defined on such platforms (see dummy definition at the end of MacroAssembler in MacroAssembler.h).

Should I create a new bug report for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648371</commentid>
    <comment_count>37</comment_count>
      <attachid>147393</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-13 12:41:43 -0700</bug_when>
    <thetext>Created attachment 147393
more platform spoonfeeding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648379</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 12:46:43 -0700</bug_when>
    <thetext>Attachment 147393 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.h:103:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:120:  The parameter name &quot;watchpointSet&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/SymbolTable.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/SymbolTable.h:69:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WTF/wtf/SegmentedVector.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WTF/wtf/Assertions.h:386:  UNREACHABLE_FOR_PLATFORM is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:805:  cmpb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:962:  testb_im is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 8 in 72 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>648434</commentid>
    <comment_count>39</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-13 13:55:14 -0700</bug_when>
    <thetext>Relanded in http://trac.webkit.org/changeset/120244</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146663</attachid>
            <date>2012-06-08 16:45:50 -0700</date>
            <delta_ts>2012-06-08 22:15:21 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>globalwatch_patch_1.diff</filename>
            <type>text/plain</type>
            <size>33106</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5ODc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMiBA
QAorMjAxMi0wNi0wOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFdvcmsgaW4gcHJvZ3Jlc3MhCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OndhdGNocG9pbnRMYWJlbCk6CisgICAgICAgICog
YXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cmVwbGFjZVdp
dGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNy
b0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1heEp1
bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNI
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cmVwbGFjZVdpdGhKdW1wKToK
KyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmVwbGFj
ZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODY6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2
XzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1heEp1bXBSZXBsYWNl
bWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAg
IChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdp
dGhKdW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6WDg2QXNzZW1ibGVyKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpsYWJlbCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptYXhKdW1w
UmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVj
dGlvbkZvcm1hdHRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9p
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdhdGNocG9pbnQ6On5XYXRjaHBvaW50KToKKyAgICAg
ICAgKFdhdGNocG9pbnQ6OmZpcmUpOgorICAgICAgICAoV2F0Y2hwb2ludFNldDo6V2F0Y2hwb2lu
dFNldCk6CisgICAgICAgIChXYXRjaHBvaW50U2V0Ojp+V2F0Y2hwb2ludFNldCk6CisgICAgICAg
IChXYXRjaHBvaW50U2V0OjphZGQpOgorICAgICAgICAoV2F0Y2hwb2ludFNldDo6bm90aWZ5V3Jp
dGVTbG93KToKKyAgICAgICAgKFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6V2F0Y2hwb2lu
dCk6CisgICAgICAgIChXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNl
dDo6bm90aWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGRyZXNzT2ZJ
c1dhdGNoZWQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAg
ICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoU3ltYm9sVGFibGVFbnRyeSk6
CisgICAgICAgIChGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6
RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzTnVsbCk6Cisg
ICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmdldEluZGV4KToKKyAgICAgICAg
KEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNSZWFkT25seSk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6OlN5bWJvbFRhYmxlRW50cnkpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5Ojp+U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRh
YmxlRW50cnk6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Omlz
TnVsbCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmdldEluZGV4KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVu
dHJ5Ojppc1JlYWRPbmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Y291bGRC
ZVdhdGNoZWQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpzZXRDb3VsZEJlV2F0
Y2hlZCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmFkZHJlc3NPZklzV2F0Y2hl
ZCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmFkZFdhdGNocG9pbnQpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZSk6CisgICAgICAgIChGYXRF
bnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhdEVudHJ5OjpGYXRFbnRy
eSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzRmF0KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6ZmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJs
ZUVudHJ5OjppbmZsYXRlKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Yml0cyk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmZyZWVGYXRFbnRyeSk6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OnBhY2spOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJs
ZUVudHJ5Ojppc1ZhbGlkSW5kZXgpOgorCiAyMDEyLTA2LTA4ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHJvbGwgb3V0IHIx
MTk3OTUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgogICAgIC8vIFRoZSBmb2xsb3dpbmcgdHlw
ZXMgYXJlIHVzZWQgYXMgb3BlcmFuZHMgdG8gTWFjcm9Bc3NlbWJsZXIgb3BlcmF0aW9ucywKICAg
ICAvLyBkZXNjcmliaW5nIGltbWVkaWF0ZSAgYW5kIG1lbW9yeSBvcGVyYW5kcyB0byB0aGUgaW5z
dHJ1Y3Rpb25zIHRvIGJlIHBsYW50ZWQuCiAKLQogICAgIGVudW0gU2NhbGUgewogICAgICAgICBU
aW1lc09uZSwKICAgICAgICAgVGltZXNUd28sCkBAIC01NTksNiArNTU4LDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIExhYmVsKHRoaXMpOwogICAgIH0KICAgICAKKyAgICBMYWJlbCB3YXRj
aHBvaW50TGFiZWwoSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRjaHBvaW50KGp1bXBSZXBsYWNlbWVu
dFR5cGUpOworICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CisgICAgfQorICAgIAogICAgIExh
YmVsIGFsaWduKCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFsaWduKDE2KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIu
aAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
c3NlbWJsZXJCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksMTEgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKKyAgICBlbnVtIEp1bXBSZXBsYWNlbWVudFR5cGUgeworICAgICAgICBSZXBs
YWNlV2l0aExvY2FsSnVtcCwKKyAgICAgICAgUmVwbGFjZVdpdGhGYXJKdW1wCisgICAgfTsKKyAg
ICAKICAgICBzdHJ1Y3QgQXNzZW1ibGVyTGFiZWwgewogICAgICAgICBBc3NlbWJsZXJMYWJlbCgp
CiAgICAgICAgICAgICA6IG1fb2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkod29ya2luZyBjb3B5KQpAQCAtMTAx
MCw2ICsxMDEwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihBUk1Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwu
ZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhK
dW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVs
IGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisg
ICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQVJNQXNzZW1ibGVyOjpDb25kaXRpb24gQVJNQ29uZGl0
aW9uKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2
aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0NSw2ICs1NDUsMTcgQEAgcHJvdGVj
dGVkOgogICAgICAgICB9CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1w
KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRl
c3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
ICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCiBwcml2YXRlOgogICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBBcm1BZGRyZXNz
IGFkZHJlc3MpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODY4LDYgKzE4NjgsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVu
Y3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KE1JUFNBc3NlbWJsZXI6OnJlYWRD
YWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENv
ZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxh
Y2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCiBwcml2YXRlOgogICAgIC8vIElmIG1fZml4ZWRXaWR0aCBp
cyB0cnVlLCB3ZSB3aWxsIGdlbmVyYXRlIGEgZml4ZWQgbnVtYmVyIG9mIGluc3RydWN0aW9ucy4K
ICAgICAvLyBPdGhlcndpc2UsIHdlIGNhbiBlbWl0IGFueSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25z
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNI
NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJTSDQuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcxLDYg
KzE5NzEsMTcgQEAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgcwogICAg
ICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KFNINEFz
c2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1
Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBTSDRB
c3NlbWJsZXI6OkNvbmRpdGlvbiBTSDRDb25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAt
MTk4LDYgKzE5OCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2FsbC5kYXRh
TG9jYXRpb24oKSkgKyBvZmZzZXQpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNl
V2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9u
TGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICAvLyBOT1RFOiBvbiBYODYtMzIgdGhl
IHNjcmF0Y2ggcmVnaXN0ZXIgaXMgdW51c2VkLgorICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxh
Y2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0
aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCksIFJlZ2lzdGVySUQ6OmVheCk7CisgICAgfQorICAgIAor
ICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAg
fQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOwogICAgIGZyaWVuZCBj
bGFzcyBSZXBhdGNoQnVmZmVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTE5ODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01MjcsNiArNTI3LDE2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBS
ZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gc2NyYXRjaFJl
Z2lzdGVyOyB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9u
TGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24sIEp1
bXBSZXBsYWNlbWVudFR5cGUganVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisgICAgICAgIFg4
NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSwgc2NyYXRjaFJlZ2lzdGVy
LCBqdW1wUmVwbGFjZW1lbnRUeXBlID09IFJlcGxhY2VXaXRoTG9jYWxKdW1wKTsKKyAgICB9Cisg
ICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKEp1bXBSZXBs
YWNlbWVudFR5cGUganVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBY
ODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoanVtcFJlcGxhY2VtZW50VHlwZSA9
PSBSZXBsYWNlV2l0aExvY2FsSnVtcCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBMaW5rQnVmZmVyOwogICAgIGZyaWVuZCBjbGFzcyBSZXBhdGNoQnVmZmVyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRj
aEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDExIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJlbGlua05lYXJDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywg
Q29kZUxvY2F0aW9uTGFiZWwobmV3Q2FsbGVlRnVuY3Rpb24pKTsKICAgICB9CisgICAgCisgICAg
dm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwg
Q29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQsIGRlc3RpbmF0aW9uKTsKKyAg
ICB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCogbV9zdGFydDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTE5ODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjQ3LDYgKzI0Nyw4IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAKICAgICBYODZBc3Nl
bWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAg
ICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAgICB7CiAgICAg
fQogCkBAIC0xNzAyLDEwICsxNzA0LDI2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBtX2Zvcm1hdHRlci5jb2RlU2l6ZSgpOwogICAgIH0KKyAgICAKKyAgICBBc3NlbWJsZXJMYWJl
bCBsYWJlbEZvcldhdGNocG9pbnQoSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRU
eXBlKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9mb3JtYXR0ZXIu
bGFiZWwoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBtX2luZGV4T2ZMYXN0V2F0
Y2hwb2ludCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsKCk7CisgICAgICAgIG1faW5kZXhP
Zkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0OworICAgICAgICBtX2luZGV4T2ZUYWls
T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNp
emUoanVtcFJlcGxhY2VtZW50VHlwZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQog
CiAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZm9y
bWF0dGVyLmxhYmVsKCk7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fZm9ybWF0
dGVyLmxhYmVsKCk7CisgICAgICAgIC8vIEZJWE1FOiBuZWVkIHRvIGtub3cgdGhlIHNpemUgb2Yg
dGhlIGxhc3Qgd2F0Y2hwb2ludCBhcyB3ZWxsLgorICAgICAgICB3aGlsZSAoVU5MSUtFTFkocmVz
dWx0Lm1fb2Zmc2V0IDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAg
ICAgICBub3AoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBBc3NlbWJsZXJM
YWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQpAQCAtMTc4Miw2ICsxODAwLDQzIEBAIHB1YmxpYzoK
ICAgICAgICAgc2V0UG9pbnRlcih3aGVyZSwgdmFsdWUpOwogICAgIH0KICAgICAKKyAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8s
IFJlZ2lzdGVySUQgc2NyYXRjaCwgSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRU
eXBlKQorICAgIHsKKyAgICAgICAgaW50OF90ICpwdHIgPSByZWludGVycHJldF9jYXN0PGludDhf
dCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBpbnQ4X3QgKmRzdFB0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50OF90Kj4odG8pOworICAgICAgICBpbnRwdHJfdCBkaXN0YW5jZSA9IChpbnRw
dHJfdCkoZHN0UHRyIC0gKHB0ciArIDUpKTsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBpZiAo
ZGlzdGFuY2UgPiBJTlQzMl9NQVggfHwgZGlzdGFuY2UgPCBJTlQzMl9NSU4pIHsKKyAgICAgICAg
ICAgIEFTU0VSVChqdW1wUmVwbGFjZW1lbnRUeXBlID09IFJlcGxhY2VXaXRoRmFySnVtcCk7Cisg
ICAgICAgICAgICAvLyBtb3ZxX2k2NHIgaW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIHB0clswXSA9
IFBSRV9SRVggfCAoMTw8MykgfCAoc2NyYXRjaD4+Myk7CisgICAgICAgICAgICBwdHJbMV0gPSBP
UF9NT1ZfRUFYSXYgKyAoc2NyYXRjaCAmIDcpOworICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nh
c3Q8aW50NjRfdCo+KHB0ciszKSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KHRvKSk7CisgICAgICAgICAgICBwdHIgKz0gMTA7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIC8vIGptcF9yIGluc3RydWN0aW9uCisgICAgICAgICAgICBpZiAoc2NyYXRj
aCA+PSBYODZSZWdpc3RlcnM6OnI4KSB7CisgICAgICAgICAgICAgICAgcHRyWzBdID0gUFJFX1JF
WCB8IChzY3JhdGNoPj4zKTsKKyAgICAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHB0clswXSA9IE9QX0dST1VQNV9FdjsKKyAgICAgICAgICAgIHB0clsxXSA9
ICgzPDw2KSB8IChHUk9VUDVfT1BfSk1QTjw8MykgfCAoc2NyYXRjaCAmIDcpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcHRyWzBdID0gT1BfSk1QX3Jl
bDMyOworICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocHRyICsgMSkgPSBzdGF0
aWNfY2FzdDxpbnQzMl90PihkaXN0YW5jZSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZShKdW1wUmVwbGFjZW1lbnRUeXBlIGp1bXBSZXBs
YWNlbWVudFR5cGUpCisgICAgeworI2lmIENQVShYODZfNjQpCisgICAgICAgIGlmIChqdW1wUmVw
bGFjZW1lbnRUeXBlID09IFJlcGxhY2VXaXRoRmFySnVtcCkKKyAgICAgICAgICAgIHJldHVybiAx
MzsKKyNlbmRpZgorICAgICAgICByZXR1cm4gNTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIHZv
aWQqIHJlYWRQb2ludGVyKHZvaWQqIHdoZXJlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPih3aGVyZSlbLTFdOwpAQCAtMjMzOSw2ICsyMzk0LDggQEAgcHJp
dmF0ZToKIAogICAgICAgICBBc3NlbWJsZXJCdWZmZXIgbV9idWZmZXI7CiAgICAgfSBtX2Zvcm1h
dHRlcjsKKyAgICBpbnQgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQ7CisgICAgaW50IG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2F0Y2hwb2ludC5oIgorCitXYXRjaHBvaW50Ojp+V2F0Y2hwb2ludCgpCit7CisgICAgaWYg
KGlzT25MaXN0KCkpCisgICAgICAgIHJlbW92ZSgpOworfQorCit2b2lkIFdhdGNocG9pbnQ6OmZp
cmUoKQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAobV9zb3VyY2UsIG1f
ZGVzdGluYXRpb24pOworICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICByZW1vdmUoKTsKK30K
KworV2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldCgpCisgICAgOiBtX2lzV2F0Y2hlZCgwKQor
eworfQorCitXYXRjaHBvaW50U2V0Ojp+V2F0Y2hwb2ludFNldCgpCit7CisgICAgLy8gRmlyZSBh
bGwgd2F0Y2hwb2ludHMuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgaXMgcG9zc2libGUs
IHNheSB3aXRoCisgICAgLy8gc3RydWN0dXJlIHdhdGNocG9pbnRzLCBmb3IgdGhlIHdhdGNocG9p
bnQgc2V0IG93bmVyIHRvIGRpZSB3aGlsZSB0aGUKKyAgICAvLyB3YXRjaHBvaW50IG93bmVycyBh
cmUgc3RpbGwgbGl2ZS4KKyAgICBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKK30KKwordm9pZCBXYXRj
aHBvaW50U2V0OjphZGQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKK3sKKyAgICBtX3NldC5wdXNo
KHdhdGNwb2ludCk7CisgICAgbV9pc1dhdGNoZWQgPSB0cnVlOworfQorCit2b2lkIFdhdGNocG9p
bnRTZXQ6Om5vdGlmeVdyaXRlU2xvdygpCit7CisgICAgQVNTRVJUKG1faXNXYXRjaGVkKTsKKyAg
ICAKKyAgICBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKKyAgICBtX2lzV2F0Y2hlZCA9IGZhbHNlOwor
fQorCit2b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cygpCit7CisgICAgd2hp
bGUgKCFtX3NldC5pc0VtcHR5KCkpCisgICAgICAgIG1fc2V0LmJlZ2luKCktPmZpcmUoKTsKK30K
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXYXRjaHBvaW50X2gKKyNk
ZWZpbmUgV2F0Y2hwb2ludF9oCisKKyNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdhdGNocG9pbnQgOiBwdWJsaWMgQmFzaWNSYXdT
ZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdhdGNo
cG9pbnQpOworcHVibGljOgorICAgIFdhdGNocG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgc291cmNl
LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICAgICAgOiBtX3NvdXJjZShzb3Vy
Y2UpCisgICAgICAgICwgbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICB7CisgICAgfQor
ICAgIAorICAgIH5XYXRjaHBvaW50KCk7CisgICAgCisgICAgdm9pZCBmaXJlKCk7CisgICAgCitw
cml2YXRlOgorICAgIENvZGVMb2NhdGlvbkxhYmVsIG1fc291cmNlOworICAgIENvZGVMb2NhdGlv
bkxhYmVsIG1fZGVzdGluYXRpb247Cit9OworCitjbGFzcyBXYXRjaHBvaW50U2V0IDogcHVibGlj
IFJlZkNvdW50ZWQ8V2F0Y2hwb2ludFNldD4geworcHVibGljOgorICAgIFdhdGNocG9pbnRTZXQo
KTsKKyAgICB+V2F0Y2hwb2ludFNldCgpOworICAgIAorICAgIHZvaWQgYWRkKFdhdGNocG9pbnQq
KTsKKyAgICB2b2lkIG5vdGlmeVdyaXRlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9pc1dhdGNo
ZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5vdGlmeVdyaXRlU2xvdygpOworICAg
IH0KKyAgICAKKyAgICBib29sKiBhZGRyZXNzT2ZJc1dhdGNoZWQoKSB7IHJldHVybiAmbV9pc1dh
dGNoZWQ7IH0KKyAgICAKKyAgICB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOyAvLyBDYWxsIG9ubHkg
aWYgeW91J3ZlIGNoZWNrZWQgaXNXYXRjaGVkLgorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIGZp
cmVBbGxXYXRjaHBvaW50cygpOworICAgIAorICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXYXRjaHBv
aW50PiBtX3NldDsKKyAgICBib29sIG1faXNXYXRjaGVkOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBXYXRjaHBvaW50X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsMTAgKzIxNiwxMiBAQCBi
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoY29uc3QgSWRlCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQpCitpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEds
b2JhbFZhcigKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQ29uc3RhbnRNb2RlIGNvbnN0
YW50TW9kZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
ZnVuY3Rpb25Nb2RlKTsKICAgICBpbnQgaW5kZXggPSBzeW1ib2xUYWJsZSgpLnNpemUoKTsKLSAg
ICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0YW50ID8gUmVhZE9ubHkg
OiAwKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCAoY29uc3RhbnRNb2Rl
ID09IElzQ29uc3RhbnQpID8gUmVhZE9ubHkgOiAwKTsKICAgICBTeW1ib2xUYWJsZTo6QWRkUmVz
dWx0IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwog
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIGluZGV4ID0gcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQuZ2V0SW5kZXgoKTsKQEAgLTI5MiwxNCArMjk0LDE3IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm8KICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZW1v
dmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24tPmlkZW50KCkpOyAvLyBOZXdseSBkZWNs
YXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4aXN0aW5nIHByb3BlcnRpZXMuCiAKICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBtYWtlRnVuY3Rpb24oZXhl
YywgZnVuY3Rpb24pLCBzY29wZUNoYWluKTsKLSAgICAgICAgaW50IGluZGV4ID0gYWRkR2xvYmFs
VmFyKGZ1bmN0aW9uLT5pZGVudCgpLCBmYWxzZSk7CisgICAgICAgIGludCBpbmRleCA9IGFkZEds
b2JhbFZhcihmdW5jdGlvbi0+aWRlbnQoKSwgSXNWYXJpYWJsZSwgSXNGdW5jdGlvbik7CiAgICAg
ICAgIGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChpbmRleCkuc2V0KCptX2dsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmFyU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzUHJv
cGVydHkoZXhlYywgKnZhclN0YWNrW2ldLmZpcnN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBhZGRHbG9iYWxWYXIoKnZhclN0YWNrW2ldLmZpcnN0LCB2YXJTdGFja1tpXS5zZWNv
bmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCk7CisgICAgICAgIGFkZEdsb2JhbFZh
cigKKyAgICAgICAgICAgICp2YXJTdGFja1tpXS5maXJzdCwKKyAgICAgICAgICAgICh2YXJTdGFj
a1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCkgPyBJc0NvbnN0YW50
IDogSXNWYXJpYWJsZSwKKyAgICAgICAgICAgIE5vdEZ1bmN0aW9uKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTc0
LDcgKzU3NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgLy8gUmV0
dXJucyB0aGUgaW5kZXggb2YgdGhlIGFkZGVkIHZhci4KLSAgICAgICAgaW50IGFkZEdsb2JhbFZh
cihjb25zdCBJZGVudGlmaWVyJiwgYm9vbCBpc0NvbnN0YW50KTsKKyAgICAgICAgZW51bSBDb25z
dGFudE1vZGUgeyBJc0NvbnN0YW50LCBJc1ZhcmlhYmxlIH07CisgICAgICAgIGVudW0gRnVuY3Rp
b25Nb2RlIHsgSXNGdW5jdGlvbiwgTm90RnVuY3Rpb24gfTsKKyAgICAgICAgaW50IGFkZEdsb2Jh
bFZhcihjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RhbnRNb2RlIGNvbnN0YW50TW9kZSwgRnVuY3Rp
b25Nb2RlIGZ1bmN0aW9uTW9kZSk7CiAKICAgICAgICAgdm9pZCBhZGRQYXJhbWV0ZXIoY29uc3Qg
SWRlbnRpZmllciYsIGludCBwYXJhbWV0ZXJJbmRleCk7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAko
cmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KIGlubGluZSBib29sIHN5bWJvbFRhYmxl
R2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IG9iamVjdC0+c3lt
Ym9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYg
KGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgc2xvdC5zZXRWYWx1
ZShvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwpAQCAtOTYsNyAr
OTYsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAgICBTeW1ib2xUYWJsZU9iamVj
dFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90LAogICAgIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gb2JqZWN0LT5z
eW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBp
ZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzbG90LnNldFZh
bHVlKG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDEx
OTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNp
bmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4K
IApAQCAtNDMsMzkgKzQ0LDEwNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBmb3VyIGJpdHMg
YWxsIHNldCBvciBhbGwgdW5zZXQuCiAKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7Cisg
ICAgICAgIC8vIFVzZSB0aGUgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBjbGFzcywgZWl0aGVyIHZp
YSBpbXBsaWNpdCBjYXN0IG9yIGJ5IGNhbGxpbmcKKyAgICAgICAgLy8gZ2V0RmFzdCgpLCB3aGVu
IHlvdSAoMSkgb25seSBjYXJlIGFib3V0IGlzTnVsbCgpLCBnZXRJbmRleCgpLCBhbmQgaXNSZWFk
T25seSgpLAorICAgICAgICAvLyBhbmQgKDIpIHlvdSBhcmUgaW4gYSBob3QgcGF0aCB3aGVyZSB5
b3UgbmVlZCB0byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIHRpbWVzCisgICAgICAgIC8vIHRoYXQg
eW91IGJyYW5jaCBvbiBpc0ZhdCgpIHdoZW4gZ2V0dGluZyB0aGUgYml0cygpLgorICAgICAgICBj
bGFzcyBGYXN0IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgRmFzdCgpCisgICAgICAg
ICAgICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0KGNvbnN0IFN5bWJvbFRhYmxl
RW50cnkmIGVudHJ5KQorICAgICAgICAgICAgICAgIDogbV9iaXRzKGVudHJ5LmJpdHMoKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29sIGlz
TnVsbCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFtX2Jp
dHM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBnZXRJbmRleCgpIGNvbnN0Cisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9i
aXRzID4+IEZsYWdCaXRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBi
b29sIGlzUmVhZE9ubHkoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBtX2JpdHMgJiBSZWFkT25seUZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIGludHB0cl90IG1fYml0czsKKyAgICAgICAg
fTsKKwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KCkKICAgICAgICAgICAgIDogbV9iaXRzKDAp
CiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGlu
ZGV4KQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgZmFsc2Us
IGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAg
cGFjayhpbmRleCwgYXR0cmlidXRlcyAmIFJlYWRPbmx5LCBhdHRyaWJ1dGVzICYgRG9udEVudW0p
OwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB+U3ltYm9sVGFibGVFbnRyeSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQor
ICAgICAgICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgeworICAgICAgICAgICAgKnRoaXMgPSBv
dGhlcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgb3Bl
cmF0b3I9KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW90aGVyLmlzRmF0KCkpIHsKKyAgICAgICAgICAgICAgICBmcmVlRmF0RW50cnko
KTsKKyAgICAgICAgICAgICAgICBtX2JpdHMgPSBvdGhlci5tX2JpdHM7CisgICAgICAgICAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRmF0RW50cnkqIG5l
d0ZhdEVudHJ5ID0gbmV3IEZhdEVudHJ5KCpvdGhlci5mYXRFbnRyeSgpKTsKKyAgICAgICAgICAg
IGZyZWVGYXRFbnRyeSgpOworICAgICAgICAgICAgbV9iaXRzID0gYml0d2lzZV9jYXN0PGludHB0
cl90PihuZXdGYXRFbnRyeSkgfCBGYXRGbGFnOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiAhbV9iaXRzOworICAgICAgICAgICAgcmV0dXJuICFiaXRz
KCk7CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgZ2V0SW5kZXgoKSBjb25zdAogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gbV9iaXRzID4+IEZsYWdCaXRzOworICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oYml0cygpID4+IEZsYWdCaXRzKTsKICAgICAgICAgfQotCisg
ICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QgZ2V0RmFzdCgpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBGYXN0KCp0aGlzKTsKKyAgICAgICAgfQorICAgICAg
ICAKICAgICAgICAgdW5zaWduZWQgZ2V0QXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIHsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwotICAgICAgICAgICAgaWYgKG1fYml0
cyAmIFJlYWRPbmx5RmxhZykKKyAgICAgICAgICAgIGludHB0cl90IHRoZUJpdHMgPSBiaXRzKCk7
CisgICAgICAgICAgICBpZiAodGhlQml0cyAmIFJlYWRPbmx5RmxhZykKICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGVzIHw9IFJlYWRPbmx5OwotICAgICAgICAgICAgaWYgKG1fYml0cyAmIERvbnRF
bnVtRmxhZykKKyAgICAgICAgICAgIGlmICh0aGVCaXRzICYgRG9udEVudW1GbGFnKQogICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gRG9udEVudW07CiAgICAgICAgICAgICByZXR1cm4gYXR0
cmlidXRlczsKICAgICAgICAgfQpAQCAtODcsMzAgKzE1NSwxMjMgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgIHJldHVybiBiaXRz
KCkgJiBSZWFkT25seUZsYWc7CiAgICAgICAgIH0KLQorICAgICAgICAKKyAgICAgICAgYm9vbCBj
b3VsZEJlV2F0Y2hlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpc0ZhdCgpICYm
ICEhZmF0RW50cnkoKS0+bV93YXRjaHBvaW50czsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdm9pZCBzZXRDb3VsZEJlV2F0Y2hlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluZmxh
dGUoKTsKKyAgICAgICAgICAgIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMgPSBhZG9wdFJlZihu
ZXcgV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCog
YWRkcmVzc09mSXNXYXRjaGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGNvdWxk
QmVXYXRjaGVkKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2lu
dHMtPmFkZHJlc3NPZklzV2F0Y2hlZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2
b2lkIGFkZFdhdGNocG9pbnQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKGNvdWxkQmVXYXRjaGVkKCkpOworICAgICAgICAgICAgZmF0RW50cnko
KS0+bV93YXRjaHBvaW50cy0+YWRkKHdhdGNocG9pbnQpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5V3JpdGUoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoTElLRUxZKCFpc0ZhdCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IGZhdEVudHJ5KCktPm1fd2F0
Y2hwb2ludHMuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIXdhdGNocG9pbnRzKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdhdGNocG9pbnRzLT5ub3RpZnlXcml0ZSgpOwor
ICAgICAgICB9CisgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBSZWFkT25seUZsYWcgPSAweDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBEb250RW51bUZsYWcgPSAweDI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb3RO
dWxsRmxhZyA9IDB4NDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEZsYWdCaXRzID0g
MzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEZhdEZsYWcgPSAweDE7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBSZWFkT25seUZsYWcgPSAweDI7CisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBEb250RW51bUZsYWcgPSAweDQ7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBOb3ROdWxsRmxhZyA9IDB4ODsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIEZsYWdCaXRzID0gNDsKKyAgICAgICAgCisgICAgICAgIGNsYXNzIEZhdEVudHJ5IHsKKyAg
ICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBwdWJsaWM6CisgICAg
ICAgICAgICBGYXRFbnRyeShpbnRwdHJfdCBiaXRzKQorICAgICAgICAgICAgICAgIDogbV9iaXRz
KGJpdHMgfCBGYXRGbGFnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpbnRwdHJfdCBtX2JpdHM7IC8vIGFsd2F5cyBoYXMgRmF0RmxhZyBzZXQgYW5kIGV4YWN0
bHkgbWF0Y2hlcyB3aGF0IHRoZSBiaXRzIHdvdWxkIGhhdmUgYmVlbiBpZiB0aGlzIHdhc24ndCBm
YXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3dh
dGNocG9pbnRzOworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgYm9vbCBpc0ZhdCgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBGYXRGbGFnOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBGYXRFbnRyeSogZmF0RW50cnkoKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IEZhdEVudHJ5Kj4obV9iaXRzICYgfkZhdEZsYWcpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogZmF0RW50cnkoKQorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PEZhdEVudHJ5Kj4obV9iaXRzICYgfkZhdEZsYWcpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB2b2lkIGluZmxhdGUoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
aXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2JpdHMgPSBi
aXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KG5ldyBGYXRFbnRyeShtX2JpdHMpKSB8IEZhdEZsYWc7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgaW50cHRyX3QgYml0cygp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRz
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90JiBi
aXRzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRmF0KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHM7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgZnJlZUZhdEVudHJ5KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIGRlbGV0ZSBmYXRFbnRyeSgpOworICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBwYWNrKGludCBpbmRleCwgYm9vbCByZWFkT25seSwgYm9vbCBkb250RW51bSkKICAgICAgICAg
ewotICAgICAgICAgICAgbV9iaXRzID0gKGluZGV4IDw8IEZsYWdCaXRzKSB8IE5vdE51bGxGbGFn
OworICAgICAgICAgICAgaW50cHRyX3QmIGJpdHNSZWYgPSBiaXRzKCk7CisgICAgICAgICAgICBi
aXRzUmVmID0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpIHwgTm90
TnVsbEZsYWc7CiAgICAgICAgICAgICBpZiAocmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgbV9i
aXRzIHw9IFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgICAgICBiaXRzUmVmIHw9IFJlYWRPbmx5
RmxhZzsKICAgICAgICAgICAgIGlmIChkb250RW51bSkKLSAgICAgICAgICAgICAgICBtX2JpdHMg
fD0gRG9udEVudW1GbGFnOworICAgICAgICAgICAgICAgIGJpdHNSZWYgfD0gRG9udEVudW1GbGFn
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzVmFsaWRJbmRleChpbnQgaW5k
ZXgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKGluZGV4IDw8IEZsYWdCaXRzKSA+
PiBGbGFnQml0cykgPT0gaW5kZXg7CisgICAgICAgICAgICByZXR1cm4gKChzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oaW5kZXgpIDw8IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGluZGV4KTsKICAgICAgICAgfQogCi0gICAgICAgIGludCBtX2JpdHM7CisgICAg
ICAgIGludHB0cl90IG1fYml0czsKICAgICB9OwogCiAgICAgc3RydWN0IFN5bWJvbFRhYmxlSW5k
ZXhIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxTeW1ib2xUYWJsZUVudHJ5PiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146684</attachid>
            <date>2012-06-08 22:15:21 -0700</date>
            <delta_ts>2012-06-08 23:33:03 -0700</delta_ts>
            <desc>more things</desc>
            <filename>globalwatch_patch_2.diff</filename>
            <type>text/plain</type>
            <size>48913</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5ODkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMCBA
QAorMjAxMi0wNi0wOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFdvcmsgaW4gcHJvZ3Jlc3MhCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OndhdGNocG9pbnRMYWJlbCk6CisgICAgICAgICog
YXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cmVwbGFjZVdp
dGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNy
b0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1heEp1
bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNI
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cmVwbGFjZVdpdGhKdW1wKToK
KyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmVwbGFj
ZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODY6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2
XzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1heEp1bXBSZXBsYWNl
bWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAg
IChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdp
dGhKdW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6WDg2QXNzZW1ibGVyKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpsYWJlbCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptYXhKdW1w
UmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVj
dGlvbkZvcm1hdHRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZE9TUkV4aXQpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkpOgorICAgICAgICAoQ29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRXYXRjaHBvaW50KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZldhdGNocG9pbnRzKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp3YXRjaHBvaW50KToKKyAgICAgICAgKERGR0RhdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL1dhdGNocG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdhdGNocG9pbnQ6On5X
YXRjaHBvaW50KToKKyAgICAgICAgKFdhdGNocG9pbnQ6OmZpcmUpOgorICAgICAgICAoV2F0Y2hw
b2ludFNldDo6V2F0Y2hwb2ludFNldCk6CisgICAgICAgIChXYXRjaHBvaW50U2V0Ojp+V2F0Y2hw
b2ludFNldCk6CisgICAgICAgIChXYXRjaHBvaW50U2V0OjphZGQpOgorICAgICAgICAoV2F0Y2hw
b2ludFNldDo6bm90aWZ5V3JpdGVTbG93KToKKyAgICAgICAgKFdhdGNocG9pbnRTZXQ6OmZpcmVB
bGxXYXRjaHBvaW50cyk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0
Y2hwb2ludDo6V2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6OnNldERlc3Rp
bmF0aW9uKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6Y29ycmVjdExhYmVscyk6CisgICAg
ICAgIChXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6bm90aWZ5
V3JpdGUpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGRyZXNzT2ZJc1dhdGNoZWQp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2V0U3RhdGljVmFyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRTdGF0aWNWYXIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAoQnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGRmZy9ERkdDb3Jy
ZWN0YWJsZUp1bXBQb2ludC5oOgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBv
aW50Ojppc1NldCk6CisgICAgICAgIChDb3JyZWN0YWJsZUp1bXBQb2ludCk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
bGlua09TUkV4aXRzKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKE9TUkV4aXQpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToK
KyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChTeW1ib2xUYWJsZUVu
dHJ5KToKKyAgICAgICAgKEZhc3QpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpG
YXN0OjpGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNOdWxs
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6Z2V0SW5kZXgpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc1JlYWRPbmx5KToKKyAgICAgICAg
KEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6On5TeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6U3lt
Ym9sVGFibGVFbnRyeTo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0SW5kZXgpOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRGYXN0KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRh
YmxlRW50cnk6OmlzUmVhZE9ubHkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpj
b3VsZEJlV2F0Y2hlZCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OnNldENvdWxk
QmVXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRkcmVzc09mSXNX
YXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRkV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlKToKKyAgICAgICAg
KEZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnk6OkZh
dEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNGYXQpOgorICAgICAg
ICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpmYXRFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmluZmxhdGUpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpi
aXRzKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6cGFjayk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmlzVmFsaWRJbmRleCk6CisKIDIwMTItMDYtMDIgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIGJhY2sg
aW4gcGFydDEgb2YgcjExODY0Ni4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMTk4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzAsNyArNzAsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhl
IGZvbGxvd2luZyB0eXBlcyBhcmUgdXNlZCBhcyBvcGVyYW5kcyB0byBNYWNyb0Fzc2VtYmxlciBv
cGVyYXRpb25zLAogICAgIC8vIGRlc2NyaWJpbmcgaW1tZWRpYXRlICBhbmQgbWVtb3J5IG9wZXJh
bmRzIHRvIHRoZSBpbnN0cnVjdGlvbnMgdG8gYmUgcGxhbnRlZC4KIAotCiAgICAgZW51bSBTY2Fs
ZSB7CiAgICAgICAgIFRpbWVzT25lLAogICAgICAgICBUaW1lc1R3bywKQEAgLTU1OSw2ICs1NTgs
MTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAgfQogICAgIAor
ICAgIExhYmVsIHdhdGNocG9pbnRMYWJlbChKdW1wUmVwbGFjZW1lbnRUeXBlIGp1bXBSZXBsYWNl
bWVudFR5cGUpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sYWJlbEZvcldhdGNocG9pbnQo
anVtcFJlcGxhY2VtZW50VHlwZSk7CisgICAgICAgIHJldHVybiBMYWJlbCh0aGlzKTsKKyAgICB9
CisgICAgCiAgICAgTGFiZWwgYWxpZ24oKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWxp
Z24oMTYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJC
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fz
c2VtYmxlckJ1ZmZlci5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICszOSwx
MSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGVudW0gSnVtcFJlcGxhY2VtZW50VHlwZSB7
CisgICAgICAgIFJlcGxhY2VXaXRoTG9jYWxKdW1wLAorICAgICAgICBSZXBsYWNlV2l0aEZhckp1
bXAKKyAgICB9OworICAgIAogICAgIHN0cnVjdCBBc3NlbWJsZXJMYWJlbCB7CiAgICAgICAgIEFz
c2VtYmxlckxhYmVsKCkKICAgICAgICAgICAgIDogbV9vZmZzZXQoc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDEwLDYgKzEwMTAsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVu
Y3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENh
bGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29k
ZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBBUk1Bc3NlbWJsZXI6OkNvbmRp
dGlvbiBBUk1Db25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk12Ny5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtNTQ1LDYgKzU0
NSwxNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxv
Y2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBz
cmMsIEFybUFkZHJlc3MgYWRkcmVzcykKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHJldmlzaW9uIDEx
OTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NjgsNiArMTg2OCwxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oTUlQU0Fz
c2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1
Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgLy8gSWYg
bV9maXhlZFdpZHRoIGlzIHRydWUsIHdlIHdpbGwgZ2VuZXJhdGUgYSBmaXhlZCBudW1iZXIgb2Yg
aW5zdHJ1Y3Rpb25zLgogICAgIC8vIE90aGVyd2lzZSwgd2UgY2FuIGVtaXQgYW55IG51bWJlciBv
ZiBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyU0g0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5NzEsNiArMTk3MSwxNyBAQCB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBzCiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZv
aWQoKikoKT4oU0g0QXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigp
KSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRp
b25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikK
KyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogcHJvdGVj
dGVkOgogICAgIFNINEFzc2VtYmxlcjo6Q29uZGl0aW9uIFNINENvbmRpdGlvbihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2aXNpb24gMTE5ODAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihjYWxsLmRhdGFMb2NhdGlvbigpKSArIG9mZnNldCkpOwogICAgIH0KIAorICAgIHN0YXRp
YyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0
LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIC8vIE5PVEU6
IG9uIFg4Ni0zMiB0aGUgc2NyYXRjaCByZWdpc3RlciBpcyB1bnVzZWQuCisgICAgICAgIFg4NkFz
c2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJl
c3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSwgUmVnaXN0ZXJJRDo6ZWF4KTsK
KyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7
CiAgICAgZnJpZW5kIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZp
c2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyNyw2ICs1MjcsMTYgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJl
dHVybiBzY3JhdGNoUmVnaXN0ZXI7IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVt
cChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBk
ZXN0aW5hdGlvbiwgSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQorICAg
IHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFy
dC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpLCBz
Y3JhdGNoUmVnaXN0ZXIsIGp1bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVwbGFjZVdpdGhMb2NhbEp1
bXApOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVu
dFNpemUoSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZShqdW1wUmVw
bGFjZW1lbnRUeXBlID09IFJlcGxhY2VXaXRoTG9jYWxKdW1wKTsKKyAgICB9CisKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7CiAgICAgZnJpZW5kIGNsYXNzIFJlcGF0Y2hC
dWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0
Y2hCdWZmZXIuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsMTEg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmVsaW5rTmVhckNhbGxlclRvVHJhbXBvbGluZShy
ZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChuZXdDYWxsZWVGdW5jdGlvbikpOwogICAg
IH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0
cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydCwgZGVz
dGluYXRpb24pOworICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkKiBtX3N0YXJ0OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZp
c2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNDcsNiArMjQ3LDggQEAgcHJpdmF0ZToKIHB1YmxpYzoK
IAogICAgIFg4NkFzc2VtYmxlcigpCisgICAgICAgIDogbV9pbmRleE9mTGFzdFdhdGNocG9pbnQo
SU5UX01JTikKKyAgICAgICAgLCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlO
KQogICAgIHsKICAgICB9CiAKQEAgLTE3MDIsMTAgKzE3MDQsMjYgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fZm9ybWF0dGVyLmNvZGVTaXplKCk7CiAgICAgfQorICAgIAorICAg
IEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludChKdW1wUmVwbGFjZW1lbnRUeXBlIGp1
bXBSZXBsYWNlbWVudFR5cGUpCisgICAgeworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQg
PSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG1f
aW5kZXhPZkxhc3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAg
ICAgICAgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAg
IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZShqdW1wUmVwbGFjZW1lbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAg
ICByZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVz
dWx0ID0gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgLy8gRklYTUU6IG5lZWQgdG8ga25v
dyB0aGUgc2l6ZSBvZiB0aGUgbGFzdCB3YXRjaHBvaW50IGFzIHdlbGwuCisgICAgICAgIHdoaWxl
IChVTkxJS0VMWShyZXN1bHQubV9vZmZzZXQgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2lu
dCkpIHsKKyAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmVzdWx0ID0gbV9mb3JtYXR0
ZXIubGFiZWwoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAog
ICAgIEFzc2VtYmxlckxhYmVsIGFsaWduKGludCBhbGlnbm1lbnQpCkBAIC0xNzgyLDYgKzE4MDAs
NDMgQEAgcHVibGljOgogICAgICAgICBzZXRQb2ludGVyKHdoZXJlLCB2YWx1ZSk7CiAgICAgfQog
ICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0
YXJ0LCB2b2lkKiB0bywgUmVnaXN0ZXJJRCBzY3JhdGNoLCBKdW1wUmVwbGFjZW1lbnRUeXBlIGp1
bXBSZXBsYWNlbWVudFR5cGUpCisgICAgeworICAgICAgICBpbnQ4X3QgKnB0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIGludDhfdCAqZHN0
UHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPih0byk7CisgICAgICAgIGludHB0cl90IGRp
c3RhbmNlID0gKGludHB0cl90KShkc3RQdHIgLSAocHRyICsgNSkpOworI2lmIENQVShYODZfNjQp
CisgICAgICAgIGlmIChkaXN0YW5jZSA+IElOVDMyX01BWCB8fCBkaXN0YW5jZSA8IElOVDMyX01J
TikgeworICAgICAgICAgICAgQVNTRVJUKGp1bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVwbGFjZVdp
dGhGYXJKdW1wKTsKKyAgICAgICAgICAgIC8vIG1vdnFfaTY0ciBpbnN0cnVjdGlvbgorICAgICAg
ICAgICAgcHRyWzBdID0gUFJFX1JFWCB8ICgxPDwzKSB8IChzY3JhdGNoPj4zKTsKKyAgICAgICAg
ICAgIHB0clsxXSA9IE9QX01PVl9FQVhJdiArIChzY3JhdGNoICYgNyk7CisgICAgICAgICAgICAq
cmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90Kj4ocHRyKzMpID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pKTsKKyAgICAgICAgICAgIHB0ciArPSAxMDsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gam1wX3IgaW5zdHJ1Y3Rpb24KKyAgICAgICAg
ICAgIGlmIChzY3JhdGNoID49IFg4NlJlZ2lzdGVyczo6cjgpIHsKKyAgICAgICAgICAgICAgICBw
dHJbMF0gPSBQUkVfUkVYIHwgKHNjcmF0Y2g+PjMpOworICAgICAgICAgICAgICAgIHB0cisrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcHRyWzBdID0gT1BfR1JPVVA1X0V2OworICAgICAg
ICAgICAgcHRyWzFdID0gKDM8PDYpIHwgKEdST1VQNV9PUF9KTVBOPDwzKSB8IChzY3JhdGNoICYg
Nyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBwdHJb
MF0gPSBPUF9KTVBfcmVsMzI7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PGludDMyX3QqPihw
dHIgKyAxKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRpc3RhbmNlKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKEp1bXBSZXBsYWNlbWVu
dFR5cGUganVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAg
ICAgaWYgKGp1bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVwbGFjZVdpdGhGYXJKdW1wKQorICAgICAg
ICAgICAgcmV0dXJuIDEzOworI2VuZGlmCisgICAgICAgIHJldHVybiA1OworICAgIH0KKyAgICAK
ICAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hlcmUpCiAgICAgewogICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHdoZXJlKVstMV07CkBAIC0yMzM5LDYg
KzIzOTQsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsK
ICAgICB9IG1fZm9ybWF0dGVyOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKKyAg
ICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjczLDEwICsyNzMsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICB2b2lkIGFwcGVuZE9TUkV4aXQoY29uc3QgREZHOjpPU1JFeGl0JiBvc3JFeGl0KQorICAg
ICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkK
ICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAg
ICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPm9zckV4aXQuc2l6ZSgpOwogICAg
ICAgICAgICAgbV9kZmdEYXRhLT5vc3JFeGl0LmFwcGVuZChvc3JFeGl0KTsKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERGRzo6T1NSRXhp
dCYgbGFzdE9TUkV4aXQoKQpAQCAtMjg0LDEwICsyODYsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5vc3JFeGl0Lmxhc3QoKTsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KGNvbnN0IERG
Rzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgICAgIHVuc2lnbmVkIGFwcGVu
ZFNwZWN1bGF0aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNv
dmVyeSkKICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7
CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVj
b3Zlcnkuc2l6ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5
LmFwcGVuZChyZWNvdmVyeSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhcHBlbmRXYXRjaHBvaW50KGNvbnN0IFdhdGNo
cG9pbnQmIHdhdGNocG9pbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJ
Zk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT53
YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgICAgICBtX2RmZ0RhdGEtPndhdGNocG9pbnRzLmFw
cGVuZCh3YXRjaHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAtMzA0LDYg
KzMxNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEt
PnNwZWN1bGF0aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZldhdGNocG9pbnRzKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFtX2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gbV9kZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIERGRzo6T1NSRXhpdCYgb3NyRXhpdCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdFtpbmRleF07CkBAIC0zMTQs
NiArMzMzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0
YS0+c3BlY3VsYXRpb25SZWNvdmVyeVtpbmRleF07CiAgICAgICAgIH0KICAgICAgICAgCisgICAg
ICAgIFdhdGNocG9pbnQmIHdhdGNocG9pbnQodW5zaWduZWQgaW5kZXgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRzW2luZGV4XTsKKyAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNlKEpTQ2VsbCogdGFy
Z2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsK
QEAgLTEyMzgsNiArMTI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgVmVjdG9y
PERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKICAgICAgICAgICAgIFNlZ21lbnRlZFZlY3Rv
cjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgICAgICAgICBWZWN0b3I8REZHOjpTcGVj
dWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OworICAgICAgICAgICAgU2VnbWVu
dGVkVmVjdG9yPFdhdGNocG9pbnQsIDEsIDA+IHdhdGNocG9pbnRzOwogICAgICAgICAgICAgVmVj
dG9yPFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uPiB0cmFuc2l0aW9uczsKICAgICAgICAgICAgIFZl
Y3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPiA+IHdlYWtSZWZlcmVuY2VzOwogICAgICAgICAgICAg
Ym9vbCBtYXlCZUV4ZWN1dGluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9XYXRjaHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCisKK1dhdGNocG9p
bnQ6On5XYXRjaHBvaW50KCkKK3sKKyAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgcmVtb3Zl
KCk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6ZmlyZSgpCit7CisgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGxhY2VXaXRoSnVtcCgKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0
PHZvaWQqPihtX3NvdXJjZSkpLAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlayhiaXR3aXNlX2Nh
c3Q8dm9pZCo+KG1fZGVzdGluYXRpb24pKSk7CisgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAg
IHJlbW92ZSgpOworfQorCitXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KCkKKyAgICA6IG1f
aXNXYXRjaGVkKDApCit7Cit9CisKK1dhdGNocG9pbnRTZXQ6On5XYXRjaHBvaW50U2V0KCkKK3sK
KyAgICAvLyBGaXJlIGFsbCB3YXRjaHBvaW50cy4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBp
dCBpcyBwb3NzaWJsZSwgc2F5IHdpdGgKKyAgICAvLyBzdHJ1Y3R1cmUgd2F0Y2hwb2ludHMsIGZv
ciB0aGUgd2F0Y2hwb2ludCBzZXQgb3duZXIgdG8gZGllIHdoaWxlIHRoZQorICAgIC8vIHdhdGNo
cG9pbnQgb3duZXJzIGFyZSBzdGlsbCBsaXZlLgorICAgIGZpcmVBbGxXYXRjaHBvaW50cygpOwor
fQorCit2b2lkIFdhdGNocG9pbnRTZXQ6OmFkZChXYXRjaHBvaW50KiB3YXRjaHBvaW50KQorewor
ICAgIG1fc2V0LnB1c2god2F0Y3BvaW50KTsKKyAgICBtX2lzV2F0Y2hlZCA9IHRydWU7Cit9CisK
K3ZvaWQgV2F0Y2hwb2ludFNldDo6bm90aWZ5V3JpdGVTbG93KCkKK3sKKyAgICBBU1NFUlQobV9p
c1dhdGNoZWQpOworICAgIAorICAgIGZpcmVBbGxXYXRjaHBvaW50cygpOworICAgIG1faXNXYXRj
aGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludFNldDo6ZmlyZUFsbFdhdGNocG9pbnRz
KCkKK3sKKyAgICB3aGlsZSAoIW1fc2V0LmlzRW1wdHkoKSkKKyAgICAgICAgbV9zZXQuYmVnaW4o
KS0+ZmlyZSgpOworfQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9X
YXRjaHBvaW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdh
dGNocG9pbnRfaAorI2RlZmluZSBXYXRjaHBvaW50X2gKKworI2luY2x1ZGUgIkNvZGVMb2NhdGlv
bi5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1NlbnRpbmVs
TGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2F0Y2hwb2ludCA6IHB1
YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXYXRjaHBvaW50PiB7CitwdWJsaWM6CisgICAgV2F0
Y2hwb2ludChNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgc291cmNlKQorICAgICAgICA6IG1fc291cmNl
KHNvdXJjZS5tX2xhYmVsLm1fb2Zmc2V0KQorICAgICAgICAsIG1fZGVzdGluYXRpb24oc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSkKKyAgICB7CisgICAgfQorICAgIAorICAg
IHZvaWQgc2V0RGVzdGluYXRpb24oTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRlc3RpbmF0aW9uKQor
ICAgIHsKKyAgICAgICAgbV9kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uLm1fbGFiZWwubV9vZmZz
ZXQ7CisgICAgfQorICAgIAorICAgIHZvaWQgY29ycmVjdExhYmVscyhMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxhYmVsOworICAg
ICAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9zb3VyY2U7CisgICAgICAgIG1fc291cmNl
ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGxhYmVsKS5k
YXRhTG9jYXRpb24oKSk7CisgICAgICAgIGxhYmVsLm1fbGFiZWwubV9vZmZzZXQgPSBtX2Rlc3Rp
bmF0aW9uOworICAgICAgICBtX2Rlc3RpbmF0aW9uID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
bGlua0J1ZmZlci5sb2NhdGlvbk9mKGxhYmVsKS5kYXRhTG9jYXRpb24oKSk7CisgICAgfQorICAg
IAorICAgIH5XYXRjaHBvaW50KCk7CisgICAgCisgICAgdm9pZCBmaXJlKCk7CisgICAgCitwcml2
YXRlOgorICAgIHVpbnRwdHJfdCBtX3NvdXJjZTsKKyAgICB1aW50cHRyX3QgbV9kZXN0aW5hdGlv
bjsKK307CisKK2NsYXNzIFdhdGNocG9pbnRTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXYXRjaHBv
aW50U2V0PiB7CitwdWJsaWM6CisgICAgV2F0Y2hwb2ludFNldCgpOworICAgIH5XYXRjaHBvaW50
U2V0KCk7CisgICAgCisgICAgdm9pZCBhZGQoV2F0Y2hwb2ludCopOworICAgIHZvaWQgbm90aWZ5
V3JpdGUoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2lzV2F0Y2hlZCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbm90aWZ5V3JpdGVTbG93KCk7CisgICAgfQorICAgIAorICAgIGJvb2wq
IGFkZHJlc3NPZklzV2F0Y2hlZCgpIHsgcmV0dXJuICZtX2lzV2F0Y2hlZDsgfQorICAgIAorICAg
IHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7IC8vIENhbGwgb25seSBpZiB5b3UndmUgY2hlY2tlZCBp
c1dhdGNoZWQuCisgICAgCitwcml2YXRlOgorICAgIHZvaWQgZmlyZUFsbFdhdGNocG9pbnRzKCk7
CisgICAgCisgICAgU2VudGluZWxMaW5rZWRMaXN0PFdhdGNocG9pbnQ+IG1fc2V0OworICAgIGJv
b2wgbV9pc1dhdGNoZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFdh
dGNocG9pbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNiwxMCArMjE2LDE0IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0
b3I6OmFkZFZhcihjb25zdCBJZGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW50IEJ5dGVjb2Rl
R2VuZXJhdG9yOjphZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wgaXND
b25zdGFudCkKK2ludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKAorICAgIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBDb25zdGFudE1vZGUgY29uc3RhbnRNb2RlLCBGdW5jdGlvbk1v
ZGUgZnVuY3Rpb25Nb2RlKQogeworICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk1vZGUpOwogICAg
IGludCBpbmRleCA9IHN5bWJvbFRhYmxlKCkuc2l6ZSgpOwotICAgIFN5bWJvbFRhYmxlRW50cnkg
bmV3RW50cnkoaW5kZXgsIGlzQ29uc3RhbnQgPyBSZWFkT25seSA6IDApOworICAgIFN5bWJvbFRh
YmxlRW50cnkgbmV3RW50cnkoaW5kZXgsIChjb25zdGFudE1vZGUgPT0gSXNDb25zdGFudCkgPyBS
ZWFkT25seSA6IDApOworICAgIGlmIChmdW5jdGlvbk1vZGUgPSBJc0Z1bmN0aW9uVG9TcGVjaWFs
aXplKQorICAgICAgICBuZXdFbnRyeS5zZXRDb3VsZEJlV2F0Y2hlZCgpOwogICAgIFN5bWJvbFRh
YmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBu
ZXdFbnRyeSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgaW5kZXggPSBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpOwpAQCAtMjg5LDE3ICsyOTMsMjMgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFBybwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmdW5jdGlvblN0YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEZ1bmN0
aW9uQm9keU5vZGUqIGZ1bmN0aW9uID0gZnVuY3Rpb25TdGFja1tpXTsKLSAgICAgICAgZ2xvYmFs
T2JqZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24tPmlkZW50KCkpOyAv
LyBOZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4aXN0aW5nIHByb3BlcnRpZXMu
CisgICAgICAgIGJvb2wgcHJvcGVydHlEaWRFeGlzdCA9IAorICAgICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24tPmlkZW50KCkpOyAvLyBO
ZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4aXN0aW5nIHByb3BlcnRpZXMuCiAK
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBtYWtlRnVu
Y3Rpb24oZXhlYywgZnVuY3Rpb24pLCBzY29wZUNoYWluKTsKLSAgICAgICAgaW50IGluZGV4ID0g
YWRkR2xvYmFsVmFyKGZ1bmN0aW9uLT5pZGVudCgpLCBmYWxzZSk7CisgICAgICAgIGludCBpbmRl
eCA9IGFkZEdsb2JhbFZhcigKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5pZGVudCgpLCBJc1Zhcmlh
YmxlLAorICAgICAgICAgICAgcHJvcGVydHlEaWRFeGlzdCA/IElzRnVuY3Rpb25Ub1NwZWNpYWxp
emUgOiBOb3RGdW5jdGlvbk9yTm90U3BlY2lhbGl6YWJsZSk7CiAgICAgICAgIGdsb2JhbE9iamVj
dC0+cmVnaXN0ZXJBdChpbmRleCkuc2V0KCptX2dsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFyU3RhY2suc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgKnZh
clN0YWNrW2ldLmZpcnN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhZGRHbG9i
YWxWYXIoKnZhclN0YWNrW2ldLmZpcnN0LCB2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlv
blN0YWNrczo6SXNDb25zdGFudCk7CisgICAgICAgIGFkZEdsb2JhbFZhcigKKyAgICAgICAgICAg
ICp2YXJTdGFja1tpXS5maXJzdCwKKyAgICAgICAgICAgICh2YXJTdGFja1tpXS5zZWNvbmQgJiBE
ZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCkgPyBJc0NvbnN0YW50IDogSXNWYXJpYWJsZSwK
KyAgICAgICAgICAgIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlKTsKICAgICB9CiB9CiAK
QEAgLTEyMDIsNyArMTIxMiw5IEBAIFJlc29sdmVSZXN1bHQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJl
c29sdmUKICAgICAgICAgICAgIGlmICgrK2l0ZXIgPT0gZW5kKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGZsYWdzICYgUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWcpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjpkeW5hbWljSW5kZXhlZEdsb2JhbFJlc29sdmUoZW50
cnkuZ2V0SW5kZXgoKSwgZGVwdGgsIGN1cnJlbnRTY29wZSwgZmxhZ3MpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjppbmRleGVkR2xvYmFsUmVzb2x2ZShlbnRyeS5nZXRJ
bmRleCgpLCBjdXJyZW50U2NvcGUsIGZsYWdzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVz
b2x2ZVJlc3VsdDo6aW5kZXhlZEdsb2JhbFJlc29sdmUoCisgICAgICAgICAgICAgICAgICAgIGVu
dHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29wZSwKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3Mg
fCAoZW50cnkuY291bGRCZVdhdGNoZWQoKSA/IFdhdGNoZWRGbGFnIHwgMCkpOwogICAgICAgICAg
ICAgfQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChKU0FjdGl2YXRpb24q
IGFjdGl2YXRpb24gPSBqc0R5bmFtaWNDYXN0PEpTQWN0aXZhdGlvbio+KGN1cnJlbnRWYXJpYWJs
ZU9iamVjdCkpCkBAIC0xNDU4LDYgKzE0NzAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldFN0CiAKICAgICBjYXNlIFJlc29sdmVSZXN1bHQ6OkluZGV4ZWRHbG9iYWw6
CiAgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpSZWFkT25seUluZGV4ZWRHbG9iYWw6CisgICAgY2Fz
ZSBSZXNvbHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKICAgICAgICAgaWYgKG1fbGFz
dE9wY29kZUlEID09IG9wX3B1dF9nbG9iYWxfdmFyKSB7CiAgICAgICAgICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIGRzdFBvaW50ZXI7CiAgICAgICAgICAgICBpbnQgc3JjSW5kZXg7CkBAIC0x
NDc4LDcgKzE0OTEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0
CiAgICAgfQogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFN0YXRp
Y1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBSZWdpc3RlcklEKiB2YWx1
ZSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0
IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIsIFJlZ2lzdGVySUQqIHZhbHVlKQogewogICAgIHN3aXRjaCAocmVzb2x2ZVJlc3VsdC50eXBl
KCkpIHsKICAgICBjYXNlIFJlc29sdmVSZXN1bHQ6OlJlZ2lzdGVyOgpAQCAtMTQ5OSw2ICsxNTEy
LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3QKICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVSZXN1bHQucmVnaXN0ZXJQb2ludGVyKCkpOwog
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgICAgIAorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6V2F0Y2hlZElu
ZGV4ZWRHbG9iYWw6CisgICAgICAgIGVtaXRPcGNvZGUob3BfcHV0X2dsb2JhbF92YXJfY2hlY2sp
OworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJlc3VsdC5yZWdpc3RlclBv
aW50ZXIoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7
CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0Lmdsb2JhbE9iamVj
dCgpLT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSkuYWRkcmVzc09mSXNXYXRj
aGVkKCkpOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDExOTgwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgLy8gVGhlIHJlc29sdmVkIGJpbmRpbmcgaXMgaW1tdXRhYmxlLgogICAgICAgICAg
ICAgUmVhZE9ubHlGbGFnID0gMHgyMCwKICAgICAgICAgICAgIC8vIFRoZSBiYXNlIG9iamVjdCBp
cyB0aGUgZ2xvYmFsIG9iamVjdC4KLSAgICAgICAgICAgIEdsb2JhbEZsYWcgPSAweDQwCisgICAg
ICAgICAgICBHbG9iYWxGbGFnID0gMHg0MCwKKyAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBp
cyBiZWluZyB3YXRjaGVkLCBzbyB3cml0ZXMgc2hvdWxkIGJlIHNwZWNpYWwuCisgICAgICAgICAg
ICBXYXRjaGVkRmxhZyA9IDB4ODAKICAgICAgICAgfTsKICAgICAgICAgZW51bSBUeXBlIHsKICAg
ICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBpbiBhIHJlZ2lz
dGVyLgpAQCAtMTMxLDYgKzEzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8g
YmluZGluZyBjcmVhdGVkIHdpdGggInZhciIgYXQgdGhlIHRvcCBsZXZlbC4gQXQgcnVudGltZSB3
ZSdsbAogICAgICAgICAgICAgLy8ganVzdCBpbmRleCBpbnRvIHRoZSBnbG9iYWwgb2JqZWN0Lgog
ICAgICAgICAgICAgSW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFsRmxhZyB8IFN0
YXRpY0ZsYWcsCisgICAgICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWwsIGJ1dCB0aGUgcHJv
cGVydHkgaXMgYmVpbmcgd2F0Y2hlZC4KKyAgICAgICAgICAgIFdhdGNoZWRJbmRleGVkR2xvYmFs
ID0gSW5kZXhlZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZyB8IFdhdGNoZWRGbGFnLAog
ICAgICAgICAgICAgLy8gTGlrZSBJbmRleGVkR2xvYmFsLCBidXQgdGhlIHByb3BlcnR5IGlzIGFs
c28gcmVhZC1vbmx5LCBsaWtlIE5hTiwKICAgICAgICAgICAgIC8vIEluZmluaXR5LCBvciB1bmRl
ZmluZWQuCiAgICAgICAgICAgICBSZWFkT25seUluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxhZyB8
IFJlYWRPbmx5RmxhZyB8IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnLApAQCAtNDQyLDcgKzQ0Niw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSkgeyByZXR1cm4g
ZW1pdEJpbmFyeU9wKG9wX2luLCBkc3QsIHByb3BlcnR5LCBiYXNlLCBPcGVyYW5kVHlwZXMoKSk7
IH0KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRz
dCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3Rh
dGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmLCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0
IElkZW50aWZpZXImLCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFJlc29sdmUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZUJh
c2UoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHkpOwpAQCAtNTc0LDcgKzU3OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICAgICAgLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGFkZGVkIHZhci4KLSAg
ICAgICAgaW50IGFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiwgYm9vbCBpc0NvbnN0YW50
KTsKKyAgICAgICAgZW51bSBDb25zdGFudE1vZGUgeyBJc0NvbnN0YW50LCBJc1ZhcmlhYmxlIH07
CisgICAgICAgIGVudW0gRnVuY3Rpb25Nb2RlIHsgSXNGdW5jdGlvblRvU3BlY2lhbGl6ZSwgTm90
RnVuY3Rpb25Pck5vdFNwZWNpYWxpemFibGUgfTsKKyAgICAgICAgaW50IGFkZEdsb2JhbFZhcihj
b25zdCBJZGVudGlmaWVyJiwgQ29uc3RhbnRNb2RlIGNvbnN0YW50TW9kZSwgRnVuY3Rpb25Nb2Rl
IGZ1bmN0aW9uTW9kZSk7CiAKICAgICAgICAgdm9pZCBhZGRQYXJhbWV0ZXIoY29uc3QgSWRlbnRp
ZmllciYsIGludCBwYXJhbWV0ZXJJbmRleCk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkocmV2aXNp
b24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1
bXBQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2NiwxMSBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB9CiAgICAgCisgICAgYm9vbCBpc1NldCgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9jb2RlT2Zmc2V0ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCBzd2l0Y2hUb0xhdGVKdW1wKE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wIGNoZWNrKQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTE5ODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDcgKzQ0LDExIEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygp
CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9T
UkV4aXRzKCk7ICsraSkgewogICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9z
ckV4aXQoaSk7Ci0gICAgICAgIGV4aXQubV9jaGVjay5pbml0aWFsSnVtcCgpLmxpbmsodGhpcyk7
CisgICAgICAgIEFTU0VSVCghZXhpdC5tX2NoZWNrLmlzU2V0KCkgPT0gKGV4aXQubV93YXRjaHBv
aW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7CisgICAg
ICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIGV4aXQubV9jaGVjay5pbml0aWFsSnVtcCgpLmxp
bmsodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVCbG9jaygpLT53YXRjaHBv
aW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLnNldERlc3RpbmF0aW9uKGxhYmVsKCkpOwogICAg
ICAgICBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwogICAgICAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihpKSwgJmdsb2JhbERhdGEoKS0+b3NyRXhpdEluZGV4KTsKICAgICAgICAgZXhpdC5t
X2NoZWNrLnN3aXRjaFRvTGF0ZUp1bXAocGF0Y2hhYmxlSnVtcCgpKTsKQEAgLTE5MCw2ICsxOTQs
OSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgIE9T
UkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhpdChpKTsKICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKGV4aXQubV9jaGVjay5sYXRlSnVtcCgpLCB0YXJnZXQpOwogICAgICAgICBleGl0Lm1f
Y2hlY2suY29ycmVjdExhdGVKdW1wKGxpbmtCdWZmZXIpOworICAgICAgICBBU1NFUlQoIWV4aXQu
bV9jaGVjay5pc1NldCgpID09IChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ICE9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOworICAgICAgICBpZiAoZXhpdC5tX3dhdGNocG9p
bnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAg
ICAgICBjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5jb3Jy
ZWN0TGFiZWxzKGxpbmtCdWZmZXIpOwogICAgIH0KICAgICAKICAgICBjb2RlQmxvY2soKS0+c2hy
aW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBz
dHJ1Y3QgT1NSRXhpdCB7CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmls
ZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWduZWQgbV93
YXRjaHBvaW50SW5kZXg7CiAgICAgCiAgICAgRXhpdEtpbmQgbV9raW5kOwogICAgIHVpbnQzMl90
IG1fY291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOTAsNiArMjE5MCwxOSBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8
IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKGtp
bmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2UuaW5kZXgoKSwganVtcFRvRmFpbCwgcmVjb3Zlcnkp
OwogICAgIH0KKyAgICB2b2lkIHNwZWN1bGF0aW9uV2F0Y2hwb2ludChFeGl0S2luZCBraW5kLCBK
U1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIEVkZ2Ugbm9kZVVzZSwgY29uc3QgU3BlY3VsYXRp
b25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgeworICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCku
Y2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOworICAgICAgICBPU1JFeGl0
JiBleGl0ID0gbV9qaXQuY29kZUJsb2NrKCktPm9zckV4aXQoCisgICAgICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdCgKKyAgICAgICAgICAgICAgICBPU1JFeGl0KGtpbmQs
IGpzVmFsdWVTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEp1bXAoKSwgdGhpcykpKTsKKyAgICAgICAgZXhpdC5tX3dhdGNocG9pbnRJbmRl
eCA9IG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRXYXRjaHBvaW50KAorICAgICAgICAgICAgV2F0
Y2hwb2ludChtX2ppdC53YXRjaHBvaW50TGFiZWwoUmVwbGFjZVdpdGhMb2NhbEp1bXApKSk7Cisg
ICAgfQogICAgIHZvaWQgZm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNW
YWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBWYWx1ZVJlY292ZXJ5JiB2YWx1ZVJlY292ZXJ5
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwg
bV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMiwyMiAr
NTAyLDI1IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGUKICAgICBz
dHJ1Y3R1cmUoKS0+c2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOwogfQogCi12b2lkIEpTT2Jq
ZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQorYm9vbCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoc3RydWN0
dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc2l6ZV90IG9mZnNl
dDsKICAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAg
ICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRp
b24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6
Om5vdEZvdW5kKQotICAgICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0
T2Zmc2V0KG9mZnNldCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHNldFN0
cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKLSAgICBpZiAo
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zm
c2V0KG9mZnNldCk7CisgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogTkVWRVJfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmZpbGxHZXR0
ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiBzbG90LCBXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+KiBsb2NhdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSopOwogCi0gICAgICAgIHZvaWQgcmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5
TmFtZSk7CisgICAgICAgIGJvb2wgcmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5
TmFtZSk7IC8vIFJldHVybiB0cnVlIGlmIGFueXRoaW5nIGlzIHJlbW92ZWQuCiAgICAgICAgIGJv
b2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5kaWRUcmFuc2l0
aW9uKCk7IH0KICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1
cm4gc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9s
VGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVu
dHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gb2JqZWN0
LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAg
ICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzbG90LnNl
dFZhbHVlKG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CkBAIC05
Niw3ICs5Niw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogICAgIFN5bWJvbFRhYmxl
T2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QsCiAgICAgYm9vbCYgc2xvdElzV3JpdGVhYmxlKQogewotICAgIFN5bWJvbFRhYmxl
RW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBvYmpl
Y3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwog
ICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNsb3Qu
c2V0VmFsdWUob2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNp
b24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2ludC5o
IgogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgogCkBAIC00MywzOSArNDQsMTA2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIGZvdXIg
Yml0cyBhbGwgc2V0IG9yIGFsbCB1bnNldC4KIAogICAgIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5
IHsKKyAgICAgICAgLy8gVXNlIHRoZSBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGNsYXNzLCBlaXRo
ZXIgdmlhIGltcGxpY2l0IGNhc3Qgb3IgYnkgY2FsbGluZworICAgICAgICAvLyBnZXRGYXN0KCks
IHdoZW4geW91ICgxKSBvbmx5IGNhcmUgYWJvdXQgaXNOdWxsKCksIGdldEluZGV4KCksIGFuZCBp
c1JlYWRPbmx5KCksCisgICAgICAgIC8vIGFuZCAoMikgeW91IGFyZSBpbiBhIGhvdCBwYXRoIHdo
ZXJlIHlvdSBuZWVkIHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2YgdGltZXMKKyAgICAgICAgLy8g
dGhhdCB5b3UgYnJhbmNoIG9uIGlzRmF0KCkgd2hlbiBnZXR0aW5nIHRoZSBiaXRzKCkuCisgICAg
ICAgIGNsYXNzIEZhc3QgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBGYXN0KCkKKyAg
ICAgICAgICAgICAgICA6IG1fYml0cygwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QoY29uc3QgU3ltYm9s
VGFibGVFbnRyeSYgZW50cnkpCisgICAgICAgICAgICAgICAgOiBtX2JpdHMoZW50cnkuYml0cygp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
IW1fYml0czsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IGdldEluZGV4KCkgY29u
c3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihtX2JpdHMgPj4gRmxhZ0JpdHMpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
ICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgaW50cHRyX3QgbV9iaXRzOworICAg
ICAgICB9OworCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoKQogICAgICAgICAgICAgOiBtX2Jp
dHMoMCkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeShp
bnQgaW5kZXgpCisgICAgICAgICAgICA6IG1fYml0cygwKQogICAgICAgICB7CiAgICAgICAgICAg
ICBBU1NFUlQoaXNWYWxpZEluZGV4KGluZGV4KSk7CiAgICAgICAgICAgICBwYWNrKGluZGV4LCBm
YWxzZSwgZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeShpbnQg
aW5kZXgsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCisgICAgICAgICAgICA6IG1fYml0cygwKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZEluZGV4KGluZGV4KSk7CiAgICAgICAg
ICAgICBwYWNrKGluZGV4LCBhdHRyaWJ1dGVzICYgUmVhZE9ubHksIGF0dHJpYnV0ZXMgJiBEb250
RW51bSk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIH5TeW1ib2xUYWJsZUVudHJ5KCkK
KyAgICAgICAgeworICAgICAgICAgICAgZnJlZUZhdEVudHJ5KCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgb3Ro
ZXIpCisgICAgICAgICAgICA6IG1fYml0cygwKQorICAgICAgICB7CisgICAgICAgICAgICAqdGhp
cyA9IG90aGVyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
JiBvcGVyYXRvcj0oY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgb3RoZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghb3RoZXIuaXNGYXQoKSkgeworICAgICAgICAgICAgICAgIGZyZWVGYXRF
bnRyeSgpOworICAgICAgICAgICAgICAgIG1fYml0cyA9IG90aGVyLm1fYml0czsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGYXRFbnRy
eSogbmV3RmF0RW50cnkgPSBuZXcgRmF0RW50cnkoKm90aGVyLmZhdEVudHJ5KCkpOworICAgICAg
ICAgICAgZnJlZUZhdEVudHJ5KCk7CisgICAgICAgICAgICBtX2JpdHMgPSBiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KG5ld0ZhdEVudHJ5KSB8IEZhdEZsYWc7CisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFtX2JpdHM7CisgICAgICAgICAgICByZXR1cm4g
IWJpdHMoKTsKICAgICAgICAgfQogCiAgICAgICAgIGludCBnZXRJbmRleCgpIGNvbnN0CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2JpdHMgPj4gRmxhZ0JpdHM7CisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihiaXRzKCkgPj4gRmxhZ0JpdHMpOwogICAgICAgICB9
Ci0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgRmFzdCBnZXRGYXN0KCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEZhc3QoKnRoaXMpOworICAgICAgICB9Cisg
ICAgICAgIAogICAgICAgICB1bnNpZ25lZCBnZXRBdHRyaWJ1dGVzKCkgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7Ci0gICAgICAgICAgICBpZiAo
bV9iaXRzICYgUmVhZE9ubHlGbGFnKQorICAgICAgICAgICAgaW50cHRyX3QgdGhlQml0cyA9IGJp
dHMoKTsKKyAgICAgICAgICAgIGlmICh0aGVCaXRzICYgUmVhZE9ubHlGbGFnKQogICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZXMgfD0gUmVhZE9ubHk7Ci0gICAgICAgICAgICBpZiAobV9iaXRzICYg
RG9udEVudW1GbGFnKQorICAgICAgICAgICAgaWYgKHRoZUJpdHMgJiBEb250RW51bUZsYWcpCiAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBEb250RW51bTsKICAgICAgICAgICAgIHJldHVy
biBhdHRyaWJ1dGVzOwogICAgICAgICB9CkBAIC04NywzMCArMTU1LDEyMyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdAogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9iaXRzICYgUmVhZE9ubHlGbGFnOworICAgICAgICAgICAgcmV0dXJu
IGJpdHMoKSAmIFJlYWRPbmx5RmxhZzsKICAgICAgICAgfQotCisgICAgICAgIAorICAgICAgICBi
b29sIGNvdWxkQmVXYXRjaGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGlzRmF0
KCkgJiYgISFmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB2b2lkIHNldENvdWxkQmVXYXRjaGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aW5mbGF0ZSgpOworICAgICAgICAgICAgZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cyA9IGFkb3B0
UmVmKG5ldyBXYXRjaHBvaW50U2V0KCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBi
b29sKiBhZGRyZXNzT2ZJc1dhdGNoZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
Y291bGRCZVdhdGNoZWQoKSk7CisgICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV93YXRj
aHBvaW50cy0+YWRkcmVzc09mSXNXYXRjaGVkKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHZvaWQgYWRkV2F0Y2hwb2ludChXYXRjaHBvaW50KiB3YXRjaHBvaW50KQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7CisgICAgICAgICAgICBmYXRF
bnRyeSgpLT5tX3dhdGNocG9pbnRzLT5hZGQod2F0Y2hwb2ludCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlXcml0ZSgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+
bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICAgICAgICAgIGlmICghd2F0Y2hwb2ludHMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdyaXRl
KCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFJlYWRPbmx5RmxhZyA9IDB4MTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4MjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IE5vdE51bGxGbGFnID0gMHg0OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRmxhZ0Jp
dHMgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRmF0RmxhZyA9IDB4MTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFJlYWRPbmx5RmxhZyA9IDB4MjsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4NDsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIE5vdE51bGxGbGFnID0gMHg4OworICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgRmxhZ0JpdHMgPSA0OworICAgICAgICAKKyAgICAgICAgY2xhc3MgRmF0RW50cnkg
eworICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIHB1YmxpYzoK
KyAgICAgICAgICAgIEZhdEVudHJ5KGludHB0cl90IGJpdHMpCisgICAgICAgICAgICAgICAgOiBt
X2JpdHMoYml0cyB8IEZhdEZsYWcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGludHB0cl90IG1fYml0czsgLy8gYWx3YXlzIGhhcyBGYXRGbGFnIHNldCBhbmQg
ZXhhY3RseSBtYXRjaGVzIHdoYXQgdGhlIGJpdHMgd291bGQgaGF2ZSBiZWVuIGlmIHRoaXMgd2Fz
bid0IGZhdC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+
IG1fd2F0Y2hwb2ludHM7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBib29sIGlzRmF0
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IEZhdEVudHJ5KiBmYXRFbnRyeSgp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0ZhdCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgRmF0RW50cnkqPihtX2JpdHMgJiB+RmF0Rmxh
Zyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBmYXRFbnRyeSgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0ZhdCgpKTsKKyAgICAgICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8RmF0RW50cnkqPihtX2JpdHMgJiB+RmF0RmxhZyk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHZvaWQgaW5mbGF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fYml0
cyA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4obmV3IEZhdEVudHJ5KG1fYml0cykpIHwgRmF0Rmxh
ZzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBpbnRwdHJfdCBi
aXRzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRmF0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsKKyAgICAgICAgICAgIHJldHVybiBt
X2JpdHM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgaW50cHRy
X3QmIGJpdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNGYXQoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIG1f
Yml0czsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBmcmVlRmF0RW50cnkoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWlzRmF0KCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgZGVsZXRlIGZhdEVudHJ5KCk7CisgICAgICAgIH0KIAogICAgICAg
ICB2b2lkIHBhY2soaW50IGluZGV4LCBib29sIHJlYWRPbmx5LCBib29sIGRvbnRFbnVtKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBtX2JpdHMgPSAoaW5kZXggPDwgRmxhZ0JpdHMpIHwgTm90TnVs
bEZsYWc7CisgICAgICAgICAgICBpbnRwdHJfdCYgYml0c1JlZiA9IGJpdHMoKTsKKyAgICAgICAg
ICAgIGJpdHNSZWYgPSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBGbGFnQml0cykg
fCBOb3ROdWxsRmxhZzsKICAgICAgICAgICAgIGlmIChyZWFkT25seSkKLSAgICAgICAgICAgICAg
ICBtX2JpdHMgfD0gUmVhZE9ubHlGbGFnOworICAgICAgICAgICAgICAgIGJpdHNSZWYgfD0gUmVh
ZE9ubHlGbGFnOwogICAgICAgICAgICAgaWYgKGRvbnRFbnVtKQotICAgICAgICAgICAgICAgIG1f
Yml0cyB8PSBEb250RW51bUZsYWc7CisgICAgICAgICAgICAgICAgYml0c1JlZiB8PSBEb250RW51
bUZsYWc7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNWYWxpZEluZGV4KGlu
dCBpbmRleCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgoaW5kZXggPDwgRmxhZ0Jp
dHMpID4+IEZsYWdCaXRzKSA9PSBpbmRleDsKKyAgICAgICAgICAgIHJldHVybiAoKHN0YXRpY19j
YXN0PGludHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRzKSA9PSBzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oaW5kZXgpOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IG1fYml0czsK
KyAgICAgICAgaW50cHRyX3QgbV9iaXRzOwogICAgIH07CiAKICAgICBzdHJ1Y3QgU3ltYm9sVGFi
bGVJbmRleEhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFN5bWJvbFRhYmxlRW50cnk+IHsKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvV1RG
L3d0Zi9TZWdtZW50ZWRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsOCArOTgsMTEgQEAg
bmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBTZWdtZW50ZWRWZWN0b3IgaXMganVzdCBsaWtlIFZl
Y3RvciwgYnV0IGl0IGRvZXNuJ3QgbW92ZSB0aGUgdmFsdWVzCiAgICAgLy8gc3RvcmVkIGluIGl0
cyBidWZmZXIgd2hlbiBpdCBncm93cy4gVGhlcmVmb3JlLCBpdCBpcyBzYWZlIHRvIGtlZXAKLSAg
ICAvLyBwb2ludGVycyBpbnRvIGEgU2VnbWVudGVkVmVjdG9yLgotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBULCBzaXplX3QgU2VnbWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7CisgICAg
Ly8gcG9pbnRlcnMgaW50byBhIFNlZ21lbnRlZFZlY3Rvci4gVGhlIGRlZmF1bHQgdHVuaW5nIHZh
bHVlcyBhcmUKKyAgICAvLyBvcHRpbWl6ZWQgZm9yIHNlZ21lbnRlZCB2ZWN0b3JzIHRoYXQgZ2V0
IGxhcmdlOyB5b3UgbWF5IHdhbnQgdG8gdXNlCisgICAgLy8gU2VnbWVudGVkVmVjdG9yPHRoaW5n
eSwgMSwgMD4gaWYgeW91IGRvbid0IGV4cGVjdCBhIGxvdCBvZiBlbnRyaWVzLgorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXplX3QgSW5saW5lQ2Fw
YWNpdHkgPSAzMj4KKyAgICBjbGFzcyBTZWdtZW50ZWRWZWN0b3IgewogICAgICAgICBmcmllbmQg
Y2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+OwogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6
ZT4gSXRlcmF0b3I7CkBAIC0yNTAsNyArMjUzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAg
ICAgc2l6ZV90IG1fc2l6ZTsKICAgICAgICAgU2VnbWVudCBtX2lubGluZVNlZ21lbnQ7Ci0gICAg
ICAgIFZlY3RvcjxTZWdtZW50KiwgMzI+IG1fc2VnbWVudHM7CisgICAgICAgIFZlY3RvcjxTZWdt
ZW50KiwgSW5saW5lQ2FwYWNpdHk+IG1fc2VnbWVudHM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146687</attachid>
            <date>2012-06-08 23:33:03 -0700</date>
            <delta_ts>2012-06-09 12:00:30 -0700</delta_ts>
            <desc>did some more stuff</desc>
            <filename>globalwatch_patch_3.diff</filename>
            <type>text/plain</type>
            <size>54025</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5ODkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMCBA
QAorMjAxMi0wNi0wOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFdvcmsgaW4gcHJvZ3Jlc3MhCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OndhdGNocG9pbnRMYWJlbCk6CisgICAgICAgICog
YXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cmVwbGFjZVdp
dGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNy
b0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1heEp1
bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNI
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cmVwbGFjZVdpdGhKdW1wKToK
KyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmVwbGFj
ZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODY6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2
XzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1heEp1bXBSZXBsYWNl
bWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAg
IChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdp
dGhKdW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6WDg2QXNzZW1ibGVyKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpsYWJlbCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptYXhKdW1w
UmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVj
dGlvbkZvcm1hdHRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZE9TUkV4aXQpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkpOgorICAgICAgICAoQ29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRXYXRjaHBvaW50KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZldhdGNocG9pbnRzKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp3YXRjaHBvaW50KToKKyAgICAgICAgKERGR0RhdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL1dhdGNocG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdhdGNocG9pbnQ6On5X
YXRjaHBvaW50KToKKyAgICAgICAgKFdhdGNocG9pbnQ6OmZpcmUpOgorICAgICAgICAoV2F0Y2hw
b2ludFNldDo6V2F0Y2hwb2ludFNldCk6CisgICAgICAgIChXYXRjaHBvaW50U2V0Ojp+V2F0Y2hw
b2ludFNldCk6CisgICAgICAgIChXYXRjaHBvaW50U2V0OjphZGQpOgorICAgICAgICAoV2F0Y2hw
b2ludFNldDo6bm90aWZ5V3JpdGVTbG93KToKKyAgICAgICAgKFdhdGNocG9pbnRTZXQ6OmZpcmVB
bGxXYXRjaHBvaW50cyk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0
Y2hwb2ludDo6V2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6OnNldERlc3Rp
bmF0aW9uKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6Y29ycmVjdExhYmVscyk6CisgICAg
ICAgIChXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6bm90aWZ5
V3JpdGUpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGRyZXNzT2ZJc1dhdGNoZWQp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2V0U3RhdGljVmFyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRTdGF0aWNWYXIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAoQnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGRmZy9ERkdDb3Jy
ZWN0YWJsZUp1bXBQb2ludC5oOgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBv
aW50Ojppc1NldCk6CisgICAgICAgIChDb3JyZWN0YWJsZUp1bXBQb2ludCk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
bGlua09TUkV4aXRzKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKE9TUkV4aXQpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToK
KyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChTeW1ib2xUYWJsZUVu
dHJ5KToKKyAgICAgICAgKEZhc3QpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpG
YXN0OjpGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNOdWxs
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6Z2V0SW5kZXgpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc1JlYWRPbmx5KToKKyAgICAgICAg
KEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6On5TeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6U3lt
Ym9sVGFibGVFbnRyeTo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0SW5kZXgpOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRGYXN0KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRh
YmxlRW50cnk6OmlzUmVhZE9ubHkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpj
b3VsZEJlV2F0Y2hlZCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OnNldENvdWxk
QmVXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRkcmVzc09mSXNX
YXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRkV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlKToKKyAgICAgICAg
KEZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnk6OkZh
dEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNGYXQpOgorICAgICAg
ICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpmYXRFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmluZmxhdGUpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpi
aXRzKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6cGFjayk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmlzVmFsaWRJbmRleCk6CisKIDIwMTItMDYtMDIgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIGJhY2sg
aW4gcGFydDEgb2YgcjExODY0Ni4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMTk4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzAsNyArNzAsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhl
IGZvbGxvd2luZyB0eXBlcyBhcmUgdXNlZCBhcyBvcGVyYW5kcyB0byBNYWNyb0Fzc2VtYmxlciBv
cGVyYXRpb25zLAogICAgIC8vIGRlc2NyaWJpbmcgaW1tZWRpYXRlICBhbmQgbWVtb3J5IG9wZXJh
bmRzIHRvIHRoZSBpbnN0cnVjdGlvbnMgdG8gYmUgcGxhbnRlZC4KIAotCiAgICAgZW51bSBTY2Fs
ZSB7CiAgICAgICAgIFRpbWVzT25lLAogICAgICAgICBUaW1lc1R3bywKQEAgLTU1OSw2ICs1NTgs
MTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAgfQogICAgIAor
ICAgIExhYmVsIHdhdGNocG9pbnRMYWJlbChKdW1wUmVwbGFjZW1lbnRUeXBlIGp1bXBSZXBsYWNl
bWVudFR5cGUpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sYWJlbEZvcldhdGNocG9pbnQo
anVtcFJlcGxhY2VtZW50VHlwZSk7CisgICAgICAgIHJldHVybiBMYWJlbCh0aGlzKTsKKyAgICB9
CisgICAgCiAgICAgTGFiZWwgYWxpZ24oKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWxp
Z24oMTYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJC
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fz
c2VtYmxlckJ1ZmZlci5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICszOSwx
MSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGVudW0gSnVtcFJlcGxhY2VtZW50VHlwZSB7
CisgICAgICAgIFJlcGxhY2VXaXRoTG9jYWxKdW1wLAorICAgICAgICBSZXBsYWNlV2l0aEZhckp1
bXAKKyAgICB9OworICAgIAogICAgIHN0cnVjdCBBc3NlbWJsZXJMYWJlbCB7CiAgICAgICAgIEFz
c2VtYmxlckxhYmVsKCkKICAgICAgICAgICAgIDogbV9vZmZzZXQoc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDEwLDYgKzEwMTAsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVu
Y3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENh
bGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29k
ZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBBUk1Bc3NlbWJsZXI6OkNvbmRp
dGlvbiBBUk1Db25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk12Ny5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtNTQ1LDYgKzU0
NSwxNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxv
Y2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBz
cmMsIEFybUFkZHJlc3MgYWRkcmVzcykKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHJldmlzaW9uIDEx
OTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NjgsNiArMTg2OCwxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oTUlQU0Fz
c2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1
Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgLy8gSWYg
bV9maXhlZFdpZHRoIGlzIHRydWUsIHdlIHdpbGwgZ2VuZXJhdGUgYSBmaXhlZCBudW1iZXIgb2Yg
aW5zdHJ1Y3Rpb25zLgogICAgIC8vIE90aGVyd2lzZSwgd2UgY2FuIGVtaXQgYW55IG51bWJlciBv
ZiBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyU0g0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5NzEsNiArMTk3MSwxNyBAQCB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBzCiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZv
aWQoKikoKT4oU0g0QXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigp
KSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRp
b25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikK
KyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogcHJvdGVj
dGVkOgogICAgIFNINEFzc2VtYmxlcjo6Q29uZGl0aW9uIFNINENvbmRpdGlvbihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2aXNpb24gMTE5ODAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihjYWxsLmRhdGFMb2NhdGlvbigpKSArIG9mZnNldCkpOwogICAgIH0KIAorICAgIHN0YXRp
YyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0
LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIC8vIE5PVEU6
IG9uIFg4Ni0zMiB0aGUgc2NyYXRjaCByZWdpc3RlciBpcyB1bnVzZWQuCisgICAgICAgIFg4NkFz
c2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJl
c3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSwgUmVnaXN0ZXJJRDo6ZWF4KTsK
KyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7
CiAgICAgZnJpZW5kIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZp
c2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyNyw2ICs1MjcsMTYgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJl
dHVybiBzY3JhdGNoUmVnaXN0ZXI7IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVt
cChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBk
ZXN0aW5hdGlvbiwgSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQorICAg
IHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFy
dC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpLCBz
Y3JhdGNoUmVnaXN0ZXIsIGp1bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVwbGFjZVdpdGhMb2NhbEp1
bXApOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVu
dFNpemUoSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZShqdW1wUmVw
bGFjZW1lbnRUeXBlID09IFJlcGxhY2VXaXRoTG9jYWxKdW1wKTsKKyAgICB9CisKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7CiAgICAgZnJpZW5kIGNsYXNzIFJlcGF0Y2hC
dWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0
Y2hCdWZmZXIuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsMTEg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmVsaW5rTmVhckNhbGxlclRvVHJhbXBvbGluZShy
ZXR1cm5BZGRyZXNzLCBDb2RlTG9jYXRpb25MYWJlbChuZXdDYWxsZWVGdW5jdGlvbikpOwogICAg
IH0KKyAgICAKKyAgICB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0
cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydCwgZGVz
dGluYXRpb24pOworICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkKiBtX3N0YXJ0OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZp
c2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNDcsNiArMjQ3LDggQEAgcHJpdmF0ZToKIHB1YmxpYzoK
IAogICAgIFg4NkFzc2VtYmxlcigpCisgICAgICAgIDogbV9pbmRleE9mTGFzdFdhdGNocG9pbnQo
SU5UX01JTikKKyAgICAgICAgLCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlO
KQogICAgIHsKICAgICB9CiAKQEAgLTE3MDIsMTAgKzE3MDQsMjYgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fZm9ybWF0dGVyLmNvZGVTaXplKCk7CiAgICAgfQorICAgIAorICAg
IEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludChKdW1wUmVwbGFjZW1lbnRUeXBlIGp1
bXBSZXBsYWNlbWVudFR5cGUpCisgICAgeworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQg
PSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG1f
aW5kZXhPZkxhc3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAg
ICAgICAgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAg
IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZShqdW1wUmVwbGFjZW1lbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAg
ICByZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVz
dWx0ID0gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgLy8gRklYTUU6IG5lZWQgdG8ga25v
dyB0aGUgc2l6ZSBvZiB0aGUgbGFzdCB3YXRjaHBvaW50IGFzIHdlbGwuCisgICAgICAgIHdoaWxl
IChVTkxJS0VMWShyZXN1bHQubV9vZmZzZXQgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2lu
dCkpIHsKKyAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmVzdWx0ID0gbV9mb3JtYXR0
ZXIubGFiZWwoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAog
ICAgIEFzc2VtYmxlckxhYmVsIGFsaWduKGludCBhbGlnbm1lbnQpCkBAIC0xNzgyLDYgKzE4MDAs
NDMgQEAgcHVibGljOgogICAgICAgICBzZXRQb2ludGVyKHdoZXJlLCB2YWx1ZSk7CiAgICAgfQog
ICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0
YXJ0LCB2b2lkKiB0bywgUmVnaXN0ZXJJRCBzY3JhdGNoLCBKdW1wUmVwbGFjZW1lbnRUeXBlIGp1
bXBSZXBsYWNlbWVudFR5cGUpCisgICAgeworICAgICAgICBpbnQ4X3QgKnB0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIGludDhfdCAqZHN0
UHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPih0byk7CisgICAgICAgIGludHB0cl90IGRp
c3RhbmNlID0gKGludHB0cl90KShkc3RQdHIgLSAocHRyICsgNSkpOworI2lmIENQVShYODZfNjQp
CisgICAgICAgIGlmIChkaXN0YW5jZSA+IElOVDMyX01BWCB8fCBkaXN0YW5jZSA8IElOVDMyX01J
TikgeworICAgICAgICAgICAgQVNTRVJUKGp1bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVwbGFjZVdp
dGhGYXJKdW1wKTsKKyAgICAgICAgICAgIC8vIG1vdnFfaTY0ciBpbnN0cnVjdGlvbgorICAgICAg
ICAgICAgcHRyWzBdID0gUFJFX1JFWCB8ICgxPDwzKSB8IChzY3JhdGNoPj4zKTsKKyAgICAgICAg
ICAgIHB0clsxXSA9IE9QX01PVl9FQVhJdiArIChzY3JhdGNoICYgNyk7CisgICAgICAgICAgICAq
cmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90Kj4ocHRyKzMpID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pKTsKKyAgICAgICAgICAgIHB0ciArPSAxMDsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gam1wX3IgaW5zdHJ1Y3Rpb24KKyAgICAgICAg
ICAgIGlmIChzY3JhdGNoID49IFg4NlJlZ2lzdGVyczo6cjgpIHsKKyAgICAgICAgICAgICAgICBw
dHJbMF0gPSBQUkVfUkVYIHwgKHNjcmF0Y2g+PjMpOworICAgICAgICAgICAgICAgIHB0cisrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcHRyWzBdID0gT1BfR1JPVVA1X0V2OworICAgICAg
ICAgICAgcHRyWzFdID0gKDM8PDYpIHwgKEdST1VQNV9PUF9KTVBOPDwzKSB8IChzY3JhdGNoICYg
Nyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBwdHJb
MF0gPSBPUF9KTVBfcmVsMzI7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PGludDMyX3QqPihw
dHIgKyAxKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRpc3RhbmNlKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKEp1bXBSZXBsYWNlbWVu
dFR5cGUganVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAg
ICAgaWYgKGp1bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVwbGFjZVdpdGhGYXJKdW1wKQorICAgICAg
ICAgICAgcmV0dXJuIDEzOworI2VuZGlmCisgICAgICAgIHJldHVybiA1OworICAgIH0KKyAgICAK
ICAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hlcmUpCiAgICAgewogICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHdoZXJlKVstMV07CkBAIC0yMzM5LDYg
KzIzOTQsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsK
ICAgICB9IG1fZm9ybWF0dGVyOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKKyAg
ICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjczLDEwICsyNzMsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICB2b2lkIGFwcGVuZE9TUkV4aXQoY29uc3QgREZHOjpPU1JFeGl0JiBvc3JFeGl0KQorICAg
ICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkK
ICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAg
ICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPm9zckV4aXQuc2l6ZSgpOwogICAg
ICAgICAgICAgbV9kZmdEYXRhLT5vc3JFeGl0LmFwcGVuZChvc3JFeGl0KTsKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERGRzo6T1NSRXhp
dCYgbGFzdE9TUkV4aXQoKQpAQCAtMjg0LDEwICsyODYsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5vc3JFeGl0Lmxhc3QoKTsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KGNvbnN0IERG
Rzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgICAgIHVuc2lnbmVkIGFwcGVu
ZFNwZWN1bGF0aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNv
dmVyeSkKICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7
CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVj
b3Zlcnkuc2l6ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5
LmFwcGVuZChyZWNvdmVyeSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhcHBlbmRXYXRjaHBvaW50KGNvbnN0IFdhdGNo
cG9pbnQmIHdhdGNocG9pbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJ
Zk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT53
YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgICAgICBtX2RmZ0RhdGEtPndhdGNocG9pbnRzLmFw
cGVuZCh3YXRjaHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAtMzA0LDYg
KzMxNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEt
PnNwZWN1bGF0aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZldhdGNocG9pbnRzKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFtX2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gbV9kZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIERGRzo6T1NSRXhpdCYgb3NyRXhpdCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdFtpbmRleF07CkBAIC0zMTQs
NiArMzMzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0
YS0+c3BlY3VsYXRpb25SZWNvdmVyeVtpbmRleF07CiAgICAgICAgIH0KICAgICAgICAgCisgICAg
ICAgIFdhdGNocG9pbnQmIHdhdGNocG9pbnQodW5zaWduZWQgaW5kZXgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRzW2luZGV4XTsKKyAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNlKEpTQ2VsbCogdGFy
Z2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsK
QEAgLTEyMzgsNiArMTI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgVmVjdG9y
PERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKICAgICAgICAgICAgIFNlZ21lbnRlZFZlY3Rv
cjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgICAgICAgICBWZWN0b3I8REZHOjpTcGVj
dWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OworICAgICAgICAgICAgU2VnbWVu
dGVkVmVjdG9yPFdhdGNocG9pbnQsIDEsIDA+IHdhdGNocG9pbnRzOwogICAgICAgICAgICAgVmVj
dG9yPFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uPiB0cmFuc2l0aW9uczsKICAgICAgICAgICAgIFZl
Y3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPiA+IHdlYWtSZWZlcmVuY2VzOwogICAgICAgICAgICAg
Ym9vbCBtYXlCZUV4ZWN1dGluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9XYXRjaHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCisKK1dhdGNocG9p
bnQ6On5XYXRjaHBvaW50KCkKK3sKKyAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgcmVtb3Zl
KCk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6ZmlyZSgpCit7CisgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGxhY2VXaXRoSnVtcCgKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0
PHZvaWQqPihtX3NvdXJjZSkpLAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlayhiaXR3aXNlX2Nh
c3Q8dm9pZCo+KG1fZGVzdGluYXRpb24pKSk7CisgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAg
IHJlbW92ZSgpOworfQorCitXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KCkKKyAgICA6IG1f
aXNXYXRjaGVkKGZhbHNlKQorICAgICwgbV9pc0ludmFsaWRhdGVkKGZhbHNlKQoreworfQorCitX
YXRjaHBvaW50U2V0Ojp+V2F0Y2hwb2ludFNldCgpCit7CisgICAgLy8gRmlyZSBhbGwgd2F0Y2hw
b2ludHMuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgaXMgcG9zc2libGUsIHNheSB3aXRo
CisgICAgLy8gc3RydWN0dXJlIHdhdGNocG9pbnRzLCBmb3IgdGhlIHdhdGNocG9pbnQgc2V0IG93
bmVyIHRvIGRpZSB3aGlsZSB0aGUKKyAgICAvLyB3YXRjaHBvaW50IG93bmVycyBhcmUgc3RpbGwg
bGl2ZS4KKyAgICBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKK30KKwordm9pZCBXYXRjaHBvaW50U2V0
OjphZGQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKK3sKKyAgICBtX3NldC5wdXNoKHdhdGNwb2lu
dCk7CisgICAgbV9pc1dhdGNoZWQgPSB0cnVlOworfQorCit2b2lkIFdhdGNocG9pbnRTZXQ6Om5v
dGlmeVdyaXRlU2xvdygpCit7CisgICAgQVNTRVJUKG1faXNXYXRjaGVkKTsKKyAgICAKKyAgICBm
aXJlQWxsV2F0Y2hwb2ludHMoKTsKKyAgICBtX2lzV2F0Y2hlZCA9IGZhbHNlOworICAgIG1faXNJ
bnZhbGlkYXRlZCA9IHRydWU7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludFNldDo6ZmlyZUFsbFdhdGNo
cG9pbnRzKCkKK3sKKyAgICB3aGlsZSAoIW1fc2V0LmlzRW1wdHkoKSkKKyAgICAgICAgbV9zZXQu
YmVnaW4oKS0+ZmlyZSgpOworfQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXYXRjaHBvaW50X2gKKyNkZWZpbmUgV2F0Y2hwb2ludF9oCisKKyNpbmNsdWRlICJDb2Rl
TG9jYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9T
ZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdhdGNocG9p
bnQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4geworcHVibGljOgor
ICAgIFdhdGNocG9pbnQoTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHNvdXJjZSkKKyAgICAgICAgOiBt
X3NvdXJjZShzb3VyY2UubV9sYWJlbC5tX29mZnNldCkKKyAgICAgICAgLCBtX2Rlc3RpbmF0aW9u
KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludHB0cl90Pjo6bWF4KCkpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHNldERlc3RpbmF0aW9uKE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkZXN0aW5h
dGlvbikKKyAgICB7CisgICAgICAgIG1fZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbi5tX2xhYmVs
Lm1fb2Zmc2V0OworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvcnJlY3RMYWJlbHMoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJl
bDsKKyAgICAgICAgbGFiZWwubV9sYWJlbC5tX29mZnNldCA9IG1fc291cmNlOworICAgICAgICBt
X3NvdXJjZSA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxpbmtCdWZmZXIubG9jYXRpb25PZihs
YWJlbCkuZGF0YUxvY2F0aW9uKCkpOworICAgICAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0g
bV9kZXN0aW5hdGlvbjsKKyAgICAgICAgbV9kZXN0aW5hdGlvbiA9IGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGxpbmtCdWZmZXIubG9jYXRpb25PZihsYWJlbCkuZGF0YUxvY2F0aW9uKCkpOworICAg
IH0KKyAgICAKKyAgICB+V2F0Y2hwb2ludCgpOworICAgIAorICAgIHZvaWQgZmlyZSgpOworICAg
IAorcHJpdmF0ZToKKyAgICB1aW50cHRyX3QgbV9zb3VyY2U7CisgICAgdWludHB0cl90IG1fZGVz
dGluYXRpb247Cit9OworCitjbGFzcyBXYXRjaHBvaW50U2V0IDogcHVibGljIFJlZkNvdW50ZWQ8
V2F0Y2hwb2ludFNldD4geworcHVibGljOgorICAgIFdhdGNocG9pbnRTZXQoKTsKKyAgICB+V2F0
Y2hwb2ludFNldCgpOworICAgIAorICAgIGJvb2wgaXNTdGlsbFZhbGlkKCkgY29uc3QgeyByZXR1
cm4gIW1faXNJbnZhbGlkYXRlZDsgfQorICAgIGJvb2wgaGFzQmVlbkludmFsaWRhdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0ludmFsaWRhdGVkOyB9CisgICAgCisgICAgdm9pZCBhZGQoV2F0Y2hw
b2ludCopOworICAgIHZvaWQgbm90aWZ5V3JpdGUoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2lz
V2F0Y2hlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbm90aWZ5V3JpdGVTbG93KCk7
CisgICAgfQorICAgIAorICAgIGJvb2wqIGFkZHJlc3NPZklzV2F0Y2hlZCgpIHsgcmV0dXJuICZt
X2lzV2F0Y2hlZDsgfQorICAgIAorICAgIHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7IC8vIENhbGwg
b25seSBpZiB5b3UndmUgY2hlY2tlZCBpc1dhdGNoZWQuCisgICAgCitwcml2YXRlOgorICAgIHZv
aWQgZmlyZUFsbFdhdGNocG9pbnRzKCk7CisgICAgCisgICAgU2VudGluZWxMaW5rZWRMaXN0PFdh
dGNocG9pbnQ+IG1fc2V0OworICAgIGJvb2wgbV9pc1dhdGNoZWQ7CisgICAgYm9vbCBtX2lzSW52
YWxpZGF0ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFdhdGNocG9p
bnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxNiwxMyArMjE2LDE5IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmFk
ZFZhcihjb25zdCBJZGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW50IEJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wgaXNDb25zdGFu
dCkKK2ludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKAorICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBDb25zdGFudE1vZGUgY29uc3RhbnRNb2RlLCBGdW5jdGlvbk1vZGUgZnVu
Y3Rpb25Nb2RlKQogeworICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk1vZGUpOwogICAgIGludCBp
bmRleCA9IHN5bWJvbFRhYmxlKCkuc2l6ZSgpOwotICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50
cnkoaW5kZXgsIGlzQ29uc3RhbnQgPyBSZWFkT25seSA6IDApOworICAgIFN5bWJvbFRhYmxlRW50
cnkgbmV3RW50cnkoaW5kZXgsIChjb25zdGFudE1vZGUgPT0gSXNDb25zdGFudCkgPyBSZWFkT25s
eSA6IDApOworICAgIGlmIChmdW5jdGlvbk1vZGUgPSBJc0Z1bmN0aW9uVG9TcGVjaWFsaXplKQor
ICAgICAgICBuZXdFbnRyeS5hdHRlbXB0VG9XYXRjaCgpOwogICAgIFN5bWJvbFRhYmxlOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7
CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgaW5kZXggPSByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZC5nZXRJbmRleCgpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsKICAgICByZXR1cm4gaW5kZXg7CiB9CiAKQEAgLTI4
OSwxNyArMjk1LDIzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm8K
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsraSkg
ewogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07
Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERhdGEsIGZ1bmN0
aW9uLT5pZGVudCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3cml0ZSBleGlz
dGluZyBwcm9wZXJ0aWVzLgorICAgICAgICBib29sIHByb3BlcnR5RGlkRXhpc3QgPSAKKyAgICAg
ICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERhdGEsIGZ1bmN0aW9u
LT5pZGVudCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3cml0ZSBleGlzdGlu
ZyBwcm9wZXJ0aWVzLgogCiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUoZXhlYywgbWFrZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uKSwgc2NvcGVDaGFpbik7Ci0gICAg
ICAgIGludCBpbmRleCA9IGFkZEdsb2JhbFZhcihmdW5jdGlvbi0+aWRlbnQoKSwgZmFsc2UpOwor
ICAgICAgICBpbnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoCisgICAgICAgICAgICBmdW5jdGlvbi0+
aWRlbnQoKSwgSXNWYXJpYWJsZSwKKyAgICAgICAgICAgIHByb3BlcnR5RGlkRXhpc3QgPyBJc0Z1
bmN0aW9uVG9TcGVjaWFsaXplIDogTm90RnVuY3Rpb25Pck5vdFNwZWNpYWxpemFibGUpOwogICAg
ICAgICBnbG9iYWxPYmplY3QtPnJlZ2lzdGVyQXQoaW5kZXgpLnNldCgqbV9nbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZhclN0YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmhhc1By
b3BlcnR5KGV4ZWMsICp2YXJTdGFja1tpXS5maXJzdCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgYWRkR2xvYmFsVmFyKCp2YXJTdGFja1tpXS5maXJzdCwgdmFyU3RhY2tbaV0uc2Vj
b25kICYgRGVjbGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQpOworICAgICAgICBhZGRHbG9iYWxW
YXIoCisgICAgICAgICAgICAqdmFyU3RhY2tbaV0uZmlyc3QsCisgICAgICAgICAgICAodmFyU3Rh
Y2tbaV0uc2Vjb25kICYgRGVjbGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQpID8gSXNDb25zdGFu
dCA6IElzVmFyaWFibGUsCisgICAgICAgICAgICBOb3RGdW5jdGlvbk9yTm90U3BlY2lhbGl6YWJs
ZSk7CiAgICAgfQogfQogCkBAIC0xMjAyLDcgKzEyMTQsOSBAQCBSZXNvbHZlUmVzdWx0IEJ5dGVj
b2RlR2VuZXJhdG9yOjpyZXNvbHZlCiAgICAgICAgICAgICBpZiAoKytpdGVyID09IGVuZCkgewog
ICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFJlc29sdmVSZXN1bHQ6OkR5bmFtaWNGbGFnKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6ZHluYW1pY0luZGV4ZWRH
bG9iYWxSZXNvbHZlKGVudHJ5LmdldEluZGV4KCksIGRlcHRoLCBjdXJyZW50U2NvcGUsIGZsYWdz
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6aW5kZXhlZEdsb2JhbFJl
c29sdmUoZW50cnkuZ2V0SW5kZXgoKSwgY3VycmVudFNjb3BlLCBmbGFncyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmluZGV4ZWRHbG9iYWxSZXNvbHZlKAorICAgICAg
ICAgICAgICAgICAgICBlbnRyeS5nZXRJbmRleCgpLCBjdXJyZW50U2NvcGUsCisgICAgICAgICAg
ICAgICAgICAgIGZsYWdzIHwgKGVudHJ5LmNvdWxkQmVXYXRjaGVkKCkgPyBXYXRjaGVkRmxhZyB8
IDApKTsKICAgICAgICAgICAgIH0KICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBp
ZiAoSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0ganNEeW5hbWljQ2FzdDxKU0FjdGl2YXRpb24q
PihjdXJyZW50VmFyaWFibGVPYmplY3QpKQpAQCAtMTQ1OCw2ICsxNDcyLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRTdAogCiAgICAgY2FzZSBSZXNvbHZlUmVzdWx0
OjpJbmRleGVkR2xvYmFsOgogICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVhZE9ubHlJbmRleGVk
R2xvYmFsOgorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6CiAg
ICAgICAgIGlmIChtX2xhc3RPcGNvZGVJRCA9PSBvcF9wdXRfZ2xvYmFsX3ZhcikgewogICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBkc3RQb2ludGVyOwogICAgICAgICAgICAgaW50
IHNyY0luZGV4OwpAQCAtMTQ3OCw3ICsxNDkzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRTdAogICAgIH0KIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwg
UmVnaXN0ZXJJRCogdmFsdWUpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyLCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKHJl
c29sdmVSZXN1bHQudHlwZSgpKSB7CiAgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpSZWdpc3RlcjoK
QEAgLTE0OTksNiArMTUxNCwxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dFN0CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lz
dGVyUG9pbnRlcigpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRl
eCgpKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAKKyAgICBjYXNlIFJlc29sdmVS
ZXN1bHQ6OldhdGNoZWRJbmRleGVkR2xvYmFsOgorICAgICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9n
bG9iYWxfdmFyX2NoZWNrKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVS
ZXN1bHQucmVnaXN0ZXJQb2ludGVyKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
dmFsdWUtPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJl
c3VsdC5nbG9iYWxPYmplY3QoKS0+c3ltYm9sVGFibGUoKS5nZXQoaWRlbnRpZmllci5pbXBsKCkp
LmFkZHJlc3NPZklzV2F0Y2hlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAgICAgZGVm
YXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShy
ZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIC8vIFRoZSByZXNvbHZlZCBiaW5kaW5nIGlzIGltbXV0
YWJsZS4KICAgICAgICAgICAgIFJlYWRPbmx5RmxhZyA9IDB4MjAsCiAgICAgICAgICAgICAvLyBU
aGUgYmFzZSBvYmplY3QgaXMgdGhlIGdsb2JhbCBvYmplY3QuCi0gICAgICAgICAgICBHbG9iYWxG
bGFnID0gMHg0MAorICAgICAgICAgICAgR2xvYmFsRmxhZyA9IDB4NDAsCisgICAgICAgICAgICAv
LyBUaGUgcHJvcGVydHkgaXMgYmVpbmcgd2F0Y2hlZCwgc28gd3JpdGVzIHNob3VsZCBiZSBzcGVj
aWFsLgorICAgICAgICAgICAgV2F0Y2hlZEZsYWcgPSAweDgwCiAgICAgICAgIH07CiAgICAgICAg
IGVudW0gVHlwZSB7CiAgICAgICAgICAgICAvLyBUaGUgcHJvcGVydHkgaXMgbG9jYWwsIGFuZCBz
dG9yZWQgaW4gYSByZWdpc3Rlci4KQEAgLTEzMSw2ICsxMzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIC8vIGJpbmRpbmcgY3JlYXRlZCB3aXRoICJ2YXIiIGF0IHRoZSB0b3AgbGV2
ZWwuIEF0IHJ1bnRpbWUgd2UnbGwKICAgICAgICAgICAgIC8vIGp1c3QgaW5kZXggaW50byB0aGUg
Z2xvYmFsIG9iamVjdC4KICAgICAgICAgICAgIEluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxhZyB8
IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnLAorICAgICAgICAgICAgLy8gTGlrZSBJbmRleGVkR2xv
YmFsLCBidXQgdGhlIHByb3BlcnR5IGlzIGJlaW5nIHdhdGNoZWQuCisgICAgICAgICAgICBXYXRj
aGVkSW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFsRmxhZyB8IFN0YXRpY0ZsYWcg
fCBXYXRjaGVkRmxhZywKICAgICAgICAgICAgIC8vIExpa2UgSW5kZXhlZEdsb2JhbCwgYnV0IHRo
ZSBwcm9wZXJ0eSBpcyBhbHNvIHJlYWQtb25seSwgbGlrZSBOYU4sCiAgICAgICAgICAgICAvLyBJ
bmZpbml0eSwgb3IgdW5kZWZpbmVkLgogICAgICAgICAgICAgUmVhZE9ubHlJbmRleGVkR2xvYmFs
ID0gSW5kZXhlZEZsYWcgfCBSZWFkT25seUZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZywK
QEAgLTQ0Miw3ICs0NDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEluKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IGJhc2UpIHsgcmV0dXJuIGVtaXRCaW5hcnlPcChvcF9pbiwgZHN0LCBwcm9wZXJ0eSwgYmFzZSwg
T3BlcmFuZFR5cGVzKCkpOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFN0YXRpY1Zh
cihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmKTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFB1dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiwgUmVnaXN0ZXJJRCog
dmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29s
dmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2
ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKQEAgLTU3NCw3ICs1NzgsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRo
ZSBhZGRlZCB2YXIuCi0gICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYs
IGJvb2wgaXNDb25zdGFudCk7CisgICAgICAgIGVudW0gQ29uc3RhbnRNb2RlIHsgSXNDb25zdGFu
dCwgSXNWYXJpYWJsZSB9OworICAgICAgICBlbnVtIEZ1bmN0aW9uTW9kZSB7IElzRnVuY3Rpb25U
b1NwZWNpYWxpemUsIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlIH07CisgICAgICAgIGlu
dCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYsIENvbnN0YW50TW9kZSBjb25zdGFudE1v
ZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpOwogCiAgICAgICAgIHZvaWQgYWRkUGFyYW1l
dGVyKGNvbnN0IElkZW50aWZpZXImLCBpbnQgcGFyYW1ldGVySW5kZXgpOwogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVt
cFBvaW50LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsMTEg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogICAgIAorICAgIGJvb2wgaXNTZXQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fY29kZU9mZnNldCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCk7CisgICAgfQorICAgIAogICAgIHZvaWQgc3dpdGNoVG9MYXRlSnVtcChNYWNy
b0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBjaGVjaykKICAgICB7CiAjaWZuZGVmIE5ERUJVRwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCwxMSBAQCB2b2lkIEpJVENvbXBpbGVy
OjpsaW5rT1NSRXhpdHMoKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxv
Y2soKS0+bnVtYmVyT2ZPU1JFeGl0cygpOyArK2kpIHsKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9
IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOwotICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlhbEp1
bXAoKS5saW5rKHRoaXMpOworICAgICAgICBBU1NFUlQoIWV4aXQubV9jaGVjay5pc1NldCgpID09
IChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSkpOworICAgICAgICBpZiAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9PSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAgICAgICBleGl0Lm1fY2hlY2su
aW5pdGlhbEp1bXAoKS5saW5rKHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2Rl
QmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5zZXREZXN0aW5hdGlv
bihsYWJlbCgpKTsKICAgICAgICAgaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKICAgICAg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaSksICZnbG9iYWxEYXRhKCktPm9zckV4aXRJbmRleCk7
CiAgICAgICAgIGV4aXQubV9jaGVjay5zd2l0Y2hUb0xhdGVKdW1wKHBhdGNoYWJsZUp1bXAoKSk7
CkBAIC0xOTAsNiArMTk0LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBs
aW5rQgogICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7CiAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhleGl0Lm1fY2hlY2subGF0ZUp1bXAoKSwgdGFyZ2V0KTsK
ICAgICAgICAgZXhpdC5tX2NoZWNrLmNvcnJlY3RMYXRlSnVtcChsaW5rQnVmZmVyKTsKKyAgICAg
ICAgQVNTRVJUKCFleGl0Lm1fY2hlY2suaXNTZXQoKSA9PSAoZXhpdC5tX3dhdGNocG9pbnRJbmRl
eCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICAgICAgaWYg
KGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQorICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhpdC5tX3dhdGNo
cG9pbnRJbmRleCkuY29ycmVjdExhYmVscyhsaW5rQnVmZmVyKTsKICAgICB9CiAgICAgCiAgICAg
Y29kZUJsb2NrKCktPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkocmV2aXNpb24gMTE5ODAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTk2LDYgKzk2LDcgQEAgc3RydWN0IE9TUkV4aXQgewogICAgIENvZGVPcmlnaW4gbV9jb2RlT3Jp
Z2luRm9yRXhpdFByb2ZpbGU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9yZWNvdmVyeUluZGV4Owor
ICAgIHVuc2lnbmVkIG1fd2F0Y2hwb2ludEluZGV4OwogICAgIAogICAgIEV4aXRLaW5kIG1fa2lu
ZDsKICAgICB1aW50MzJfdCBtX2NvdW50OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTkwLDYgKzIxOTAsMjUgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5k
ZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlVXNlLmluZGV4KCksIGp1bXBU
b0ZhaWwsIHJlY292ZXJ5KTsKICAgICB9CisgICAgLy8gVXNlIHRoaXMgbGlrZSB5b3Ugd291bGQg
dXNlIHNwZWN1bGF0aW9uQ2hlY2soKSwgZXhjZXB0IHRoYXQgeW91IGRvbid0IHBhc3MgaXQgYSBq
dW1wCisgICAgLy8gKGJlY2F1c2UgeW91IGRvbid0IGhhdmUgdG8gZXhlY3V0ZSBhIGJyYW5jaDsg
dGhhdCdzIGtpbmQgb2YgdGhlIHdob2xlIHBvaW50KSwgYW5kIHlvdQorICAgIC8vIG11c3QgcmVn
aXN0ZXIgdGhlIHJldHVybmVkIFdhdGNocG9pbnQgd2l0aCBzb21ldGhpbmcgcmVsZXZhbnQuIElu
IGdlbmVyYWwsIHRoaXMgc2hvdWxkCisgICAgLy8gYmUgdXNlZCB3aXRoIGV4dHJlbWUgY2FyZS4g
VXNlIHNwZWN1bGF0aW9uQ2hlY2soKSB1bmxlc3MgeW91J3ZlIGdvdCBhbiBhbWF6aW5nIHJlYXNv
bgorICAgIC8vIG5vdCB0by4KKyAgICBXYXRjaHBvaW50KiBzcGVjdWxhdGlvbldhdGNocG9pbnQo
RXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBFZGdlIG5vZGVVc2Us
IGNvbnN0IFNwZWN1bGF0aW9uUmVjb3ZlcnkmIHJlY292ZXJ5KQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoYXQo
bV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsK
KyAgICAgICAgT1NSRXhpdCYgZXhpdCA9IG1faml0LmNvZGVCbG9jaygpLT5vc3JFeGl0KAorICAg
ICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoCisgICAgICAgICAgICAg
ICAgT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCks
CisgICAgICAgICAgICAgICAgICAgICAgICBKdW1wKCksIHRoaXMpKSk7CisgICAgICAgIGV4aXQu
bV93YXRjaHBvaW50SW5kZXggPSBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kV2F0Y2hwb2ludCgK
KyAgICAgICAgICAgIFdhdGNocG9pbnQobV9qaXQud2F0Y2hwb2ludExhYmVsKFJlcGxhY2VXaXRo
TG9jYWxKdW1wKSkpOworICAgICAgICByZXR1cm4gbV9qaXQuY29kZUJsb2NrKCktPndhdGNocG9p
bnQoZXhpdC5tX3dhdGNocG9pbnRJbmRleCk7CisgICAgfQogICAgIHZvaWQgZm9yd2FyZFNwZWN1
bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBO
b2RlSW5kZXggbm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25z
dCBWYWx1ZVJlY292ZXJ5JiB2YWx1ZVJlY292ZXJ5KQogICAgIHsKICAgICAgICAgQVNTRVJUKGF0
KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTEwNjMsNiArMTA2MywyMiBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CiAgICAg
ZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRwIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDEK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBidGJueiBbdDJdLCAub3BQdXRHbG9iYWxWYXJDaGVj
a1Nsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgd3JpdGVC
YXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MF0KKyAgICBzdG9yZWkg
dDMsIFBheWxvYWRPZmZzZXRbdDBdCisgICAgZGlzcGF0Y2goNCkKKy5vcFB1dEdsb2JhbFZhckNo
ZWNrU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjaykKKyAgICBkaXNwYXRjaCg0KQorCisKIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQg
Y2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDExOTgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAyLDIyICs1MDIsMjUgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlv
bnNGb3JEZQogICAgIHN0cnVjdHVyZSgpLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7CiB9
CiAKLXZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3Qo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gV1RG
Ojpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBzaXplX3Qgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAo
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVj
dE9mZnNldChvZmZzZXQpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChvZmZzZXQgPT0g
V1RGOjpub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcHV0VW5k
ZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNl
dCkpOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcHV0VW5kZWZp
bmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91
bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dChvZmZzZXQpOworICAgIHJldHVybiB0cnVlOwogfQogCiBORVZFUl9JTkxJTkUgdm9pZCBKU09i
amVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmIHNsb3QsIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgdm9pZCByZW1vdmVEaXJlY3QoSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgYm9vbCByZW1vdmVEaXJlY3QoSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lKTsgLy8gUmV0dXJuIHRydWUgaWYgYW55dGhpbmcgaXMgcmVtb3Zl
ZC4KICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJl
KCktPmRpZFRyYW5zaXRpb24oKTsgfQogICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygp
OyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzIs
NyArNzIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+CiBpbmxp
bmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0
KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3Qg
ZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHNsb3Quc2V0VmFsdWUob2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkp
LmdldCgpKTsKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAg
ICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCwKICAgICBib29sJiBzbG90SXNXcml0ZWFibGUpCiB7Ci0g
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFz
dCBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgo
KSkuZ2V0KCkpOwpAQCAtMTEzLDEzICsxMTMsMTYgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQ
dXQoCiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9
PSBIZWFwOjpoZWFwKG9iamVjdCkpOwogICAgIAogICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOwotICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0
IGZhc3RFbnRyeSA9IGVudHJ5OyAvLyBleHRyYWN0IHRoZSBiaXRzCisgICAgaWYgKGZhc3RFbnRy
eS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChlbnRyeS5pc1JlYWRP
bmx5KCkpIHsKKyAgICBpZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHkoKSkgewogICAgICAgICBpZiAo
c2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CisgICAgaWYgKFVOTElLRUxZKGZhc3RFbnRyeS5pc0ZhdCgpKSkKKyAgICAgICAgZW50cnkubm90
aWZ5V3JpdGUoKTsKICAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0
KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTM2
LDYgKzEzOSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+
c2Vjb25kOwogICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgIGVudHJ5Lm5vdGlmeVdy
aXRlKCk7CiAgICAgZW50cnkuc2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICBvYmplY3Qt
PnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0KGdsb2JhbERhdGEsIG9iamVjdCwgdmFs
dWUpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
MSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcu
aCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAKQEAgLTQyLDQwICs0MywxMzQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgLy8gcmVhc29uYWJseSBzbWFsbCBwb3NpdGl2ZSBvciBuZWdhdGl2
ZSBudW1iZXIsIGFuZCB0aGVyZWZvcmUgaGFzIGl0cyBoaWdoCiAgICAgLy8gZm91ciBiaXRzIGFs
bCBzZXQgb3IgYWxsIHVuc2V0LgogCisgICAgLy8gSW4gYWRkaXRpb24gdG8gaW1wbGVtZW50aW5n
IHNlbWFudGljcy1tYW5kYXRlZCB2YXJpYWJsZSBhdHRyaWJ1dGVzIGFuZAorICAgIC8vIGltcGxl
bWVudGF0aW9uLW1hbmRhdGVkIHZhcmlhYmxlIGluZGV4aW5nLCB0aGlzIGNsYXNzIGFsc28gaW1w
bGVtZW50cworICAgIC8vIHdhdGNocG9pbnRzIHRvIGJlIHVzZWQgZm9yIEpJVCBvcHRpbWl6YXRp
b25zLiBCZWNhdXNlIHdhdGNocG9pbnRzIGFyZQorICAgIC8vIG1lYW50IHRvIGJlIHJlbGF0aXZl
bHkgcmFyZSwgdGhpcyBjbGFzcyBvcHRpbWl6ZXMgaGVhdmlseSBmb3IgdGhlIGNhc2UKKyAgICAv
LyB0aGF0IHRoZXkgYXJlIG5vdCBiZWluZyB1c2VkLiBUbyB0aGF0IGVuZCwgdGhpcyBjbGFzcyB1
c2VzIHRoZSB0aGluLWZhdAorICAgIC8vIGlkaW9tOiBlaXRoZXIgaXQgaXMgdGhpbiwgaW4gd2hp
Y2ggY2FzZSBpdCBjb250YWlucyBhbiBpbi1wbGFjZSBlbmNvZGVkCisgICAgLy8gd29yZCB0aGF0
IGNvbnNpc3RzIG9mIGF0dHJpYnV0ZXMsIHRoZSBpbmRleCwgYW5kIGEgYml0IHNheWluZyB0aGF0
IGl0IGlzCisgICAgLy8gdGhpbjsgb3IgaXQgaXMgZmF0LCBpbiB3aGljaCBjYXNlIGl0IGNvbnRh
aW5zIGEgcG9pbnRlciB0byBhIG1hbGxvYydkCisgICAgLy8gZGF0YSBzdHJ1Y3R1cmUgYW5kIGEg
Yml0IHNheWluZyB0aGF0IGl0IGlzIGZhdC4gVGhlIG1hbGxvYydkIGRhdGEKKyAgICAvLyBzdHJ1
Y3R1cmUgd2lsbCBiZSBtYWxsb2NlZCBhIHNlY29uZCB0aW1lIHVwb24gY29weSwgdG8gcHJlc2Vy
dmUgdGhlCisgICAgLy8gcHJvcGVydHkgdGhhdCBpbi1wbGFjZSBlZGl0cyB0byBTeW1ib2xUYWJs
ZUVudHJ5IGRvIG5vdCBtYW5pZmVzdCBpbiBhbnkKKyAgICAvLyBjb3BpZXMuIEhvd2V2ZXIsIHRo
ZSBtYWxsb2MnZCBGYXRFbnRyeSBkYXRhIHN0cnVjdHVyZSBjb250YWlucyBhIHJlZi0KKyAgICAv
LyBjb3VudGVkIHBvaW50ZXIgdG8gYSBzaGFyZWQgV2F0Y2hwb2ludFNldC4gVGh1cywgaW4tcGxh
Y2UgZWRpdHMgb2YgdGhlCisgICAgLy8gV2F0Y2hwb2ludFNldCB3aWxsIG1hbmlmZXN0IGluIGFs
bCBjb3BpZXMuIEhlcmUncyBhIHBpY3R1cmU6CisgICAgLy8KKyAgICAvLyBTeW1ib2xUYWJsZUVu
dHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hwb2ludFNldAorICAgIC8vCisgICAgLy8gSWYgeW91
IG1ha2UgYSBjb3B5IG9mIGEgU3ltYm9sVGFibGVFbnRyeSwgeW91IHdpbGwgaGF2ZToKKyAgICAv
LworICAgIC8vIG9yaWdpbmFsOiBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0
Y2hwb2ludFNldAorICAgIC8vIGNvcHk6ICAgICBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRy
eSAtLS0tLV4KKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5IHsKKyAgICAgICAgLy8gVXNl
IHRoZSBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGNsYXNzLCBlaXRoZXIgdmlhIGltcGxpY2l0IGNh
c3Qgb3IgYnkgY2FsbGluZworICAgICAgICAvLyBnZXRGYXN0KCksIHdoZW4geW91ICgxKSBvbmx5
IGNhcmUgYWJvdXQgaXNOdWxsKCksIGdldEluZGV4KCksIGFuZCBpc1JlYWRPbmx5KCksCisgICAg
ICAgIC8vIGFuZCAoMikgeW91IGFyZSBpbiBhIGhvdCBwYXRoIHdoZXJlIHlvdSBuZWVkIHRvIG1p
bmltaXplIHRoZSBudW1iZXIgb2YgdGltZXMKKyAgICAgICAgLy8gdGhhdCB5b3UgYnJhbmNoIG9u
IGlzRmF0KCkgd2hlbiBnZXR0aW5nIHRoZSBiaXRzKCkuCisgICAgICAgIGNsYXNzIEZhc3Qgewor
ICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBGYXN0KCkKKyAgICAgICAgICAgICAgICA6IG1f
Yml0cygwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QoY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkp
CisgICAgICAgICAgICAgICAgOiBtX2JpdHMoZW50cnkuYml0cygpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIW1fYml0czsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaW50IGdldEluZGV4KCkgY29uc3QKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2JpdHMgPj4gRmxhZ0Jp
dHMpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaXNSZWFkT25s
eSgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAm
IFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ym9vbCBpc0ZhdCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fYml0cyAmIEZhdEZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
cHJpdmF0ZToKKyAgICAgICAgICAgIGludHB0cl90IG1fYml0czsKKyAgICAgICAgfTsKKwogICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5KCkKICAgICAgICAgICAgIDogbV9iaXRzKDApCiAgICAgICAg
IHsKICAgICAgICAgfQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4KQorICAg
ICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzVmFs
aWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgZmFsc2UsIGZhbHNlKTsK
ICAgICAgICAgfQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4LCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAgcGFjayhpbmRl
eCwgYXR0cmlidXRlcyAmIFJlYWRPbmx5LCBhdHRyaWJ1dGVzICYgRG9udEVudW0pOwogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICB+U3ltYm9sVGFibGVFbnRyeSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBT
eW1ib2xUYWJsZUVudHJ5KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQorICAgICAgICAg
ICAgOiBtX2JpdHMoMCkKKyAgICAgICAgeworICAgICAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgb3BlcmF0b3I9KGNv
bnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
TElLRUxZKCFvdGhlci5pc0ZhdCgpKSkgeworICAgICAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgp
OworICAgICAgICAgICAgICAgIG1fYml0cyA9IG90aGVyLm1fYml0czsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGYXRFbnRyeSogbmV3
RmF0RW50cnkgPSBuZXcgRmF0RW50cnkoKm90aGVyLmZhdEVudHJ5KCkpOworICAgICAgICAgICAg
ZnJlZUZhdEVudHJ5KCk7CisgICAgICAgICAgICBtX2JpdHMgPSBiaXR3aXNlX2Nhc3Q8aW50cHRy
X3Q+KG5ld0ZhdEVudHJ5KSB8IEZhdEZsYWc7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuICFtX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gIWJpdHMo
KTsKICAgICAgICAgfQogCiAgICAgICAgIGludCBnZXRJbmRleCgpIGNvbnN0CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBtX2JpdHMgPj4gRmxhZ0JpdHM7CisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihiaXRzKCkgPj4gRmxhZ0JpdHMpOwogICAgICAgICB9Ci0KKyAg
ICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgRmFzdCBnZXRGYXN0KCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIEZhc3QoKnRoaXMpOworICAgICAgICB9CisgICAgICAg
IAogICAgICAgICB1bnNpZ25lZCBnZXRBdHRyaWJ1dGVzKCkgY29uc3QKICAgICAgICAgewogICAg
ICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7Ci0gICAgICAgICAgICBpZiAobV9iaXRz
ICYgUmVhZE9ubHlGbGFnKQorICAgICAgICAgICAgaW50cHRyX3QgdGhlQml0cyA9IGJpdHMoKTsK
KyAgICAgICAgICAgIGlmICh0aGVCaXRzICYgUmVhZE9ubHlGbGFnKQogICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZXMgfD0gUmVhZE9ubHk7Ci0gICAgICAgICAgICBpZiAobV9iaXRzICYgRG9udEVu
dW1GbGFnKQorICAgICAgICAgICAgaWYgKHRoZUJpdHMgJiBEb250RW51bUZsYWcpCiAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlcyB8PSBEb250RW51bTsKICAgICAgICAgICAgIHJldHVybiBhdHRy
aWJ1dGVzOwogICAgICAgICB9CkBAIC04NywzMCArMTgyLDEzNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9iaXRzICYgUmVhZE9ubHlGbGFnOworICAgICAgICAgICAgcmV0dXJuIGJpdHMo
KSAmIFJlYWRPbmx5RmxhZzsKICAgICAgICAgfQotCisgICAgICAgIAorICAgICAgICBib29sIGNv
dWxkQmVXYXRjaGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFpc0ZhdCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFdhdGNocG9pbnRTZXQqIHdh
dGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50czsKKyAgICAgICAgICAgIGlmICgh
d2F0Y2hwb2ludHMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
cmV0dXJuIHdhdGNocG9pbnRzLT5pc1N0aWxsVmFsaWQoKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgLy8gTm90aWZ5IGFuIG9wcG9ydHVuaXR5IHRvIGNyZWF0ZSBhIHdhdGNocG9pbnQg
Zm9yIGEgdmFyaWFibGUuIFRoaXMgaXMKKyAgICAgICAgLy8gaWRlbXBvdGVudCBhbmQgZmFpbC1z
aWxlbnQuIEl0IGlzIGlkZW1wb3RlbnQgaW4gdGhlIHNlbnNlIHRoYXQgaWYKKyAgICAgICAgLy8g
YSB3YXRjaHBvaW50IHNldCBoYWQgYWxyZWFkeSBiZWVuIGNyZWF0ZWQsIHRoZW4gYW5vdGhlciBv
bmUgd2lsbCBub3QKKyAgICAgICAgLy8gYmUgY3JlYXRlZC4gSGVuY2UgdHdvIGNhbGxzIHRvIHRo
aXMgbWV0aG9kIGhhdmUgdGhlIHNhbWUgZWZmZWN0IGFzCisgICAgICAgIC8vIG9uZSBjYWxsLiBJ
dCBpcyBhbHNvIGZhaWwtc2lsZW50LCBpbiB0aGUgc2Vuc2UgdGhhdCBpZiBhIHdhdGNocG9pbnQK
KyAgICAgICAgLy8gc2V0IGhhZCBiZWVuIGNyZWF0ZWQgYW5kIGhhZCBhbHJlYWR5IGJlZW4gaW52
YWxpZGF0ZWQsIHRoZW4gdGhpcyB3aWxsCisgICAgICAgIC8vIGp1c3QgcmV0dXJuLiBUaGlzIG1l
YW5zIHRoYXQgY291bGRCZVdhdGNoZWQoKSBtYXkgcmV0dXJuIGZhbHNlIGV2ZW4KKyAgICAgICAg
Ly8gaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYWxsIHRvIGF0dGVtcHRUb1dhdGNoKCkuCisgICAgICAg
IHZvaWQgYXR0ZW1wdFRvV2F0Y2goKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZsYXRlKCk7
CisgICAgICAgICAgICBpZiAoIWZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMpCisgICAgICAgICAg
ICAgICAgZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cyA9IGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50
U2V0KCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sKiBhZGRyZXNzT2ZJc1dh
dGNoZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7
CisgICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkcmVzc09m
SXNXYXRjaGVkKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgYWRkV2F0Y2hw
b2ludChXYXRjaHBvaW50KiB3YXRjaHBvaW50KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQoY291bGRCZVdhdGNoZWQoKSk7CisgICAgICAgICAgICBmYXRFbnRyeSgpLT5tX3dhdGNocG9p
bnRzLT5hZGQod2F0Y2hwb2ludCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBub3RpZnlXcml0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChM
SUtFTFkoIWlzRmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQo
KTsKKyAgICAgICAgICAgIGlmICghd2F0Y2hwb2ludHMpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdyaXRlKCk7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFJlYWRP
bmx5RmxhZyA9IDB4MTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRFbnVtRmxh
ZyA9IDB4MjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vdE51bGxGbGFnID0gMHg0
OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRmxhZ0JpdHMgPSAzOworICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgRmF0RmxhZyA9IDB4MTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFJlYWRPbmx5RmxhZyA9IDB4MjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIERvbnRFbnVtRmxhZyA9IDB4NDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5v
dE51bGxGbGFnID0gMHg4OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRmxhZ0JpdHMg
PSA0OworICAgICAgICAKKyAgICAgICAgY2xhc3MgRmF0RW50cnkgeworICAgICAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEZhdEVu
dHJ5KGludHB0cl90IGJpdHMpCisgICAgICAgICAgICAgICAgOiBtX2JpdHMoYml0cyB8IEZhdEZs
YWcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludHB0cl90
IG1fYml0czsgLy8gYWx3YXlzIGhhcyBGYXRGbGFnIHNldCBhbmQgZXhhY3RseSBtYXRjaGVzIHdo
YXQgdGhlIGJpdHMgd291bGQgaGF2ZSBiZWVuIGlmIHRoaXMgd2Fzbid0IGZhdC4KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fd2F0Y2hwb2ludHM7Cisg
ICAgICAgIH07CisgICAgICAgIAorICAgICAgICBib29sIGlzRmF0KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGNvbnN0IEZhdEVudHJ5KiBmYXRFbnRyeSgpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChpc0ZhdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8Y29uc3QgRmF0RW50cnkqPihtX2JpdHMgJiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBmYXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChpc0ZhdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RmF0
RW50cnkqPihtX2JpdHMgJiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHZvaWQgaW5mbGF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fYml0cyA9IGJpdHdpc2VfY2FzdDxp
bnRwdHJfdD4obmV3IEZhdEVudHJ5KG1fYml0cykpIHwgRmF0RmxhZzsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBpbnRwdHJfdCBiaXRzKCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGlzRmF0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
dEVudHJ5KCktPm1fYml0czsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHM7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgaW50cHRyX3QmIGJpdHMoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoaXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmF0
RW50cnkoKS0+bV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIG1fYml0czsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgdm9pZCBmcmVlRmF0RW50cnkoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIWlzRmF0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ZGVsZXRlIGZhdEVudHJ5KCk7CisgICAgICAgIH0KIAogICAgICAgICB2b2lkIHBhY2soaW50IGlu
ZGV4LCBib29sIHJlYWRPbmx5LCBib29sIGRvbnRFbnVtKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBtX2JpdHMgPSAoaW5kZXggPDwgRmxhZ0JpdHMpIHwgTm90TnVsbEZsYWc7CisgICAgICAgICAg
ICBpbnRwdHJfdCYgYml0c1JlZiA9IGJpdHMoKTsKKyAgICAgICAgICAgIGJpdHNSZWYgPSAoc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBGbGFnQml0cykgfCBOb3ROdWxsRmxhZzsKICAg
ICAgICAgICAgIGlmIChyZWFkT25seSkKLSAgICAgICAgICAgICAgICBtX2JpdHMgfD0gUmVhZE9u
bHlGbGFnOworICAgICAgICAgICAgICAgIGJpdHNSZWYgfD0gUmVhZE9ubHlGbGFnOwogICAgICAg
ICAgICAgaWYgKGRvbnRFbnVtKQotICAgICAgICAgICAgICAgIG1fYml0cyB8PSBEb250RW51bUZs
YWc7CisgICAgICAgICAgICAgICAgYml0c1JlZiB8PSBEb250RW51bUZsYWc7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNWYWxpZEluZGV4KGludCBpbmRleCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuICgoaW5kZXggPDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRzKSA9
PSBpbmRleDsKKyAgICAgICAgICAgIHJldHVybiAoKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRl
eCkgPDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRzKSA9PSBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5k
ZXgpOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IG1fYml0czsKKyAgICAgICAgaW50cHRyX3Qg
bV9iaXRzOwogICAgIH07CiAKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHMg
OiBIYXNoVHJhaXRzPFN5bWJvbFRhYmxlRW50cnk+IHsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Nl
Z21lbnRlZFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZl
Y3Rvci5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsOCArOTgsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAK
ICAgICAvLyBTZWdtZW50ZWRWZWN0b3IgaXMganVzdCBsaWtlIFZlY3RvciwgYnV0IGl0IGRvZXNu
J3QgbW92ZSB0aGUgdmFsdWVzCiAgICAgLy8gc3RvcmVkIGluIGl0cyBidWZmZXIgd2hlbiBpdCBn
cm93cy4gVGhlcmVmb3JlLCBpdCBpcyBzYWZlIHRvIGtlZXAKLSAgICAvLyBwb2ludGVycyBpbnRv
IGEgU2VnbWVudGVkVmVjdG9yLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2Vn
bWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7CisgICAgLy8gcG9pbnRlcnMgaW50byBh
IFNlZ21lbnRlZFZlY3Rvci4gVGhlIGRlZmF1bHQgdHVuaW5nIHZhbHVlcyBhcmUKKyAgICAvLyBv
cHRpbWl6ZWQgZm9yIHNlZ21lbnRlZCB2ZWN0b3JzIHRoYXQgZ2V0IGxhcmdlOyB5b3UgbWF5IHdh
bnQgdG8gdXNlCisgICAgLy8gU2VnbWVudGVkVmVjdG9yPHRoaW5neSwgMSwgMD4gaWYgeW91IGRv
bid0IGV4cGVjdCBhIGxvdCBvZiBlbnRyaWVzLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBz
aXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXplX3QgSW5saW5lQ2FwYWNpdHkgPSAzMj4KKyAgICBj
bGFzcyBTZWdtZW50ZWRWZWN0b3IgewogICAgICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVj
dG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+OwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4gSXRlcmF0b3I7CkBAIC0y
NTAsNyArMjUzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsK
ICAgICAgICAgU2VnbWVudCBtX2lubGluZVNlZ21lbnQ7Ci0gICAgICAgIFZlY3RvcjxTZWdtZW50
KiwgMzI+IG1fc2VnbWVudHM7CisgICAgICAgIFZlY3RvcjxTZWdtZW50KiwgSW5saW5lQ2FwYWNp
dHk+IG1fc2VnbWVudHM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146716</attachid>
            <date>2012-06-09 12:00:30 -0700</date>
            <delta_ts>2012-06-09 17:32:16 -0700</delta_ts>
            <desc>even more</desc>
            <filename>globalwatch_patch_4.diff</filename>
            <type>text/plain</type>
            <size>72680</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5OTExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBA
QAorMjAxMi0wNi0wOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFdvcmsgaW4gcHJvZ3Jlc3MhCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OndhdGNocG9pbnRMYWJlbCk6CisgICAgICAgICog
YXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cmVwbGFjZVdp
dGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNy
b0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1heEp1
bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNI
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cmVwbGFjZVdpdGhKdW1wKToK
KyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODYpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Njo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODY6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDgpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAg
ICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAgIChSZXBhdGNoQnVmZmVy
KToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2QXNzZW1ibGVyKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6Y21wYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVz
dGJfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmxhYmVsRm9yV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bGFiZWwpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2
SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om1lbW9yeU1vZFJNKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRPU1JFeGl0KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KToKKyAgICAg
ICAgKENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kV2F0Y2hwb2lu
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZXYXRjaHBvaW50cyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6d2F0Y2hwb2ludCk6CisgICAgICAgIChERkdEYXRhKToKKyAg
ICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFt
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2F0Y2hwb2ludDo6fldhdGNocG9pbnQpOgorICAgICAgICAoV2F0Y2hwb2ludDo6ZmlyZSk6Cisg
ICAgICAgIChXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKFdhdGNocG9p
bnRTZXQ6On5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKFdhdGNocG9pbnRTZXQ6OmFkZCk6Cisg
ICAgICAgIChXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZVNsb3cpOgorICAgICAgICAoV2F0Y2hw
b2ludFNldDo6ZmlyZUFsbFdhdGNocG9pbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBv
aW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFdhdGNocG9pbnQpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50OjpXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hw
b2ludDo6c2V0RGVzdGluYXRpb24pOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojpjb3JyZWN0
TGFiZWxzKToKKyAgICAgICAgKFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpXYXRjaHBv
aW50U2V0Ojppc1N0aWxsVmFsaWQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpoYXNC
ZWVuSW52YWxpZGF0ZWQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0
ZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmFkZHJlc3NPZklzV2F0Y2hlZCk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZhcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRTdGF0aWNWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dFN0YXRpY1Zhcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6
CisgICAgICAgIChCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50Lmg6CisgICAgICAgIChK
U0M6OkRGRzo6Q29ycmVjdGFibGVKdW1wUG9pbnQ6OmlzU2V0KToKKyAgICAgICAgKENvcnJlY3Rh
YmxlSnVtcFBvaW50KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKE9TUkV4
aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3Vs
YXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlv
bldhdGNocG9pbnQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxf
dmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2xv
YmFsX3Zhcl9jaGVjayk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpT
Qzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChMTEludCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1l
L0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0
KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFN5bWJv
bFRhYmxlRW50cnkpOgorICAgICAgICAoRmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxl
RW50cnk6OkZhc3Q6OkZhc3QpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0
Ojppc051bGwpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0OjpnZXRJbmRl
eCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzUmVhZE9ubHkpOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc0ZhdCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6OlN5bWJvbFRhYmxlRW50cnkpOgorICAgICAgICAoSlNDOjpT
eW1ib2xUYWJsZUVudHJ5Ojp+U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6
OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmdldEluZGV4KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0RmFzdCk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJs
ZUVudHJ5Ojppc1JlYWRPbmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Y291
bGRCZVdhdGNoZWQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjphdHRlbXB0VG9X
YXRjaCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmFkZHJlc3NPZklzV2F0Y2hl
ZCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmFkZFdhdGNocG9pbnQpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZSk6CisgICAgICAgIChGYXRF
bnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhdEVudHJ5OjpGYXRFbnRy
eSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzRmF0KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6ZmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJs
ZUVudHJ5OjppbmZsYXRlKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Yml0cyk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmZyZWVGYXRFbnRyeSk6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OnBhY2spOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJs
ZUVudHJ5Ojppc1ZhbGlkSW5kZXgpOgorCiAyMDEyLTA2LTA5ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBiYWNrIGluIHBh
cnQyIG9mIHIxMTg2NDYuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTE5ODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgogICAgIC8vIFRoZSBmb2xs
b3dpbmcgdHlwZXMgYXJlIHVzZWQgYXMgb3BlcmFuZHMgdG8gTWFjcm9Bc3NlbWJsZXIgb3BlcmF0
aW9ucywKICAgICAvLyBkZXNjcmliaW5nIGltbWVkaWF0ZSAgYW5kIG1lbW9yeSBvcGVyYW5kcyB0
byB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGJlIHBsYW50ZWQuCiAKLQogICAgIGVudW0gU2NhbGUgewog
ICAgICAgICBUaW1lc09uZSwKICAgICAgICAgVGltZXNUd28sCkBAIC01NTksNiArNTU4LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIExhYmVsKHRoaXMpOwogICAgIH0KICAgICAKKyAgICBM
YWJlbCB3YXRjaHBvaW50TGFiZWwoSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRU
eXBlKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRjaHBvaW50KGp1bXBS
ZXBsYWNlbWVudFR5cGUpOworICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CisgICAgfQorICAg
IAogICAgIExhYmVsIGFsaWduKCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFsaWduKDE2
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJs
ZXJCdWZmZXIuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksMTEgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBlbnVtIEp1bXBSZXBsYWNlbWVudFR5cGUgeworICAg
ICAgICBSZXBsYWNlV2l0aExvY2FsSnVtcCwKKyAgICAgICAgUmVwbGFjZVdpdGhGYXJKdW1wCisg
ICAgfTsKKyAgICAKICAgICBzdHJ1Y3QgQXNzZW1ibGVyTGFiZWwgewogICAgICAgICBBc3NlbWJs
ZXJMYWJlbCgpCiAgICAgICAgICAgICA6IG1fb2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkod29ya2luZyBjb3B5
KQpAQCAtMTAxMCw2ICsxMDEwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9u
UHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihBUk1Bc3NlbWJsZXI6OnJlYWRDYWxsVGFy
Z2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2Nh
dGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQVJNQXNzZW1ibGVyOjpDb25kaXRpb24g
QVJNQ29uZGl0aW9uKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0NSw2ICs1NDUsMTcg
QEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlv
bkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCiBwcml2YXRlOgogICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBB
cm1BZGRyZXNzIGFkZHJlc3MpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCShyZXZpc2lvbiAxMTk4MDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xODY4LDYgKzE4NjgsMTcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KE1JUFNBc3NlbWJs
ZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQogCisgICAg
c3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9u
U3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4
SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiBwcml2YXRlOgogICAgIC8vIElmIG1fZml4
ZWRXaWR0aCBpcyB0cnVlLCB3ZSB3aWxsIGdlbmVyYXRlIGEgZml4ZWQgbnVtYmVyIG9mIGluc3Ry
dWN0aW9ucy4KICAgICAvLyBPdGhlcndpc2UsIHdlIGNhbiBlbWl0IGFueSBudW1iZXIgb2YgaW5z
dHJ1Y3Rpb25zLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclNINC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTcxLDYgKzE5NzEsMTcgQEAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgcwogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCop
KCk+KFNINEFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByb3RlY3RlZDoK
ICAgICBTSDRBc3NlbWJsZXI6OkNvbmRpdGlvbiBTSDRDb25kaXRpb24oUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmxvYWREb3VibGU7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnN0b3JlRG91YmxlOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjb252ZXJ0
SW50MzJUb0RvdWJsZTsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNo
VGVzdDg7CiAKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtMTY1LDYgKzE2NiwxNiBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfaTMycihpbml0aWFsVmFsdWUuYXNJbnRwdHIoKSwgZGVz
dCk7CiAgICAgICAgIHJldHVybiBEYXRhTGFiZWxQdHIodGhpcyk7CiAgICAgfQorICAgIAorICAg
IEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBh
ZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAg
ICAgICBBU1NFUlQobWFzay5tX3ZhbHVlID49IC0xMjggJiYgbWFzay5tX3ZhbHVlIDw9IDI1NSk7
CisgICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5jbXBiX2ltKDAsIGFkZHJlc3MubV9wdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci50ZXN0Yl9pbShtYXNrLm1fdmFsdWUsIGFkZHJlc3MubV9wdHIpOworICAgICAg
ICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAg
fQogCiAgICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRy
IGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkKICAgICB7CkBAIC0xOTgsNiAr
MjA5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYWxsLmRhdGFMb2NhdGlv
bigpKSArIG9mZnNldCkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVt
cChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBk
ZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIC8vIE5PVEU6IG9uIFg4Ni0zMiB0aGUgc2NyYXRj
aCByZWdpc3RlciBpcyB1bnVzZWQuCisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgUmVnaXN0ZXJJRDo6ZWF4KTsKKyAgICB9CisgICAgCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7CiAgICAgZnJpZW5kIGNsYXNzIFJl
cGF0Y2hCdWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTUxMyw2ICs1MTMsMTIgQEAgcHVibGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bW92ZShhZGRyLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEJhc2VJbmRleChzY3Jh
dGNoUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgVGltZXNPbmUpLCBtYXNrKTsKICAgICB9CisgICAg
CisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRy
ZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIoYWRk
cmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIp
LCBtYXNrKTsKKyAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQo
KSB7IHJldHVybiB0cnVlOyB9CiAgICAgLy8gU2VlIGNvbW1lbnQgb24gTWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6c3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKQpAQCAtNTI3LDYgKzUzMywxNiBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGlu
ZGluZygpIHsgcmV0dXJuIHNjcmF0Y2hSZWdpc3RlcjsgfQogCisgICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2Nh
dGlvbkxhYmVsIGRlc3RpbmF0aW9uLCBKdW1wUmVwbGFjZW1lbnRUeXBlIGp1bXBSZXBsYWNlbWVu
dFR5cGUpCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0
cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVB
ZGRyZXNzKCksIHNjcmF0Y2hSZWdpc3RlciwganVtcFJlcGxhY2VtZW50VHlwZSA9PSBSZXBsYWNl
V2l0aExvY2FsSnVtcCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZShKdW1wUmVwbGFjZW1lbnRUeXBlIGp1bXBSZXBsYWNlbWVudFR5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRT
aXplKGp1bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVwbGFjZVdpdGhMb2NhbEp1bXApOworICAgIH0K
KwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgICBmcmllbmQgY2xh
c3MgUmVwYXRjaEJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIy
LDYgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVyVG9U
cmFtcG9saW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1bmN0
aW9uKSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlv
bkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQor
ICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlv
blN0YXJ0LCBkZXN0aW5hdGlvbik7CisgICAgfQogCiBwcml2YXRlOgogICAgIHZvaWQqIG1fc3Rh
cnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0Nyw2ICsyNDcsOCBAQCBwcml2YXRl
OgogcHVibGljOgogCiAgICAgWDg2QXNzZW1ibGVyKCkKKyAgICAgICAgOiBtX2luZGV4T2ZMYXN0
V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAgICAsIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBv
aW50KElOVF9NSU4pCiAgICAgewogICAgIH0KIApAQCAtNzk4LDYgKzgwMCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09Q
X0NNUCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGU4KGltbSk7CiAgICAgfQorICAgIAorI2lmIENQVShYODYpCisgICAgdm9pZCBjbXBi
X2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9DTVAsIGFkZHIpOworICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGF0ZTgoaW1tKTsKKyAgICB9CisjZW5kaWYKIAogICAgIHZvaWQg
Y21wbF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKICAgICB7CkBAIC05NDgsNiArOTU4LDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KIAorI2lmIENQVShYODYp
CisgICAgdm9pZCB0ZXN0Yl9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYkliLCBHUk9VUDNfT1BfVEVT
VCwgYWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIHZvaWQgdGVzdGxfaTMybShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKQEAgLTE3MDIsMTAgKzE3MjAsMjYgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fZm9ybWF0dGVyLmNvZGVTaXplKCk7CiAgICAgfQorICAg
IAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludChKdW1wUmVwbGFjZW1lbnRU
eXBlIGp1bXBSZXBsYWNlbWVudFR5cGUpCisgICAgeworICAgICAgICBBc3NlbWJsZXJMYWJlbCBy
ZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0
ICE9IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwo
KTsKKyAgICAgICAgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7Cisg
ICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsg
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZShqdW1wUmVwbGFjZW1lbnRUeXBlKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFi
ZWwgcmVzdWx0ID0gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgLy8gRklYTUU6IG5lZWQg
dG8ga25vdyB0aGUgc2l6ZSBvZiB0aGUgbGFzdCB3YXRjaHBvaW50IGFzIHdlbGwuCisgICAgICAg
IHdoaWxlIChVTkxJS0VMWShyZXN1bHQubV9vZmZzZXQgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0
Y2hwb2ludCkpIHsKKyAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmVzdWx0ID0gbV9m
b3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGFsaWduKGludCBhbGlnbm1lbnQpCkBAIC0xNzgyLDYg
KzE4MTYsNDMgQEAgcHVibGljOgogICAgICAgICBzZXRQb2ludGVyKHdoZXJlLCB2YWx1ZSk7CiAg
ICAgfQogICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVj
dGlvblN0YXJ0LCB2b2lkKiB0bywgUmVnaXN0ZXJJRCBzY3JhdGNoLCBKdW1wUmVwbGFjZW1lbnRU
eXBlIGp1bXBSZXBsYWNlbWVudFR5cGUpCisgICAgeworICAgICAgICBpbnQ4X3QgKnB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIGludDhf
dCAqZHN0UHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPih0byk7CisgICAgICAgIGludHB0
cl90IGRpc3RhbmNlID0gKGludHB0cl90KShkc3RQdHIgLSAocHRyICsgNSkpOworI2lmIENQVShY
ODZfNjQpCisgICAgICAgIGlmIChkaXN0YW5jZSA+IElOVDMyX01BWCB8fCBkaXN0YW5jZSA8IElO
VDMyX01JTikgeworICAgICAgICAgICAgQVNTRVJUKGp1bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVw
bGFjZVdpdGhGYXJKdW1wKTsKKyAgICAgICAgICAgIC8vIG1vdnFfaTY0ciBpbnN0cnVjdGlvbgor
ICAgICAgICAgICAgcHRyWzBdID0gUFJFX1JFWCB8ICgxPDwzKSB8IChzY3JhdGNoPj4zKTsKKyAg
ICAgICAgICAgIHB0clsxXSA9IE9QX01PVl9FQVhJdiArIChzY3JhdGNoICYgNyk7CisgICAgICAg
ICAgICAqcmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90Kj4ocHRyKzMpID0gc3RhdGljX2Nhc3Q8aW50
NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pKTsKKyAgICAgICAgICAgIHB0ciAr
PSAxMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gam1wX3IgaW5zdHJ1Y3Rpb24KKyAg
ICAgICAgICAgIGlmIChzY3JhdGNoID49IFg4NlJlZ2lzdGVyczo6cjgpIHsKKyAgICAgICAgICAg
ICAgICBwdHJbMF0gPSBQUkVfUkVYIHwgKHNjcmF0Y2g+PjMpOworICAgICAgICAgICAgICAgIHB0
cisrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHRyWzBdID0gT1BfR1JPVVA1X0V2Owor
ICAgICAgICAgICAgcHRyWzFdID0gKDM8PDYpIHwgKEdST1VQNV9PUF9KTVBOPDwzKSB8IChzY3Jh
dGNoICYgNyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorICAgICAg
ICBwdHJbMF0gPSBPUF9KTVBfcmVsMzI7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PGludDMy
X3QqPihwdHIgKyAxKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRpc3RhbmNlKTsKKyAgICB9Cisg
ICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKEp1bXBSZXBs
YWNlbWVudFR5cGUganVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisjaWYgQ1BVKFg4Nl82NCkK
KyAgICAgICAgaWYgKGp1bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVwbGFjZVdpdGhGYXJKdW1wKQor
ICAgICAgICAgICAgcmV0dXJuIDEzOworI2VuZGlmCisgICAgICAgIHJldHVybiA1OworICAgIH0K
KyAgICAKICAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hlcmUpCiAgICAgewog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHdoZXJlKVstMV07CkBAIC0y
MzM5LDYgKzI0MTAsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1
ZmZlcjsKICAgICB9IG1fZm9ybWF0dGVyOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2lu
dDsKKyAgICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjczLDEwICsyNzMsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICB2b2lkIGFwcGVuZE9TUkV4aXQoY29uc3QgREZHOjpPU1JFeGl0JiBvc3JFeGl0
KQorICAgICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3Ny
RXhpdCkKICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7
CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPm9zckV4aXQuc2l6ZSgp
OwogICAgICAgICAgICAgbV9kZmdEYXRhLT5vc3JFeGl0LmFwcGVuZChvc3JFeGl0KTsKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERGRzo6
T1NSRXhpdCYgbGFzdE9TUkV4aXQoKQpAQCAtMjg0LDEwICsyODYsMjAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5vc3JFeGl0Lmxhc3QoKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KGNv
bnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgICAgIHVuc2lnbmVk
IGFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292ZXJ5
JiByZWNvdmVyeSkKICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNz
YXJ5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPnNwZWN1bGF0
aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJl
Y292ZXJ5LmFwcGVuZChyZWNvdmVyeSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhcHBlbmRXYXRjaHBvaW50KGNvbnN0
IFdhdGNocG9pbnQmIHdhdGNocG9pbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURG
R0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdE
YXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgICAgICBtX2RmZ0RhdGEtPndhdGNocG9p
bnRzLmFwcGVuZCh3YXRjaHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAt
MzA0LDYgKzMxNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2Rm
Z0RhdGEtPnNwZWN1bGF0aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIAor
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZldhdGNocG9pbnRzKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFtX2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gbV9kZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIERGRzo6T1NSRXhpdCYgb3NyRXhpdCh1bnNpZ25lZCBpbmRleCkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdFtpbmRleF07CkBA
IC0zMTQsNiArMzMzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1f
ZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeVtpbmRleF07CiAgICAgICAgIH0KICAgICAgICAg
CisgICAgICAgIFdhdGNocG9pbnQmIHdhdGNocG9pbnQodW5zaWduZWQgaW5kZXgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRzW2luZGV4XTsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNlKEpTQ2Vs
bCogdGFyZ2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3Nh
cnkoKTsKQEAgLTEyMzgsNiArMTI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
VmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKICAgICAgICAgICAgIFNlZ21lbnRl
ZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgICAgICAgICBWZWN0b3I8REZH
OjpTcGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OworICAgICAgICAgICAg
U2VnbWVudGVkVmVjdG9yPFdhdGNocG9pbnQsIDEsIDA+IHdhdGNocG9pbnRzOwogICAgICAgICAg
ICAgVmVjdG9yPFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uPiB0cmFuc2l0aW9uczsKICAgICAgICAg
ICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPiA+IHdlYWtSZWZlcmVuY2VzOwogICAgICAg
ICAgICAgYm9vbCBtYXlCZUV4ZWN1dGluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTkz
LDYgKzE5Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogICAgICAgICAKICAgICAg
ICAgSW5zdHJ1Y3Rpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpIHsg
dS5yZWdpc3RlclBvaW50ZXIgPSByZWdpc3RlclBvaW50ZXI7IH0KKyAgICAgICAgCisgICAgICAg
IEluc3RydWN0aW9uKGJvb2wqIHByZWRpY2F0ZVBvaW50ZXIpIHsgdS5wcmVkaWNhdGVQb2ludGVy
ID0gcHJlZGljYXRlUG9pbnRlcjsgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIE9w
Y29kZSBvcGNvZGU7CkBAIC0yMDUsNiArMjA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvOwogICAgICAgICAgICAgVmFsdWVQ
cm9maWxlKiBwcm9maWxlOwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKKyAgICAgICAgICAg
IGJvb2wqIHByZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlz
aW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBtYWNybyhvcF9wdXRfc2NvcGVkX3ZhciwgNCkgXAogICAgICAgICBtYWNybyhvcF9nZXRfZ2xv
YmFsX3ZhciwgNCkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9w
X3B1dF9nbG9iYWxfdmFyLCAzKSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrLCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfYmFzZSwgNSkgLyogaGFzIHZhbHVl
IHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMs
IDMpIFwKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRoX2Jhc2UsIDUpIC8qIGhhcyB2YWx1
ZSBwcm9maWxpbmcgKi8gXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dh
dGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKworV2F0Y2hwb2ludDo6
fldhdGNocG9pbnQoKQoreworICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICByZW1vdmUoKTsK
K30KKwordm9pZCBXYXRjaHBvaW50OjpmaXJlKCkKK3sKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
bGFjZVdpdGhKdW1wKAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KG1fc291cmNlKSksCisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVrKGJpdHdpc2VfY2FzdDx2
b2lkKj4obV9kZXN0aW5hdGlvbikpKTsKKyAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgcmVt
b3ZlKCk7Cit9CisKK1dhdGNocG9pbnRTZXQ6OldhdGNocG9pbnRTZXQoKQorICAgIDogbV9pc1dh
dGNoZWQoZmFsc2UpCisgICAgLCBtX2lzSW52YWxpZGF0ZWQoZmFsc2UpCit7Cit9CisKK1dhdGNo
cG9pbnRTZXQ6On5XYXRjaHBvaW50U2V0KCkKK3sKKyAgICAvLyBGaXJlIGFsbCB3YXRjaHBvaW50
cy4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBpcyBwb3NzaWJsZSwgc2F5IHdpdGgKKyAg
ICAvLyBzdHJ1Y3R1cmUgd2F0Y2hwb2ludHMsIGZvciB0aGUgd2F0Y2hwb2ludCBzZXQgb3duZXIg
dG8gZGllIHdoaWxlIHRoZQorICAgIC8vIHdhdGNocG9pbnQgb3duZXJzIGFyZSBzdGlsbCBsaXZl
LgorICAgIGZpcmVBbGxXYXRjaHBvaW50cygpOworfQorCit2b2lkIFdhdGNocG9pbnRTZXQ6OmFk
ZChXYXRjaHBvaW50KiB3YXRjaHBvaW50KQoreworICAgIG1fc2V0LnB1c2god2F0Y3BvaW50KTsK
KyAgICBtX2lzV2F0Y2hlZCA9IHRydWU7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludFNldDo6bm90aWZ5
V3JpdGVTbG93KCkKK3sKKyAgICBBU1NFUlQobV9pc1dhdGNoZWQpOworICAgIAorICAgIGZpcmVB
bGxXYXRjaHBvaW50cygpOworICAgIG1faXNXYXRjaGVkID0gZmFsc2U7CisgICAgbV9pc0ludmFs
aWRhdGVkID0gdHJ1ZTsKK30KKwordm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hwb2lu
dHMoKQoreworICAgIHdoaWxlICghbV9zZXQuaXNFbXB0eSgpKQorICAgICAgICBtX3NldC5iZWdp
bigpLT5maXJlKCk7Cit9CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9X
YXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1dhdGNocG9pbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdhdGNocG9pbnRfaAorI2RlZmluZSBXYXRjaHBvaW50X2gKKworI2luY2x1ZGUgIkNvZGVMb2Nh
dGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1NlbnRp
bmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2F0Y2hwb2ludCA6
IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXYXRjaHBvaW50PiB7CitwdWJsaWM6CisgICAg
V2F0Y2hwb2ludChNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgc291cmNlKQorICAgICAgICA6IG1fc291
cmNlKHNvdXJjZS5tX2xhYmVsLm1fb2Zmc2V0KQorICAgICAgICAsIG1fZGVzdGluYXRpb24oc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc2V0RGVzdGluYXRpb24oTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRlc3RpbmF0aW9u
KQorICAgIHsKKyAgICAgICAgbV9kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uLm1fbGFiZWwubV9v
ZmZzZXQ7CisgICAgfQorICAgIAorICAgIHZvaWQgY29ycmVjdExhYmVscyhMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxhYmVsOwor
ICAgICAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9zb3VyY2U7CisgICAgICAgIG1fc291
cmNlID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGxhYmVs
KS5kYXRhTG9jYXRpb24oKSk7CisgICAgICAgIGxhYmVsLm1fbGFiZWwubV9vZmZzZXQgPSBtX2Rl
c3RpbmF0aW9uOworICAgICAgICBtX2Rlc3RpbmF0aW9uID0gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGxhYmVsKS5kYXRhTG9jYXRpb24oKSk7CisgICAgfQor
ICAgIAorICAgIH5XYXRjaHBvaW50KCk7CisgICAgCisgICAgdm9pZCBmaXJlKCk7CisgICAgCitw
cml2YXRlOgorICAgIHVpbnRwdHJfdCBtX3NvdXJjZTsKKyAgICB1aW50cHRyX3QgbV9kZXN0aW5h
dGlvbjsKK307CisKK2NsYXNzIFdhdGNocG9pbnRTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXYXRj
aHBvaW50U2V0PiB7CitwdWJsaWM6CisgICAgV2F0Y2hwb2ludFNldCgpOworICAgIH5XYXRjaHBv
aW50U2V0KCk7CisgICAgCisgICAgYm9vbCBpc1N0aWxsVmFsaWQoKSBjb25zdCB7IHJldHVybiAh
bV9pc0ludmFsaWRhdGVkOyB9CisgICAgYm9vbCBoYXNCZWVuSW52YWxpZGF0ZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzSW52YWxpZGF0ZWQ7IH0KKyAgICAKKyAgICB2b2lkIGFkZChXYXRjaHBvaW50
Kik7CisgICAgdm9pZCBub3RpZnlXcml0ZSgpCisgICAgeworICAgICAgICBpZiAoIW1faXNXYXRj
aGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBub3RpZnlXcml0ZVNsb3coKTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCogYWRkcmVzc09mSXNXYXRjaGVkKCkgeyByZXR1cm4gJm1faXNX
YXRjaGVkOyB9CisgICAgCisgICAgdm9pZCBub3RpZnlXcml0ZVNsb3coKTsgLy8gQ2FsbCBvbmx5
IGlmIHlvdSd2ZSBjaGVja2VkIGlzV2F0Y2hlZC4KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBm
aXJlQWxsV2F0Y2hwb2ludHMoKTsKKyAgICAKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8V2F0Y2hw
b2ludD4gbV9zZXQ7CisgICAgYm9vbCBtX2lzV2F0Y2hlZDsKKyAgICBib29sIG1faXNJbnZhbGlk
YXRlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gV2F0Y2hwb2ludF9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE2LDEzICsyMTYsMTkgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFy
KGNvbnN0IElkZQogICAgIHJldHVybiB0cnVlOwogfQogCi1pbnQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgYm9vbCBpc0NvbnN0YW50KQor
aW50IEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIoCisgICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlv
bk1vZGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTW9kZSk7CiAgICAgaW50IGluZGV4
ID0gc3ltYm9sVGFibGUoKS5zaXplKCk7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShp
bmRleCwgaXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBu
ZXdFbnRyeShpbmRleCwgKGNvbnN0YW50TW9kZSA9PSBJc0NvbnN0YW50KSA/IFJlYWRPbmx5IDog
MCk7CisgICAgaWYgKGZ1bmN0aW9uTW9kZSA9IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUpCisgICAg
ICAgIG5ld0VudHJ5LmF0dGVtcHRUb1dhdGNoKCk7CiAgICAgU3ltYm9sVGFibGU6OkFkZFJlc3Vs
dCByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKICAg
ICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBpbmRleCA9IHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kLmdldEluZGV4KCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnNlY29uZC5ub3RpZnlXcml0ZSgpOwogICAgIHJldHVybiBpbmRleDsKIH0KIApAQCAtMjg5LDE3
ICsyOTUsMjMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFBybwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvblN0YWNrLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uID0gZnVuY3Rpb25TdGFja1tpXTsKLSAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24t
PmlkZW50KCkpOyAvLyBOZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4aXN0aW5n
IHByb3BlcnRpZXMuCisgICAgICAgIGJvb2wgcHJvcGVydHlEaWRFeGlzdCA9IAorICAgICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24tPmlk
ZW50KCkpOyAvLyBOZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4aXN0aW5nIHBy
b3BlcnRpZXMuCiAKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCBtYWtlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb24pLCBzY29wZUNoYWluKTsKLSAgICAgICAg
aW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKGZ1bmN0aW9uLT5pZGVudCgpLCBmYWxzZSk7CisgICAg
ICAgIGludCBpbmRleCA9IGFkZEdsb2JhbFZhcigKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5pZGVu
dCgpLCBJc1ZhcmlhYmxlLAorICAgICAgICAgICAgcHJvcGVydHlEaWRFeGlzdCA/IElzRnVuY3Rp
b25Ub1NwZWNpYWxpemUgOiBOb3RGdW5jdGlvbk9yTm90U3BlY2lhbGl6YWJsZSk7CiAgICAgICAg
IGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChpbmRleCkuc2V0KCptX2dsb2JhbERhdGEsIGdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFy
U3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzUHJvcGVy
dHkoZXhlYywgKnZhclN0YWNrW2ldLmZpcnN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBhZGRHbG9iYWxWYXIoKnZhclN0YWNrW2ldLmZpcnN0LCB2YXJTdGFja1tpXS5zZWNvbmQg
JiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCk7CisgICAgICAgIGFkZEdsb2JhbFZhcigK
KyAgICAgICAgICAgICp2YXJTdGFja1tpXS5maXJzdCwKKyAgICAgICAgICAgICh2YXJTdGFja1tp
XS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCkgPyBJc0NvbnN0YW50IDog
SXNWYXJpYWJsZSwKKyAgICAgICAgICAgIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlKTsK
ICAgICB9CiB9CiAKQEAgLTEyMDIsNyArMTIxNCw5IEBAIFJlc29sdmVSZXN1bHQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OnJlc29sdmUKICAgICAgICAgICAgIGlmICgrK2l0ZXIgPT0gZW5kKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGZsYWdzICYgUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWcpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjpkeW5hbWljSW5kZXhlZEdsb2Jh
bFJlc29sdmUoZW50cnkuZ2V0SW5kZXgoKSwgZGVwdGgsIGN1cnJlbnRTY29wZSwgZmxhZ3MpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjppbmRleGVkR2xvYmFsUmVzb2x2
ZShlbnRyeS5nZXRJbmRleCgpLCBjdXJyZW50U2NvcGUsIGZsYWdzKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6aW5kZXhlZEdsb2JhbFJlc29sdmUoCisgICAgICAgICAg
ICAgICAgICAgIGVudHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29wZSwKKyAgICAgICAgICAgICAg
ICAgICAgZmxhZ3MgfCAoZW50cnkuY291bGRCZVdhdGNoZWQoKSA/IFdhdGNoZWRGbGFnIHwgMCkp
OwogICAgICAgICAgICAgfQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChK
U0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBqc0R5bmFtaWNDYXN0PEpTQWN0aXZhdGlvbio+KGN1
cnJlbnRWYXJpYWJsZU9iamVjdCkpCkBAIC0xNDU4LDYgKzE0NzIsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0CiAKICAgICBjYXNlIFJlc29sdmVSZXN1bHQ6Oklu
ZGV4ZWRHbG9iYWw6CiAgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpSZWFkT25seUluZGV4ZWRHbG9i
YWw6CisgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKICAgICAg
ICAgaWYgKG1fbGFzdE9wY29kZUlEID09IG9wX3B1dF9nbG9iYWxfdmFyKSB7CiAgICAgICAgICAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGRzdFBvaW50ZXI7CiAgICAgICAgICAgICBpbnQgc3Jj
SW5kZXg7CkBAIC0xNDc4LDcgKzE0OTMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEdldFN0CiAgICAgfQogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBSZWdp
c3RlcklEKiB2YWx1ZSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3Rh
dGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIsIFJlZ2lzdGVySUQqIHZhbHVlKQogewogICAgIHN3aXRjaCAocmVzb2x2
ZVJlc3VsdC50eXBlKCkpIHsKICAgICBjYXNlIFJlc29sdmVSZXN1bHQ6OlJlZ2lzdGVyOgpAQCAt
MTQ5OSw2ICsxNTE0LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0
U3QKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVSZXN1bHQucmVnaXN0ZXJQ
b2ludGVyKCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkp
OwogICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIAorICAgIGNhc2UgUmVzb2x2ZVJlc3Vs
dDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6CisgICAgICAgIGVtaXRPcGNvZGUob3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJlc3Vs
dC5yZWdpc3RlclBvaW50ZXIoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1
ZS0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0
Lmdsb2JhbE9iamVjdCgpLT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSkuYWRk
cmVzc09mSXNXYXRjaGVkKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29u
c3RhbnQoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlz
aW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgLy8gVGhlIHJlc29sdmVkIGJpbmRpbmcgaXMgaW1tdXRhYmxl
LgogICAgICAgICAgICAgUmVhZE9ubHlGbGFnID0gMHgyMCwKICAgICAgICAgICAgIC8vIFRoZSBi
YXNlIG9iamVjdCBpcyB0aGUgZ2xvYmFsIG9iamVjdC4KLSAgICAgICAgICAgIEdsb2JhbEZsYWcg
PSAweDQwCisgICAgICAgICAgICBHbG9iYWxGbGFnID0gMHg0MCwKKyAgICAgICAgICAgIC8vIFRo
ZSBwcm9wZXJ0eSBpcyBiZWluZyB3YXRjaGVkLCBzbyB3cml0ZXMgc2hvdWxkIGJlIHNwZWNpYWwu
CisgICAgICAgICAgICBXYXRjaGVkRmxhZyA9IDB4ODAKICAgICAgICAgfTsKICAgICAgICAgZW51
bSBUeXBlIHsKICAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3Jl
ZCBpbiBhIHJlZ2lzdGVyLgpAQCAtMTMxLDYgKzEzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgLy8gYmluZGluZyBjcmVhdGVkIHdpdGggInZhciIgYXQgdGhlIHRvcCBsZXZlbC4g
QXQgcnVudGltZSB3ZSdsbAogICAgICAgICAgICAgLy8ganVzdCBpbmRleCBpbnRvIHRoZSBnbG9i
YWwgb2JqZWN0LgogICAgICAgICAgICAgSW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xv
YmFsRmxhZyB8IFN0YXRpY0ZsYWcsCisgICAgICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWws
IGJ1dCB0aGUgcHJvcGVydHkgaXMgYmVpbmcgd2F0Y2hlZC4KKyAgICAgICAgICAgIFdhdGNoZWRJ
bmRleGVkR2xvYmFsID0gSW5kZXhlZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZyB8IFdh
dGNoZWRGbGFnLAogICAgICAgICAgICAgLy8gTGlrZSBJbmRleGVkR2xvYmFsLCBidXQgdGhlIHBy
b3BlcnR5IGlzIGFsc28gcmVhZC1vbmx5LCBsaWtlIE5hTiwKICAgICAgICAgICAgIC8vIEluZmlu
aXR5LCBvciB1bmRlZmluZWQuCiAgICAgICAgICAgICBSZWFkT25seUluZGV4ZWRHbG9iYWwgPSBJ
bmRleGVkRmxhZyB8IFJlYWRPbmx5RmxhZyB8IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnLApAQCAt
NDQyLDcgKzQ0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFz
ZSkgeyByZXR1cm4gZW1pdEJpbmFyeU9wKG9wX2luLCBkc3QsIHByb3BlcnR5LCBiYXNlLCBPcGVy
YW5kVHlwZXMoKSk7IH0KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJl
Z2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYpOwotICAgICAgICBSZWdpc3RlcklE
KiBlbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmLCBSZWdpc3RlcklEKiB2YWx1
ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJl
c3VsdCYsIGNvbnN0IElkZW50aWZpZXImLCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFJlc29sdmUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVz
dWx0JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0UmVzb2x2ZUJhc2UoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwpAQCAtNTc0LDcgKzU3OCw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAKICAgICAgICAgLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGFk
ZGVkIHZhci4KLSAgICAgICAgaW50IGFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiwgYm9v
bCBpc0NvbnN0YW50KTsKKyAgICAgICAgZW51bSBDb25zdGFudE1vZGUgeyBJc0NvbnN0YW50LCBJ
c1ZhcmlhYmxlIH07CisgICAgICAgIGVudW0gRnVuY3Rpb25Nb2RlIHsgSXNGdW5jdGlvblRvU3Bl
Y2lhbGl6ZSwgTm90RnVuY3Rpb25Pck5vdFNwZWNpYWxpemFibGUgfTsKKyAgICAgICAgaW50IGFk
ZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RhbnRNb2RlIGNvbnN0YW50TW9kZSwg
RnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSk7CiAKICAgICAgICAgdm9pZCBhZGRQYXJhbWV0ZXIo
Y29uc3QgSWRlbnRpZmllciYsIGludCBwYXJhbWV0ZXJJbmRleCk7CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjM5LDkgKzIyMzksMzUgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2dldF9nbG9i
YWxfdmFyOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0U3Bl
Y3VsYXRpb24oKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KTsKKworICAgICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHZhcmlhYmxlIHRoaXMgaXMuIFdl
IGNvdWxkIG1ha2UgdGhlIG9wX2dldF9nbG9iYWxfdmFyCisgICAgICAgICAgICAvLyBpbnN0cnVj
dGlvbiBiaWdnZXIgYW5kIHN0b3JlIGEgcG9pbnRlciBkaXJlY3RseSBpbnRvIHRoZSB0aGluZyB3
ZSdyZQorICAgICAgICAgICAgLy8gbG9va2luZyBmb3IgKHRoZSBpZGVudGlmaWVyIG51bWJlciks
IGJ1dCBteSBndWVzcyBpcyB0aGF0IHRoaXMgaXMKKyAgICAgICAgICAgIC8vIGJldHRlci4gSWYg
bmVlZCBiZSwgd2UgY291bGQgbWFpbnRhaW4gYSByZXZlcnNlIG1hcC4gQnV0IHRoYXQncworICAg
ICAgICAgICAgLy8gcHJvYmFibHkgZW50aXJlbHkgdW5uZWNlc3NhcnkuCisgICAgICAgICAgICBp
bnQgZ2xvYmFsVmFySW5kZXggPSBnbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcik7CisgICAgICAgICAgICBTeW1ib2xU
YWJsZTo6aXRlcmF0b3IgZW5kID0gZ2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmVuZCgpOwor
ICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSogZW50cnkgPSAwOworICAgICAgICAgICAgZm9y
IChTeW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUo
KS5iZWdpbigpOworICAgICAgICAgICAgICAgICBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCZnbG9iYWxPYmplY3QtPnJlZ2lzdGVyQXQoaXRlci0+c2Vjb25kLmdl
dEluZGV4KCkpCisgICAgICAgICAgICAgICAgICAgICE9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnJlZ2lzdGVyUG9pbnRlcikKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgZW50cnkgPSAmaXRlci0+c2Vjb25kOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGVudHJ5KTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKGVudHJ5LT5jb3VsZEJlV2F0Y2hlZCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gSSB0aGluayBJIG5lZWQgdG8gc3RvcmUgdGhlIHdhdGNocG9pbnQgcG9pbnRlciBhbmQg
dGhlIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgLy8gcG9pbnRlci4gQm9vLgorICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoR2xvYmFsVmFyV2F0Y2hwb2ludCwgT3BJbmZvKC8vIEZJWE1FCisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRHbG9i
YWxWYXIgPSBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgIEdldEdsb2JhbFZhciwKLSAgICAg
ICAgICAgICAgICBPcEluZm8obV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpLAogICAgICAgICAgICAgICAgIE9wSW5mbyhw
cmVkaWN0aW9uKSk7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgZ2V0R2xvYmFsVmFyKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9nbG9i
YWxfdmFyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
cnJlY3RhYmxlSnVtcFBvaW50LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NjYsNiArNjYsMTEgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogICAgIAorICAgIGJvb2wgaXNT
ZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29kZU9mZnNldCAhPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CisgICAgfQorICAgIAogICAgIHZvaWQgc3dpdGNoVG9M
YXRlSnVtcChNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBjaGVjaykKICAgICB7CiAjaWZu
ZGVmIE5ERUJVRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCwxMSBAQCB2b2lk
IEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0cygpOyArK2kpIHsKICAgICAgICAgT1NS
RXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOwotICAgICAgICBleGl0Lm1fY2hl
Y2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMpOworICAgICAgICBBU1NFUlQoIWV4aXQubV9jaGVj
ay5pc1NldCgpID09IChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkpOworICAgICAgICBpZiAoZXhpdC5tX3dhdGNocG9pbnRJbmRl
eCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAgICAgICBl
eGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5z
ZXREZXN0aW5hdGlvbihsYWJlbCgpKTsKICAgICAgICAgaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJh
bWUoKTsKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaSksICZnbG9iYWxEYXRhKCktPm9z
ckV4aXRJbmRleCk7CiAgICAgICAgIGV4aXQubV9jaGVjay5zd2l0Y2hUb0xhdGVKdW1wKHBhdGNo
YWJsZUp1bXAoKSk7CkBAIC0xOTAsNiArMTk0LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQgogICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9z
ckV4aXQoaSk7CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhleGl0Lm1fY2hlY2subGF0ZUp1bXAo
KSwgdGFyZ2V0KTsKICAgICAgICAgZXhpdC5tX2NoZWNrLmNvcnJlY3RMYXRlSnVtcChsaW5rQnVm
ZmVyKTsKKyAgICAgICAgQVNTRVJUKCFleGl0Lm1fY2hlY2suaXNTZXQoKSA9PSAoZXhpdC5tX3dh
dGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsK
KyAgICAgICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQorICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQo
ZXhpdC5tX3dhdGNocG9pbnRJbmRleCkuY29ycmVjdExhYmVscyhsaW5rQnVmZmVyKTsKICAgICB9
CiAgICAgCiAgICAgY29kZUJsb2NrKCktPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmlu
ayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lv
biAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oUHV0U2NvcGVkVmFyLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNs
b2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhHZXRHbG9iYWxWYXIsIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRHbG9iYWxWYXIsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKKyAgICBtYWNybyhHbG9iYWxWYXJXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oUHV0R2xvYmFsVmFyQ2hlY2ssIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAogICAgIC8qIE9w
dGltaXphdGlvbnMgZm9yIGFycmF5IG11dGF0aW9uLiAqL1wKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBA
QCBzdHJ1Y3QgT1NSRXhpdCB7CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJv
ZmlsZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWduZWQg
bV93YXRjaHBvaW50SW5kZXg7CiAgICAgCiAgICAgRXhpdEtpbmQgbV9raW5kOwogICAgIHVpbnQz
Ml90IG1fY291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOTAsNiArMjE5MCwy
NSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgp
IHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2UuaW5kZXgoKSwganVtcFRvRmFpbCwgcmVjb3Zl
cnkpOwogICAgIH0KKyAgICAvLyBVc2UgdGhpcyBsaWtlIHlvdSB3b3VsZCB1c2Ugc3BlY3VsYXRp
b25DaGVjaygpLCBleGNlcHQgdGhhdCB5b3UgZG9uJ3QgcGFzcyBpdCBhIGp1bXAKKyAgICAvLyAo
YmVjYXVzZSB5b3UgZG9uJ3QgaGF2ZSB0byBleGVjdXRlIGEgYnJhbmNoOyB0aGF0J3Mga2luZCBv
ZiB0aGUgd2hvbGUgcG9pbnQpLCBhbmQgeW91CisgICAgLy8gbXVzdCByZWdpc3RlciB0aGUgcmV0
dXJuZWQgV2F0Y2hwb2ludCB3aXRoIHNvbWV0aGluZyByZWxldmFudC4gSW4gZ2VuZXJhbCwgdGhp
cyBzaG91bGQKKyAgICAvLyBiZSB1c2VkIHdpdGggZXh0cmVtZSBjYXJlLiBVc2Ugc3BlY3VsYXRp
b25DaGVjaygpIHVubGVzcyB5b3UndmUgZ290IGFuIGFtYXppbmcgcmVhc29uCisgICAgLy8gbm90
IHRvLgorICAgIFdhdGNocG9pbnQqIHNwZWN1bGF0aW9uV2F0Y2hwb2ludChFeGl0S2luZCBraW5k
LCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIEVkZ2Ugbm9kZVVzZSwgY29uc3QgU3BlY3Vs
YXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgeworICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRl
eCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOworICAgICAgICBPU1JF
eGl0JiBleGl0ID0gbV9qaXQuY29kZUJsb2NrKCktPm9zckV4aXQoCisgICAgICAgICAgICBtX2pp
dC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdCgKKyAgICAgICAgICAgICAgICBPU1JFeGl0KGtp
bmQsIGpzVmFsdWVTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgp
Lm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEp1bXAoKSwgdGhpcykpKTsKKyAgICAgICAgZXhpdC5tX3dhdGNocG9pbnRJ
bmRleCA9IG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRXYXRjaHBvaW50KAorICAgICAgICAgICAg
V2F0Y2hwb2ludChtX2ppdC53YXRjaHBvaW50TGFiZWwoUmVwbGFjZVdpdGhMb2NhbEp1bXApKSk7
CisgICAgICAgIHJldHVybiBtX2ppdC5jb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0
Y2hwb2ludEluZGV4KTsKKyAgICB9CiAgICAgdm9pZCBmb3J3YXJkU3BlY3VsYXRpb25DaGVjayhF
eGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2Rl
SW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3Zl
cnkmIHZhbHVlUmVjb3ZlcnkpCiAgICAgewogICAgICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5k
ZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI0LDYgKzMyNCw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRlcikKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9nbG9iYWxfdmFyKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2dsb2JhbF92YXJfY2hlY2spCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2NvcGVkX3ZhcikK
ICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmUpCiAgICAgICAgIERFRklORV9PUChvcF9yZXNv
bHZlX2Jhc2UpCkBAIC00ODEsNiArNDgyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cHV0X2dsb2JhbF92YXJfY2hlY2spOwogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVz
b2x2ZV9nbG9iYWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2Jh
bF9keW5hbWljKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcnNoaWZ0KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNiArNjYyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcihJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dsb2JhbF92YXIoSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfcmVzb2x2ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfcmVzb2x2ZV9iYXNlKEluc3RydWN0aW9uKik7CkBAIC03MzksNiArNzQwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHJlX2luYyhJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9yZXNvbHZlX2dsb2Jh
bChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX3JzaGlmdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5
MCw2ICsxMDkwLDM3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWMK
ICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfcHV0X2dsb2JhbF92
YXIpLCB2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2ds
b2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51LnJlZ2lzdGVyUG9pbnRlcjsKKyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW50cnVjdGlv
blsyXS51Lm9wZXJhbmQ7CisgICAgCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAKKyAgICBlbWl0TG9hZCh2YWx1ZSwg
cmVnVDEsIHJlZ1QwKTsKKyAgICAKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJv
LCBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5wcmVkaWNhdGVQb2ludGVyKSk7CisgICAgCisgICAg
aWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKSB7CisgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihnbG9iYWxPYmplY3QpLCByZWdUMik7CisgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIo
Z2xvYmFsT2JqZWN0LCByZWdUMSwgcmVnVDMsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRl
QmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKKyAgICB9CisgICAgCisgICAgc3RvcmUzMihyZWdU
MSwgcmVnaXN0ZXJQb2ludGVyLT50YWdQb2ludGVyKCkpOworICAgIHN0b3JlMzIocmVnVDAsIHJl
Z2lzdGVyUG9pbnRlci0+cGF5bG9hZFBvaW50ZXIoKSk7CisgICAgdW5tYXAoKTsKK30KKwordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgCisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChyZWdUMSwgcmVnVDApOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwuY2FsbCgpOwor
fQorCiB2b2lkIEpJVDo6cmVzZXRQYXRjaEdldEJ5SWQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1
ZmZlciwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGN0aV9vcF9nZXRfYnlfaWQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI3LDYgKzEwMjcsMjkgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgICAgICBlbWl0V3JpdGVC
YXJyaWVyKGdsb2JhbE9iamVjdCwgcmVnVDAsIHJlZ1QyLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVz
LCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kLCByZWdUMCk7CisgICAgCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywg
Y3VycmVudEluc3RydWN0aW9uWzNdLnUucHJlZGljYXRlUG9pbnRlcikpOworCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAKKyAgICBzdG9yZVB0cihyZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQ
b2ludGVyKTsKKyAgICBpZiAoSGVhcDo6aXNXcml0ZUJhcnJpZXJFbmFibGVkKCkpCisgICAgICAg
IGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0LCByZWdUMCwgcmVnVDIsIFNob3VsZEZpbHRl
ckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7Cisg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIAorICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRo
aXMsIGN0aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQocmVnVDApOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwuY2FsbCgpOworfQorCiB2
b2lkIEpJVDo6cmVzZXRQYXRjaEdldEJ5SWQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
KHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGN0aV9vcF9nZXRfYnlfaWQpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDExOTgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzc3LDYgKzIzNzcsMTUgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9u
ZXdfYQogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3Rh
Y2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihzdGFja0ZyYW1l
LmFyZ3NbMF0uaW50MzIoKSksIHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpKTsKIH0KIAorREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spCit7CisgICAg
U1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOworICAgIAorICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxj
b2sgPSBjYWxsRnJhbWUtPmNvZGVCbGNvaygpOworICAgIHN5bWJvbFRhYmxlUHV0KGNvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCksIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihzdGFja0ZyYW1l
LmFyZ3NbMV0uaW50MzIoKSksIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkpOworfQorCiBE
RUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZSkKIHsKICAgICBT
VFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzNiw2ICs0MzYsNyBAQCBleHRl
cm4gIkMiIHsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wb3Bfc2NvcGUoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKTsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wcm9maWxlX2RpZF9jYWxsKFNU
VUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHJvZmlsZV93
aWxsX2NhbGwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKKyAgICB2b2lkIEpJVF9TVFVCIGN0aV9v
cF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQg
SklUX1NUVUIgY3RpX29wX3B1dF9ieV9pZChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZv
aWQgSklUX1NUVUIgY3RpX29wX3B1dF9ieV9pZF9mYWlsKFNUVUJfQVJHU19ERUNMQVJBVElPTik7
CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU2LDYgKzg1Niwx
NCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV93CiAgICAgTExJTlRf
RU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgc3ltYm9sVGFibGVQdXQoY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzRdLnUub3BlcmFuZCks
IExMSU5UX09QX0MoMikpOworICAgIExMSU5HX0VORCgpOworfQorCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24g
MTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcmVzb2x2ZV9iCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZW5zdXJl
X3Byb3BlcnR5X2V4aXN0cyk7CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2
ZV93aXRoX2Jhc2UpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfd2l0
aF90aGlzKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9j
aGVjayk7CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKTsKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTA2Myw2ICsxMDYzLDIy
IEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGlu
dF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZHAgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGJ0Ym56IFt0Ml0sIC5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W3QwXQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MF0K
KyAgICBkaXNwYXRjaCg1KQorLm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93OgorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQorICAgIGRpc3BhdGNo
KDUpCisKKwogX2xsaW50X29wX2dldF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
IyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3
ZSBkbyBub3QgbW9kaWZ5IHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDExOTgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC05MTQsNiArOTE0LDIxIEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zh
cjoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgMjRbUEIsIFBDLCA4XSwgdDIKKyAgICBs
b2FkaXMgMTZbUEIsIFBDLCA4XSwgdDEKKyAgICBsb2FkcCA4W1BCLCBQQywgOF0sIHQwCisgICAg
YnRibnogW3QyXSwgLm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93CisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQyKQorICAgIHN0b3JlcCB0MiwgW3Qw
XQorICAgIGRpc3BhdGNoKDUpCisub3BQdXRHbG9iYWxWYXJDaGVja1Nsb3c6CisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGNoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQorICAgIGRpc3Bh
dGNoKDUpCisKKwogX2xsaW50X29wX2dldF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFu
ZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsMjIgKzUwMiwy
NSBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgc3RydWN0
dXJlKCktPnNldFN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsKIH0KIAotdm9pZCBKU09iamVjdDo6
cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHN0cnVjdHVyZSgp
LT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHNpemVfdCBvZmZzZXQ7CiAg
ICAgaWYgKHN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAg
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RG
b3VuZCkKLSAgICAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dChvZmZzZXQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBzZXRTdHJ1Y3R1
cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7Ci0gICAgaWYgKG9mZnNl
dCAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChv
ZmZzZXQpOworICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIE5FVkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0dGVyUHJv
cGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
bG9jYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJ
KHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsK
IAotICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUp
OworICAgICAgICBib29sIHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUp
OyAvLyBSZXR1cm4gdHJ1ZSBpZiBhbnl0aGluZyBpcyByZW1vdmVkLgogICAgICAgICBib29sIGhh
c0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+ZGlkVHJhbnNpdGlvbigp
OyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJuIHN0
cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3
ICs2Miw4IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBUaGlzIGlzIGEgc2xvdyBtZXRob2QgY2Fs
bCwgd2hpY2ggc2VhcmNoZXMgdGhlIHJlZ2lzdGVyIGJhbmsgdG8gZmluZCB0aGUgaW5kZXgKICAg
ICAvLyBnaXZlbiBhIHBvaW50ZXIuIEl0IHdpbGwgQ1JBU0goKSBpZiBpdCBkb2VzIG5vdCBmaW5k
IHRoZSByZWdpc3Rlci4gT25seSB1c2UgdGhpcwotICAgIC8vIGluIGRlYnVnIGNvZGUgKGxpa2Ug
Ynl0ZWNvZGUgZHVtcGluZykuCisgICAgLy8gaW4gZGVidWcgY29kZSAobGlrZSBieXRlY29kZSBk
dW1waW5nKSwgb3IgaW4gY29kZSB0aGF0IGlzIGtub3duIHRvIG5vdCBleGVjdXRlCisgICAgLy8g
b2Z0ZW4gKGxpa2Ugb3B0aW1pemluZyBjb21waWxhdGlvbikuCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgaW50IGZpbmRSZWdpc3RlckluZGV4KHZvaWQqKTsKICAgICAKICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIGFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoV3JpdGVCYXJyaWVyPFVua25v
d24+KiByZWdpc3RlclBvaW50ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVP
YmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGVP
YmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xU
YWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xU
YWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBzbG90LnNldFZhbHVlKG9iamVjdC0+cmVnaXN0ZXJBdChl
bnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBib29sIHN5
bWJvbFRhYmxlR2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsCiAgICAgYm9vbCYgc2xvdElz
V3JpdGVhYmxlKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJv
bFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJv
bFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0
KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNsb3Quc2V0VmFsdWUob2JqZWN0LT5yZWdpc3RlckF0
KGVudHJ5LmdldEluZGV4KCkpLmdldCgpKTsKQEAgLTExMywxMyArMTEzLDE2IEBAIGlubGluZSBi
b29sIHN5bWJvbFRhYmxlUHV0KAogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVh
cDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKICAgICAKICAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxsKCkpCisgICAgU3ltYm9s
VGFibGVFbnRyeTo6RmFzdCBmYXN0RW50cnkgPSBlbnRyeTsgLy8gZXh0cmFjdCB0aGUgYml0cwor
ICAgIGlmIChmYXN0RW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CisgICAgaWYgKGZhc3RFbnRyeS5pc1JlYWRPbmx5KCkp
IHsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQorICAgIGlmIChVTkxJS0VMWShmYXN0RW50cnkuaXNGYXQoKSkpCisg
ICAgICAgIGVudHJ5Lm5vdGlmeVdyaXRlKCk7CiAgICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5
LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTEzNiw2ICsxMzksNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5
JiBlbnRyeSA9IGl0ZXItPnNlY29uZDsKICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAg
ICBlbnRyeS5ub3RpZnlXcml0ZSgpOwogICAgIGVudHJ5LnNldEF0dHJpYnV0ZXMoYXR0cmlidXRl
cyk7CiAgICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxE
YXRhLCBvYmplY3QsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTE5ODAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNp
bmNsdWRlICJVU3RyaW5nLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0
Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCkBAIC00Miw0
MCArNDMsMTM0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIHJlYXNvbmFibHkgc21hbGwgcG9z
aXRpdmUgb3IgbmVnYXRpdmUgbnVtYmVyLCBhbmQgdGhlcmVmb3JlIGhhcyBpdHMgaGlnaAogICAg
IC8vIGZvdXIgYml0cyBhbGwgc2V0IG9yIGFsbCB1bnNldC4KIAorICAgIC8vIEluIGFkZGl0aW9u
IHRvIGltcGxlbWVudGluZyBzZW1hbnRpY3MtbWFuZGF0ZWQgdmFyaWFibGUgYXR0cmlidXRlcyBh
bmQKKyAgICAvLyBpbXBsZW1lbnRhdGlvbi1tYW5kYXRlZCB2YXJpYWJsZSBpbmRleGluZywgdGhp
cyBjbGFzcyBhbHNvIGltcGxlbWVudHMKKyAgICAvLyB3YXRjaHBvaW50cyB0byBiZSB1c2VkIGZv
ciBKSVQgb3B0aW1pemF0aW9ucy4gQmVjYXVzZSB3YXRjaHBvaW50cyBhcmUKKyAgICAvLyBtZWFu
dCB0byBiZSByZWxhdGl2ZWx5IHJhcmUsIHRoaXMgY2xhc3Mgb3B0aW1pemVzIGhlYXZpbHkgZm9y
IHRoZSBjYXNlCisgICAgLy8gdGhhdCB0aGV5IGFyZSBub3QgYmVpbmcgdXNlZC4gVG8gdGhhdCBl
bmQsIHRoaXMgY2xhc3MgdXNlcyB0aGUgdGhpbi1mYXQKKyAgICAvLyBpZGlvbTogZWl0aGVyIGl0
IGlzIHRoaW4sIGluIHdoaWNoIGNhc2UgaXQgY29udGFpbnMgYW4gaW4tcGxhY2UgZW5jb2RlZAor
ICAgIC8vIHdvcmQgdGhhdCBjb25zaXN0cyBvZiBhdHRyaWJ1dGVzLCB0aGUgaW5kZXgsIGFuZCBh
IGJpdCBzYXlpbmcgdGhhdCBpdCBpcworICAgIC8vIHRoaW47IG9yIGl0IGlzIGZhdCwgaW4gd2hp
Y2ggY2FzZSBpdCBjb250YWlucyBhIHBvaW50ZXIgdG8gYSBtYWxsb2MnZAorICAgIC8vIGRhdGEg
c3RydWN0dXJlIGFuZCBhIGJpdCBzYXlpbmcgdGhhdCBpdCBpcyBmYXQuIFRoZSBtYWxsb2MnZCBk
YXRhCisgICAgLy8gc3RydWN0dXJlIHdpbGwgYmUgbWFsbG9jZWQgYSBzZWNvbmQgdGltZSB1cG9u
IGNvcHksIHRvIHByZXNlcnZlIHRoZQorICAgIC8vIHByb3BlcnR5IHRoYXQgaW4tcGxhY2UgZWRp
dHMgdG8gU3ltYm9sVGFibGVFbnRyeSBkbyBub3QgbWFuaWZlc3QgaW4gYW55CisgICAgLy8gY29w
aWVzLiBIb3dldmVyLCB0aGUgbWFsbG9jJ2QgRmF0RW50cnkgZGF0YSBzdHJ1Y3R1cmUgY29udGFp
bnMgYSByZWYtCisgICAgLy8gY291bnRlZCBwb2ludGVyIHRvIGEgc2hhcmVkIFdhdGNocG9pbnRT
ZXQuIFRodXMsIGluLXBsYWNlIGVkaXRzIG9mIHRoZQorICAgIC8vIFdhdGNocG9pbnRTZXQgd2ls
bCBtYW5pZmVzdCBpbiBhbGwgY29waWVzLiBIZXJlJ3MgYSBwaWN0dXJlOgorICAgIC8vCisgICAg
Ly8gU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAv
LworICAgIC8vIElmIHlvdSBtYWtlIGEgY29weSBvZiBhIFN5bWJvbFRhYmxlRW50cnksIHlvdSB3
aWxsIGhhdmU6CisgICAgLy8KKyAgICAvLyBvcmlnaW5hbDogU3ltYm9sVGFibGVFbnRyeSAtLT4g
RmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAvLyBjb3B5OiAgICAgU3ltYm9sVGFibGVF
bnRyeSAtLT4gRmF0RW50cnkgLS0tLS1eCisKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7
CisgICAgICAgIC8vIFVzZSB0aGUgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBjbGFzcywgZWl0aGVy
IHZpYSBpbXBsaWNpdCBjYXN0IG9yIGJ5IGNhbGxpbmcKKyAgICAgICAgLy8gZ2V0RmFzdCgpLCB3
aGVuIHlvdSAoMSkgb25seSBjYXJlIGFib3V0IGlzTnVsbCgpLCBnZXRJbmRleCgpLCBhbmQgaXNS
ZWFkT25seSgpLAorICAgICAgICAvLyBhbmQgKDIpIHlvdSBhcmUgaW4gYSBob3QgcGF0aCB3aGVy
ZSB5b3UgbmVlZCB0byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIHRpbWVzCisgICAgICAgIC8vIHRo
YXQgeW91IGJyYW5jaCBvbiBpc0ZhdCgpIHdoZW4gZ2V0dGluZyB0aGUgYml0cygpLgorICAgICAg
ICBjbGFzcyBGYXN0IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgRmFzdCgpCisgICAg
ICAgICAgICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0KGNvbnN0IFN5bWJvbFRh
YmxlRW50cnkmIGVudHJ5KQorICAgICAgICAgICAgICAgIDogbV9iaXRzKGVudHJ5LmJpdHMoKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29s
IGlzTnVsbCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFt
X2JpdHM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBnZXRJbmRleCgpIGNvbnN0
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
bV9iaXRzID4+IEZsYWdCaXRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAg
ICBib29sIGlzUmVhZE9ubHkoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBtX2JpdHMgJiBSZWFkT25seUZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGJvb2wgaXNGYXQoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBGYXRGbGFnOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBpbnRwdHJfdCBtX2JpdHM7Cisg
ICAgICAgIH07CisKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSgpCiAgICAgICAgICAgICA6IG1f
Yml0cygwKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
KGludCBpbmRleCkKKyAgICAgICAgICAgIDogbV9iaXRzKDApCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEFTU0VSVChpc1ZhbGlkSW5kZXgoaW5kZXgpKTsKICAgICAgICAgICAgIHBhY2soaW5kZXgs
IGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGlu
dCBpbmRleCwgdW5zaWduZWQgYXR0cmlidXRlcykKKyAgICAgICAgICAgIDogbV9iaXRzKDApCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkSW5kZXgoaW5kZXgpKTsKICAgICAg
ICAgICAgIHBhY2soaW5kZXgsIGF0dHJpYnV0ZXMgJiBSZWFkT25seSwgYXR0cmlidXRlcyAmIERv
bnRFbnVtKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgflN5bWJvbFRhYmxlRW50cnko
KQorICAgICAgICB7CisgICAgICAgICAgICBmcmVlRmF0RW50cnkoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeShjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBv
dGhlcikKKyAgICAgICAgICAgIDogbV9iaXRzKDApCisgICAgICAgIHsKKyAgICAgICAgICAgICp0
aGlzID0gb3RoZXI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN5bWJvbFRhYmxlRW50
cnkmIG9wZXJhdG9yPShjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKExJS0VMWSghb3RoZXIuaXNGYXQoKSkpIHsKKyAgICAgICAgICAgICAg
ICBmcmVlRmF0RW50cnkoKTsKKyAgICAgICAgICAgICAgICBtX2JpdHMgPSBvdGhlci5tX2JpdHM7
CisgICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgRmF0RW50cnkqIG5ld0ZhdEVudHJ5ID0gbmV3IEZhdEVudHJ5KCpvdGhlci5mYXRFbnRyeSgp
KTsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICAgICAgbV9iaXRzID0gYml0
d2lzZV9jYXN0PGludHB0cl90PihuZXdGYXRFbnRyeSkgfCBGYXRGbGFnOworICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBib29sIGlzTnVsbCgp
IGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhbV9iaXRzOworICAgICAgICAg
ICAgcmV0dXJuICFiaXRzKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgZ2V0SW5kZXgoKSBj
b25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9iaXRzID4+IEZsYWdCaXRzOwor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYml0cygpID4+IEZsYWdCaXRzKTsK
ICAgICAgICAgfQotCisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QgZ2V0RmFz
dCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBGYXN0KCp0aGlzKTsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgdW5zaWduZWQgZ2V0QXR0cmlidXRlcygpIGNvbnN0
CiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwotICAgICAg
ICAgICAgaWYgKG1fYml0cyAmIFJlYWRPbmx5RmxhZykKKyAgICAgICAgICAgIGludHB0cl90IHRo
ZUJpdHMgPSBiaXRzKCk7CisgICAgICAgICAgICBpZiAodGhlQml0cyAmIFJlYWRPbmx5RmxhZykK
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IFJlYWRPbmx5OwotICAgICAgICAgICAgaWYg
KG1fYml0cyAmIERvbnRFbnVtRmxhZykKKyAgICAgICAgICAgIGlmICh0aGVCaXRzICYgRG9udEVu
dW1GbGFnKQogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gRG9udEVudW07CiAgICAgICAg
ICAgICByZXR1cm4gYXR0cmlidXRlczsKICAgICAgICAgfQpAQCAtODcsMzAgKzE4MiwxMzcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAgICAgICAg
ICAgIHJldHVybiBiaXRzKCkgJiBSZWFkT25seUZsYWc7CiAgICAgICAgIH0KLQorICAgICAgICAK
KyAgICAgICAgYm9vbCBjb3VsZEJlV2F0Y2hlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghaXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBX
YXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHM7Cisg
ICAgICAgICAgICBpZiAoIXdhdGNocG9pbnRzKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybiB3YXRjaHBvaW50cy0+aXNTdGlsbFZhbGlkKCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE5vdGlmeSBhbiBvcHBvcnR1bml0eSB0byBjcmVh
dGUgYSB3YXRjaHBvaW50IGZvciBhIHZhcmlhYmxlLiBUaGlzIGlzCisgICAgICAgIC8vIGlkZW1w
b3RlbnQgYW5kIGZhaWwtc2lsZW50LiBJdCBpcyBpZGVtcG90ZW50IGluIHRoZSBzZW5zZSB0aGF0
IGlmCisgICAgICAgIC8vIGEgd2F0Y2hwb2ludCBzZXQgaGFkIGFscmVhZHkgYmVlbiBjcmVhdGVk
LCB0aGVuIGFub3RoZXIgb25lIHdpbGwgbm90CisgICAgICAgIC8vIGJlIGNyZWF0ZWQuIEhlbmNl
IHR3byBjYWxscyB0byB0aGlzIG1ldGhvZCBoYXZlIHRoZSBzYW1lIGVmZmVjdCBhcworICAgICAg
ICAvLyBvbmUgY2FsbC4gSXQgaXMgYWxzbyBmYWlsLXNpbGVudCwgaW4gdGhlIHNlbnNlIHRoYXQg
aWYgYSB3YXRjaHBvaW50CisgICAgICAgIC8vIHNldCBoYWQgYmVlbiBjcmVhdGVkIGFuZCBoYWQg
YWxyZWFkeSBiZWVuIGludmFsaWRhdGVkLCB0aGVuIHRoaXMgd2lsbAorICAgICAgICAvLyBqdXN0
IHJldHVybi4gVGhpcyBtZWFucyB0aGF0IGNvdWxkQmVXYXRjaGVkKCkgbWF5IHJldHVybiBmYWxz
ZSBldmVuCisgICAgICAgIC8vIGltbWVkaWF0ZWx5IGFmdGVyIGEgY2FsbCB0byBhdHRlbXB0VG9X
YXRjaCgpLgorICAgICAgICB2b2lkIGF0dGVtcHRUb1dhdGNoKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaW5mbGF0ZSgpOworICAgICAgICAgICAgaWYgKCFmYXRFbnRyeSgpLT5tX3dhdGNocG9p
bnRzKQorICAgICAgICAgICAgICAgIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMgPSBhZG9wdFJl
ZihuZXcgV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9v
bCogYWRkcmVzc09mSXNXYXRjaGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGNv
dWxkQmVXYXRjaGVkKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hw
b2ludHMtPmFkZHJlc3NPZklzV2F0Y2hlZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICB2b2lkIGFkZFdhdGNocG9pbnQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKGNvdWxkQmVXYXRjaGVkKCkpOworICAgICAgICAgICAgZmF0RW50
cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkKHdhdGNocG9pbnQpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5V3JpdGUoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoTElLRUxZKCFpc0ZhdCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IGZhdEVudHJ5KCktPm1f
d2F0Y2hwb2ludHMuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIXdhdGNocG9pbnRzKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdhdGNocG9pbnRzLT5ub3RpZnlXcml0ZSgp
OworICAgICAgICB9CisgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBSZWFkT25seUZsYWcgPSAweDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBEb250RW51bUZsYWcgPSAweDI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBO
b3ROdWxsRmxhZyA9IDB4NDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEZsYWdCaXRz
ID0gMzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEZhdEZsYWcgPSAweDE7CisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBSZWFkT25seUZsYWcgPSAweDI7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBEb250RW51bUZsYWcgPSAweDQ7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBOb3ROdWxsRmxhZyA9IDB4ODsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIEZsYWdCaXRzID0gNDsKKyAgICAgICAgCisgICAgICAgIGNsYXNzIEZhdEVudHJ5IHsK
KyAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBwdWJsaWM6Cisg
ICAgICAgICAgICBGYXRFbnRyeShpbnRwdHJfdCBiaXRzKQorICAgICAgICAgICAgICAgIDogbV9i
aXRzKGJpdHMgfCBGYXRGbGFnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpbnRwdHJfdCBtX2JpdHM7IC8vIGFsd2F5cyBoYXMgRmF0RmxhZyBzZXQgYW5kIGV4
YWN0bHkgbWF0Y2hlcyB3aGF0IHRoZSBiaXRzIHdvdWxkIGhhdmUgYmVlbiBpZiB0aGlzIHdhc24n
dCBmYXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBt
X3dhdGNocG9pbnRzOworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgYm9vbCBpc0ZhdCgp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBGYXRGbGFnOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBGYXRFbnRyeSogZmF0RW50cnkoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IEZhdEVudHJ5Kj4obV9iaXRzICYgfkZhdEZsYWcp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogZmF0RW50cnkoKQorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PEZhdEVudHJ5Kj4obV9iaXRzICYgfkZhdEZsYWcpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB2b2lkIGluZmxhdGUoKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoaXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2JpdHMg
PSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KG5ldyBGYXRFbnRyeShtX2JpdHMpKSB8IEZhdEZsYWc7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgaW50cHRyX3QgYml0
cygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gbV9i
aXRzOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90
JiBiaXRzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRmF0KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsKKyAgICAgICAgICAgIHJldHVybiBtX2Jp
dHM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgZnJlZUZhdEVudHJ5KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGRlbGV0ZSBmYXRFbnRyeSgpOworICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBwYWNrKGludCBpbmRleCwgYm9vbCByZWFkT25seSwgYm9vbCBkb250RW51bSkKICAgICAg
ICAgewotICAgICAgICAgICAgbV9iaXRzID0gKGluZGV4IDw8IEZsYWdCaXRzKSB8IE5vdE51bGxG
bGFnOworICAgICAgICAgICAgaW50cHRyX3QmIGJpdHNSZWYgPSBiaXRzKCk7CisgICAgICAgICAg
ICBiaXRzUmVmID0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpIHwg
Tm90TnVsbEZsYWc7CiAgICAgICAgICAgICBpZiAocmVhZE9ubHkpCi0gICAgICAgICAgICAgICAg
bV9iaXRzIHw9IFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgICAgICBiaXRzUmVmIHw9IFJlYWRP
bmx5RmxhZzsKICAgICAgICAgICAgIGlmIChkb250RW51bSkKLSAgICAgICAgICAgICAgICBtX2Jp
dHMgfD0gRG9udEVudW1GbGFnOworICAgICAgICAgICAgICAgIGJpdHNSZWYgfD0gRG9udEVudW1G
bGFnOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzVmFsaWRJbmRleChpbnQg
aW5kZXgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKGluZGV4IDw8IEZsYWdCaXRz
KSA+PiBGbGFnQml0cykgPT0gaW5kZXg7CisgICAgICAgICAgICByZXR1cm4gKChzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oaW5kZXgpIDw8IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KGluZGV4KTsKICAgICAgICAgfQogCi0gICAgICAgIGludCBtX2JpdHM7Cisg
ICAgICAgIGludHB0cl90IG1fYml0czsKICAgICB9OwogCiAgICAgc3RydWN0IFN5bWJvbFRhYmxl
SW5kZXhIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxTeW1ib2xUYWJsZUVudHJ5PiB7CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9TZWdtZW50ZWRWZWN0b3IuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL1dURi93
dGYvU2VnbWVudGVkVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDggKzk4LDExIEBAIG5h
bWVzcGFjZSBXVEYgewogCiAgICAgLy8gU2VnbWVudGVkVmVjdG9yIGlzIGp1c3QgbGlrZSBWZWN0
b3IsIGJ1dCBpdCBkb2Vzbid0IG1vdmUgdGhlIHZhbHVlcwogICAgIC8vIHN0b3JlZCBpbiBpdHMg
YnVmZmVyIHdoZW4gaXQgZ3Jvd3MuIFRoZXJlZm9yZSwgaXQgaXMgc2FmZSB0byBrZWVwCi0gICAg
Ly8gcG9pbnRlcnMgaW50byBhIFNlZ21lbnRlZFZlY3Rvci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplPiBjbGFzcyBTZWdtZW50ZWRWZWN0b3IgeworICAgIC8v
IHBvaW50ZXJzIGludG8gYSBTZWdtZW50ZWRWZWN0b3IuIFRoZSBkZWZhdWx0IHR1bmluZyB2YWx1
ZXMgYXJlCisgICAgLy8gb3B0aW1pemVkIGZvciBzZWdtZW50ZWQgdmVjdG9ycyB0aGF0IGdldCBs
YXJnZTsgeW91IG1heSB3YW50IHRvIHVzZQorICAgIC8vIFNlZ21lbnRlZFZlY3Rvcjx0aGluZ3ks
IDEsIDA+IGlmIHlvdSBkb24ndCBleHBlY3QgYSBsb3Qgb2YgZW50cmllcy4KKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplID0gOCwgc2l6ZV90IElubGluZUNhcGFj
aXR5ID0gMzI+CisgICAgY2xhc3MgU2VnbWVudGVkVmVjdG9yIHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPjsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+
IEl0ZXJhdG9yOwpAQCAtMjUwLDcgKzI1Myw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAg
IHNpemVfdCBtX3NpemU7CiAgICAgICAgIFNlZ21lbnQgbV9pbmxpbmVTZWdtZW50OwotICAgICAg
ICBWZWN0b3I8U2VnbWVudCosIDMyPiBtX3NlZ21lbnRzOworICAgICAgICBWZWN0b3I8U2VnbWVu
dCosIElubGluZUNhcGFjaXR5PiBtX3NlZ21lbnRzOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146721</attachid>
            <date>2012-06-09 17:32:16 -0700</date>
            <delta_ts>2012-06-10 13:28:50 -0700</delta_ts>
            <desc>more code</desc>
            <filename>globalwatch_patch_5.diff</filename>
            <type>text/plain</type>
            <size>82182</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5OTE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MyBA
QAorMjAxMi0wNi0wOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFdvcmsgaW4gcHJvZ3Jlc3MhCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OndhdGNocG9pbnRMYWJlbCk6CisgICAgICAgICog
YXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cmVwbGFjZVdp
dGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNy
b0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1heEp1
bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNI
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cmVwbGFjZVdpdGhKdW1wKToK
KyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODYpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Njo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODY6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDgpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAg
ICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAgIChSZXBhdGNoQnVmZmVy
KToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2QXNzZW1ibGVyKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6Y21wYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVz
dGJfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmxhYmVsRm9yV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bGFiZWwpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2
SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om1lbW9yeU1vZFJNKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRPU1JFeGl0KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KToKKyAgICAg
ICAgKENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kV2F0Y2hwb2lu
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZXYXRjaHBvaW50cyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6d2F0Y2hwb2ludCk6CisgICAgICAgIChERkdEYXRhKToKKyAg
ICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFt
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2F0Y2hwb2ludDo6fldhdGNocG9pbnQpOgorICAgICAgICAoV2F0Y2hwb2ludDo6ZmlyZSk6Cisg
ICAgICAgIChXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKFdhdGNocG9p
bnRTZXQ6On5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKFdhdGNocG9pbnRTZXQ6OmFkZCk6Cisg
ICAgICAgIChXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZVNsb3cpOgorICAgICAgICAoV2F0Y2hw
b2ludFNldDo6ZmlyZUFsbFdhdGNocG9pbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBv
aW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFdhdGNocG9pbnQpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50OjpXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hw
b2ludDo6c2V0RGVzdGluYXRpb24pOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojpjb3JyZWN0
TGFiZWxzKToKKyAgICAgICAgKFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpXYXRjaHBv
aW50U2V0Ojppc1N0aWxsVmFsaWQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpoYXNC
ZWVuSW52YWxpZGF0ZWQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0
ZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmFkZHJlc3NPZklzV2F0Y2hlZCk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZhcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRTdGF0aWNWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dFN0YXRpY1Zhcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6
CisgICAgICAgIChCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6Omdsb2JhbFZhcldhdGNocG9pbnRFbGlt
aW5hdGlvbik6CisgICAgICAgIChDU0VQaGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhh
c2U6Omdsb2JhbFZhclN0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBo
YXNlOjpwZXJmb3JtTm9kZUNTRSk6CisgICAgICAgICogZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBv
aW50Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Q29ycmVjdGFibGVKdW1wUG9pbnQ6OmlzU2V0KToK
KyAgICAgICAgKENvcnJlY3RhYmxlSnVtcFBvaW50KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMp
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQu
aDoKKyAgICAgICAgKE9TUkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6Cisg
ICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk6CisgICAgICAgICogaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3Bw
OgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAo
TExJbnQpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1i
b2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0KToKKyAgICAgICAgKEpT
Qzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6CisgICAgICAgICogcnVudGltZS9TeW1i
b2xUYWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFN5bWJvbFRhYmxlRW50cnkpOgor
ICAgICAgICAoRmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OkZh
c3QpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc051bGwpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0OjpnZXRJbmRleCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzUmVhZE9ubHkpOgorICAgICAgICAoSlNDOjpT
eW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc0ZhdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxl
RW50cnk6OlN5bWJvbFRhYmxlRW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojp+U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzTnVsbCk6CisgICAg
ICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmdldEluZGV4KToKKyAgICAgICAgKEpTQzo6U3lt
Ym9sVGFibGVFbnRyeTo6Z2V0RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6
OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojppc1JlYWRP
bmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Y291bGRCZVdhdGNoZWQpOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjphdHRlbXB0VG9XYXRjaCk6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmFkZHJlc3NPZklzV2F0Y2hlZCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6OmFkZFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZSk6CisgICAgICAgIChGYXRFbnRyeSk6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhdEVudHJ5OjpGYXRFbnRyeSk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzRmF0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6ZmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjppbmZsYXRl
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Yml0cyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6OmZyZWVGYXRFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRh
YmxlRW50cnk6OnBhY2spOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojppc1ZhbGlk
SW5kZXgpOgorCiAyMDEyLTA2LTA5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBiYWNrIGluIHBhcnQyIG9mIHIxMTg2NDYu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgogICAgIC8vIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJl
IHVzZWQgYXMgb3BlcmFuZHMgdG8gTWFjcm9Bc3NlbWJsZXIgb3BlcmF0aW9ucywKICAgICAvLyBk
ZXNjcmliaW5nIGltbWVkaWF0ZSAgYW5kIG1lbW9yeSBvcGVyYW5kcyB0byB0aGUgaW5zdHJ1Y3Rp
b25zIHRvIGJlIHBsYW50ZWQuCiAKLQogICAgIGVudW0gU2NhbGUgewogICAgICAgICBUaW1lc09u
ZSwKICAgICAgICAgVGltZXNUd28sCkBAIC01NTksNiArNTU4LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIExhYmVsKHRoaXMpOwogICAgIH0KICAgICAKKyAgICBMYWJlbCB3YXRjaHBvaW50
TGFiZWwoSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRjaHBvaW50KGp1bXBSZXBsYWNlbWVudFR5cGUp
OworICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CisgICAgfQorICAgIAogICAgIExhYmVsIGFs
aWduKCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFsaWduKDE2KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAkocmV2
aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJs
ZXJCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksMTEgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKKyAgICBlbnVtIEp1bXBSZXBsYWNlbWVudFR5cGUgeworICAgICAgICBSZXBsYWNlV2l0
aExvY2FsSnVtcCwKKyAgICAgICAgUmVwbGFjZVdpdGhGYXJKdW1wCisgICAgfTsKKyAgICAKICAg
ICBzdHJ1Y3QgQXNzZW1ibGVyTGFiZWwgewogICAgICAgICBBc3NlbWJsZXJMYWJlbCgpCiAgICAg
ICAgICAgICA6IG1fb2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkod29ya2luZyBjb3B5KQpAQCAtMTAxMCw2ICsx
MDEwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCgqKSgpPihBUk1Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxv
Y2F0aW9uKCkpKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENv
ZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3Rp
bmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAg
IAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgQVJNQXNzZW1ibGVyOjpDb25kaXRpb24gQVJNQ29uZGl0aW9uKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24g
MTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0NSw2ICs1NDUsMTcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICB9CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVM
b2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0
aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAor
ICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiBw
cml2YXRlOgogICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBBcm1BZGRyZXNzIGFkZHJl
c3MpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlck1JUFMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODY4LDYgKzE4NjgsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KE1JUFNBc3NlbWJsZXI6OnJlYWRDYWxsVGFy
Z2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2Nh
dGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCiBwcml2YXRlOgogICAgIC8vIElmIG1fZml4ZWRXaWR0aCBpcyB0cnVl
LCB3ZSB3aWxsIGdlbmVyYXRlIGEgZml4ZWQgbnVtYmVyIG9mIGluc3RydWN0aW9ucy4KICAgICAv
LyBPdGhlcndpc2UsIHdlIGNhbiBlbWl0IGFueSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJTSDQuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclNINC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcxLDYgKzE5NzEs
MTcgQEAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgcwogICAgICAgICBy
ZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KFNINEFzc2VtYmxl
cjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25T
dGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBTSDRBc3NlbWJs
ZXI6OkNvbmRpdGlvbiBTSDRDb25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRE
b3VibGU7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlRG91YmxlOwog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjb252ZXJ0SW50MzJUb0RvdWJsZTsK
KyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDg7CiAKICAgICB2
b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewpAQCAtMTY1LDYgKzE2NiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdmxfaTMycihpbml0aWFsVmFsdWUuYXNJbnRwdHIoKSwgZGVzdCk7CiAgICAgICAgIHJl
dHVybiBEYXRhTGFiZWxQdHIodGhpcyk7CiAgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoVGVz
dDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVk
SW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBBU1NFUlQobWFz
ay5tX3ZhbHVlID49IC0xMjggJiYgbWFzay5tX3ZhbHVlIDw9IDI1NSk7CisgICAgICAgIGlmICht
YXNrLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBiX2ltKDAsIGFk
ZHJlc3MubV9wdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0
Yl9pbShtYXNrLm1fdmFsdWUsIGFkZHJlc3MubV9wdHIpOworICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQogCiAgICAgSnVtcCBi
cmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZh
bHVlID0gVHJ1c3RlZEltbVB0cigwKSkKICAgICB7CkBAIC0xOTgsNiArMjA5LDE3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYWxsLmRhdGFMb2NhdGlvbigpKSArIG9mZnNldCkp
OwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25M
YWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAg
ICB7CisgICAgICAgIC8vIE5PVEU6IG9uIFg4Ni0zMiB0aGUgc2NyYXRjaCByZWdpc3RlciBpcyB1
bnVzZWQuCisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9u
U3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgUmVnaXN0ZXJJRDo6ZWF4KTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJs
ZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIExpbmtCdWZmZXI7CiAgICAgZnJpZW5kIGNsYXNzIFJlcGF0Y2hCdWZmZXI7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxMyw2
ICs1MTMsMTIgQEAgcHVibGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92
ZShhZGRyLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEJhc2VJbmRleChzY3JhdGNoUmVnaXN0ZXIsIGFk
ZHJlc3MuYmFzZSwgVGltZXNPbmUpLCBtYXNrKTsKICAgICB9CisgICAgCisgICAgSnVtcCBicmFu
Y2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNj
cmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIpLCBtYXNrKTsKKyAgICB9
CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSB7IHJldHVybiB0cnVl
OyB9CiAgICAgLy8gU2VlIGNvbW1lbnQgb24gTWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3VwcG9ydHNG
bG9hdGluZ1BvaW50VHJ1bmNhdGUoKQpAQCAtNTI3LDYgKzUzMywxNiBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpIHsgcmV0dXJu
IHNjcmF0Y2hSZWdpc3RlcjsgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENv
ZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3Rp
bmF0aW9uLCBKdW1wUmVwbGFjZW1lbnRUeXBlIGp1bXBSZXBsYWNlbWVudFR5cGUpCisgICAgewor
ICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4
ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCksIHNjcmF0
Y2hSZWdpc3RlciwganVtcFJlcGxhY2VtZW50VHlwZSA9PSBSZXBsYWNlV2l0aExvY2FsSnVtcCk7
CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6
ZShKdW1wUmVwbGFjZW1lbnRUeXBlIGp1bXBSZXBsYWNlbWVudFR5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKGp1bXBSZXBsYWNl
bWVudFR5cGUgPT0gUmVwbGFjZVdpdGhMb2NhbEp1bXApOworICAgIH0KKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgUmVwYXRjaEJ1ZmZl
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1
ZmZlci5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiwxMSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVyVG9UcmFtcG9saW5lKHJldHVy
bkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1bmN0aW9uKSk7CiAgICAgfQor
ICAgIAorICAgIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0
aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LCBkZXN0aW5h
dGlvbik7CisgICAgfQogCiBwcml2YXRlOgogICAgIHZvaWQqIG1fc3RhcnQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9u
IDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI0Nyw2ICsyNDcsOCBAQCBwcml2YXRlOgogcHVibGljOgogCiAg
ICAgWDg2QXNzZW1ibGVyKCkKKyAgICAgICAgOiBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRf
TUlOKQorICAgICAgICAsIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAg
ICAgewogICAgIH0KIApAQCAtNzk4LDYgKzgwMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7
CiAgICAgfQorICAgIAorI2lmIENQVShYODYpCisgICAgdm9pZCBjbXBiX2ltKGludCBpbW0sIGNv
bnN0IHZvaWQqIGFkZHIpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAxX0ViSWIsIEdST1VQMV9PUF9DTVAsIGFkZHIpOworICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGF0ZTgoaW1tKTsKKyAgICB9CisjZW5kaWYKIAogICAgIHZvaWQgY21wbF9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKICAgICB7CkBAIC05NDgsNiArOTU4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KIAorI2lmIENQVShYODYpCisgICAgdm9pZCB0ZXN0
Yl9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYkliLCBHUk9VUDNfT1BfVEVTVCwgYWRkcik7CisgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZv
aWQgdGVzdGxfaTMybShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKQEAgLTE3MDIsMTAgKzE3MjAsMjYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fZm9ybWF0dGVyLmNvZGVTaXplKCk7CiAgICAgfQorICAgIAorICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludChKdW1wUmVwbGFjZW1lbnRUeXBlIGp1bXBSZXBsYWNl
bWVudFR5cGUpCisgICAgeworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1h
dHRlci5sYWJlbCgpOworICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9p
bmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZShqdW1wUmVwbGFjZW1lbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAgICByZXR1cm4g
bV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9m
b3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgLy8gRklYTUU6IG5lZWQgdG8ga25vdyB0aGUgc2l6
ZSBvZiB0aGUgbGFzdCB3YXRjaHBvaW50IGFzIHdlbGwuCisgICAgICAgIHdoaWxlIChVTkxJS0VM
WShyZXN1bHQubV9vZmZzZXQgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkpIHsKKyAg
ICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmVzdWx0ID0gbV9mb3JtYXR0ZXIubGFiZWwo
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIEFzc2Vt
YmxlckxhYmVsIGFsaWduKGludCBhbGlnbm1lbnQpCkBAIC0xNzgyLDYgKzE4MTYsNDMgQEAgcHVi
bGljOgogICAgICAgICBzZXRQb2ludGVyKHdoZXJlLCB2YWx1ZSk7CiAgICAgfQogICAgIAorICAg
IHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lk
KiB0bywgUmVnaXN0ZXJJRCBzY3JhdGNoLCBKdW1wUmVwbGFjZW1lbnRUeXBlIGp1bXBSZXBsYWNl
bWVudFR5cGUpCisgICAgeworICAgICAgICBpbnQ4X3QgKnB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIGludDhfdCAqZHN0UHRyID0gcmVp
bnRlcnByZXRfY2FzdDxpbnQ4X3QqPih0byk7CisgICAgICAgIGludHB0cl90IGRpc3RhbmNlID0g
KGludHB0cl90KShkc3RQdHIgLSAocHRyICsgNSkpOworI2lmIENQVShYODZfNjQpCisgICAgICAg
IGlmIChkaXN0YW5jZSA+IElOVDMyX01BWCB8fCBkaXN0YW5jZSA8IElOVDMyX01JTikgeworICAg
ICAgICAgICAgQVNTRVJUKGp1bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVwbGFjZVdpdGhGYXJKdW1w
KTsKKyAgICAgICAgICAgIC8vIG1vdnFfaTY0ciBpbnN0cnVjdGlvbgorICAgICAgICAgICAgcHRy
WzBdID0gUFJFX1JFWCB8ICgxPDwzKSB8IChzY3JhdGNoPj4zKTsKKyAgICAgICAgICAgIHB0clsx
XSA9IE9QX01PVl9FQVhJdiArIChzY3JhdGNoICYgNyk7CisgICAgICAgICAgICAqcmVpbnRlcnBy
ZXRfY2FzdDxpbnQ2NF90Kj4ocHRyKzMpID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4odG8pKTsKKyAgICAgICAgICAgIHB0ciArPSAxMDsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gam1wX3IgaW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGlmIChz
Y3JhdGNoID49IFg4NlJlZ2lzdGVyczo6cjgpIHsKKyAgICAgICAgICAgICAgICBwdHJbMF0gPSBQ
UkVfUkVYIHwgKHNjcmF0Y2g+PjMpOworICAgICAgICAgICAgICAgIHB0cisrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcHRyWzBdID0gT1BfR1JPVVA1X0V2OworICAgICAgICAgICAgcHRy
WzFdID0gKDM8PDYpIHwgKEdST1VQNV9PUF9KTVBOPDwzKSB8IChzY3JhdGNoICYgNyk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBwdHJbMF0gPSBPUF9K
TVBfcmVsMzI7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PGludDMyX3QqPihwdHIgKyAxKSA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KGRpc3RhbmNlKTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKEp1bXBSZXBsYWNlbWVudFR5cGUganVt
cFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgaWYgKGp1
bXBSZXBsYWNlbWVudFR5cGUgPT0gUmVwbGFjZVdpdGhGYXJKdW1wKQorICAgICAgICAgICAgcmV0
dXJuIDEzOworI2VuZGlmCisgICAgICAgIHJldHVybiA1OworICAgIH0KKyAgICAKICAgICBzdGF0
aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hlcmUpCiAgICAgewogICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHdoZXJlKVstMV07CkBAIC0yMzM5LDYgKzI0MTAsOCBA
QCBwcml2YXRlOgogCiAgICAgICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsKICAgICB9IG1f
Zm9ybWF0dGVyOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKKyAgICBpbnQgbV9p
bmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMjczLDEwICsyNzMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lk
IGFwcGVuZE9TUkV4aXQoY29uc3QgREZHOjpPU1JFeGl0JiBvc3JFeGl0KQorICAgICAgICB1bnNp
Z25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkKICAgICAgICAg
ewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAgICAgICB1
bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPm9zckV4aXQuc2l6ZSgpOwogICAgICAgICAgICAg
bV9kZmdEYXRhLT5vc3JFeGl0LmFwcGVuZChvc3JFeGl0KTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERGRzo6T1NSRXhpdCYgbGFzdE9T
UkV4aXQoKQpAQCAtMjg0LDEwICsyODYsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gbV9kZmdEYXRhLT5vc3JFeGl0Lmxhc3QoKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgdm9pZCBhcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KGNvbnN0IERGRzo6U3BlY3Vs
YXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgICAgIHVuc2lnbmVkIGFwcGVuZFNwZWN1bGF0
aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNvdmVyeSkKICAg
ICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAg
ICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVjb3Zlcnkuc2l6
ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LmFwcGVuZChy
ZWNvdmVyeSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB1bnNpZ25lZCBhcHBlbmRXYXRjaHBvaW50KGNvbnN0IFdhdGNocG9pbnQmIHdh
dGNocG9pbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2Fy
eSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT53YXRjaHBvaW50
cy5zaXplKCk7CisgICAgICAgICAgICBtX2RmZ0RhdGEtPndhdGNocG9pbnRzLmFwcGVuZCh3YXRj
aHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAtMzA0LDYgKzMxNiwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPnNwZWN1bGF0
aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZldhdGNocG9pbnRzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2Rm
Z0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbV9k
ZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAg
IERGRzo6T1NSRXhpdCYgb3NyRXhpdCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdFtpbmRleF07CkBAIC0zMTQsNiArMzMzLDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+c3BlY3Vs
YXRpb25SZWNvdmVyeVtpbmRleF07CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIFdhdGNo
cG9pbnQmIHdhdGNocG9pbnQodW5zaWduZWQgaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRzW2luZGV4XTsKKyAgICAgICAgfQorICAgICAg
ICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNlKEpTQ2VsbCogdGFyZ2V0KQogICAg
ICAgICB7CiAgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTEyMzgs
NiArMTI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgVmVjdG9yPERGRzo6T1NS
RW50cnlEYXRhPiBvc3JFbnRyeTsKICAgICAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9T
UkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgICAgICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlvblJl
Y292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OworICAgICAgICAgICAgU2VnbWVudGVkVmVjdG9y
PFdhdGNocG9pbnQsIDEsIDA+IHdhdGNocG9pbnRzOwogICAgICAgICAgICAgVmVjdG9yPFdlYWtS
ZWZlcmVuY2VUcmFuc2l0aW9uPiB0cmFuc2l0aW9uczsKICAgICAgICAgICAgIFZlY3RvcjxXcml0
ZUJhcnJpZXI8SlNDZWxsPiA+IHdlYWtSZWZlcmVuY2VzOwogICAgICAgICAgICAgYm9vbCBtYXlC
ZUV4ZWN1dGluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvbi5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDYgKzE5Myw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVByb2ZpbGUqIHByb2ZpbGUp
IHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24o
V3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpIHsgdS5yZWdpc3RlclBvaW50
ZXIgPSByZWdpc3RlclBvaW50ZXI7IH0KKyAgICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKGJv
b2wqIHByZWRpY2F0ZVBvaW50ZXIpIHsgdS5wcmVkaWNhdGVQb2ludGVyID0gcHJlZGljYXRlUG9p
bnRlcjsgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGU7CkBA
IC0yMDUsNiArMjA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBMTEludENhbGxM
aW5rSW5mbyogY2FsbExpbmtJbmZvOwogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
OwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKKyAgICAgICAgICAgIGJvb2wqIHByZWRpY2F0
ZVBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDExOTgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDcgKzEwMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRf
c2NvcGVkX3ZhciwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3Jv
KG9wX3B1dF9zY29wZWRfdmFyLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX2dldF9nbG9iYWxfdmFy
LCA0KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2ds
b2JhbF92YXJfd2F0Y2hhYmxlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAg
ICAgbWFjcm8ob3BfcHV0X2dsb2JhbF92YXIsIDMpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2ds
b2JhbF92YXJfY2hlY2ssIDUpIFwKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV9iYXNlLCA1KSAv
KiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0cywgMykgXAogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNSkg
LyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgorCitX
YXRjaHBvaW50Ojp+V2F0Y2hwb2ludCgpCit7CisgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAg
IHJlbW92ZSgpOworfQorCit2b2lkIFdhdGNocG9pbnQ6OmZpcmUoKQoreworICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoCisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdp
c2VfY2FzdDx2b2lkKj4obV9zb3VyY2UpKSwKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWsoYml0
d2lzZV9jYXN0PHZvaWQqPihtX2Rlc3RpbmF0aW9uKSkpOworICAgIGlmIChpc09uTGlzdCgpKQor
ICAgICAgICByZW1vdmUoKTsKK30KKworV2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldCgpCisg
ICAgOiBtX2lzV2F0Y2hlZChmYWxzZSkKKyAgICAsIG1faXNJbnZhbGlkYXRlZChmYWxzZSkKK3sK
K30KKworV2F0Y2hwb2ludFNldDo6fldhdGNocG9pbnRTZXQoKQoreworICAgIC8vIEZpcmUgYWxs
IHdhdGNocG9pbnRzLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGlzIHBvc3NpYmxlLCBz
YXkgd2l0aAorICAgIC8vIHN0cnVjdHVyZSB3YXRjaHBvaW50cywgZm9yIHRoZSB3YXRjaHBvaW50
IHNldCBvd25lciB0byBkaWUgd2hpbGUgdGhlCisgICAgLy8gd2F0Y2hwb2ludCBvd25lcnMgYXJl
IHN0aWxsIGxpdmUuCisgICAgZmlyZUFsbFdhdGNocG9pbnRzKCk7Cit9CisKK3ZvaWQgV2F0Y2hw
b2ludFNldDo6YWRkKFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCit7CisgICAgbV9zZXQucHVzaCh3
YXRjcG9pbnQpOworICAgIG1faXNXYXRjaGVkID0gdHJ1ZTsKK30KKwordm9pZCBXYXRjaHBvaW50
U2V0Ojpub3RpZnlXcml0ZVNsb3coKQoreworICAgIEFTU0VSVChtX2lzV2F0Y2hlZCk7CisgICAg
CisgICAgZmlyZUFsbFdhdGNocG9pbnRzKCk7CisgICAgbV9pc1dhdGNoZWQgPSBmYWxzZTsKKyAg
ICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOworfQorCit2b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVB
bGxXYXRjaHBvaW50cygpCit7CisgICAgd2hpbGUgKCFtX3NldC5pc0VtcHR5KCkpCisgICAgICAg
IG1fc2V0LmJlZ2luKCktPmZpcmUoKTsKK30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1dhdGNocG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2F0Y2hwb2ludF9oCisjZGVmaW5lIFdhdGNocG9pbnRfaAorCisjaW5jbHVk
ZSAiQ29kZUxvY2F0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBX
YXRjaHBvaW50IDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPFdhdGNocG9pbnQ+IHsKK3B1
YmxpYzoKKyAgICBXYXRjaHBvaW50KE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBzb3VyY2UpCisgICAg
ICAgIDogbV9zb3VyY2Uoc291cmNlLm1fbGFiZWwubV9vZmZzZXQpCisgICAgICAgICwgbV9kZXN0
aW5hdGlvbihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnRwdHJfdD46Om1heCgpKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBzZXREZXN0aW5hdGlvbihNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
ZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBtX2Rlc3RpbmF0aW9uID0gZGVzdGluYXRpb24u
bV9sYWJlbC5tX29mZnNldDsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb3JyZWN0TGFiZWxzKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpCisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbGFiZWw7CisgICAgICAgIGxhYmVsLm1fbGFiZWwubV9vZmZzZXQgPSBtX3NvdXJjZTsKKyAg
ICAgICAgbV9zb3VyY2UgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihsaW5rQnVmZmVyLmxvY2F0
aW9uT2YobGFiZWwpLmRhdGFMb2NhdGlvbigpKTsKKyAgICAgICAgbGFiZWwubV9sYWJlbC5tX29m
ZnNldCA9IG1fZGVzdGluYXRpb247CisgICAgICAgIG1fZGVzdGluYXRpb24gPSBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWwpLmRhdGFMb2NhdGlvbigp
KTsKKyAgICB9CisgICAgCisgICAgfldhdGNocG9pbnQoKTsKKyAgICAKKyAgICB2b2lkIGZpcmUo
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgdWludHB0cl90IG1fc291cmNlOworICAgIHVpbnRwdHJf
dCBtX2Rlc3RpbmF0aW9uOworfTsKKworY2xhc3MgV2F0Y2hwb2ludFNldCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdhdGNocG9pbnRTZXQ+IHsKK3B1YmxpYzoKKyAgICBXYXRjaHBvaW50U2V0KCk7Cisg
ICAgfldhdGNocG9pbnRTZXQoKTsKKyAgICAKKyAgICBib29sIGlzU3RpbGxWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuICFtX2lzSW52YWxpZGF0ZWQ7IH0KKyAgICBib29sIGhhc0JlZW5JbnZhbGlkYXRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnZhbGlkYXRlZDsgfQorICAgIAorICAgIHZvaWQgYWRk
KFdhdGNocG9pbnQqKTsKKyAgICB2b2lkIG5vdGlmeVdyaXRlKCkKKyAgICB7CisgICAgICAgIGlm
ICghbV9pc1dhdGNoZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5vdGlmeVdyaXRl
U2xvdygpOworICAgIH0KKyAgICAKKyAgICBib29sKiBhZGRyZXNzT2ZJc1dhdGNoZWQoKSB7IHJl
dHVybiAmbV9pc1dhdGNoZWQ7IH0KKyAgICAKKyAgICB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOyAv
LyBDYWxsIG9ubHkgaWYgeW91J3ZlIGNoZWNrZWQgaXNXYXRjaGVkLgorICAgIAorcHJpdmF0ZToK
KyAgICB2b2lkIGZpcmVBbGxXYXRjaHBvaW50cygpOworICAgIAorICAgIFNlbnRpbmVsTGlua2Vk
TGlzdDxXYXRjaHBvaW50PiBtX3NldDsKKyAgICBib29sIG1faXNXYXRjaGVkOworICAgIGJvb2wg
bV9pc0ludmFsaWRhdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBX
YXRjaHBvaW50X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDExOTgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsMTMgKzIxNiwxOSBAQCBib29sIEJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRWYXIoY29uc3QgSWRlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWludCBCeXRlY29k
ZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBib29sIGlz
Q29uc3RhbnQpCitpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZhcigKKyAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgQ29uc3RhbnRNb2RlIGNvbnN0YW50TW9kZSwgRnVuY3Rpb25N
b2RlIGZ1bmN0aW9uTW9kZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25Nb2RlKTsKICAg
ICBpbnQgaW5kZXggPSBzeW1ib2xUYWJsZSgpLnNpemUoKTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5
IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0YW50ID8gUmVhZE9ubHkgOiAwKTsKKyAgICBTeW1ib2xU
YWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCAoY29uc3RhbnRNb2RlID09IElzQ29uc3RhbnQpID8g
UmVhZE9ubHkgOiAwKTsKKyAgICBpZiAoZnVuY3Rpb25Nb2RlID0gSXNGdW5jdGlvblRvU3BlY2lh
bGl6ZSkKKyAgICAgICAgbmV3RW50cnkuYXR0ZW1wdFRvV2F0Y2goKTsKICAgICBTeW1ib2xUYWJs
ZTo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3
RW50cnkpOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIGluZGV4ID0gcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0SW5kZXgoKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kLm5vdGlmeVdyaXRlKCk7CiAgICAgcmV0dXJuIGluZGV4OwogfQog
CkBAIC0yODksMTcgKzI5NSwyMyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoUHJvCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uU3RhY2suc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24gPSBmdW5jdGlvblN0
YWNrW2ldOwotICAgICAgICBnbG9iYWxPYmplY3QtPnJlbW92ZURpcmVjdCgqbV9nbG9iYWxEYXRh
LCBmdW5jdGlvbi0+aWRlbnQoKSk7IC8vIE5ld2x5IGRlY2xhcmVkIGZ1bmN0aW9ucyBvdmVyd3Jp
dGUgZXhpc3RpbmcgcHJvcGVydGllcy4KKyAgICAgICAgYm9vbCBwcm9wZXJ0eURpZEV4aXN0ID0g
CisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnJlbW92ZURpcmVjdCgqbV9nbG9iYWxEYXRhLCBm
dW5jdGlvbi0+aWRlbnQoKSk7IC8vIE5ld2x5IGRlY2xhcmVkIGZ1bmN0aW9ucyBvdmVyd3JpdGUg
ZXhpc3RpbmcgcHJvcGVydGllcy4KIAogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKGV4ZWMsIG1ha2VGdW5jdGlvbihleGVjLCBmdW5jdGlvbiksIHNjb3BlQ2hhaW4p
OwotICAgICAgICBpbnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoZnVuY3Rpb24tPmlkZW50KCksIGZh
bHNlKTsKKyAgICAgICAgaW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKAorICAgICAgICAgICAgZnVu
Y3Rpb24tPmlkZW50KCksIElzVmFyaWFibGUsCisgICAgICAgICAgICBwcm9wZXJ0eURpZEV4aXN0
ID8gSXNGdW5jdGlvblRvU3BlY2lhbGl6ZSA6IE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxl
KTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZWdpc3RlckF0KGluZGV4KS5zZXQoKm1fZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB2YXJTdGFjay5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5oYXNQcm9wZXJ0eShleGVjLCAqdmFyU3RhY2tbaV0uZmlyc3QpKQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGFkZEdsb2JhbFZhcigqdmFyU3RhY2tbaV0uZmlyc3QsIHZhclN0YWNr
W2ldLnNlY29uZCAmIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KTsKKyAgICAgICAgYWRk
R2xvYmFsVmFyKAorICAgICAgICAgICAgKnZhclN0YWNrW2ldLmZpcnN0LAorICAgICAgICAgICAg
KHZhclN0YWNrW2ldLnNlY29uZCAmIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KSA/IElz
Q29uc3RhbnQgOiBJc1ZhcmlhYmxlLAorICAgICAgICAgICAgTm90RnVuY3Rpb25Pck5vdFNwZWNp
YWxpemFibGUpOwogICAgIH0KIH0KIApAQCAtMTIwMiw3ICsxMjE0LDkgQEAgUmVzb2x2ZVJlc3Vs
dCBCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZQogICAgICAgICAgICAgaWYgKCsraXRlciA9PSBl
bmQpIHsKICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBSZXNvbHZlUmVzdWx0OjpEeW5hbWlj
RmxhZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmR5bmFtaWNJ
bmRleGVkR2xvYmFsUmVzb2x2ZShlbnRyeS5nZXRJbmRleCgpLCBkZXB0aCwgY3VycmVudFNjb3Bl
LCBmbGFncyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmluZGV4ZWRH
bG9iYWxSZXNvbHZlKGVudHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29wZSwgZmxhZ3MpOworICAg
ICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjppbmRleGVkR2xvYmFsUmVzb2x2ZSgK
KyAgICAgICAgICAgICAgICAgICAgZW50cnkuZ2V0SW5kZXgoKSwgY3VycmVudFNjb3BlLAorICAg
ICAgICAgICAgICAgICAgICBmbGFncyB8IChlbnRyeS5jb3VsZEJlV2F0Y2hlZCgpID8gV2F0Y2hl
ZEZsYWcgfCAwKSk7CiAgICAgICAgICAgICB9CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAg
ICAgICAgaWYgKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNBY3Rp
dmF0aW9uKj4oY3VycmVudFZhcmlhYmxlT2JqZWN0KSkKQEAgLTE0MzYsNyArMTQ1MCw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICByZXR1cm4gZW1pdFJl
c29sdmUocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogfQogCi1SZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNv
bnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVS
ZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gMDsKIApAQCAtMTQ3MiwxMyArMTQ4NiwyNCBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0CiAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICAgICAgcmV0dXJuIGRzdDsKIAorICAgIGNhc2Ug
UmVzb2x2ZVJlc3VsdDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6CisgICAgICAgIC8vIFNraXAgdGhl
IHBlZXBob2xlIGZvciBub3cuIEl0J3Mgbm90IGNsZWFyIHRoYXQgaXQncyBwcm9maXRhYmxlIGdp
dmVuCisgICAgICAgIC8vIHRoZSBERkcncyBjYXBhYmlsaXRpZXMsIGFuZCB0aGUgZmFjdCB0aGF0
IGlmIGl0J3Mgd2F0Y2hhYmxlIHRoZW4gd2UKKyAgICAgICAgLy8gZG9uJ3QgZXhwZWN0IHRvIHNl
ZSBhbnkgcHV0X2dsb2JhbF92YXIncyBhbnl3YXkuCisgICAgICAgIHByb2ZpbGUgPSBlbWl0UHJv
ZmlsZWRPcGNvZGUob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsgLy8gRm9yIHRoZSBiZW5lZml0
IG9mIHRoZSBERkcuCisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKyAg
ICAgICAgcmV0dXJuIGRzdDsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29s
dmVSZXN1bHQsIFJlZ2lzdGVySUQqIHZhbHVlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAg
c3dpdGNoIChyZXNvbHZlUmVzdWx0LnR5cGUoKSkgewogICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6
UmVnaXN0ZXI6CkBAIC0xNDk5LDYgKzE1MjQsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRTdAogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJl
c3VsdC5yZWdpc3RlclBvaW50ZXIoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2
YWx1ZS0+aW5kZXgoKSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgCisgICAgY2Fz
ZSBSZXNvbHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAgZW1pdE9wY29k
ZShvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHJlc29sdmVSZXN1bHQuZ2xvYmFsT2JqZWN0KCktPnN5bWJvbFRhYmxlKCkuZ2V0KGlkZW50aWZp
ZXIuaW1wbCgpKS5hZGRyZXNzT2ZJc1dhdGNoZWQoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChhZGRDb25zdGFudChpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsK
IAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTEx
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAvLyBUaGUgcmVzb2x2ZWQgYmluZGlu
ZyBpcyBpbW11dGFibGUuCiAgICAgICAgICAgICBSZWFkT25seUZsYWcgPSAweDIwLAogICAgICAg
ICAgICAgLy8gVGhlIGJhc2Ugb2JqZWN0IGlzIHRoZSBnbG9iYWwgb2JqZWN0LgotICAgICAgICAg
ICAgR2xvYmFsRmxhZyA9IDB4NDAKKyAgICAgICAgICAgIEdsb2JhbEZsYWcgPSAweDQwLAorICAg
ICAgICAgICAgLy8gVGhlIHByb3BlcnR5IGlzIGJlaW5nIHdhdGNoZWQsIHNvIHdyaXRlcyBzaG91
bGQgYmUgc3BlY2lhbC4KKyAgICAgICAgICAgIFdhdGNoZWRGbGFnID0gMHg4MAogICAgICAgICB9
OwogICAgICAgICBlbnVtIFR5cGUgewogICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5IGlzIGxv
Y2FsLCBhbmQgc3RvcmVkIGluIGEgcmVnaXN0ZXIuCkBAIC0xMzEsNiArMTMzLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAvLyBiaW5kaW5nIGNyZWF0ZWQgd2l0aCAidmFyIiBhdCB0
aGUgdG9wIGxldmVsLiBBdCBydW50aW1lIHdlJ2xsCiAgICAgICAgICAgICAvLyBqdXN0IGluZGV4
IGludG8gdGhlIGdsb2JhbCBvYmplY3QuCiAgICAgICAgICAgICBJbmRleGVkR2xvYmFsID0gSW5k
ZXhlZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZywKKyAgICAgICAgICAgIC8vIExpa2Ug
SW5kZXhlZEdsb2JhbCwgYnV0IHRoZSBwcm9wZXJ0eSBpcyBiZWluZyB3YXRjaGVkLgorICAgICAg
ICAgICAgV2F0Y2hlZEluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxhZyB8IEdsb2JhbEZsYWcgfCBT
dGF0aWNGbGFnIHwgV2F0Y2hlZEZsYWcsCiAgICAgICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9i
YWwsIGJ1dCB0aGUgcHJvcGVydHkgaXMgYWxzbyByZWFkLW9ubHksIGxpa2UgTmFOLAogICAgICAg
ICAgICAgLy8gSW5maW5pdHksIG9yIHVuZGVmaW5lZC4KICAgICAgICAgICAgIFJlYWRPbmx5SW5k
ZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgUmVhZE9ubHlGbGFnIHwgR2xvYmFsRmxhZyB8IFN0
YXRpY0ZsYWcsCkBAIC00NDEsOCArNDQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRUeXBlT2YoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsg
cmV0dXJuIGVtaXRVbmFyeU9wKG9wX3R5cGVvZiwgZHN0LCBzcmMpOyB9CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRJbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiBiYXNlKSB7IHJldHVybiBlbWl0QmluYXJ5T3Aob3BfaW4sIGRzdCwgcHJvcGVydHks
IGJhc2UsIE9wZXJhbmRUeXBlcygpKTsgfQogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRT
dGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0Jik7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYsIFJlZ2lz
dGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFN0YXRpY1ZhcihSZWdp
c3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJik7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYs
IGNvbnN0IElkZW50aWZpZXImLCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFJlc29sdmUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0Jiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVz
b2x2ZUJhc2UoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHkpOwpAQCAtNTc0LDcgKzU3OCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAKICAgICAgICAgLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGFkZGVkIHZh
ci4KLSAgICAgICAgaW50IGFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiwgYm9vbCBpc0Nv
bnN0YW50KTsKKyAgICAgICAgZW51bSBDb25zdGFudE1vZGUgeyBJc0NvbnN0YW50LCBJc1Zhcmlh
YmxlIH07CisgICAgICAgIGVudW0gRnVuY3Rpb25Nb2RlIHsgSXNGdW5jdGlvblRvU3BlY2lhbGl6
ZSwgTm90RnVuY3Rpb25Pck5vdFNwZWNpYWxpemFibGUgfTsKKyAgICAgICAgaW50IGFkZEdsb2Jh
bFZhcihjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RhbnRNb2RlIGNvbnN0YW50TW9kZSwgRnVuY3Rp
b25Nb2RlIGZ1bmN0aW9uTW9kZSk7CiAKICAgICAgICAgdm9pZCBhZGRQYXJhbWV0ZXIoY29uc3Qg
SWRlbnRpZmllciYsIGludCBwYXJhbWV0ZXJJbmRleCk7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAx
MTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDc2LDcgKzE0NzYsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6
OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFNwZWNGdW5jdGlvbik7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgYWJsZSB0byBw
cm9wYWdhdGUgdGhlIGZhY3QgdGhhdCB3ZSBrbm93IHdoYXQgdGhlIGZ1bmN0aW9uIGlzLgogICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIAorICAgICAgICAKICAgICBjYXNlIFB1dEJ5SWQ6CiAg
ICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CkBA
IC0xNDg4LDggKzE0ODgsMTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVk
IGluZAogICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBH
bG9iYWxWYXJXYXRjaHBvaW50OgorICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CisgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgY2Fz
ZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIzOSwxMyArMjIzOSw4NSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRTcGVjdWxhdGlvbigpOwogICAgICAgICAg
ICAgCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworCisgICAgICAgICAgICAvLyBG
aWd1cmUgb3V0IHdoYXQgdmFyaWFibGUgdGhpcyBpcy4gV2UgY291bGQgbWFrZSB0aGUgb3BfZ2V0
X2dsb2JhbF92YXIKKyAgICAgICAgICAgIC8vIGluc3RydWN0aW9uIGJpZ2dlciBhbmQgc3RvcmUg
YSBwb2ludGVyIGRpcmVjdGx5IGludG8gdGhlIHRoaW5nIHdlJ3JlCisgICAgICAgICAgICAvLyBs
b29raW5nIGZvciAodGhlIGlkZW50aWZpZXIgbnVtYmVyKSwgYnV0IG15IGd1ZXNzIGlzIHRoYXQg
dGhpcyBpcworICAgICAgICAgICAgLy8gYmV0dGVyLiBJZiBuZWVkIGJlLCB3ZSBjb3VsZCBtYWlu
dGFpbiBhIHJldmVyc2UgbWFwLiBCdXQgdGhhdCdzCisgICAgICAgICAgICAvLyBwcm9iYWJseSBl
bnRpcmVseSB1bm5lY2Vzc2FyeS4KKyAgICAgICAgICAgIGludCBnbG9iYWxWYXJJbmRleCA9IGds
b2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVn
aXN0ZXJQb2ludGVyKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBlbmQgPSBn
bG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCkuZW5kKCk7CisgICAgICAgICAgICBTeW1ib2xUYWJs
ZUVudHJ5KiBlbnRyeSA9IDA7CisgICAgICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjppdGVyYXRv
ciBpdGVyID0gZ2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmJlZ2luKCk7CisgICAgICAgICAg
ICAgICAgIGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoJmdsb2Jh
bE9iamVjdC0+cmVnaXN0ZXJBdChpdGVyLT5zZWNvbmQuZ2V0SW5kZXgoKSkKKyAgICAgICAgICAg
ICAgICAgICAgIT0gY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKQorICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBlbnRyeSA9ICZpdGVy
LT5zZWNvbmQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBBU1NFUlQoZW50cnkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZW50cnkt
PmNvdWxkQmVXYXRjaGVkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJIHRoaW5rIEkgbmVlZCB0
byBzdG9yZSB0aGUgd2F0Y2hwb2ludCBwb2ludGVyIGFuZCB0aGUgcmVnaXN0ZXIKKyAgICAgICAg
ICAgICAgICAvLyBwb2ludGVyLiBCb28uCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHbG9i
YWxWYXJXYXRjaHBvaW50LCBPcEluZm8oRklYTUUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAogICAgICAgICAgICAgTm9kZUluZGV4IGdldEdsb2JhbFZhciA9IGFkZFRvR3JhcGgoCiAg
ICAgICAgICAgICAgICAgR2V0R2xvYmFsVmFyLAotICAgICAgICAgICAgICAgIE9wSW5mbyhtX2lu
bGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFzc2VydFJlZ2lzdGVy
SXNJblRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSks
CisgICAgICAgICAgICAgICAgT3BJbmZvKGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0lu
VGhpc09iamVjdChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpKSwKICAg
ICAgICAgICAgICAgICBPcEluZm8ocHJlZGljdGlvbikpOwogICAgICAgICAgICAgc2V0KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdldEdsb2JhbFZhcik7CiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9nZXRfZ2xvYmFsX3Zhcik7CiAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOiB7CisgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0U3BlY3VsYXRpb24oKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBt
X2NvZGVCbG9jay0+aWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCkuZ2V0KGlk
ZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKCFlbnRyeS5jb3VsZEJlV2F0Y2hlZCgpKSB7Cisg
ICAgICAgICAgICAgICAgTm9kZUluZGV4IGdldEdsb2JhbFZhciA9IGFkZFRvR3JhcGgoCisgICAg
ICAgICAgICAgICAgICAgIEdldEdsb2JhbFZhciwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZv
KGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZv
KHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgZ2V0R2xvYmFsVmFyKTsKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBUaGUgd2F0Y2hwb2ludCBpcyBzdGlsbCBpbnRhY3QhIFRoaXMgbWVh
bnMgdGhhdCB3ZSB3aWxsIGdldCBub3RpZmllZCBpZiB0aGUKKyAgICAgICAgICAgIC8vIGN1cnJl
bnQgdmFsdWUgaW4gdGhlIGdsb2JhbCB2YXJpYWJsZSBjaGFuZ2VzLiBTbywgd2UgY2FuIGlubGlu
ZSB0aGF0IHZhbHVlLgorICAgICAgICAgICAgLy8gTW9yZW92ZXIsIGN1cnJlbnRseSB3ZSBjYW4g
YXNzdW1lIHRoYXQgdGhpcyB2YWx1ZSBpcyBhIEpTRnVuY3Rpb24qLCB3aGljaAorICAgICAgICAg
ICAgLy8gaW1wbGllcyB0aGF0IGl0J3MgYSBjZWxsLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzLCBz
aW5jZSBpbiBnZW5lcmFsIHdlJ2QgaGF2ZQorICAgICAgICAgICAgLy8gdG8gdXNlIGEgSlNDb25z
dGFudCBmb3Igbm9uLWNlbGxzIGFuZCBhIFdlYWtKU0NvbnN0YW50IGZvciBjZWxscy4gU28gaW5z
dGVhZAorICAgICAgICAgICAgLy8gb2YgaGF2aW5nIGJvdGggY2FzZXMgd2UganVzdCBhc3NlcnQg
dGhhdCB0aGUgdmFsdWUgaXMgYSBjZWxsLgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBO
Qi4gSWYgaXQgd2Fzbid0IGZvciBDU0UsIEdsb2JhbFZhcldhdGNocG9pbnQgd291bGQgaGF2ZSBu
byBuZWVkIGZvciB0aGUKKyAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHBvaW50ZXIuIEJ1dCBDU0Ug
dHJhY2tzIGVmZmVjdHMgb24gZ2xvYmFsIHZhcmlhYmxlcyBieSBjb21wYXJpbmcKKyAgICAgICAg
ICAgIC8vIHJlZ2lzdGVyIHBvaW50ZXJzLiBCZWNhdXNlIENTRSBleGVjdXRlcyBtdWx0aXBsZSB0
aW1lcyB3aGlsZSB0aGUgYmFja2VuZAorICAgICAgICAgICAgLy8gZXhlY3V0ZXMgb25jZSwgd2Ug
dXNlIHRoZSBmb2xsb3dpbmcgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmOgorICAgICAgICAgICAgLy8g
LSBUaGUgbm9kZSByZWZlcnMgZGlyZWN0bHkgdG8gdGhlIHJlZ2lzdGVyIHBvaW50ZXIgdG8gbWFr
ZSBDU0Ugc3VwZXIgY2hlYXAuCisgICAgICAgICAgICAvLyAtIFRvIHBlcmZvcm0gYmFja2VuZCBj
b2RlIGdlbmVyYXRpb24sIHRoZSBub2RlIG9ubHkgY29udGFpbnMgdGhlIGlkZW50aWZpZXIKKyAg
ICAgICAgICAgIC8vICAgbnVtYmVyLCBmcm9tIHdoaWNoIGl0IGlzIHBvc3NpYmxlIHRvIGdldCAo
dmlhIGEgZmV3IGF2ZXJhZ2UtdGltZSBPKDEpCisgICAgICAgICAgICAvLyAgIGxvb2t1cHMpIHRv
IHRoZSBXYXRjaHBvaW50U2V0LgorICAgICAgICAgICAgCisgICAgICAgICAgICBhZGRUb0dyYXBo
KAorICAgICAgICAgICAgICAgIEdsb2JhbFZhcldhdGNocG9pbnQsCisgICAgICAgICAgICAgICAg
T3BJbmZvKGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICBPcElu
Zm8oaWRlbnRpZmllck51bWJlcikpOworICAgICAgICAgICAgCisgICAgICAgICAgICBKU1ZhbHVl
IHNwZWNpZmljVmFsdWUgPSBnbG9iYWxPYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgo
KSk7CisgICAgICAgICAgICBBU1NFUlQoc3BlY2lmaWNWYWx1ZS5pc0NlbGwoKSk7CisgICAgICAg
ICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKKyAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFdlYWtKU0NvbnN0YW50LCBPcEluZm8oc3BlY2lmaWNWYWx1ZS5hc0NlbGwo
KSkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2dsb2Jh
bF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2Jh
bF92YXI6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKTsKQEAgLTIyNTYsNiArMjMyOCwxNiBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9w
dXRfZ2xvYmFsX3Zhcik7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1dF9nbG9iYWxf
dmFyX2NoZWNrOiB7CisgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKAorICAgICAg
ICAgICAgICAgIFB1dEdsb2JhbFZhckNoZWNrLAorICAgICAgICAgICAgICAgIE9wSW5mbyhtX2lu
bGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFzc2VydFJlZ2lzdGVy
SXNJblRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2ludGVyKSks
CisgICAgICAgICAgICAgICAgT3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
LAorICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vID09PSBCbG9jayB0
ZXJtaW5hdG9ycy4gPT09CiAKICAgICAgICAgY2FzZSBvcF9qbXA6IHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE3LDYgKzIxNywyOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAg
IH0KICAgICAKKyAgICBib29sIGdsb2JhbFZhcldhdGNocG9pbnRFbGltaW5hdGlvbihXcml0ZUJh
cnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcikKKyAgICB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CisgICAgICAgICAgICBOb2RlSW5kZXgg
aW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7CisgICAgICAgICAgICBOb2RlJiBub2RlID0g
bV9ncmFwaFtpbmRleF07CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAgICAg
ICAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAgICAgICAgICAgICAgIGlmIChub2Rl
LnJlZ2lzdGVyUG9pbnRlcigpID09IHJlZ2lzdGVyUG9pbnRlcikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFB1dEdsb2JhbFZhcjoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5yZWdpc3RlclBvaW50ZXIo
KSA9PSByZWdpc3RlclBvaW50ZXIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9ncmFwaC5jbG9i
YmVyc1dvcmxkKGluZGV4KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAogICAgIE5vZGVJbmRleCBnbG9iYWxWYXJT
dG9yZUVsaW1pbmF0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKQog
ICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsK
QEAgLTIyNiw2ICsyNDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgUHV0R2xv
YmFsVmFyOgorICAgICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAgICAg
ICAgICBpZiAobm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTk4NSw3ICsxMDA5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChn
bG9iYWxWYXJMb2FkRWxpbWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBv
aW50OgorICAgICAgICAgICAgaWYgKGdsb2JhbFZhcldhdGNocG9pbnRFbGltaW5hdGlvbihub2Rl
LnJlZ2lzdGVyUG9pbnRlcigpKSkKKyAgICAgICAgICAgICAgICBlbGltaW5hdGUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgor
ICAgICAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOgogICAgICAgICAgICAgaWYgKG1fZml4cG9p
bnRTdGF0ZSA9PSBGaXhwb2ludE5vdENvbnZlcmdlZCkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGVsaW1pbmF0ZShnbG9iYWxWYXJTdG9yZUVsaW1pbmF0aW9uKG5vZGUucmVn
aXN0ZXJQb2ludGVyKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29y
cmVjdGFibGVKdW1wUG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNiArNjYsMTEgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogICAgIAorICAg
IGJvb2wgaXNTZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29kZU9mZnNldCAhPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CisgICAgfQorICAgIAogICAgIHZvaWQg
c3dpdGNoVG9MYXRlSnVtcChNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBjaGVjaykKICAg
ICB7CiAjaWZuZGVmIE5ERUJVRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCwx
MSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoKQogewogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0cygpOyArK2kpIHsKICAg
ICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOwotICAgICAgICBl
eGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMpOworICAgICAgICBBU1NFUlQoIWV4
aXQubV9jaGVjay5pc1NldCgpID09IChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ICE9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOworICAgICAgICBpZiAoZXhpdC5tX3dhdGNo
cG9pbnRJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAg
ICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2lu
dEluZGV4KS5zZXREZXN0aW5hdGlvbihsYWJlbCgpKTsKICAgICAgICAgaml0QXNzZXJ0SGFzVmFs
aWRDYWxsRnJhbWUoKTsKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaSksICZnbG9iYWxE
YXRhKCktPm9zckV4aXRJbmRleCk7CiAgICAgICAgIGV4aXQubV9jaGVjay5zd2l0Y2hUb0xhdGVK
dW1wKHBhdGNoYWJsZUp1bXAoKSk7CkBAIC0xOTAsNiArMTk0LDkgQEAgdm9pZCBKSVRDb21waWxl
cjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJs
b2NrKCktPm9zckV4aXQoaSk7CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhleGl0Lm1fY2hlY2su
bGF0ZUp1bXAoKSwgdGFyZ2V0KTsKICAgICAgICAgZXhpdC5tX2NoZWNrLmNvcnJlY3RMYXRlSnVt
cChsaW5rQnVmZmVyKTsKKyAgICAgICAgQVNTRVJUKCFleGl0Lm1fY2hlY2suaXNTZXQoKSA9PSAo
ZXhpdC5tX3dhdGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpKTsKKyAgICAgICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgICAgICAgICAgY29kZUJsb2NrKCktPndh
dGNocG9pbnQoZXhpdC5tX3dhdGNocG9pbnRJbmRleCkuY29ycmVjdExhYmVscyhsaW5rQnVmZmVy
KTsKICAgICB9CiAgICAgCiAgICAgY29kZUJsb2NrKCktPnNocmlua1RvRml0KENvZGVCbG9jazo6
TGF0ZVNocmluayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0U2NvcGVkVmFyLCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhHZXRHbG9iYWxWYXIsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRHbG9iYWxWYXIsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHbG9iYWxWYXJXYXRjaHBvaW50LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCisgICAgbWFjcm8oUHV0R2xvYmFsVmFyQ2hlY2ssIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAog
ICAgIC8qIE9wdGltaXphdGlvbnMgZm9yIGFycmF5IG11dGF0aW9uLiAqL1wKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NiArOTYsNyBAQCBzdHJ1Y3QgT1NSRXhpdCB7CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW5G
b3JFeGl0UHJvZmlsZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CisgICAg
dW5zaWduZWQgbV93YXRjaHBvaW50SW5kZXg7CiAgICAgCiAgICAgRXhpdEtpbmQgbV9raW5kOwog
ICAgIHVpbnQzMl90IG1fY291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MSw3ICs0OTEsOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAg
ICBjYXNlIFB1dEdsb2JhbFZhcjogeworICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAg
ICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC02NjksNiArNjcwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOgogICAgICAgICBjYXNlIENoZWNrTnVtYmVyOgogICAg
ICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICAgICAgY2FzZSBHbG9iYWxW
YXJXYXRjaHBvaW50OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhu
b2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMTk4MDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTIxOTAsNiArMjE5MCwyNSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChh
dChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMp
OwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2Uu
aW5kZXgoKSwganVtcFRvRmFpbCwgcmVjb3ZlcnkpOwogICAgIH0KKyAgICAvLyBVc2UgdGhpcyBs
aWtlIHlvdSB3b3VsZCB1c2Ugc3BlY3VsYXRpb25DaGVjaygpLCBleGNlcHQgdGhhdCB5b3UgZG9u
J3QgcGFzcyBpdCBhIGp1bXAKKyAgICAvLyAoYmVjYXVzZSB5b3UgZG9uJ3QgaGF2ZSB0byBleGVj
dXRlIGEgYnJhbmNoOyB0aGF0J3Mga2luZCBvZiB0aGUgd2hvbGUgcG9pbnQpLCBhbmQgeW91Cisg
ICAgLy8gbXVzdCByZWdpc3RlciB0aGUgcmV0dXJuZWQgV2F0Y2hwb2ludCB3aXRoIHNvbWV0aGlu
ZyByZWxldmFudC4gSW4gZ2VuZXJhbCwgdGhpcyBzaG91bGQKKyAgICAvLyBiZSB1c2VkIHdpdGgg
ZXh0cmVtZSBjYXJlLiBVc2Ugc3BlY3VsYXRpb25DaGVjaygpIHVubGVzcyB5b3UndmUgZ290IGFu
IGFtYXppbmcgcmVhc29uCisgICAgLy8gbm90IHRvLgorICAgIFdhdGNocG9pbnQqIHNwZWN1bGF0
aW9uV2F0Y2hwb2ludChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2Us
IEVkZ2Ugbm9kZVVzZSwgY29uc3QgU3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAg
eworICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0Fy
Z3VtZW50VHlwZXMpOworICAgICAgICBPU1JFeGl0JiBleGl0ID0gbV9qaXQuY29kZUJsb2NrKCkt
Pm9zckV4aXQoCisgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdCgK
KyAgICAgICAgICAgICAgICBPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVG
b3Iobm9kZUluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEp1bXAoKSwgdGhpcykpKTsK
KyAgICAgICAgZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9IG1faml0LmNvZGVCbG9jaygpLT5hcHBl
bmRXYXRjaHBvaW50KAorICAgICAgICAgICAgV2F0Y2hwb2ludChtX2ppdC53YXRjaHBvaW50TGFi
ZWwoUmVwbGFjZVdpdGhMb2NhbEp1bXApKSk7CisgICAgICAgIHJldHVybiBtX2ppdC5jb2RlQmxv
Y2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KTsKKyAgICB9CiAgICAgdm9p
ZCBmb3J3YXJkU3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpz
VmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1
bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHZhbHVlUmVjb3ZlcnkpCiAgICAgewogICAg
ICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdB
cmd1bWVudFR5cGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9u
IDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjU5LDYgKzI1OSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChv
cF9nZXRfYXJndW1lbnRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3BuYW1l
KQorICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZTogLy8gSWRlbnRpY2Fs
IHRvIGdldF9nbG9iYWxfdmFyIGZyb20gdGhlIEpJVCdzIHN0YW5kcG9pbnQuCiAgICAgICAgIERF
RklORV9PUChvcF9nZXRfZ2xvYmFsX3ZhcikKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9wbmFt
ZXMpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfc2NvcGVkX3ZhcikKQEAgLTMyNCw2ICszMjUs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXIp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3ZhcikKKyAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3Njb3Bl
ZF92YXIpCiAgICAgICAgIERFRklORV9PUChvcF9yZXNvbHZlKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcmVzb2x2ZV9iYXNlKQpAQCAtNDgxLDYgKzQ4Myw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcygpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3Jlc29sdmVfZ2xvYmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3JzaGlmdCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYyLDYgKzY2Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXIoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3Jlc29sdmVfYmFzZShJbnN0cnVjdGlvbiopOwpAQCAtNzM5LDYgKzc0MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3ByZV9pbmMoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcmVzb2x2
ZV9nbG9iYWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyhJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9yc2hpZnQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwOTAsNiArMTA5MCwzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJ
bnN0cnVjCiAgICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX3B1dF9n
bG9iYWxfdmFyKSwgdmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBvaW50ZXI7CisgICAgaW50IHZhbHVlID0gY3VycmVudElu
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgCisgICAgZW1pdExvYWQo
dmFsdWUsIHJlZ1QxLCByZWdUMCk7CisgICAgCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgo
Tm9uWmVybywgY3VycmVudEluc3RydWN0aW9uWzNdLnUucHJlZGljYXRlUG9pbnRlcikpOworICAg
IAorICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQoKSkgeworICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgcmVnVDIpOworICAgICAgICBlbWl0V3JpdGVC
YXJyaWVyKGdsb2JhbE9iamVjdCwgcmVnVDEsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVz
LCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CisgICAgfQorICAgIAorICAgIHN0b3Jl
MzIocmVnVDEsIHJlZ2lzdGVyUG9pbnRlci0+dGFnUG9pbnRlcigpKTsKKyAgICBzdG9yZTMyKHJl
Z1QwLCByZWdpc3RlclBvaW50ZXItPnBheWxvYWRQb2ludGVyKCkpOworICAgIHVubWFwKCk7Cit9
CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIAorICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQocmVnVDEsIHJlZ1QwKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVk
SW1tMzIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNh
bGwoKTsKK30KKwogdm9pZCBKSVQ6OnJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJl
cGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICByZXBhdGNo
QnVmZmVyLnJlbGluayhzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5
X2lkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNyw2ICsxMDI3LDI5
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWMKICAgICAgICAgZW1p
dFdyaXRlQmFycmllcihnbG9iYWxPYmplY3QsIHJlZ1QwLCByZWdUMiwgU2hvdWxkRmlsdGVySW1t
ZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQoreworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCwgcmVnVDApOworICAgIAorICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5v
blplcm8sIGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnByZWRpY2F0ZVBvaW50ZXIpKTsKKworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCk7CisgICAgCisgICAgc3RvcmVQdHIocmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJl
Z2lzdGVyUG9pbnRlcik7CisgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKQor
ICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGdsb2JhbE9iamVjdCwgcmVnVDAsIHJlZ1QyLCBTaG91
bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7Cit9CisK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQoreworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICAKKyAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KHJlZ1QwKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIo
Y3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNhbGwoKTsK
K30KKwogdm9pZCBKSVQ6OnJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hC
dWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVy
LnJlbGluayhzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMTk4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM3Nyw2ICsyMzc3LDE1IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0
Kiwgb3BfbmV3X2EKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoc3RhY2tGcmFtZS5jYWxsRnJh
bWUsIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIoc3Rh
Y2tGcmFtZS5hcmdzWzBdLmludDMyKCkpLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIoKSk7CiB9
CiAKK0RFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQor
eworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKyAgICAKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIENvZGVCbG9jayog
Y29kZUJsY29rID0gY2FsbEZyYW1lLT5jb2RlQmxjb2soKTsKKyAgICBzeW1ib2xUYWJsZVB1dChj
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIoc3Rh
Y2tGcmFtZS5hcmdzWzFdLmludDMyKCkpLCBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKTsK
K30KKwogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3Jlc29sdmUpCiB7
CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzYsNiArNDM2LDcg
QEAgZXh0ZXJuICJDIiB7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcG9wX3Njb3BlKFNUVUJf
QVJHU19ERUNMQVJBVElPTik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHJvZmlsZV9kaWRf
Y2FsbChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3By
b2ZpbGVfd2lsbF9jYWxsKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CisgICAgdm9pZCBKSVRfU1RV
QiBjdGlfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAg
ICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfYnlfaWQoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsK
ICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfYnlfaWRfZmFpbChTVFVCX0FSR1NfREVDTEFS
QVRJT04pOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1dF9ieV9pZF9nZW5lcmljKFNUVUJf
QVJHU19ERUNMQVJBVElPTik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1Niw2
ICs4NTYsMTQgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfdwogICAg
IExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2ds
b2JhbF92YXJfY2hlY2spCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIHN5bWJvbFRhYmxlUHV0KGNvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCksIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1s0XS51Lm9w
ZXJhbmQpLCBMTElOVF9PUF9DKDIpKTsKKyAgICBMTElOR19FTkQoKTsKK30KKwogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfYgogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3Jlc29sdmVfd2l0aF9iYXNlKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNv
bHZlX3dpdGhfdGhpcyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCk7
CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOwog
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEwMzksNyAr
MTAzOSw3IEBAIF9sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBkaXNwYXRjaCg0KQogCiAK
LV9sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKK21hY3JvIGdldEdsb2JhbFZhcihzaXplKQogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCA4W1BDXSwgdDAKICAgICBsb2FkaSA0W1BDXSwg
dDMKQEAgLTEwNDcsOSArMTA0NywxNyBAQCBfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CiAgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFt0MF0sIHQxCiAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MywgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBs
b2FkaSAxMltQQ10sIHQzCisgICAgbG9hZGkgKHNpemUgLSAxKSAqIDRbUENdLCB0MwogICAgIHZh
bHVlUHJvZmlsZSh0MiwgdDEsIHQzKQotICAgIGRpc3BhdGNoKDQpCisgICAgZGlzcGF0Y2goc2l6
ZSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgZ2V0R2xvYmFsVmFyKDQp
CisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKKyAgICBnZXRHbG9iYWxW
YXIoNSkKIAogCiBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CkBAIC0xMDYzLDYgKzEwNzEsMjIg
QEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50
X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
cCAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgYnRibnogW3QyXSwgLm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93CisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHdyaXRlQmFycmllcih0MiwgdDMpCisgICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbdDBdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3QwXQor
ICAgIGRpc3BhdGNoKDUpCisub3BQdXRHbG9iYWxWYXJDaGVja1Nsb3c6CisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2dsb2JhbF92YXJfY2hlY2spCisgICAgZGlzcGF0Y2go
NSkKKworCiBfbGxpbnRfb3BfZ2V0X2J5X2lkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAj
IFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdl
IGRvIG5vdCBtb2RpZnkgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTE5ODAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdv
cmtpbmcgY29weSkKQEAgLTg5MywxNSArODkzLDIzIEBAIF9sbGludF9vcF9wdXRfc2NvcGVkX3Zh
cjoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKK21hY3Jv
IGdldEdsb2JhbFZhcihzaXplKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCAxNltQ
QiwgUEMsIDhdLCB0MAogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAgW3Qw
XSwgdDEKICAgICBzdG9yZXAgdDEsIFtjZnIsIHQzLCA4XQotICAgIGxvYWRwIDI0W1BCLCBQQywg
OF0sIHQwCisgICAgbG9hZHAgKHNpemUgLSAxKSAqIDhbUEIsIFBDLCA4XSwgdDAKICAgICB2YWx1
ZVByb2ZpbGUodDEsIHQwKQotICAgIGRpc3BhdGNoKDQpCisgICAgZGlzcGF0Y2goc2l6ZSkKK2Vu
ZAorCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgZ2V0R2xvYmFsVmFyKDQpCisKKwor
X2xsaW50X29wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKKyAgICBnZXRHbG9iYWxWYXIoNSkK
IAogCiBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CkBAIC05MTQsNiArOTIyLDIxIEBAIF9sbGlu
dF9vcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9wdXRf
Z2xvYmFsX3Zhcl9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgMjRbUEIs
IFBDLCA4XSwgdDIKKyAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDEKKyAgICBsb2FkcCA4W1BC
LCBQQywgOF0sIHQwCisgICAgYnRibnogW3QyXSwgLm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93Cisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQyKQor
ICAgIHN0b3JlcCB0MiwgW3QwXQorICAgIGRpc3BhdGNoKDUpCisub3BQdXRHbG9iYWxWYXJDaGVj
a1Nsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGNoX3B1dF9nbG9iYWxfdmFy
X2NoZWNrKQorICAgIGRpc3BhdGNoKDUpCisKKwogX2xsaW50X29wX2dldF9ieV9pZDoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBj
YWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MDIsMjIgKzUwMiwyNSBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9u
c0ZvckRlCiAgICAgc3RydWN0dXJlKCktPnNldFN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsKIH0K
IAotdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBXVEY6
Om5vdEZvdW5kKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlv
bmFyeSgpKSB7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChv
ZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0
T2Zmc2V0KG9mZnNldCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBX
VEY6Om5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwdXRVbmRl
ZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0
KSk7Ci0gICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAgICBwdXRVbmRlZmlu
ZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0
KG9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIE5FVkVSX0lOTElORSB2b2lkIEpTT2Jq
ZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0dsb2JhbERh
dGEmLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBib29sIHJlbW92ZURpcmVjdChKU0dsb2JhbERh
dGEmLCBQcm9wZXJ0eU5hbWUpOyAvLyBSZXR1cm4gdHJ1ZSBpZiBhbnl0aGluZyBpcyByZW1vdmVk
LgogICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUo
KS0+ZGlkVHJhbnNpdGlvbigpOyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllcygpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3
ICs3Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KIGlubGlu
ZSBib29sIHN5bWJvbFRhYmxlR2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQo
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBl
bnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSku
Z2V0KCkpOwpAQCAtOTYsNyArOTYsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAg
ICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90LAogICAgIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSkKIHsKLSAg
ICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdl
dChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0
IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBzbG90LnNldFZhbHVlKG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgp
KS5nZXQoKSk7CkBAIC0xMTMsMTMgKzExMywxNiBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1
dCgKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09
IEhlYXA6OmhlYXAob2JqZWN0KSk7CiAgICAgCiAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9
IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSk7Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQorICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3Qg
ZmFzdEVudHJ5ID0gZW50cnk7IC8vIGV4dHJhY3QgdGhlIGJpdHMKKyAgICBpZiAoZmFzdEVudHJ5
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGVudHJ5LmlzUmVhZE9u
bHkoKSkgeworICAgIGlmIChmYXN0RW50cnkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIGlmIChz
aG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyAgICBpZiAoVU5MSUtFTFkoZmFzdEVudHJ5LmlzRmF0KCkpKQorICAgICAgICBlbnRyeS5ub3Rp
ZnlXcml0ZSgpOwogICAgIG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5zZXQo
Z2xvYmFsRGF0YSwgb2JqZWN0LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMzYs
NiArMTM5LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT5z
ZWNvbmQ7CiAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CisgICAgZW50cnkubm90aWZ5V3Jp
dGUoKTsKICAgICBlbnRyeS5zZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIG9iamVjdC0+
cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5zZXQoZ2xvYmFsRGF0YSwgb2JqZWN0LCB2YWx1
ZSk7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5o
IgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KIApAQCAtNDIsNDAgKzQzLDEzNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAvLyByZWFzb25hYmx5IHNtYWxsIHBvc2l0aXZlIG9yIG5lZ2F0aXZl
IG51bWJlciwgYW5kIHRoZXJlZm9yZSBoYXMgaXRzIGhpZ2gKICAgICAvLyBmb3VyIGJpdHMgYWxs
IHNldCBvciBhbGwgdW5zZXQuCiAKKyAgICAvLyBJbiBhZGRpdGlvbiB0byBpbXBsZW1lbnRpbmcg
c2VtYW50aWNzLW1hbmRhdGVkIHZhcmlhYmxlIGF0dHJpYnV0ZXMgYW5kCisgICAgLy8gaW1wbGVt
ZW50YXRpb24tbWFuZGF0ZWQgdmFyaWFibGUgaW5kZXhpbmcsIHRoaXMgY2xhc3MgYWxzbyBpbXBs
ZW1lbnRzCisgICAgLy8gd2F0Y2hwb2ludHMgdG8gYmUgdXNlZCBmb3IgSklUIG9wdGltaXphdGlv
bnMuIEJlY2F1c2Ugd2F0Y2hwb2ludHMgYXJlCisgICAgLy8gbWVhbnQgdG8gYmUgcmVsYXRpdmVs
eSByYXJlLCB0aGlzIGNsYXNzIG9wdGltaXplcyBoZWF2aWx5IGZvciB0aGUgY2FzZQorICAgIC8v
IHRoYXQgdGhleSBhcmUgbm90IGJlaW5nIHVzZWQuIFRvIHRoYXQgZW5kLCB0aGlzIGNsYXNzIHVz
ZXMgdGhlIHRoaW4tZmF0CisgICAgLy8gaWRpb206IGVpdGhlciBpdCBpcyB0aGluLCBpbiB3aGlj
aCBjYXNlIGl0IGNvbnRhaW5zIGFuIGluLXBsYWNlIGVuY29kZWQKKyAgICAvLyB3b3JkIHRoYXQg
Y29uc2lzdHMgb2YgYXR0cmlidXRlcywgdGhlIGluZGV4LCBhbmQgYSBiaXQgc2F5aW5nIHRoYXQg
aXQgaXMKKyAgICAvLyB0aGluOyBvciBpdCBpcyBmYXQsIGluIHdoaWNoIGNhc2UgaXQgY29udGFp
bnMgYSBwb2ludGVyIHRvIGEgbWFsbG9jJ2QKKyAgICAvLyBkYXRhIHN0cnVjdHVyZSBhbmQgYSBi
aXQgc2F5aW5nIHRoYXQgaXQgaXMgZmF0LiBUaGUgbWFsbG9jJ2QgZGF0YQorICAgIC8vIHN0cnVj
dHVyZSB3aWxsIGJlIG1hbGxvY2VkIGEgc2Vjb25kIHRpbWUgdXBvbiBjb3B5LCB0byBwcmVzZXJ2
ZSB0aGUKKyAgICAvLyBwcm9wZXJ0eSB0aGF0IGluLXBsYWNlIGVkaXRzIHRvIFN5bWJvbFRhYmxl
RW50cnkgZG8gbm90IG1hbmlmZXN0IGluIGFueQorICAgIC8vIGNvcGllcy4gSG93ZXZlciwgdGhl
IG1hbGxvYydkIEZhdEVudHJ5IGRhdGEgc3RydWN0dXJlIGNvbnRhaW5zIGEgcmVmLQorICAgIC8v
IGNvdW50ZWQgcG9pbnRlciB0byBhIHNoYXJlZCBXYXRjaHBvaW50U2V0LiBUaHVzLCBpbi1wbGFj
ZSBlZGl0cyBvZiB0aGUKKyAgICAvLyBXYXRjaHBvaW50U2V0IHdpbGwgbWFuaWZlc3QgaW4gYWxs
IGNvcGllcy4gSGVyZSdzIGEgcGljdHVyZToKKyAgICAvLworICAgIC8vIFN5bWJvbFRhYmxlRW50
cnkgLS0+IEZhdEVudHJ5IC0tPiBXYXRjaHBvaW50U2V0CisgICAgLy8KKyAgICAvLyBJZiB5b3Ug
bWFrZSBhIGNvcHkgb2YgYSBTeW1ib2xUYWJsZUVudHJ5LCB5b3Ugd2lsbCBoYXZlOgorICAgIC8v
CisgICAgLy8gb3JpZ2luYWw6IFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5IC0tPiBXYXRj
aHBvaW50U2V0CisgICAgLy8gY29weTogICAgIFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5
IC0tLS0tXgorCiAgICAgc3RydWN0IFN5bWJvbFRhYmxlRW50cnkgeworICAgICAgICAvLyBVc2Ug
dGhlIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgY2xhc3MsIGVpdGhlciB2aWEgaW1wbGljaXQgY2Fz
dCBvciBieSBjYWxsaW5nCisgICAgICAgIC8vIGdldEZhc3QoKSwgd2hlbiB5b3UgKDEpIG9ubHkg
Y2FyZSBhYm91dCBpc051bGwoKSwgZ2V0SW5kZXgoKSwgYW5kIGlzUmVhZE9ubHkoKSwKKyAgICAg
ICAgLy8gYW5kICgyKSB5b3UgYXJlIGluIGEgaG90IHBhdGggd2hlcmUgeW91IG5lZWQgdG8gbWlu
aW1pemUgdGhlIG51bWJlciBvZiB0aW1lcworICAgICAgICAvLyB0aGF0IHlvdSBicmFuY2ggb24g
aXNGYXQoKSB3aGVuIGdldHRpbmcgdGhlIGJpdHMoKS4KKyAgICAgICAgY2xhc3MgRmFzdCB7Cisg
ICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEZhc3QoKQorICAgICAgICAgICAgICAgIDogbV9i
aXRzKDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIEFMV0FZU19JTkxJTkUgRmFzdChjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSkK
KyAgICAgICAgICAgICAgICA6IG1fYml0cyhlbnRyeS5iaXRzKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAhbV9iaXRzOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpbnQgZ2V0SW5kZXgoKSBjb25zdAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1fYml0cyA+PiBGbGFnQml0
cyk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgYm9vbCBpc1JlYWRPbmx5
KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9iaXRzICYg
UmVhZE9ubHlGbGFnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBi
b29sIGlzRmF0KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bV9iaXRzICYgRmF0RmxhZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBw
cml2YXRlOgorICAgICAgICAgICAgaW50cHRyX3QgbV9iaXRzOworICAgICAgICB9OworCiAgICAg
ICAgIFN5bWJvbFRhYmxlRW50cnkoKQogICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAg
ewogICAgICAgICB9CiAKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeShpbnQgaW5kZXgpCisgICAg
ICAgICAgICA6IG1fYml0cygwKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxp
ZEluZGV4KGluZGV4KSk7CiAgICAgICAgICAgICBwYWNrKGluZGV4LCBmYWxzZSwgZmFsc2UpOwog
ICAgICAgICB9CiAKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeShpbnQgaW5kZXgsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCisgICAgICAgICAgICA6IG1fYml0cygwKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQoaXNWYWxpZEluZGV4KGluZGV4KSk7CiAgICAgICAgICAgICBwYWNrKGluZGV4
LCBhdHRyaWJ1dGVzICYgUmVhZE9ubHksIGF0dHJpYnV0ZXMgJiBEb250RW51bSk7CiAgICAgICAg
IH0KICAgICAgICAgCisgICAgICAgIH5TeW1ib2xUYWJsZUVudHJ5KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZnJlZUZhdEVudHJ5KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkoY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgb3RoZXIpCisgICAgICAgICAg
ICA6IG1fYml0cygwKQorICAgICAgICB7CisgICAgICAgICAgICAqdGhpcyA9IG90aGVyOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBvcGVyYXRvcj0oY29u
c3QgU3ltYm9sVGFibGVFbnRyeSYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChM
SUtFTFkoIW90aGVyLmlzRmF0KCkpKSB7CisgICAgICAgICAgICAgICAgZnJlZUZhdEVudHJ5KCk7
CisgICAgICAgICAgICAgICAgbV9iaXRzID0gb3RoZXIubV9iaXRzOworICAgICAgICAgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEZhdEVudHJ5KiBuZXdG
YXRFbnRyeSA9IG5ldyBGYXRFbnRyeSgqb3RoZXIuZmF0RW50cnkoKSk7CisgICAgICAgICAgICBm
cmVlRmF0RW50cnkoKTsKKyAgICAgICAgICAgIG1fYml0cyA9IGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4obmV3RmF0RW50cnkpIHwgRmF0RmxhZzsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdAogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gIW1fYml0czsKKyAgICAgICAgICAgIHJldHVybiAhYml0cygp
OwogICAgICAgICB9CiAKICAgICAgICAgaW50IGdldEluZGV4KCkgY29uc3QKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fYml0cyA+PiBGbGFnQml0czsKKyAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KGJpdHMoKSA+PiBGbGFnQml0cyk7CiAgICAgICAgIH0KLQorICAg
ICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0IGdldEZhc3QoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gRmFzdCgqdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICAgICAgICAgIGlmIChtX2JpdHMg
JiBSZWFkT25seUZsYWcpCisgICAgICAgICAgICBpbnRwdHJfdCB0aGVCaXRzID0gYml0cygpOwor
ICAgICAgICAgICAgaWYgKHRoZUJpdHMgJiBSZWFkT25seUZsYWcpCiAgICAgICAgICAgICAgICAg
YXR0cmlidXRlcyB8PSBSZWFkT25seTsKLSAgICAgICAgICAgIGlmIChtX2JpdHMgJiBEb250RW51
bUZsYWcpCisgICAgICAgICAgICBpZiAodGhlQml0cyAmIERvbnRFbnVtRmxhZykKICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVzIHw9IERvbnRFbnVtOwogICAgICAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZXM7CiAgICAgICAgIH0KQEAgLTg3LDMwICsxODIsMTM3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBtX2JpdHMgJiBSZWFkT25seUZsYWc7CisgICAgICAgICAgICByZXR1cm4gYml0cygp
ICYgUmVhZE9ubHlGbGFnOwogICAgICAgICB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgY291
bGRCZVdhdGNoZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWlzRmF0KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0
Y2hwb2ludHMgPSBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzOworICAgICAgICAgICAgaWYgKCF3
YXRjaHBvaW50cykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBy
ZXR1cm4gd2F0Y2hwb2ludHMtPmlzU3RpbGxWYWxpZCgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICAvLyBOb3RpZnkgYW4gb3Bwb3J0dW5pdHkgdG8gY3JlYXRlIGEgd2F0Y2hwb2ludCBm
b3IgYSB2YXJpYWJsZS4gVGhpcyBpcworICAgICAgICAvLyBpZGVtcG90ZW50IGFuZCBmYWlsLXNp
bGVudC4gSXQgaXMgaWRlbXBvdGVudCBpbiB0aGUgc2Vuc2UgdGhhdCBpZgorICAgICAgICAvLyBh
IHdhdGNocG9pbnQgc2V0IGhhZCBhbHJlYWR5IGJlZW4gY3JlYXRlZCwgdGhlbiBhbm90aGVyIG9u
ZSB3aWxsIG5vdAorICAgICAgICAvLyBiZSBjcmVhdGVkLiBIZW5jZSB0d28gY2FsbHMgdG8gdGhp
cyBtZXRob2QgaGF2ZSB0aGUgc2FtZSBlZmZlY3QgYXMKKyAgICAgICAgLy8gb25lIGNhbGwuIEl0
IGlzIGFsc28gZmFpbC1zaWxlbnQsIGluIHRoZSBzZW5zZSB0aGF0IGlmIGEgd2F0Y2hwb2ludAor
ICAgICAgICAvLyBzZXQgaGFkIGJlZW4gY3JlYXRlZCBhbmQgaGFkIGFscmVhZHkgYmVlbiBpbnZh
bGlkYXRlZCwgdGhlbiB0aGlzIHdpbGwKKyAgICAgICAgLy8ganVzdCByZXR1cm4uIFRoaXMgbWVh
bnMgdGhhdCBjb3VsZEJlV2F0Y2hlZCgpIG1heSByZXR1cm4gZmFsc2UgZXZlbgorICAgICAgICAv
LyBpbW1lZGlhdGVseSBhZnRlciBhIGNhbGwgdG8gYXR0ZW1wdFRvV2F0Y2goKS4KKyAgICAgICAg
dm9pZCBhdHRlbXB0VG9XYXRjaCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluZmxhdGUoKTsK
KyAgICAgICAgICAgIGlmICghZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cykKKyAgICAgICAgICAg
ICAgICBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzID0gYWRvcHRSZWYobmV3IFdhdGNocG9pbnRT
ZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wqIGFkZHJlc3NPZklzV2F0
Y2hlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChjb3VsZEJlV2F0Y2hlZCgpKTsK
KyAgICAgICAgICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLT5hZGRyZXNzT2ZJ
c1dhdGNoZWQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBhZGRXYXRjaHBv
aW50KFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChjb3VsZEJlV2F0Y2hlZCgpKTsKKyAgICAgICAgICAgIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2lu
dHMtPmFkZCh3YXRjaHBvaW50KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlT
X0lOTElORSB2b2lkIG5vdGlmeVdyaXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKExJ
S0VMWSghaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgV2F0
Y2hwb2ludFNldCogd2F0Y2hwb2ludHMgPSBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLmdldCgp
OworICAgICAgICAgICAgaWYgKCF3YXRjaHBvaW50cykKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB3YXRjaHBvaW50cy0+bm90aWZ5V3JpdGUoKTsKKyAgICAgICAgfQorICAg
ICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgUmVhZE9u
bHlGbGFnID0gMHgxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRG9udEVudW1GbGFn
ID0gMHgyOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm90TnVsbEZsYWcgPSAweDQ7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBGbGFnQml0cyA9IDM7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBGYXRGbGFnID0gMHgxOworICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgUmVhZE9ubHlGbGFnID0gMHgyOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgRG9udEVudW1GbGFnID0gMHg0OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm90
TnVsbEZsYWcgPSAweDg7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBGbGFnQml0cyA9
IDQ7CisgICAgICAgIAorICAgICAgICBjbGFzcyBGYXRFbnRyeSB7CisgICAgICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgRmF0RW50
cnkoaW50cHRyX3QgYml0cykKKyAgICAgICAgICAgICAgICA6IG1fYml0cyhiaXRzIHwgRmF0Rmxh
ZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50cHRyX3Qg
bV9iaXRzOyAvLyBhbHdheXMgaGFzIEZhdEZsYWcgc2V0IGFuZCBleGFjdGx5IG1hdGNoZXMgd2hh
dCB0aGUgYml0cyB3b3VsZCBoYXZlIGJlZW4gaWYgdGhpcyB3YXNuJ3QgZmF0LgorICAgICAgICAg
ICAgCisgICAgICAgICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV93YXRjaHBvaW50czsKKyAg
ICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNGYXQoKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzICYgRmF0RmxhZzsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgY29uc3QgRmF0RW50cnkqIGZhdEVudHJ5KCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKGlzRmF0KCkpOworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxjb25zdCBGYXRFbnRyeSo+KG1fYml0cyAmIH5GYXRGbGFnKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgRmF0RW50cnkqIGZhdEVudHJ5KCkKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKGlzRmF0KCkpOworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxGYXRF
bnRyeSo+KG1fYml0cyAmIH5GYXRGbGFnKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dm9pZCBpbmZsYXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRmF0KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9iaXRzID0gYml0d2lzZV9jYXN0PGlu
dHB0cl90PihuZXcgRmF0RW50cnkobV9iaXRzKSkgfCBGYXRGbGFnOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90IGJpdHMoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoaXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmF0
RW50cnkoKS0+bV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIG1fYml0czsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBpbnRwdHJfdCYgYml0cygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYXRF
bnRyeSgpLT5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB2b2lkIGZyZWVGYXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghaXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBk
ZWxldGUgZmF0RW50cnkoKTsKKyAgICAgICAgfQogCiAgICAgICAgIHZvaWQgcGFjayhpbnQgaW5k
ZXgsIGJvb2wgcmVhZE9ubHksIGJvb2wgZG9udEVudW0pCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1fYml0cyA9IChpbmRleCA8PCBGbGFnQml0cykgfCBOb3ROdWxsRmxhZzsKKyAgICAgICAgICAg
IGludHB0cl90JiBiaXRzUmVmID0gYml0cygpOworICAgICAgICAgICAgYml0c1JlZiA9IChzdGF0
aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IEZsYWdCaXRzKSB8IE5vdE51bGxGbGFnOwogICAg
ICAgICAgICAgaWYgKHJlYWRPbmx5KQotICAgICAgICAgICAgICAgIG1fYml0cyB8PSBSZWFkT25s
eUZsYWc7CisgICAgICAgICAgICAgICAgYml0c1JlZiB8PSBSZWFkT25seUZsYWc7CiAgICAgICAg
ICAgICBpZiAoZG9udEVudW0pCi0gICAgICAgICAgICAgICAgbV9iaXRzIHw9IERvbnRFbnVtRmxh
ZzsKKyAgICAgICAgICAgICAgICBiaXRzUmVmIHw9IERvbnRFbnVtRmxhZzsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgYm9vbCBpc1ZhbGlkSW5kZXgoaW50IGluZGV4KQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gKChpbmRleCA8PCBGbGFnQml0cykgPj4gRmxhZ0JpdHMpID09
IGluZGV4OworICAgICAgICAgICAgcmV0dXJuICgoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4
KSA8PCBGbGFnQml0cykgPj4gRmxhZ0JpdHMpID09IHN0YXRpY19jYXN0PGludHB0cl90PihpbmRl
eCk7CiAgICAgICAgIH0KIAotICAgICAgICBpbnQgbV9iaXRzOworICAgICAgICBpbnRwdHJfdCBt
X2JpdHM7CiAgICAgfTsKIAogICAgIHN0cnVjdCBTeW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0cyA6
IEhhc2hUcmFpdHM8U3ltYm9sVGFibGVFbnRyeT4gewpJbmRleDogU291cmNlL1dURi93dGYvU2Vn
bWVudGVkVmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVj
dG9yLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw4ICs5OCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIAog
ICAgIC8vIFNlZ21lbnRlZFZlY3RvciBpcyBqdXN0IGxpa2UgVmVjdG9yLCBidXQgaXQgZG9lc24n
dCBtb3ZlIHRoZSB2YWx1ZXMKICAgICAvLyBzdG9yZWQgaW4gaXRzIGJ1ZmZlciB3aGVuIGl0IGdy
b3dzLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8ga2VlcAotICAgIC8vIHBvaW50ZXJzIGludG8g
YSBTZWdtZW50ZWRWZWN0b3IuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdt
ZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVjdG9yIHsKKyAgICAvLyBwb2ludGVycyBpbnRvIGEg
U2VnbWVudGVkVmVjdG9yLiBUaGUgZGVmYXVsdCB0dW5pbmcgdmFsdWVzIGFyZQorICAgIC8vIG9w
dGltaXplZCBmb3Igc2VnbWVudGVkIHZlY3RvcnMgdGhhdCBnZXQgbGFyZ2U7IHlvdSBtYXkgd2Fu
dCB0byB1c2UKKyAgICAvLyBTZWdtZW50ZWRWZWN0b3I8dGhpbmd5LCAxLCAwPiBpZiB5b3UgZG9u
J3QgZXhwZWN0IGEgbG90IG9mIGVudHJpZXMuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNp
emVfdCBTZWdtZW50U2l6ZSA9IDgsIHNpemVfdCBJbmxpbmVDYXBhY2l0eSA9IDMyPgorICAgIGNs
YXNzIFNlZ21lbnRlZFZlY3RvciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0
b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT47CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiBJdGVyYXRvcjsKQEAgLTI1
MCw3ICsyNTMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBzaXplX3QgbV9zaXplOwog
ICAgICAgICBTZWdtZW50IG1faW5saW5lU2VnbWVudDsKLSAgICAgICAgVmVjdG9yPFNlZ21lbnQq
LCAzMj4gbV9zZWdtZW50czsKKyAgICAgICAgVmVjdG9yPFNlZ21lbnQqLCBJbmxpbmVDYXBhY2l0
eT4gbV9zZWdtZW50czsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146747</attachid>
            <date>2012-06-10 13:28:50 -0700</date>
            <delta_ts>2012-06-10 14:11:50 -0700</delta_ts>
            <desc>it might be done</desc>
            <filename>globalwatch_patch_6.diff</filename>
            <type>text/plain</type>
            <size>86488</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5OTQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MyBA
QAorMjAxMi0wNi0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFdvcmsgaW4gcHJvZ3Jlc3MhCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OndhdGNocG9pbnRMYWJlbCk6CisgICAgICAgICog
YXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cmVwbGFjZVdp
dGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNy
b0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1heEp1
bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNI
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cmVwbGFjZVdpdGhKdW1wKToK
KyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODYpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Njo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODY6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDgpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAg
ICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAgIChSZXBhdGNoQnVmZmVy
KToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2QXNzZW1ibGVyKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6Y21wYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVz
dGJfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmxhYmVsRm9yV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bGFiZWwpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2
SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om1lbW9yeU1vZFJNKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRPU1JFeGl0KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KToKKyAgICAg
ICAgKENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kV2F0Y2hwb2lu
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZXYXRjaHBvaW50cyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6d2F0Y2hwb2ludCk6CisgICAgICAgIChERkdEYXRhKToKKyAg
ICAgICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpERkc6OmV4
aXRLaW5kVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kSXNDb3VudGFibGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChJbnN0cnVjdGlv
bik6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICog
Ynl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwYWRPcGNv
ZGVOYW1lKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDogQWRkZWQuCisgICAg
ICAgIChXYXRjaHBvaW50Ojp+V2F0Y2hwb2ludCk6CisgICAgICAgIChXYXRjaHBvaW50OjpmaXJl
KToKKyAgICAgICAgKFdhdGNocG9pbnRTZXQ6OldhdGNocG9pbnRTZXQpOgorICAgICAgICAoV2F0
Y2hwb2ludFNldDo6fldhdGNocG9pbnRTZXQpOgorICAgICAgICAoV2F0Y2hwb2ludFNldDo6YWRk
KToKKyAgICAgICAgKFdhdGNocG9pbnRTZXQ6Om5vdGlmeVdyaXRlU2xvdyk6CisgICAgICAgIChX
YXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hwb2ludHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1dh
dGNocG9pbnQuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6OldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpX
YXRjaHBvaW50OjpzZXREZXN0aW5hdGlvbik6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6OmNv
cnJlY3RMYWJlbHMpOgorICAgICAgICAoV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6Oldh
dGNocG9pbnRTZXQ6OmlzU3RpbGxWYWxpZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6
Omhhc0JlZW5JbnZhbGlkYXRlZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Om5vdGlm
eVdyaXRlKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6YWRkcmVzc09mSXNXYXRjaGVk
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEdldFN0YXRpY1Zhcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0U3RhdGljVmFyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0
ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NTRVBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyV2F0Y2hwb2lu
dEVsaW1pbmF0aW9uKToKKyAgICAgICAgKENTRVBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpD
U0VQaGFzZTo6Z2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6
Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6aXNT
ZXQpOgorICAgICAgICAoQ29ycmVjdGFibGVKdW1wUG9pbnQpOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JF
eGl0cyk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllck51
bWJlckZvckNoZWNrKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFz
UmVnaXN0ZXJQb2ludGVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAg
KERGRyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKE9TUkV4aXQpOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2lu
dCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKiBq
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRTdHVi
cy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAg
ICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGly
ZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6
CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAg
ICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBydW50aW1l
L1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3ltYm9sVGFibGVFbnRy
eSk6CisgICAgICAgIChGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFz
dDo6RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzTnVsbCk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmdldEluZGV4KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNSZWFkT25seSk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzRmF0KToKKyAgICAgICAgKEpTQzo6U3ltYm9s
VGFibGVFbnRyeTo6U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxl
RW50cnk6On5TeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNOdWxsKToK
KyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0SW5kZXgpOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Omlz
UmVhZE9ubHkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpjb3VsZEJlV2F0Y2hl
ZCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmF0dGVtcHRUb1dhdGNoKToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRkcmVzc09mSXNXYXRjaGVkKToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRkV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlKToKKyAgICAgICAgKEZhdEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnk6OkZhdEVudHJ5KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNGYXQpOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZUVudHJ5OjpmYXRFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Omlu
ZmxhdGUpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpiaXRzKToKKyAgICAgICAg
KEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3lt
Ym9sVGFibGVFbnRyeTo6cGFjayk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Omlz
VmFsaWRJbmRleCk6CisKIDIwMTItMDYtMTAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnVpbGQgZml4IGZvciAhRU5BQkxFKEpJ
VCkgYWZ0ZXIgcjExOTg0NCBhbmQgcjExOTkyNS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZp
c2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzAsNyArNzAsNiBAQCBwdWJsaWM6CiAg
ICAgLy8gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgdXNlZCBhcyBvcGVyYW5kcyB0byBNYWNyb0Fz
c2VtYmxlciBvcGVyYXRpb25zLAogICAgIC8vIGRlc2NyaWJpbmcgaW1tZWRpYXRlICBhbmQgbWVt
b3J5IG9wZXJhbmRzIHRvIHRoZSBpbnN0cnVjdGlvbnMgdG8gYmUgcGxhbnRlZC4KIAotCiAgICAg
ZW51bSBTY2FsZSB7CiAgICAgICAgIFRpbWVzT25lLAogICAgICAgICBUaW1lc1R3bywKQEAgLTU1
OSw2ICs1NTgsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAg
fQogICAgIAorICAgIExhYmVsIHdhdGNocG9pbnRMYWJlbChKdW1wUmVwbGFjZW1lbnRUeXBlIGp1
bXBSZXBsYWNlbWVudFR5cGUpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sYWJlbEZvcldh
dGNocG9pbnQoanVtcFJlcGxhY2VtZW50VHlwZSk7CisgICAgICAgIHJldHVybiBMYWJlbCh0aGlz
KTsKKyAgICB9CisgICAgCiAgICAgTGFiZWwgYWxpZ24oKQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuYWxpZ24oMTYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
c3NlbWJsZXJCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
OSw2ICszOSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGVudW0gSnVtcFJlcGxhY2Vt
ZW50VHlwZSB7CisgICAgICAgIFJlcGxhY2VXaXRoTG9jYWxKdW1wLAorICAgICAgICBSZXBsYWNl
V2l0aEZhckp1bXAKKyAgICB9OworICAgIAogICAgIHN0cnVjdCBBc3NlbWJsZXJMYWJlbCB7CiAg
ICAgICAgIEFzc2VtYmxlckxhYmVsKCkKICAgICAgICAgICAgIDogbV9vZmZzZXQoc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkocmV2aXNpb24gMTE5ODAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEwLDYgKzEwMTAsMTcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTUFzc2VtYmxl
cjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25T
dGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBBUk1Bc3NlbWJs
ZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAt
NTQ1LDYgKzU0NSwxNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1w
UmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBzdG9yZTgoUmVn
aXN0ZXJJRCBzcmMsIEFybUFkZHJlc3MgYWRkcmVzcykKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJNSVBTLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NjgsNiArMTg2OCwxNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZvaWQoKiko
KT4oTUlQU0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByaXZhdGU6CiAg
ICAgLy8gSWYgbV9maXhlZFdpZHRoIGlzIHRydWUsIHdlIHdpbGwgZ2VuZXJhdGUgYSBmaXhlZCBu
dW1iZXIgb2YgaW5zdHJ1Y3Rpb25zLgogICAgIC8vIE90aGVyd2lzZSwgd2UgY2FuIGVtaXQgYW55
IG51bWJlciBvZiBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCShyZXZpc2lvbiAxMTk4MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE5NzEsNiArMTk3MSwxNyBAQCB2b2lkIG9yMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBzCiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJl
dF9jYXN0PHZvaWQoKikoKT4oU0g0QXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFM
b2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0
aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KwogcHJvdGVjdGVkOgogICAgIFNINEFzc2VtYmxlcjo6Q29uZGl0aW9uIFNINENvbmRpdGlvbihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2aXNpb24gMTE5
ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZERvdWJsZTsKICAgICB1c2luZyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6c3RvcmVEb3VibGU7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmNvbnZlcnRJbnQzMlRvRG91YmxlOworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpicmFuY2hUZXN0ODsKIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xNjUsNiArMTY2LDE2
IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9pMzJyKGluaXRpYWxWYWx1ZS5h
c0ludHB0cigpLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0aGlzKTsKICAg
ICB9CisgICAgCisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtYXNrLm1fdmFsdWUgPj0gLTEyOCAmJiBtYXNrLm1f
dmFsdWUgPD0gMjU1KTsKKyAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcGJfaW0oMCwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RiX2ltKG1hc2subV92YWx1ZSwgYWRkcmVzcy5t
X3B0cik7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24o
Y29uZCkpKTsKKyAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWws
IFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQogICAg
IHsKQEAgLTE5OCw2ICsyMDksMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNh
bGwuZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQg
cmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVM
b2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgLy8gTk9URTogb24gWDg2
LTMyIHRoZSBzY3JhdGNoIHJlZ2lzdGVyIGlzIHVudXNlZC4KKyAgICAgICAgWDg2QXNzZW1ibGVy
OjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBk
ZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpLCBSZWdpc3RlcklEOjplYXgpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
OworICAgIH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgICBm
cmllbmQgY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEx
OTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTEzLDYgKzUxMywxMiBAQCBwdWJsaWM6CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKGFkZHIsIHNjcmF0Y2hSZWdpc3Rlcik7CiAg
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwg
QmFzZUluZGV4KHNjcmF0Y2hSZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBUaW1lc09uZSksIG1hc2sp
OwogICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNj
cmF0Y2hSZWdpc3RlciksIG1hc2spOworICAgIH0KIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
RmxvYXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAvLyBTZWUgY29tbWVudCBvbiBN
YWNyb0Fzc2VtYmxlckFSTXY3OjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpCkBAIC01
MjcsNiArNTMzLDE2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWdpc3RlcklEIHNjcmF0Y2hS
ZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gc2NyYXRjaFJlZ2lzdGVyOyB9CiAKKyAgICBz
dGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25T
dGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24sIEp1bXBSZXBsYWNlbWVudFR5cGUg
anVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFj
ZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRp
b24uZXhlY3V0YWJsZUFkZHJlc3MoKSwgc2NyYXRjaFJlZ2lzdGVyLCBqdW1wUmVwbGFjZW1lbnRU
eXBlID09IFJlcGxhY2VXaXRoTG9jYWxKdW1wKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0
cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKEp1bXBSZXBsYWNlbWVudFR5cGUganVtcFJl
cGxhY2VtZW50VHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1heEp1
bXBSZXBsYWNlbWVudFNpemUoanVtcFJlcGxhY2VtZW50VHlwZSA9PSBSZXBsYWNlV2l0aExvY2Fs
SnVtcCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOwog
ICAgIGZyaWVuZCBjbGFzcyBSZXBhdGNoQnVmZmVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHJldmlzaW9uIDExOTgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjIsNiArMTIyLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJlbGlu
a05lYXJDYWxsZXJUb1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0aW9uTGFiZWwo
bmV3Q2FsbGVlRnVuY3Rpb24pKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZXBsYWNlV2l0aEp1
bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwg
ZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKGluc3RydWN0aW9uU3RhcnQsIGRlc3RpbmF0aW9uKTsKKyAgICB9CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCogbV9zdGFydDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQ3LDYgKzI0
Nyw4IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAKICAgICBYODZBc3NlbWJsZXIoKQorICAgICAgICA6
IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAgICAgICwgbV9pbmRleE9mVGFp
bE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAgICB7CiAgICAgfQogCkBAIC03OTgsNiArODAw
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
YkliLCBHUk9VUDFfT1BfQ01QLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICB9CisgICAgCisjaWYgQ1BVKFg4NikK
KyAgICB2b2lkIGNtcGJfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwg
YWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkYXRlOChpbW0pOworICAgIH0KKyNlbmRp
ZgogCiAgICAgdm9pZCBjbXBsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsKQEAgLTk0OCw2ICs5NTgsMTQg
QEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQog
CisjaWYgQ1BVKFg4NikKKyAgICB2b2lkIHRlc3RiX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViSWIs
IEdST1VQM19PUF9URVNULCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCB0ZXN0bF9pMzJtKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19Fdkl6LCBHUk9VUDNf
T1BfVEVTVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwpAQCAtMTcwMiwxMCArMTcyMCwy
NiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIuY29kZVNpemUo
KTsKICAgICB9CisgICAgCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50KEp1
bXBSZXBsYWNlbWVudFR5cGUganVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisgICAgICAgIEFz
c2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIGlmIChy
ZXN1bHQubV9vZmZzZXQgIT0gbV9pbmRleE9mTGFzdFdhdGNocG9pbnQpCisgICAgICAgICAgICBy
ZXN1bHQgPSBsYWJlbCgpOworICAgICAgICBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3Vs
dC5tX29mZnNldDsKKyAgICAgICAgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgPSByZXN1
bHQubV9vZmZzZXQgKyBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKGp1bXBSZXBsYWNlbWVudFR5cGUp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGxh
YmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAg
ICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICAv
LyBGSVhNRTogbmVlZCB0byBrbm93IHRoZSBzaXplIG9mIHRoZSBsYXN0IHdhdGNocG9pbnQgYXMg
d2VsbC4KKyAgICAgICAgd2hpbGUgKFVOTElLRUxZKHJlc3VsdC5tX29mZnNldCA8IG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50KSkgeworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVu
dCkKQEAgLTE3ODIsNiArMTgxNiw0MyBAQCBwdWJsaWM6CiAgICAgICAgIHNldFBvaW50ZXIod2hl
cmUsIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1w
KHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvLCBSZWdpc3RlcklEIHNjcmF0Y2gsIEp1
bXBSZXBsYWNlbWVudFR5cGUganVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisgICAgICAgIGlu
dDhfdCAqcHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsK
KyAgICAgICAgaW50OF90ICpkc3RQdHIgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KHRvKTsK
KyAgICAgICAgaW50cHRyX3QgZGlzdGFuY2UgPSAoaW50cHRyX3QpKGRzdFB0ciAtIChwdHIgKyA1
KSk7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgaWYgKGRpc3RhbmNlID4gSU5UMzJfTUFYIHx8
IGRpc3RhbmNlIDwgSU5UMzJfTUlOKSB7CisgICAgICAgICAgICBBU1NFUlQoanVtcFJlcGxhY2Vt
ZW50VHlwZSA9PSBSZXBsYWNlV2l0aEZhckp1bXApOworICAgICAgICAgICAgLy8gbW92cV9pNjRy
IGluc3RydWN0aW9uCisgICAgICAgICAgICBwdHJbMF0gPSBQUkVfUkVYIHwgKDE8PDMpIHwgKHNj
cmF0Y2g+PjMpOworICAgICAgICAgICAgcHRyWzFdID0gT1BfTU9WX0VBWEl2ICsgKHNjcmF0Y2gg
JiA3KTsKKyAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0PGludDY0X3QqPihwdHIrMykgPSBz
dGF0aWNfY2FzdDxpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0bykpOworICAg
ICAgICAgICAgcHRyICs9IDEwOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBqbXBfciBp
bnN0cnVjdGlvbgorICAgICAgICAgICAgaWYgKHNjcmF0Y2ggPj0gWDg2UmVnaXN0ZXJzOjpyOCkg
eworICAgICAgICAgICAgICAgIHB0clswXSA9IFBSRV9SRVggfCAoc2NyYXRjaD4+Myk7CisgICAg
ICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdHJbMF0gPSBP
UF9HUk9VUDVfRXY7CisgICAgICAgICAgICBwdHJbMV0gPSAoMzw8NikgfCAoR1JPVVA1X09QX0pN
UE48PDMpIHwgKHNjcmF0Y2ggJiA3KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
I2VuZGlmCisgICAgICAgIHB0clswXSA9IE9QX0pNUF9yZWwzMjsKKyAgICAgICAgKnJlaW50ZXJw
cmV0X2Nhc3Q8aW50MzJfdCo+KHB0ciArIDEpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGlzdGFu
Y2UpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVu
dFNpemUoSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQorICAgIHsKKyNp
ZiBDUFUoWDg2XzY0KQorICAgICAgICBpZiAoanVtcFJlcGxhY2VtZW50VHlwZSA9PSBSZXBsYWNl
V2l0aEZhckp1bXApCisgICAgICAgICAgICByZXR1cm4gMTM7CisjZW5kaWYKKyAgICAgICAgcmV0
dXJuIDU7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkKiByZWFkUG9pbnRlcih2b2lkKiB3
aGVyZSkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hl
cmUpWy0xXTsKQEAgLTIzMzksNiArMjQxMCw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgQXNzZW1i
bGVyQnVmZmVyIG1fYnVmZmVyOwogICAgIH0gbV9mb3JtYXR0ZXI7CisgICAgaW50IG1faW5kZXhP
Zkxhc3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsMTAgKzI3
MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgYXBwZW5kT1NSRXhpdChjb25zdCBERkc6Ok9T
UkV4aXQmIG9zckV4aXQpCisgICAgICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgREZH
OjpPU1JFeGl0JiBvc3JFeGl0KQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVERkdEYXRh
SWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fZGZnRGF0YS0+
b3NyRXhpdC5zaXplKCk7CiAgICAgICAgICAgICBtX2RmZ0RhdGEtPm9zckV4aXQuYXBwZW5kKG9z
ckV4aXQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgREZHOjpPU1JFeGl0JiBsYXN0T1NSRXhpdCgpCkBAIC0yODQsMTAgKzI4NiwyMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPm9zckV4aXQu
bGFzdCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIGFwcGVuZFNwZWN1bGF0
aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNvdmVyeSkKKyAg
ICAgICAgdW5zaWduZWQgYXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShjb25zdCBERkc6OlNwZWN1
bGF0aW9uUmVjb3ZlcnkmIHJlY292ZXJ5KQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVE
RkdEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fZGZn
RGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5zaXplKCk7CiAgICAgICAgICAgICBtX2RmZ0RhdGEt
PnNwZWN1bGF0aW9uUmVjb3ZlcnkuYXBwZW5kKHJlY292ZXJ5KTsKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIGFwcGVuZFdh
dGNocG9pbnQoY29uc3QgV2F0Y2hwb2ludCYgd2F0Y2hwb2ludCkKKyAgICAgICAgeworICAgICAg
ICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBtX2RmZ0RhdGEtPndhdGNocG9pbnRzLnNpemUoKTsKKyAgICAgICAgICAgIG1fZGZn
RGF0YS0+d2F0Y2hwb2ludHMuYXBwZW5kKHdhdGNocG9pbnQpOworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZP
U1JFeGl0cygpCkBAIC0zMDQsNiArMzE2LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5zaXplKCk7CiAgICAgICAg
IH0KICAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mV2F0Y2hwb2ludHMoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fZGZnRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRzLnNpemUoKTsK
KyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgREZHOjpPU1JFeGl0JiBvc3JFeGl0KHVuc2ln
bmVkIGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5vc3JF
eGl0W2luZGV4XTsKQEAgLTMxNCw2ICszMzMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5W2luZGV4XTsKICAgICAg
ICAgfQogICAgICAgICAKKyAgICAgICAgV2F0Y2hwb2ludCYgd2F0Y2hwb2ludCh1bnNpZ25lZCBp
bmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+d2F0Y2hwb2lu
dHNbaW5kZXhdOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2b2lkIGFwcGVuZFdlYWtS
ZWZlcmVuY2UoSlNDZWxsKiB0YXJnZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNyZWF0ZURG
R0RhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTIzOCw2ICsxMjYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5OwogICAgICAg
ICAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICAgICAg
ICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7
CisgICAgICAgICAgICBTZWdtZW50ZWRWZWN0b3I8V2F0Y2hwb2ludCwgMSwgMD4gd2F0Y2hwb2lu
dHM7CiAgICAgICAgICAgICBWZWN0b3I8V2Vha1JlZmVyZW5jZVRyYW5zaXRpb24+IHRyYW5zaXRp
b25zOwogICAgICAgICAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+ID4gd2Vha1JlZmVy
ZW5jZXM7CiAgICAgICAgICAgICBib29sIG1heUJlRXhlY3V0aW5nOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDEx
OTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gRXhpdEtpbmQgewogICAgIElu
YWRlcXVhdGVDb3ZlcmFnZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5kZWQgdXAgaW4gY29k
ZSB0aGF0IGRpZG4ndCBoYXZlIHByb2ZpbGluZyBjb3ZlcmFnZS4KICAgICBBcmd1bWVudHNFc2Nh
cGVkLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhcmd1bWVudHMgZXNjYXBlZCBidXQgd2UgZGlkbid0
IGV4cGVjdCB0aGVtIHRvLgogICAgIFVuY291bnRhYmxlLCAvLyBXZSBleGl0ZWQgZm9yIG5vbmUg
b2YgdGhlIGFib3ZlIHJlYXNvbnMsIGFuZCB3ZSBzaG91bGQgbm90IGNvdW50IGl0LiBNb3N0IHVz
ZXMgb2YgdGhpcyBzaG91bGQgYmUgdmlld2VkIGFzIGEgRklYTUUuCisgICAgVW5jb3VudGFibGVX
YXRjaHBvaW50IC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIGEgd2F0Y2hwb2ludCwgd2hpY2ggaXNu
J3QgY291bnRlZCBiZWNhdXNlIHdhdGNocG9pbnRzIGRvIHRyYWNraW5nIHRoZW1zZWx2ZXMuCiB9
OwogCiBpbmxpbmUgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0cmluZyhFeGl0S2luZCBraW5kKQpA
QCAtNTgsNiArNTksMTIgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhp
dAogICAgICAgICByZXR1cm4gIk5lZ2F0aXZlWmVybyI7CiAgICAgY2FzZSBJbmFkZXF1YXRlQ292
ZXJhZ2U6CiAgICAgICAgIHJldHVybiAiSW5hZGVxdWF0ZUNvdmVyYWdlIjsKKyAgICBjYXNlIEFy
Z3VtZW50c0VzY2FwZWQ6CisgICAgICAgIHJldHVybiAiQXJndW1lbnRzRXNjYXBlZCI7CisgICAg
Y2FzZSBVbmNvdW50YWJsZToKKyAgICAgICAgcmV0dXJuICJVbmNvdW50YWJsZSI7CisgICAgY2Fz
ZSBVbmNvdW50YWJsZVdhdGNocG9pbnQ6CisgICAgICAgIHJldHVybiAiVW5jb3VudGFibGVXYXRj
aHBvaW50IjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gIlVua25vd24iOwogICAgIH0K
QEAgLTcwLDYgKzc3LDcgQEAgaW5saW5lIGJvb2wgZXhpdEtpbmRJc0NvdW50YWJsZShFeGl0S2lu
ZAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjYXNlIEJhZFR5cGU6CiAgICAg
Y2FzZSBVbmNvdW50YWJsZToKKyAgICBjYXNlIFVuY291bnRhYmxlV2F0Y2hwb2ludDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlz
aW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEluc3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBw
cm9maWxlOyB9CiAgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihXcml0ZUJhcnJpZXI8VW5r
bm93bj4qIHJlZ2lzdGVyUG9pbnRlcikgeyB1LnJlZ2lzdGVyUG9pbnRlciA9IHJlZ2lzdGVyUG9p
bnRlcjsgfQorICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oYm9vbCogcHJlZGljYXRlUG9p
bnRlcikgeyB1LnByZWRpY2F0ZVBvaW50ZXIgPSBwcmVkaWNhdGVQb2ludGVyOyB9CiAKICAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZTsKQEAgLTIwNSw2ICsyMDcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7CiAgICAgICAgICAgICB2
b2lkKiBwb2ludGVyOworICAgICAgICAgICAgYm9vbCogcHJlZGljYXRlUG9pbnRlcjsKICAgICAg
ICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9zY29wZWRfdmFyLCA1KSAv
KiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X3Njb3BlZF92
YXIsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2dsb2JhbF92YXIsIDQpIC8qIGhhcyB2YWx1
ZSBwcm9maWxpbmcgKi8gXAorICAgICAgICBtYWNybyhvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFi
bGUsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9wdXRf
Z2xvYmFsX3ZhciwgMykgXAorICAgICAgICBtYWNybyhvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaywg
NSkgXAogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX2Jhc2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9m
aWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzLCAzKSBc
CiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfd2l0aF9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJv
ZmlsaW5nICovIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBv
aW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCisKK1dhdGNocG9pbnQ6On5XYXRj
aHBvaW50KCkKK3sKKyAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgcmVtb3ZlKCk7Cit9CisK
K3ZvaWQgV2F0Y2hwb2ludDo6ZmlyZSgpCit7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VX
aXRoSnVtcCgKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPiht
X3NvdXJjZSkpLAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlayhiaXR3aXNlX2Nhc3Q8dm9pZCo+
KG1fZGVzdGluYXRpb24pKSk7CisgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgIHJlbW92ZSgp
OworfQorCitXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KCkKKyAgICA6IG1faXNXYXRjaGVk
KGZhbHNlKQorICAgICwgbV9pc0ludmFsaWRhdGVkKGZhbHNlKQoreworfQorCitXYXRjaHBvaW50
U2V0Ojp+V2F0Y2hwb2ludFNldCgpCit7CisgICAgLy8gRmlyZSBhbGwgd2F0Y2hwb2ludHMuIFRo
aXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgaXMgcG9zc2libGUsIHNheSB3aXRoCisgICAgLy8g
c3RydWN0dXJlIHdhdGNocG9pbnRzLCBmb3IgdGhlIHdhdGNocG9pbnQgc2V0IG93bmVyIHRvIGRp
ZSB3aGlsZSB0aGUKKyAgICAvLyB3YXRjaHBvaW50IG93bmVycyBhcmUgc3RpbGwgbGl2ZS4KKyAg
ICBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKK30KKwordm9pZCBXYXRjaHBvaW50U2V0OjphZGQoV2F0
Y2hwb2ludCogd2F0Y2hwb2ludCkKK3sKKyAgICBtX3NldC5wdXNoKHdhdGNwb2ludCk7CisgICAg
bV9pc1dhdGNoZWQgPSB0cnVlOworfQorCit2b2lkIFdhdGNocG9pbnRTZXQ6Om5vdGlmeVdyaXRl
U2xvdygpCit7CisgICAgQVNTRVJUKG1faXNXYXRjaGVkKTsKKyAgICAKKyAgICBmaXJlQWxsV2F0
Y2hwb2ludHMoKTsKKyAgICBtX2lzV2F0Y2hlZCA9IGZhbHNlOworICAgIG1faXNJbnZhbGlkYXRl
ZCA9IHRydWU7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludFNldDo6ZmlyZUFsbFdhdGNocG9pbnRzKCkK
K3sKKyAgICB3aGlsZSAoIW1fc2V0LmlzRW1wdHkoKSkKKyAgICAgICAgbV9zZXQuYmVnaW4oKS0+
ZmlyZSgpOworfQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hw
b2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRj
aHBvaW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
V2F0Y2hwb2ludC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXYXRj
aHBvaW50X2gKKyNkZWZpbmUgV2F0Y2hwb2ludF9oCisKKyNpbmNsdWRlICJDb2RlTG9jYXRpb24u
aCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExp
bmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdhdGNocG9pbnQgOiBwdWJs
aWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4geworcHVibGljOgorICAgIFdhdGNo
cG9pbnQoTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHNvdXJjZSkKKyAgICAgICAgOiBtX3NvdXJjZShz
b3VyY2UubV9sYWJlbC5tX29mZnNldCkKKyAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludHB0cl90Pjo6bWF4KCkpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2
b2lkIHNldERlc3RpbmF0aW9uKE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkZXN0aW5hdGlvbikKKyAg
ICB7CisgICAgICAgIG1fZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbi5tX2xhYmVsLm1fb2Zmc2V0
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvcnJlY3RMYWJlbHMoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikKKyAgICB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJlbDsKKyAgICAg
ICAgbGFiZWwubV9sYWJlbC5tX29mZnNldCA9IG1fc291cmNlOworICAgICAgICBtX3NvdXJjZSA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxpbmtCdWZmZXIubG9jYXRpb25PZihsYWJlbCkuZGF0
YUxvY2F0aW9uKCkpOworICAgICAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9kZXN0aW5h
dGlvbjsKKyAgICAgICAgbV9kZXN0aW5hdGlvbiA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxp
bmtCdWZmZXIubG9jYXRpb25PZihsYWJlbCkuZGF0YUxvY2F0aW9uKCkpOworICAgIH0KKyAgICAK
KyAgICB+V2F0Y2hwb2ludCgpOworICAgIAorICAgIHZvaWQgZmlyZSgpOworICAgIAorcHJpdmF0
ZToKKyAgICB1aW50cHRyX3QgbV9zb3VyY2U7CisgICAgdWludHB0cl90IG1fZGVzdGluYXRpb247
Cit9OworCitjbGFzcyBXYXRjaHBvaW50U2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2F0Y2hwb2lu
dFNldD4geworcHVibGljOgorICAgIFdhdGNocG9pbnRTZXQoKTsKKyAgICB+V2F0Y2hwb2ludFNl
dCgpOworICAgIAorICAgIGJvb2wgaXNTdGlsbFZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1faXNJ
bnZhbGlkYXRlZDsgfQorICAgIGJvb2wgaGFzQmVlbkludmFsaWRhdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ludmFsaWRhdGVkOyB9CisgICAgCisgICAgdm9pZCBhZGQoV2F0Y2hwb2ludCopOwor
ICAgIHZvaWQgbm90aWZ5V3JpdGUoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2lzV2F0Y2hlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbm90aWZ5V3JpdGVTbG93KCk7CisgICAgfQor
ICAgIAorICAgIGJvb2wqIGFkZHJlc3NPZklzV2F0Y2hlZCgpIHsgcmV0dXJuICZtX2lzV2F0Y2hl
ZDsgfQorICAgIAorICAgIHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7IC8vIENhbGwgb25seSBpZiB5
b3UndmUgY2hlY2tlZCBpc1dhdGNoZWQuCisgICAgCitwcml2YXRlOgorICAgIHZvaWQgZmlyZUFs
bFdhdGNocG9pbnRzKCk7CisgICAgCisgICAgU2VudGluZWxMaW5rZWRMaXN0PFdhdGNocG9pbnQ+
IG1fc2V0OworICAgIGJvb2wgbV9pc1dhdGNoZWQ7CisgICAgYm9vbCBtX2lzSW52YWxpZGF0ZWQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFdhdGNocG9pbnRfaAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxNiwxMyArMjE2LDE5IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcihjb25z
dCBJZGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW50IEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRH
bG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wgaXNDb25zdGFudCkKK2ludCBC
eXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKAorICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBDb25zdGFudE1vZGUgY29uc3RhbnRNb2RlLCBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2Rl
KQogeworICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk1vZGUpOwogICAgIGludCBpbmRleCA9IHN5
bWJvbFRhYmxlKCkuc2l6ZSgpOwotICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkoaW5kZXgs
IGlzQ29uc3RhbnQgPyBSZWFkT25seSA6IDApOworICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50
cnkoaW5kZXgsIChjb25zdGFudE1vZGUgPT0gSXNDb25zdGFudCkgPyBSZWFkT25seSA6IDApOwor
ICAgIGlmIChmdW5jdGlvbk1vZGUgPSBJc0Z1bmN0aW9uVG9TcGVjaWFsaXplKQorICAgICAgICBu
ZXdFbnRyeS5hdHRlbXB0VG9XYXRjaCgpOwogICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVz
dWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CiAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZC5nZXRJbmRleCgpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQubm90aWZ5V3JpdGUoKTsKICAgICByZXR1cm4gaW5kZXg7CiB9CiAKQEAgLTI4OSwxNyArMjk1
LDIzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm8KIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsraSkgewogICAgICAg
ICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07Ci0gICAgICAg
IGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERhdGEsIGZ1bmN0aW9uLT5pZGVu
dCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3cml0ZSBleGlzdGluZyBwcm9w
ZXJ0aWVzLgorICAgICAgICBib29sIHByb3BlcnR5RGlkRXhpc3QgPSAKKyAgICAgICAgICAgIGds
b2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERhdGEsIGZ1bmN0aW9uLT5pZGVudCgp
KTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3cml0ZSBleGlzdGluZyBwcm9wZXJ0
aWVzLgogCiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywg
bWFrZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uKSwgc2NvcGVDaGFpbik7Ci0gICAgICAgIGludCBp
bmRleCA9IGFkZEdsb2JhbFZhcihmdW5jdGlvbi0+aWRlbnQoKSwgZmFsc2UpOworICAgICAgICBp
bnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoCisgICAgICAgICAgICBmdW5jdGlvbi0+aWRlbnQoKSwg
SXNWYXJpYWJsZSwKKyAgICAgICAgICAgIHByb3BlcnR5RGlkRXhpc3QgPyBJc0Z1bmN0aW9uVG9T
cGVjaWFsaXplIDogTm90RnVuY3Rpb25Pck5vdFNwZWNpYWxpemFibGUpOwogICAgICAgICBnbG9i
YWxPYmplY3QtPnJlZ2lzdGVyQXQoaW5kZXgpLnNldCgqbV9nbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhclN0YWNr
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmhhc1Byb3BlcnR5KGV4
ZWMsICp2YXJTdGFja1tpXS5maXJzdCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
YWRkR2xvYmFsVmFyKCp2YXJTdGFja1tpXS5maXJzdCwgdmFyU3RhY2tbaV0uc2Vjb25kICYgRGVj
bGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQpOworICAgICAgICBhZGRHbG9iYWxWYXIoCisgICAg
ICAgICAgICAqdmFyU3RhY2tbaV0uZmlyc3QsCisgICAgICAgICAgICAodmFyU3RhY2tbaV0uc2Vj
b25kICYgRGVjbGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQpID8gSXNDb25zdGFudCA6IElzVmFy
aWFibGUsCisgICAgICAgICAgICBOb3RGdW5jdGlvbk9yTm90U3BlY2lhbGl6YWJsZSk7CiAgICAg
fQogfQogCkBAIC0xMjAyLDcgKzEyMTQsOSBAQCBSZXNvbHZlUmVzdWx0IEJ5dGVjb2RlR2VuZXJh
dG9yOjpyZXNvbHZlCiAgICAgICAgICAgICBpZiAoKytpdGVyID09IGVuZCkgewogICAgICAgICAg
ICAgICAgIGlmIChmbGFncyAmIFJlc29sdmVSZXN1bHQ6OkR5bmFtaWNGbGFnKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6ZHluYW1pY0luZGV4ZWRHbG9iYWxSZXNv
bHZlKGVudHJ5LmdldEluZGV4KCksIGRlcHRoLCBjdXJyZW50U2NvcGUsIGZsYWdzKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6aW5kZXhlZEdsb2JhbFJlc29sdmUoZW50
cnkuZ2V0SW5kZXgoKSwgY3VycmVudFNjb3BlLCBmbGFncyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFJlc29sdmVSZXN1bHQ6OmluZGV4ZWRHbG9iYWxSZXNvbHZlKAorICAgICAgICAgICAgICAg
ICAgICBlbnRyeS5nZXRJbmRleCgpLCBjdXJyZW50U2NvcGUsCisgICAgICAgICAgICAgICAgICAg
IGZsYWdzIHwgKGVudHJ5LmNvdWxkQmVXYXRjaGVkKCkgPyBXYXRjaGVkRmxhZyB8IDApKTsKICAg
ICAgICAgICAgIH0KICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAoSlNBY3Rp
dmF0aW9uKiBhY3RpdmF0aW9uID0ganNEeW5hbWljQ2FzdDxKU0FjdGl2YXRpb24qPihjdXJyZW50
VmFyaWFibGVPYmplY3QpKQpAQCAtMTQzNiw3ICsxNDUwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIHJldHVybiBlbWl0UmVzb2x2ZShwcm9wRHN0LCBy
ZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3Vs
dCYgcmVzb2x2ZVJlc3VsdCkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJl
c3VsdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSAwOwogCkBAIC0xNDcyLDEzICsxNDg2LDI0IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0U3QKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHBy
b2ZpbGUpOwogICAgICAgICByZXR1cm4gZHN0OwogCisgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpX
YXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAgLy8gU2tpcCB0aGUgcGVlcGhvbGUgZm9yIG5v
dy4gSXQncyBub3QgY2xlYXIgdGhhdCBpdCdzIHByb2ZpdGFibGUgZ2l2ZW4KKyAgICAgICAgLy8g
dGhlIERGRydzIGNhcGFiaWxpdGllcywgYW5kIHRoZSBmYWN0IHRoYXQgaWYgaXQncyB3YXRjaGFi
bGUgdGhlbiB3ZQorICAgICAgICAvLyBkb24ndCBleHBlY3QgdG8gc2VlIGFueSBwdXRfZ2xvYmFs
X3ZhcidzIGFueXdheS4KKyAgICAgICAgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9n
ZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVSZXN1
bHQucmVnaXN0ZXJQb2ludGVyKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRk
Q29uc3RhbnQoaWRlbnRpZmllcikpOyAvLyBGb3IgdGhlIGJlbmVmaXQgb2YgdGhlIERGRy4KKyAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOworICAgICAgICByZXR1cm4gZHN0
OworCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgUmVnaXN0
ZXJJRCogdmFsdWUpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFN0YXRp
Y1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyLCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKHJlc29sdmVS
ZXN1bHQudHlwZSgpKSB7CiAgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpSZWdpc3RlcjoKQEAgLTE0
OTksNiArMTUyNCwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFN0
CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9p
bnRlcigpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsK
ICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAKKyAgICBjYXNlIFJlc29sdmVSZXN1bHQ6
OldhdGNoZWRJbmRleGVkR2xvYmFsOgorICAgICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9nbG9iYWxf
dmFyX2NoZWNrKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVSZXN1bHQu
cmVnaXN0ZXJQb2ludGVyKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUt
PmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJlc3VsdC5n
bG9iYWxPYmplY3QoKS0+c3ltYm9sVGFibGUoKS5nZXQoaWRlbnRpZmllci5pbXBsKCkpLmFkZHJl
c3NPZklzV2F0Y2hlZCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0
YW50KGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lv
biAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIC8vIFRoZSByZXNvbHZlZCBiaW5kaW5nIGlzIGltbXV0YWJsZS4K
ICAgICAgICAgICAgIFJlYWRPbmx5RmxhZyA9IDB4MjAsCiAgICAgICAgICAgICAvLyBUaGUgYmFz
ZSBvYmplY3QgaXMgdGhlIGdsb2JhbCBvYmplY3QuCi0gICAgICAgICAgICBHbG9iYWxGbGFnID0g
MHg0MAorICAgICAgICAgICAgR2xvYmFsRmxhZyA9IDB4NDAsCisgICAgICAgICAgICAvLyBUaGUg
cHJvcGVydHkgaXMgYmVpbmcgd2F0Y2hlZCwgc28gd3JpdGVzIHNob3VsZCBiZSBzcGVjaWFsLgor
ICAgICAgICAgICAgV2F0Y2hlZEZsYWcgPSAweDgwCiAgICAgICAgIH07CiAgICAgICAgIGVudW0g
VHlwZSB7CiAgICAgICAgICAgICAvLyBUaGUgcHJvcGVydHkgaXMgbG9jYWwsIGFuZCBzdG9yZWQg
aW4gYSByZWdpc3Rlci4KQEAgLTEzMSw2ICsxMzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIC8vIGJpbmRpbmcgY3JlYXRlZCB3aXRoICJ2YXIiIGF0IHRoZSB0b3AgbGV2ZWwuIEF0
IHJ1bnRpbWUgd2UnbGwKICAgICAgICAgICAgIC8vIGp1c3QgaW5kZXggaW50byB0aGUgZ2xvYmFs
IG9iamVjdC4KICAgICAgICAgICAgIEluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxhZyB8IEdsb2Jh
bEZsYWcgfCBTdGF0aWNGbGFnLAorICAgICAgICAgICAgLy8gTGlrZSBJbmRleGVkR2xvYmFsLCBi
dXQgdGhlIHByb3BlcnR5IGlzIGJlaW5nIHdhdGNoZWQuCisgICAgICAgICAgICBXYXRjaGVkSW5k
ZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFsRmxhZyB8IFN0YXRpY0ZsYWcgfCBXYXRj
aGVkRmxhZywKICAgICAgICAgICAgIC8vIExpa2UgSW5kZXhlZEdsb2JhbCwgYnV0IHRoZSBwcm9w
ZXJ0eSBpcyBhbHNvIHJlYWQtb25seSwgbGlrZSBOYU4sCiAgICAgICAgICAgICAvLyBJbmZpbml0
eSwgb3IgdW5kZWZpbmVkLgogICAgICAgICAgICAgUmVhZE9ubHlJbmRleGVkR2xvYmFsID0gSW5k
ZXhlZEZsYWcgfCBSZWFkT25seUZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZywKQEAgLTQ0
MSw4ICs0NDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFR5
cGVPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5
T3Aob3BfdHlwZW9mLCBkc3QsIHNyYyk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpIHsg
cmV0dXJuIGVtaXRCaW5hcnlPcChvcF9pbiwgZHN0LCBwcm9wZXJ0eSwgYmFzZSwgT3BlcmFuZFR5
cGVzKCkpOyB9CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFN0YXRpY1ZhcihSZWdpc3Rl
cklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFB1dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiwgUmVnaXN0ZXJJRCogdmFsdWUpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29u
c3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmll
ciYsIFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2
ZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQmFzZShSZWdpc3Rl
cklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eSk7CkBAIC01NzQsNyArNTc4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgYWRkZWQgdmFyLgotICAgICAgICBpbnQg
YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImLCBib29sIGlzQ29uc3RhbnQpOworICAgICAg
ICBlbnVtIENvbnN0YW50TW9kZSB7IElzQ29uc3RhbnQsIElzVmFyaWFibGUgfTsKKyAgICAgICAg
ZW51bSBGdW5jdGlvbk1vZGUgeyBJc0Z1bmN0aW9uVG9TcGVjaWFsaXplLCBOb3RGdW5jdGlvbk9y
Tm90U3BlY2lhbGl6YWJsZSB9OworICAgICAgICBpbnQgYWRkR2xvYmFsVmFyKGNvbnN0IElkZW50
aWZpZXImLCBDb25zdGFudE1vZGUgY29uc3RhbnRNb2RlLCBGdW5jdGlvbk1vZGUgZnVuY3Rpb25N
b2RlKTsKIAogICAgICAgICB2b2lkIGFkZFBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyJiwgaW50
IHBhcmFtZXRlckluZGV4KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0NzYsNyArMTQ3Niw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25l
ZCBpbmQKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Z1bmN0aW9u
KTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0aGUgZmFj
dCB0aGF0IHdlIGtub3cgd2hhdCB0aGUgZnVuY3Rpb24gaXMuCiAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCisgICAgICAgIAogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWRE
aXJlY3Q6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKQEAgLTE0ODgsOCArMTQ4OCwx
MyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIG5v
ZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9w
KCk7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9p
bnQ6CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNo
ZWNrOgogICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjM5LDEzICsy
MjM5LDYxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiA9IGdldFNwZWN1bGF0aW9uKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCk7CisKICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRHbG9iYWxW
YXIgPSBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgIEdldEdsb2JhbFZhciwKLSAgICAgICAg
ICAgICAgICBPcEluZm8obV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3Qt
PmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVn
aXN0ZXJQb2ludGVyKSksCiAgICAgICAgICAgICAgICAgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAg
ICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRHbG9iYWxW
YXIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2dsb2JhbF92YXIpOwogICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFy
X3dhdGNoYWJsZTogeworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdl
dFNwZWN1bGF0aW9uKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IG1f
Y29kZUJsb2NrLT5pZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKS5nZXQoaWRl
bnRpZmllcik7CisgICAgICAgICAgICBpZiAoIWVudHJ5LmNvdWxkQmVXYXRjaGVkKCkpIHsKKyAg
ICAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0R2xvYmFsVmFyID0gYWRkVG9HcmFwaCgKKyAgICAg
ICAgICAgICAgICAgICAgR2V0R2xvYmFsVmFyLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8o
Z2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8o
cHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOworICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIC8vIFRoZSB3YXRjaHBvaW50IGlzIHN0aWxsIGludGFjdCEgVGhpcyBtZWFu
cyB0aGF0IHdlIHdpbGwgZ2V0IG5vdGlmaWVkIGlmIHRoZQorICAgICAgICAgICAgLy8gY3VycmVu
dCB2YWx1ZSBpbiB0aGUgZ2xvYmFsIHZhcmlhYmxlIGNoYW5nZXMuIFNvLCB3ZSBjYW4gaW5saW5l
IHRoYXQgdmFsdWUuCisgICAgICAgICAgICAvLyBNb3Jlb3ZlciwgY3VycmVudGx5IHdlIGNhbiBh
c3N1bWUgdGhhdCB0aGlzIHZhbHVlIGlzIGEgSlNGdW5jdGlvbiosIHdoaWNoCisgICAgICAgICAg
ICAvLyBpbXBsaWVzIHRoYXQgaXQncyBhIGNlbGwuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MsIHNp
bmNlIGluIGdlbmVyYWwgd2UnZCBoYXZlCisgICAgICAgICAgICAvLyB0byB1c2UgYSBKU0NvbnN0
YW50IGZvciBub24tY2VsbHMgYW5kIGEgV2Vha0pTQ29uc3RhbnQgZm9yIGNlbGxzLiBTbyBpbnN0
ZWFkCisgICAgICAgICAgICAvLyBvZiBoYXZpbmcgYm90aCBjYXNlcyB3ZSBqdXN0IGFzc2VydCB0
aGF0IHRoZSB2YWx1ZSBpcyBhIGNlbGwuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE5C
LiBJZiBpdCB3YXNuJ3QgZm9yIENTRSwgR2xvYmFsVmFyV2F0Y2hwb2ludCB3b3VsZCBoYXZlIG5v
IG5lZWQgZm9yIHRoZQorICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcG9pbnRlci4gQnV0IENTRSB0
cmFja3MgZWZmZWN0cyBvbiBnbG9iYWwgdmFyaWFibGVzIGJ5IGNvbXBhcmluZworICAgICAgICAg
ICAgLy8gcmVnaXN0ZXIgcG9pbnRlcnMuIEJlY2F1c2UgQ1NFIGV4ZWN1dGVzIG11bHRpcGxlIHRp
bWVzIHdoaWxlIHRoZSBiYWNrZW5kCisgICAgICAgICAgICAvLyBleGVjdXRlcyBvbmNlLCB3ZSB1
c2UgdGhlIGZvbGxvd2luZyBwZXJmb3JtYW5jZSB0cmFkZS1vZmY6CisgICAgICAgICAgICAvLyAt
IFRoZSBub2RlIHJlZmVycyBkaXJlY3RseSB0byB0aGUgcmVnaXN0ZXIgcG9pbnRlciB0byBtYWtl
IENTRSBzdXBlciBjaGVhcC4KKyAgICAgICAgICAgIC8vIC0gVG8gcGVyZm9ybSBiYWNrZW5kIGNv
ZGUgZ2VuZXJhdGlvbiwgdGhlIG5vZGUgb25seSBjb250YWlucyB0aGUgaWRlbnRpZmllcgorICAg
ICAgICAgICAgLy8gICBudW1iZXIsIGZyb20gd2hpY2ggaXQgaXMgcG9zc2libGUgdG8gZ2V0ICh2
aWEgYSBmZXcgYXZlcmFnZS10aW1lIE8oMSkKKyAgICAgICAgICAgIC8vICAgbG9va3VwcykgdG8g
dGhlIFdhdGNocG9pbnRTZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
CisgICAgICAgICAgICAgICAgR2xvYmFsVmFyV2F0Y2hwb2ludCwKKyAgICAgICAgICAgICAgICBP
cEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIE9wSW5m
byhpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEpTVmFsdWUg
c3BlY2lmaWNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgp
KTsKKyAgICAgICAgICAgIEFTU0VSVChzcGVjaWZpY1ZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAg
ICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhzcGVjaWZpY1ZhbHVlLmFzQ2VsbCgp
KSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZ2xvYmFs
X3Zhcl93YXRjaGFibGUpOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFs
X3ZhcjogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpOwpAQCAtMjI1Niw2ICsyMzA0LDI4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1
dF9nbG9iYWxfdmFyKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92
YXJfY2hlY2s6IHsKKyAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CisgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50
aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kXTsKKyAgICAgICAgICAg
IElkZW50aWZpZXIgaWRlbnRpZmllciA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGlkZW50aWZp
ZXJOdW1iZXIpOworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9i
amVjdC0+c3ltYm9sVGFibGUoKS5nZXQoaWRlbnRpZmllcik7CisgICAgICAgICAgICBpZiAoIWVu
dHJ5LmNvdWxkQmVXYXRjaGVkKCkpIHsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAorICAg
ICAgICAgICAgICAgICAgICBQdXRHbG9iYWxWYXIsCisgICAgICAgICAgICAgICAgICAgIE9wSW5m
byhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAgICAgICAgICAgICAgIHZhbHVl
KTsKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAg
IFB1dEdsb2JhbFZhckNoZWNrLAorICAgICAgICAgICAgICAgIE9wSW5mbyhjb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhpZGVu
dGlmaWVyTnVtYmVyKSwKKyAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgIH0KKwogICAgICAgICAv
LyA9PT0gQmxvY2sgdGVybWluYXRvcnMuID09PQogCiAgICAgICAgIGNhc2Ugb3Bfam1wOiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24g
MTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IE5vTm9kZTsKICAgICB9CiAgICAgCisgICAgYm9vbCBnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWlu
YXRpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpCisgICAgeworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgeworICAgICAgICAg
ICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOworICAgICAgICAgICAg
Tm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOworICAgICAgICAgICAgc3dpdGNoIChub2RlLm9w
KCkpIHsKKyAgICAgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVn
aXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KG1fZ3JhcGguY2xvYmJlcnNXb3JsZChpbmRleCkpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICBOb2RlSW5k
ZXggZ2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbihXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lz
dGVyUG9pbnRlcikKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJs
b2NrOyBpLS07KSB7CkBAIC0yMjYsNiArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CiAgICAgICAgICAg
ICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQ
b2ludGVyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC05ODUsNyArMTAwOSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0
UmVwbGFjZW1lbnQoZ2xvYmFsVmFyTG9hZEVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2ludGVy
KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgR2xv
YmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAgIGlmIChnbG9iYWxWYXJXYXRjaHBvaW50RWxp
bWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkpCisgICAgICAgICAgICAgICAgZWxpbWlu
YXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIFB1
dEdsb2JhbFZhcjoKKyAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAgICAg
IGlmIChtX2ZpeHBvaW50U3RhdGUgPT0gRml4cG9pbnROb3RDb252ZXJnZWQpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBlbGltaW5hdGUoZ2xvYmFsVmFyU3RvcmVFbGltaW5h
dGlvbihub2RlLnJlZ2lzdGVyUG9pbnRlcigpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCShyZXZpc2lvbiAxMTk4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH0KICAgICAKKyAgICBib29sIGlzU2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvZGVP
ZmZzZXQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOworICAgIH0KKyAg
ICAKICAgICB2b2lkIHN3aXRjaFRvTGF0ZUp1bXAoTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1
bXAgY2hlY2spCiAgICAgewogI2lmbmRlZiBOREVCVUcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNyArNDQsMTEgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKIHsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMo
KTsgKytpKSB7CiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhpdChp
KTsKLSAgICAgICAgZXhpdC5tX2NoZWNrLmluaXRpYWxKdW1wKCkubGluayh0aGlzKTsKKyAgICAg
ICAgQVNTRVJUKCFleGl0Lm1fY2hlY2suaXNTZXQoKSA9PSAoZXhpdC5tX3dhdGNocG9pbnRJbmRl
eCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICAgICAgaWYg
KGV4aXQubV93YXRjaHBvaW50SW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQorICAgICAgICAgICAgZXhpdC5tX2NoZWNrLmluaXRpYWxKdW1wKCkubGluayh0aGlz
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhp
dC5tX3dhdGNocG9pbnRJbmRleCkuc2V0RGVzdGluYXRpb24obGFiZWwoKSk7CiAgICAgICAgIGpp
dEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CiAgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMy
KGkpLCAmZ2xvYmFsRGF0YSgpLT5vc3JFeGl0SW5kZXgpOwogICAgICAgICBleGl0Lm1fY2hlY2su
c3dpdGNoVG9MYXRlSnVtcChwYXRjaGFibGVKdW1wKCkpOwpAQCAtMTkwLDYgKzE5NCw5IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgT1NSRXhpdCYg
ZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmso
ZXhpdC5tX2NoZWNrLmxhdGVKdW1wKCksIHRhcmdldCk7CiAgICAgICAgIGV4aXQubV9jaGVjay5j
b3JyZWN0TGF0ZUp1bXAobGlua0J1ZmZlcik7CisgICAgICAgIEFTU0VSVCghZXhpdC5tX2NoZWNr
LmlzU2V0KCkgPT0gKGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSk7CisgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4
ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIGNv
ZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLmNvcnJlY3RMYWJl
bHMobGlua0J1ZmZlcik7CiAgICAgfQogICAgIAogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0Zp
dChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzAsOSArNDMwLDIwIEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KICAgICAKKyAgICBib29sIGhhc0lkZW50
aWZpZXJOdW1iZXJGb3JDaGVjaygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBHbG9i
YWxWYXJXYXRjaHBvaW50IHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyQ2hlY2s7CisgICAgfQorICAg
IAorICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpCisgICAgeworICAgICAg
ICBBU1NFUlQoaGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpOworICAgICAgICByZXR1cm4g
bV9vcEluZm8yOworICAgIH0KKyAgICAKICAgICBib29sIGhhc1JlZ2lzdGVyUG9pbnRlcigpCiAg
ICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRH
bG9iYWxWYXI7CisgICAgICAgIHJldHVybiBvcCgpID09IEdldEdsb2JhbFZhciB8fCBvcCgpID09
IFB1dEdsb2JhbFZhciB8fCBvcCgpID09IEdsb2JhbFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBQ
dXRHbG9iYWxWYXJDaGVjazsKICAgICB9CiAgICAgCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
KiByZWdpc3RlclBvaW50ZXIoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dFNjb3BlZFZhciwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oR2V0R2xvYmFsVmFyLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFy
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2xvYmFsVmFyV2F0Y2hwb2ludCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFB1dEdsb2JhbFZhckNoZWNrLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIFwKICAgICAvKiBPcHRpbWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9cCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkocmV2aXNpb24gMTE5ODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTk2LDYgKzk2LDcgQEAgc3RydWN0IE9TUkV4aXQgewogICAgIENvZGVPcmlnaW4gbV9jb2Rl
T3JpZ2luRm9yRXhpdFByb2ZpbGU7CiAgICAgCiAgICAgdW5zaWduZWQgbV9yZWNvdmVyeUluZGV4
OworICAgIHVuc2lnbmVkIG1fd2F0Y2hwb2ludEluZGV4OwogICAgIAogICAgIEV4aXRLaW5kIG1f
a2luZDsKICAgICB1aW50MzJfdCBtX2NvdW50OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTEsNyArNDkxLDgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
LSAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6IHsKKyAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6
CisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6IHsKICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjY5LDYgKzY3MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDaGVja051bWJl
cjoKICAgICAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgICAgIGNhc2Ug
R2xvYmFsVmFyV2F0Y2hwb2ludDoKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0
RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjE1LDYgKzM2MTUsNDEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICAKKyAgICAgICAgV2F0Y2hwb2lu
dFNldCogd2F0Y2hwb2ludFNldCA9CisgICAgICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3Io
bm9kZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQoCisgICAgICAgICAgICAgICAgaWRl
bnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKSkud2F0Y2hwb2ludFNldCgp
OworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCgKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBYnNvbHV0ZUFkZHJlc3Mod2F0Y2hwb2ludFNldC0+YWRkcmVzc09mSXNXYXRjaGVkKCkpKSwK
KyAgICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZSwgTm9S
ZXN1bHQsIHdhdGNocG9pbnRTZXQpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChIZWFwOjppc1dy
aXRlQmFycmllckVuYWJsZWQoKSkgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHdyaXRlQmFycmllcihtX2ppdC5nbG9iYWxPYmplY3RG
b3Iobm9kZS5jb2RlT3JpZ2luKSwgdmFsdWUuZ3ByKCksIG5vZGUuY2hpbGQxKCksIFdyaXRlQmFy
cmllckZvclZhcmlhYmxlQWNjZXNzLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgbV9qaXQuc3RvcmVQdHIodmFsdWUuZ3ByKCksIG5vZGUucmVnaXN0ZXJQb2ludGVy
KCkpOworCisgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKKyAgICAg
ICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCku
Z2V0KAorICAgICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVj
aygpKS5hZGRXYXRjaHBvaW50KAorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2lu
dCgpKSk7CisgICAgICAgIAorICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZTogewogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAg
ICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTkwLDYgKzIxOTAsMzIgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoYXQobV9jb21w
aWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlVXNlLmluZGV4KCks
IGp1bXBUb0ZhaWwsIHJlY292ZXJ5KTsKICAgICB9CisgICAgLy8gVXNlIHRoaXMgbGlrZSB5b3Ug
d291bGQgdXNlIHNwZWN1bGF0aW9uQ2hlY2soKSwgZXhjZXB0IHRoYXQgeW91IGRvbid0IHBhc3Mg
aXQgYSBqdW1wCisgICAgLy8gKGJlY2F1c2UgeW91IGRvbid0IGhhdmUgdG8gZXhlY3V0ZSBhIGJy
YW5jaDsgdGhhdCdzIGtpbmQgb2YgdGhlIHdob2xlIHBvaW50KSwgYW5kIHlvdQorICAgIC8vIG11
c3QgcmVnaXN0ZXIgdGhlIHJldHVybmVkIFdhdGNocG9pbnQgd2l0aCBzb21ldGhpbmcgcmVsZXZh
bnQuIEluIGdlbmVyYWwsIHRoaXMgc2hvdWxkCisgICAgLy8gYmUgdXNlZCB3aXRoIGV4dHJlbWUg
Y2FyZS4gVXNlIHNwZWN1bGF0aW9uQ2hlY2soKSB1bmxlc3MgeW91J3ZlIGdvdCBhbiBhbWF6aW5n
IHJlYXNvbgorICAgIC8vIG5vdCB0by4KKyAgICBXYXRjaHBvaW50KiBzcGVjdWxhdGlvbldhdGNo
cG9pbnQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBFZGdlIG5v
ZGVVc2UpCisgICAgeworICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1f
aXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOworICAgICAgICBPU1JFeGl0JiBleGl0ID0gbV9qaXQu
Y29kZUJsb2NrKCktPm9zckV4aXQoCisgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBw
ZW5kT1NSRXhpdCgKKyAgICAgICAgICAgICAgICBPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEp1bXAo
KSwgdGhpcykpKTsKKyAgICAgICAgZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9IG1faml0LmNvZGVC
bG9jaygpLT5hcHBlbmRXYXRjaHBvaW50KAorICAgICAgICAgICAgV2F0Y2hwb2ludChtX2ppdC53
YXRjaHBvaW50TGFiZWwoUmVwbGFjZVdpdGhMb2NhbEp1bXApKSk7CisgICAgICAgIHJldHVybiBt
X2ppdC5jb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KTsKKyAg
ICB9CisgICAgLy8gVGhlIGRlZmF1bHQgZm9yIHNwZWN1bGF0aW9uIHdhdGNocG9pbnRzIGlzIHRo
YXQgdGhleSdyZSB1bmNvdW50ZWQsIGJlY2F1c2UgdGhlCisgICAgLy8gYWN0IG9mIGZpcmluZyBh
IHdhdGNocG9pbnQgaW52YWxpZGF0ZXMgaXQuIFNvLCBmdXR1cmUgcmVjb21waWxhdGlvbnMgd2ls
bCBub3QKKyAgICAvLyBhdHRlbXB0IHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYWdhaW4uCisgICAg
V2F0Y2hwb2ludCogc3BlY3VsYXRpb25XYXRjaHBvaW50KCkKKyAgICB7CisgICAgICAgIHJldHVy
biBzcGVjdWxhdGlvbldhdGNocG9pbnQoVW5jb3VudGFibGVXYXRjaHBvaW50LCBKU1ZhbHVlU291
cmNlKCksIE5vTm9kZSk7CisgICAgfQogICAgIHZvaWQgZm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2so
RXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9k
ZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBWYWx1ZVJlY292
ZXJ5JiB2YWx1ZVJlY292ZXJ5KQogICAgIHsKICAgICAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUlu
ZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw2ICsyNTksNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9n
ZXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9wbmFtZSkKKyAgICAgICAgY2FzZSBvcF9nZXRfZ2xv
YmFsX3Zhcl93YXRjaGFibGU6IC8vIElkZW50aWNhbCB0byBnZXRfZ2xvYmFsX3ZhciBmcm9tIHRo
ZSBKSVQncyBzdGFuZHBvaW50LgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2dsb2JhbF92YXIp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcG5hbWVzKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X3Njb3BlZF92YXIpCkBAIC0zMjQsNiArMzI1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2dsb2JhbF92YXIpCisgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zY29wZWRfdmFyKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcmVzb2x2ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfYmFzZSkKQEAgLTQ4MSw2
ICs0ODMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9i
eV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVj
ayk7CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9yc2hpZnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY2Miw2ICs2NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9zY29wZWRfdmFyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNv
bHZlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlX2Jhc2UoSW5z
dHJ1Y3Rpb24qKTsKQEAgLTczOSw2ICs3NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9wcmVfaW5jKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFy
X2NoZWNrKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX3Jlc29sdmVfZ2xvYmFsKEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcnNoaWZ0KEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShy
ZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDkwLDYgKzEwOTAsMzcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgIG1hcChtX2J5dGVjb2Rl
T2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9wdXRfZ2xvYmFsX3ZhciksIHZhbHVlLCByZWdUMSwg
cmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiogcmVnaXN0ZXJQb2ludGVyID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2lu
dGVyOworICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnRydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAg
ICAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOworICAgIAorICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOworICAg
IAorICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIGN1cnJlbnRJbnN0cnVjdGlv
blszXS51LnByZWRpY2F0ZVBvaW50ZXIpKTsKKyAgICAKKyAgICBpZiAoSGVhcDo6aXNXcml0ZUJh
cnJpZXJFbmFibGVkKCkpIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVj
dCksIHJlZ1QyKTsKKyAgICAgICAgZW1pdFdyaXRlQmFycmllcihnbG9iYWxPYmplY3QsIHJlZ1Qx
LCByZWdUMywgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVB
Y2Nlc3MpOworICAgIH0KKyAgICAKKyAgICBzdG9yZTMyKHJlZ1QxLCByZWdpc3RlclBvaW50ZXIt
PnRhZ1BvaW50ZXIoKSk7CisgICAgc3RvcmUzMihyZWdUMCwgcmVnaXN0ZXJQb2ludGVyLT5wYXls
b2FkUG9pbnRlcigpKTsKKyAgICB1bm1hcCgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKKyAgICAKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxLCByZWdUMCk7Cisg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0
XS51Lm9wZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjpyZXNl
dFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8tPmNh
bGxSZXR1cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9pZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTE5ODAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMjcsNiArMTAyNywyOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
Z2xvYmFsX3ZhcihJbnN0cnVjCiAgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0
LCByZWdUMCwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZh
cmlhYmxlQWNjZXNzKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXJfY2hl
Y2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICAK
KyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5wcmVkaWNhdGVQb2ludGVyKSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIAorICAgIHN0b3JlUHRyKHJl
Z1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBvaW50ZXIpOworICAgIGlmIChI
ZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQoKSkKKyAgICAgICAgZW1pdFdyaXRlQmFycmllcihn
bG9iYWxPYmplY3QsIHJlZ1QwLCByZWdUMiwgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVC
YXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CisgICAgCisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3B1dF9nbG9i
YWxfdmFyX2NoZWNrKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CisgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9w
ZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjpyZXNldFBhdGNo
R2V0QnlJZChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8tPmNhbGxSZXR1
cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9pZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNzcsNiArMjM3NywxNSBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX25ld19hCiAgICAgcmV0dXJuIGNv
bnN0cnVjdEFycmF5KHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpKSwg
c3RhY2tGcmFtZS5hcmdzWzFdLmludDMyKCkpOwogfQogCitERUZJTkVfU1RVQl9GVU5DVElPTih2
b2lkLCBvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKK3sKKyAgICBTVFVCX0lOSVRfU1RBQ0tfRlJB
TUUoc3RhY2tGcmFtZSk7CisgICAgCisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0Zy
YW1lLmNhbGxGcmFtZTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbGNvayA9IGNhbGxGcmFtZS0+Y29k
ZUJsY29rKCk7CisgICAgc3ltYm9sVGFibGVQdXQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwg
ZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpKSwg
c3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSk7Cit9CisKIERFRklORV9TVFVCX0ZVTkNUSU9O
KEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNvbHZlKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDM2LDYgKzQzNiw3IEBAIGV4dGVybiAiQyIgewogICAgIHZvaWQg
SklUX1NUVUIgY3RpX29wX3BvcF9zY29wZShTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZv
aWQgSklUX1NUVUIgY3RpX29wX3Byb2ZpbGVfZGlkX2NhbGwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9O
KTsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wcm9maWxlX3dpbGxfY2FsbChTVFVCX0FSR1Nf
REVDTEFSQVRJT04pOworICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0
X2J5X2lkKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3Bf
cHV0X2J5X2lkX2ZhaWwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICB2b2lkIEpJVF9TVFVC
IGN0aV9vcF9wdXRfYnlfaWRfZ2VuZXJpYyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTYsNiArODU2LDE0IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3cKICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBzeW1ib2xUYWJsZVB1dChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBleGVjLCBj
b2RlQmxvY2stPmlkZW50aWZpZXIocGNbNF0udS5vcGVyYW5kKSwgTExJTlRfT1BfQygyKSk7Cisg
ICAgTExJTkdfRU5EKCk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ0LDYgKzE0NCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX2IK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKTsK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3dpdGhfYmFzZSk7CiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wdXRfYnlfaWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDExOTgwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM5LDcgKzEwMzksNyBAQCBfbGxpbnRfb3BfcHV0X3Nj
b3BlZF92YXI6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6
CittYWNybyBnZXRHbG9iYWxWYXIoc2l6ZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9h
ZHAgOFtQQ10sIHQwCiAgICAgbG9hZGkgNFtQQ10sIHQzCkBAIC0xMDQ3LDkgKzEwNDcsMTcgQEAg
X2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDBdLCB0
MQogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRp
IChzaXplIC0gMSkgKiA0W1BDXSwgdDMKICAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKLSAg
ICBkaXNwYXRjaCg0KQorICAgIGRpc3BhdGNoKHNpemUpCitlbmQKKworX2xsaW50X29wX2dldF9n
bG9iYWxfdmFyOgorICAgIGdldEdsb2JhbFZhcig0KQorCisKK19sbGludF9vcF9nZXRfZ2xvYmFs
X3Zhcl93YXRjaGFibGU6CisgICAgZ2V0R2xvYmFsVmFyKDUpCiAKIAogX2xsaW50X29wX3B1dF9n
bG9iYWxfdmFyOgpAQCAtMTA2Myw2ICsxMDcxLDIyIEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3Zh
cjoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgMTJbUENdLCB0MgorICAgIGxvYWRpIDhb
UENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJ0Ym56IFt0Ml0sIC5vcFB1dEdsb2Jh
bFZhckNoZWNrU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAg
ICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwXQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MF0KKyAgICBkaXNwYXRjaCg1KQorLm9wUHV0R2xv
YmFsVmFyQ2hlY2tTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9n
bG9iYWxfdmFyX2NoZWNrKQorICAgIGRpc3BhdGNoKDUpCisKKwogX2xsaW50X29wX2dldF9ieV9p
ZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdl
dF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04OTMsMTUgKzg5
MywyMyBAQCBfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1f
bGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CittYWNybyBnZXRHbG9iYWxWYXIoc2l6ZSkKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgMTZbUEIsIFBDLCA4XSwgdDAKICAgICBsb2FkaXMg
OFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRwIFt0MF0sIHQxCiAgICAgc3RvcmVwIHQxLCBbY2Zy
LCB0MywgOF0KLSAgICBsb2FkcCAyNFtQQiwgUEMsIDhdLCB0MAorICAgIGxvYWRwIChzaXplIC0g
MSkgKiA4W1BCLCBQQywgOF0sIHQwCiAgICAgdmFsdWVQcm9maWxlKHQxLCB0MCkKLSAgICBkaXNw
YXRjaCg0KQorICAgIGRpc3BhdGNoKHNpemUpCitlbmQKKworX2xsaW50X29wX2dldF9nbG9iYWxf
dmFyOgorICAgIGdldEdsb2JhbFZhcig0KQorCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3Zhcl93
YXRjaGFibGU6CisgICAgZ2V0R2xvYmFsVmFyKDUpCiAKIAogX2xsaW50X29wX3B1dF9nbG9iYWxf
dmFyOgpAQCAtOTE0LDYgKzkyMiwyMSBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CiAgICAg
ZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRwIDI0W1BCLCBQQywgOF0sIHQyCisgICAgbG9hZGlzIDE2
W1BCLCBQQywgOF0sIHQxCisgICAgbG9hZHAgOFtQQiwgUEMsIDhdLCB0MAorICAgIGJ0Ym56IFt0
Ml0sIC5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDEsIHQyKQorICAgIHdyaXRlQmFycmllcih0MikKKyAgICBzdG9yZXAgdDIsIFt0MF0KKyAgICBk
aXNwYXRjaCg1KQorLm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93OgorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRjaF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKKyAgICBkaXNwYXRjaCg1KQor
CisKIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgICMgV2Ug
b25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8g
bm90IG1vZGlmeSB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDIyICs1MDIsMjUgQEAgdm9p
ZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZQogICAgIHN0cnVjdHVyZSgpLT5z
ZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnJlbW92ZURp
cmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
Citib29sIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGds
b2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIGlmIChz
dHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQg
PSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0g
ICAgICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0U3RydWN0dXJlKGdsb2Jh
bERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlmIChvZmZzZXQgIT0gV1RG
Ojpub3RGb3VuZCkKLSAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsK
KyAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgIHJldHVybiB0cnVl
OwogfQogCiBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xv
dChQcm9wZXJ0eVNsb3QmIHNsb3QsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9u
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lv
biAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAg
ICAgdm9pZCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgYm9vbCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsgLy8gUmV0
dXJuIHRydWUgaWYgYW55dGhpbmcgaXMgcmVtb3ZlZC4KICAgICAgICAgYm9vbCBoYXNDdXN0b21Q
cm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRpb24oKTsgfQogICAg
ICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUo
KS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9u
IDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAg
ICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBv
YmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkp
OworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxl
KCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChlbnRyeS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNsb3Quc2V0VmFsdWUob2JqZWN0
LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpKTsKQEAgLTk2LDcgKzk2LDcgQEAg
aW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBv
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwKICAg
ICBib29sJiBzbG90SXNXcml0ZWFibGUpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9
IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSk7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFi
bGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKGVudHJ5
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgc2xvdC5zZXRWYWx1ZShvYmpl
Y3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwpAQCAtMTEzLDEzICsxMTMs
MTYgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgQVNTRVJUKCFIZWFwOjpoZWFw
KHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKG9iamVjdCkpOwogICAg
IAogICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5s
aW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwo
KSkKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGZhc3RFbnRyeSA9IGVudHJ5OyAvLyBleHRy
YWN0IHRoZSBiaXRzCisgICAgaWYgKGZhc3RFbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsKKyAgICBpZiAoZmFzdEVudHJ5
LmlzUmVhZE9ubHkoKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgaWYgKFVOTElLRUxZKGZhc3RFbnRy
eS5pc0ZhdCgpKSkKKyAgICAgICAgZW50cnkubm90aWZ5V3JpdGUoKTsKICAgICBvYmplY3QtPnJl
Z2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUp
OwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTM2LDYgKzEzOSw3IEBAIGlubGluZSBib29sIHN5
bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5
bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+c2Vjb25kOwogICAgIEFTU0VSVCghZW50cnku
aXNOdWxsKCkpOworICAgIGVudHJ5Lm5vdGlmeVdyaXRlKCk7CiAgICAgZW50cnkuc2V0QXR0cmli
dXRlcyhhdHRyaWJ1dGVzKTsKICAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgo
KSkuc2V0KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lv
biAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJK
U09iamVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50Lmgi
CiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+CiAKQEAgLTQyLDQwICs0MywxMzQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gcmVhc29u
YWJseSBzbWFsbCBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBudW1iZXIsIGFuZCB0aGVyZWZvcmUgaGFz
IGl0cyBoaWdoCiAgICAgLy8gZm91ciBiaXRzIGFsbCBzZXQgb3IgYWxsIHVuc2V0LgogCisgICAg
Ly8gSW4gYWRkaXRpb24gdG8gaW1wbGVtZW50aW5nIHNlbWFudGljcy1tYW5kYXRlZCB2YXJpYWJs
ZSBhdHRyaWJ1dGVzIGFuZAorICAgIC8vIGltcGxlbWVudGF0aW9uLW1hbmRhdGVkIHZhcmlhYmxl
IGluZGV4aW5nLCB0aGlzIGNsYXNzIGFsc28gaW1wbGVtZW50cworICAgIC8vIHdhdGNocG9pbnRz
IHRvIGJlIHVzZWQgZm9yIEpJVCBvcHRpbWl6YXRpb25zLiBCZWNhdXNlIHdhdGNocG9pbnRzIGFy
ZQorICAgIC8vIG1lYW50IHRvIGJlIHJlbGF0aXZlbHkgcmFyZSwgdGhpcyBjbGFzcyBvcHRpbWl6
ZXMgaGVhdmlseSBmb3IgdGhlIGNhc2UKKyAgICAvLyB0aGF0IHRoZXkgYXJlIG5vdCBiZWluZyB1
c2VkLiBUbyB0aGF0IGVuZCwgdGhpcyBjbGFzcyB1c2VzIHRoZSB0aGluLWZhdAorICAgIC8vIGlk
aW9tOiBlaXRoZXIgaXQgaXMgdGhpbiwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyBhbiBpbi1w
bGFjZSBlbmNvZGVkCisgICAgLy8gd29yZCB0aGF0IGNvbnNpc3RzIG9mIGF0dHJpYnV0ZXMsIHRo
ZSBpbmRleCwgYW5kIGEgYml0IHNheWluZyB0aGF0IGl0IGlzCisgICAgLy8gdGhpbjsgb3IgaXQg
aXMgZmF0LCBpbiB3aGljaCBjYXNlIGl0IGNvbnRhaW5zIGEgcG9pbnRlciB0byBhIG1hbGxvYydk
CisgICAgLy8gZGF0YSBzdHJ1Y3R1cmUgYW5kIGEgYml0IHNheWluZyB0aGF0IGl0IGlzIGZhdC4g
VGhlIG1hbGxvYydkIGRhdGEKKyAgICAvLyBzdHJ1Y3R1cmUgd2lsbCBiZSBtYWxsb2NlZCBhIHNl
Y29uZCB0aW1lIHVwb24gY29weSwgdG8gcHJlc2VydmUgdGhlCisgICAgLy8gcHJvcGVydHkgdGhh
dCBpbi1wbGFjZSBlZGl0cyB0byBTeW1ib2xUYWJsZUVudHJ5IGRvIG5vdCBtYW5pZmVzdCBpbiBh
bnkKKyAgICAvLyBjb3BpZXMuIEhvd2V2ZXIsIHRoZSBtYWxsb2MnZCBGYXRFbnRyeSBkYXRhIHN0
cnVjdHVyZSBjb250YWlucyBhIHJlZi0KKyAgICAvLyBjb3VudGVkIHBvaW50ZXIgdG8gYSBzaGFy
ZWQgV2F0Y2hwb2ludFNldC4gVGh1cywgaW4tcGxhY2UgZWRpdHMgb2YgdGhlCisgICAgLy8gV2F0
Y2hwb2ludFNldCB3aWxsIG1hbmlmZXN0IGluIGFsbCBjb3BpZXMuIEhlcmUncyBhIHBpY3R1cmU6
CisgICAgLy8KKyAgICAvLyBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hw
b2ludFNldAorICAgIC8vCisgICAgLy8gSWYgeW91IG1ha2UgYSBjb3B5IG9mIGEgU3ltYm9sVGFi
bGVFbnRyeSwgeW91IHdpbGwgaGF2ZToKKyAgICAvLworICAgIC8vIG9yaWdpbmFsOiBTeW1ib2xU
YWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hwb2ludFNldAorICAgIC8vIGNvcHk6ICAg
ICBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLS0tLV4KKwogICAgIHN0cnVjdCBTeW1i
b2xUYWJsZUVudHJ5IHsKKyAgICAgICAgLy8gVXNlIHRoZSBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0
IGNsYXNzLCBlaXRoZXIgdmlhIGltcGxpY2l0IGNhc3Qgb3IgYnkgY2FsbGluZworICAgICAgICAv
LyBnZXRGYXN0KCksIHdoZW4geW91ICgxKSBvbmx5IGNhcmUgYWJvdXQgaXNOdWxsKCksIGdldElu
ZGV4KCksIGFuZCBpc1JlYWRPbmx5KCksCisgICAgICAgIC8vIGFuZCAoMikgeW91IGFyZSBpbiBh
IGhvdCBwYXRoIHdoZXJlIHlvdSBuZWVkIHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2YgdGltZXMK
KyAgICAgICAgLy8gdGhhdCB5b3UgYnJhbmNoIG9uIGlzRmF0KCkgd2hlbiBnZXR0aW5nIHRoZSBi
aXRzKCkuCisgICAgICAgIGNsYXNzIEZhc3QgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAg
ICBGYXN0KCkKKyAgICAgICAgICAgICAgICA6IG1fYml0cygwKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3Qo
Y29uc3QgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkpCisgICAgICAgICAgICAgICAgOiBtX2JpdHMo
ZW50cnkuYml0cygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gIW1fYml0czsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IGdl
dEluZGV4KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihtX2JpdHMgPj4gRmxhZ0JpdHMpOworICAgICAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0CisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgYm9vbCBpc0ZhdCgpIGNvbnN0CisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIGludHB0
cl90IG1fYml0czsKKyAgICAgICAgfTsKKwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KCkKICAg
ICAgICAgICAgIDogbV9iaXRzKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkoaW50IGluZGV4KQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAg
ICAgcGFjayhpbmRleCwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIFN5bWJv
bFRhYmxlRW50cnkoaW50IGluZGV4LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgICAgICAgICAg
OiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChp
bmRleCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgYXR0cmlidXRlcyAmIFJlYWRPbmx5LCBh
dHRyaWJ1dGVzICYgRG9udEVudW0pOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB+U3lt
Ym9sVGFibGVFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGNvbnN0IFN5bWJv
bFRhYmxlRW50cnkmIG90aGVyKQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSYgb3BlcmF0b3I9KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVy
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFvdGhlci5pc0ZhdCgpKSkgewor
ICAgICAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICAgICAgICAgIG1fYml0cyA9
IG90aGVyLm1fYml0czsKKyAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBGYXRFbnRyeSogbmV3RmF0RW50cnkgPSBuZXcgRmF0RW50cnkoKm90
aGVyLmZhdEVudHJ5KCkpOworICAgICAgICAgICAgZnJlZUZhdEVudHJ5KCk7CisgICAgICAgICAg
ICBtX2JpdHMgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KG5ld0ZhdEVudHJ5KSB8IEZhdEZsYWc7
CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFtX2Jp
dHM7CisgICAgICAgICAgICByZXR1cm4gIWJpdHMoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlu
dCBnZXRJbmRleCgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2JpdHMg
Pj4gRmxhZ0JpdHM7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihiaXRzKCkg
Pj4gRmxhZ0JpdHMpOwogICAgICAgICB9Ci0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJ
TkUgRmFzdCBnZXRGYXN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEZh
c3QoKnRoaXMpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBnZXRBdHRy
aWJ1dGVzKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRl
cyA9IDA7Ci0gICAgICAgICAgICBpZiAobV9iaXRzICYgUmVhZE9ubHlGbGFnKQorICAgICAgICAg
ICAgaW50cHRyX3QgdGhlQml0cyA9IGJpdHMoKTsKKyAgICAgICAgICAgIGlmICh0aGVCaXRzICYg
UmVhZE9ubHlGbGFnKQogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUmVhZE9ubHk7Ci0g
ICAgICAgICAgICBpZiAobV9iaXRzICYgRG9udEVudW1GbGFnKQorICAgICAgICAgICAgaWYgKHRo
ZUJpdHMgJiBEb250RW51bUZsYWcpCiAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBEb250
RW51bTsKICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOwogICAgICAgICB9CkBAIC04Nywz
MCArMTgyLDEzNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzUmVhZE9ubHko
KSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9iaXRzICYgUmVhZE9ubHlG
bGFnOworICAgICAgICAgICAgcmV0dXJuIGJpdHMoKSAmIFJlYWRPbmx5RmxhZzsKICAgICAgICAg
fQotCisgICAgICAgIAorICAgICAgICBib29sIGNvdWxkQmVXYXRjaGVkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93
YXRjaHBvaW50czsKKyAgICAgICAgICAgIGlmICghd2F0Y2hwb2ludHMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHdhdGNocG9pbnRzLT5pc1N0aWxs
VmFsaWQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gTm90aWZ5IGFuIG9wcG9y
dHVuaXR5IHRvIGNyZWF0ZSBhIHdhdGNocG9pbnQgZm9yIGEgdmFyaWFibGUuIFRoaXMgaXMKKyAg
ICAgICAgLy8gaWRlbXBvdGVudCBhbmQgZmFpbC1zaWxlbnQuIEl0IGlzIGlkZW1wb3RlbnQgaW4g
dGhlIHNlbnNlIHRoYXQgaWYKKyAgICAgICAgLy8gYSB3YXRjaHBvaW50IHNldCBoYWQgYWxyZWFk
eSBiZWVuIGNyZWF0ZWQsIHRoZW4gYW5vdGhlciBvbmUgd2lsbCBub3QKKyAgICAgICAgLy8gYmUg
Y3JlYXRlZC4gSGVuY2UgdHdvIGNhbGxzIHRvIHRoaXMgbWV0aG9kIGhhdmUgdGhlIHNhbWUgZWZm
ZWN0IGFzCisgICAgICAgIC8vIG9uZSBjYWxsLiBJdCBpcyBhbHNvIGZhaWwtc2lsZW50LCBpbiB0
aGUgc2Vuc2UgdGhhdCBpZiBhIHdhdGNocG9pbnQKKyAgICAgICAgLy8gc2V0IGhhZCBiZWVuIGNy
ZWF0ZWQgYW5kIGhhZCBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQsIHRoZW4gdGhpcyB3aWxsCisg
ICAgICAgIC8vIGp1c3QgcmV0dXJuLiBUaGlzIG1lYW5zIHRoYXQgY291bGRCZVdhdGNoZWQoKSBt
YXkgcmV0dXJuIGZhbHNlIGV2ZW4KKyAgICAgICAgLy8gaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYWxs
IHRvIGF0dGVtcHRUb1dhdGNoKCkuCisgICAgICAgIHZvaWQgYXR0ZW1wdFRvV2F0Y2goKQorICAg
ICAgICB7CisgICAgICAgICAgICBpbmZsYXRlKCk7CisgICAgICAgICAgICBpZiAoIWZhdEVudHJ5
KCktPm1fd2F0Y2hwb2ludHMpCisgICAgICAgICAgICAgICAgZmF0RW50cnkoKS0+bV93YXRjaHBv
aW50cyA9IGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KCkpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBib29sKiBhZGRyZXNzT2ZJc1dhdGNoZWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7CisgICAgICAgICAgICByZXR1cm4gZmF0RW50
cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkcmVzc09mSXNXYXRjaGVkKCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHZvaWQgYWRkV2F0Y2hwb2ludChXYXRjaHBvaW50KiB3YXRjaHBvaW50
KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7CisgICAg
ICAgICAgICBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLT5hZGQod2F0Y2hwb2ludCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlXcml0ZSgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0g
ZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICAgICAgICAgIGlmICghd2F0Y2hw
b2ludHMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2F0Y2hwb2ludHMt
Pm5vdGlmeVdyaXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFJlYWRPbmx5RmxhZyA9IDB4MTsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4MjsKLSAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIE5vdE51bGxGbGFnID0gMHg0OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgRmxhZ0JpdHMgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRmF0Rmxh
ZyA9IDB4MTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFJlYWRPbmx5RmxhZyA9IDB4
MjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4NDsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vdE51bGxGbGFnID0gMHg4OworICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgRmxhZ0JpdHMgPSA0OworICAgICAgICAKKyAgICAgICAgY2xh
c3MgRmF0RW50cnkgeworICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAg
ICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEZhdEVudHJ5KGludHB0cl90IGJpdHMpCisgICAgICAg
ICAgICAgICAgOiBtX2JpdHMoYml0cyB8IEZhdEZsYWcpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGludHB0cl90IG1fYml0czsgLy8gYWx3YXlzIGhhcyBGYXRG
bGFnIHNldCBhbmQgZXhhY3RseSBtYXRjaGVzIHdoYXQgdGhlIGJpdHMgd291bGQgaGF2ZSBiZWVu
IGlmIHRoaXMgd2Fzbid0IGZhdC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVmUHRyPFdh
dGNocG9pbnRTZXQ+IG1fd2F0Y2hwb2ludHM7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAg
ICBib29sIGlzRmF0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fYml0
cyAmIEZhdEZsYWc7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IEZhdEVudHJ5
KiBmYXRFbnRyeSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0ZhdCgp
KTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgRmF0RW50cnkqPihtX2Jp
dHMgJiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBm
YXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0ZhdCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RmF0RW50cnkqPihtX2JpdHMgJiB+RmF0RmxhZyk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaW5mbGF0ZSgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIG1fYml0cyA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4obmV3IEZhdEVudHJ5KG1fYml0
cykpIHwgRmF0RmxhZzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElO
RSBpbnRwdHJfdCBiaXRzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRmF0
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsKKyAgICAgICAg
ICAgIHJldHVybiBtX2JpdHM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19J
TkxJTkUgaW50cHRyX3QmIGJpdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNGYXQo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV9iaXRzOworICAgICAgICAg
ICAgcmV0dXJuIG1fYml0czsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBmcmVl
RmF0RW50cnkoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWlzRmF0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZGVsZXRlIGZhdEVudHJ5KCk7CisgICAgICAg
IH0KIAogICAgICAgICB2b2lkIHBhY2soaW50IGluZGV4LCBib29sIHJlYWRPbmx5LCBib29sIGRv
bnRFbnVtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2JpdHMgPSAoaW5kZXggPDwgRmxhZ0Jp
dHMpIHwgTm90TnVsbEZsYWc7CisgICAgICAgICAgICBpbnRwdHJfdCYgYml0c1JlZiA9IGJpdHMo
KTsKKyAgICAgICAgICAgIGJpdHNSZWYgPSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8
PCBGbGFnQml0cykgfCBOb3ROdWxsRmxhZzsKICAgICAgICAgICAgIGlmIChyZWFkT25seSkKLSAg
ICAgICAgICAgICAgICBtX2JpdHMgfD0gUmVhZE9ubHlGbGFnOworICAgICAgICAgICAgICAgIGJp
dHNSZWYgfD0gUmVhZE9ubHlGbGFnOwogICAgICAgICAgICAgaWYgKGRvbnRFbnVtKQotICAgICAg
ICAgICAgICAgIG1fYml0cyB8PSBEb250RW51bUZsYWc7CisgICAgICAgICAgICAgICAgYml0c1Jl
ZiB8PSBEb250RW51bUZsYWc7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNW
YWxpZEluZGV4KGludCBpbmRleCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgoaW5k
ZXggPDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRzKSA9PSBpbmRleDsKKyAgICAgICAgICAgIHJldHVy
biAoKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRz
KSA9PSBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpOwogICAgICAgICB9CiAKLSAgICAgICAg
aW50IG1fYml0czsKKyAgICAgICAgaW50cHRyX3QgbV9iaXRzOwogICAgIH07CiAKICAgICBzdHJ1
Y3QgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFN5bWJvbFRhYmxlRW50
cnk+IHsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCShyZXZpc2lvbiAxMTk4MDMpCisr
KyBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTgs
OCArOTgsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBTZWdtZW50ZWRWZWN0b3IgaXMg
anVzdCBsaWtlIFZlY3RvciwgYnV0IGl0IGRvZXNuJ3QgbW92ZSB0aGUgdmFsdWVzCiAgICAgLy8g
c3RvcmVkIGluIGl0cyBidWZmZXIgd2hlbiBpdCBncm93cy4gVGhlcmVmb3JlLCBpdCBpcyBzYWZl
IHRvIGtlZXAKLSAgICAvLyBwb2ludGVycyBpbnRvIGEgU2VnbWVudGVkVmVjdG9yLgotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZl
Y3RvciB7CisgICAgLy8gcG9pbnRlcnMgaW50byBhIFNlZ21lbnRlZFZlY3Rvci4gVGhlIGRlZmF1
bHQgdHVuaW5nIHZhbHVlcyBhcmUKKyAgICAvLyBvcHRpbWl6ZWQgZm9yIHNlZ21lbnRlZCB2ZWN0
b3JzIHRoYXQgZ2V0IGxhcmdlOyB5b3UgbWF5IHdhbnQgdG8gdXNlCisgICAgLy8gU2VnbWVudGVk
VmVjdG9yPHRoaW5neSwgMSwgMD4gaWYgeW91IGRvbid0IGV4cGVjdCBhIGxvdCBvZiBlbnRyaWVz
LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXpl
X3QgSW5saW5lQ2FwYWNpdHkgPSAzMj4KKyAgICBjbGFzcyBTZWdtZW50ZWRWZWN0b3IgewogICAg
ICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+
OwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxU
LCBTZWdtZW50U2l6ZT4gSXRlcmF0b3I7CkBAIC0yNTAsNyArMjUzLDcgQEAgbmFtZXNwYWNlIFdU
RiB7CiAKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKICAgICAgICAgU2VnbWVudCBtX2lubGluZVNl
Z21lbnQ7Ci0gICAgICAgIFZlY3RvcjxTZWdtZW50KiwgMzI+IG1fc2VnbWVudHM7CisgICAgICAg
IFZlY3RvcjxTZWdtZW50KiwgSW5saW5lQ2FwYWNpdHk+IG1fc2VnbWVudHM7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146749</attachid>
            <date>2012-06-10 14:11:50 -0700</date>
            <delta_ts>2012-06-10 17:11:12 -0700</delta_ts>
            <desc>omg it compiles!</desc>
            <filename>globalwatch_patch_7.diff</filename>
            <type>text/plain</type>
            <size>108411</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5OTQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxNyBA
QAorMjAxMi0wNi0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFdvcmsgaW4gcHJvZ3Jlc3MhCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6
CisgICAgICAgIChMYWJlbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OndhdGNocG9pbnRMYWJlbCk6CisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5o
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNz
ZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om1heEp1bXBSZXBs
YWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6Cisg
ICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk12Nzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJl
cGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclNINDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNp
emUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAo
TWFjcm9Bc3NlbWJsZXJYODYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJh
bmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6Om1heEp1bXBSZXBsYWNlbWVu
dFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4Nl82NDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVm
ZmVyLmg6CisgICAgICAgIChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2QXNzZW1ibGVyKToK
KyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6Y21w
Yl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVzdGJfaW0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OmxhYmVsRm9yV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6bGFiZWwpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VX
aXRoSnVtcCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0
ZXI6Om1lbW9yeU1vZFJNKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZE9TUkV4aXQpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkpOgorICAgICAgICAoQ29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRXYXRjaHBvaW50KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZldhdGNocG9pbnRzKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp3YXRjaHBvaW50KToKKyAgICAgICAgKERGR0RhdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkRGRzo6ZXhpdEtpbmRU
b1N0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6ZXhpdEtpbmRJc0NvdW50YWJsZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29k
ZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6On5XYXRjaHBvaW50KToKKyAgICAgICAgKEpT
Qzo6V2F0Y2hwb2ludDo6Y29ycmVjdExhYmVscyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6
OmZpcmUpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KToKKyAg
ICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6fldhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlND
OjpXYXRjaHBvaW50U2V0OjphZGQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3Rp
ZnlXcml0ZVNsb3cpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hw
b2ludHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuaDogQWRkZWQuCisgICAgICAg
IChKU0MpOgorICAgICAgICAoV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6
OldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50OjpzZXREZXN0aW5hdGlvbik6
CisgICAgICAgIChXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6
aXNTdGlsbFZhbGlkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6aGFzQmVlbkludmFs
aWRhdGVkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6bm90aWZ5V3JpdGUpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGRyZXNzT2ZJc1dhdGNoZWQpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1Zhcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5dGVjb2Rl
R2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJlZml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVt
aXRDb2RlU2luZ2xlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NDYWxsSGVscGVycy5oOgorICAgICAgICAo
Q0NhbGxIZWxwZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkNTRVBoYXNlOjpnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWluYXRpb24pOgorICAgICAgICAo
Q1NFUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpnbG9iYWxWYXJTdG9yZUVs
aW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0Up
OgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKiBkZmcvREZHQ29ycmVjdGFi
bGVKdW1wUG9pbnQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6
aXNTZXQpOgorICAgICAgICAoQ29ycmVjdGFibGVKdW1wUG9pbnQpOgorICAgICAgICAqIGRmZy9E
RkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtP
U1JFeGl0cyk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmll
ck51bWJlckZvckNoZWNrKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
aGFzUmVnaXN0ZXJQb2ludGVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKE9TUkV4aXQp
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3Bh
Z2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25XYXRjaHBvaW50
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGpp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3B1dF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2xvYmFsX3Zhcl9jaGVjayk6CisgICAgICAgICogaml0L0pJVFN0dWJz
LmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZW1vdmVEaXJl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTT2JqZWN0KToK
KyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
c3ltYm9sVGFibGVHZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAg
IChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
U3ltYm9sVGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTeW1ib2xUYWJsZUVudHJ5
KToKKyAgICAgICAgKEZhc3QpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0
OjpGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNOdWxsKToK
KyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6Z2V0SW5kZXgpOgorICAgICAg
ICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc1JlYWRPbmx5KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNGYXQpOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZUVudHJ5OjpTeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6flN5bWJvbFRhYmxlRW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojppc051bGwpOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRJbmRleCk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6OmdldEZhc3QpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVu
dHJ5OjpnZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNS
ZWFkT25seSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmNvdWxkQmVXYXRjaGVk
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YXR0ZW1wdFRvV2F0Y2gpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjphZGRyZXNzT2ZJc1dhdGNoZWQpOgorICAgICAg
ICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjphZGRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6d2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRh
YmxlRW50cnk6Om5vdGlmeVdyaXRlKToKKyAgICAgICAgKEZhdEVudHJ5KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnk6OkZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6aXNGYXQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
OjpmYXRFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmluZmxhdGUpOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpiaXRzKToKKyAgICAgICAgKEpTQzo6U3lt
Ym9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6cGFjayk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzVmFsaWRJbmRl
eCk6CisKIDIwMTItMDYtMTAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnVpbGQgZml4IGZvciAhRU5BQkxFKEpJVCkgYWZ0ZXIg
cjExOTg0NCBhbmQgcjExOTkyNS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw4
IEBACiAJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwQTE1
N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3
RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCAqLzsgfTsKIAkJMEY5MTlEMTExNTdGMzMyQzAwNEE0
RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlEMjUxNTg1M0NFMDAwNEE0RTdEIC8qIFdhdGNocG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlE
MjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovOyB9OworCQkwRjkxOUQyNjE1
ODUzQ0UzMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMjMxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9p
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjkzMzI5RDE0Q0E3REMzMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTMxNENBN0RDMTAwODVG
M0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLzsgfTsKIAkJMEY5MzMyOUUxNENBN0RDNTAwODVG
M0M2IC8qIENhbGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjkz
MzI5RjE0Q0E3RENBMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYg
LyogR2V0QnlJZFN0YXR1cy5jcHAgKi87IH07CkBAIC04MzYsNiArODM4LDggQEAKIAkJMEY5MTlE
MEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY5MTlEMEYxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQyMjE1ODUzQ0RFMDA0
QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlE
MjMxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbExpbmtTdGF0dXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtT
dGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbExpbmtTdGF0dXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2
IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2V0QnlJZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjk2
LDYgKzIzMDAsOCBAQAogCQkJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2Zp
bGUuaCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5o
ICovLAogCQkJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAq
LywKKwkJCQkwRjkxOUQyMjE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgKi8sCisJ
CQkJMEY5MTlEMjMxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjY3MSw2
ICsyNjc3LDcgQEAKIAkJCQkwRjE2MDE1RTE1NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRz
U2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdFRTBB
MjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OTE5RDExMTU3RjMzMkMwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0zMjQ1LDYgKzMyNTIsNyBAQAogCQkJCUMyNUY4QkNEMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY5MTlEMEMxNTdFRTA5RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5MTlEMjUxNTg1M0NFMDAwNEE0
RTdEIC8qIFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
aAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIExpbmtCdWZmZXI7CiBjbGFzcyBSZXBhdGNoQnVmZmVyOwor
Y2xhc3MgV2F0Y2hwb2ludDsKIG5hbWVzcGFjZSBERkcgewogY2xhc3MgQ29ycmVjdGFibGVKdW1w
UG9pbnQ7CiB9CkBAIC03MCw3ICs3MSw2IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5n
IHR5cGVzIGFyZSB1c2VkIGFzIG9wZXJhbmRzIHRvIE1hY3JvQXNzZW1ibGVyIG9wZXJhdGlvbnMs
CiAgICAgLy8gZGVzY3JpYmluZyBpbW1lZGlhdGUgIGFuZCBtZW1vcnkgb3BlcmFuZHMgdG8gdGhl
IGluc3RydWN0aW9ucyB0byBiZSBwbGFudGVkLgogCi0KICAgICBlbnVtIFNjYWxlIHsKICAgICAg
ICAgVGltZXNPbmUsCiAgICAgICAgIFRpbWVzVHdvLApAQCAtMjc5LDYgKzI3OSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgZnJpZW5kIGNsYXNzIEp1bXA7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOworICAg
ICAgICBmcmllbmQgY2xhc3MgV2F0Y2hwb2ludDsKIAogICAgIHB1YmxpYzoKICAgICAgICAgTGFi
ZWwoKQpAQCAtNTU5LDYgKzU2MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBMYWJlbCh0
aGlzKTsKICAgICB9CiAgICAgCisgICAgTGFiZWwgd2F0Y2hwb2ludExhYmVsKEp1bXBSZXBsYWNl
bWVudFR5cGUganVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxhYmVsRm9yV2F0Y2hwb2ludChqdW1wUmVwbGFjZW1lbnRUeXBlKTsKKyAgICAgICAgcmV0dXJu
IExhYmVsKHRoaXMpOworICAgIH0KKyAgICAKICAgICBMYWJlbCBhbGlnbigpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5hbGlnbigxNik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgJKHJldmlzaW9uIDExOTgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM5LDYgKzM5LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgZW51bSBK
dW1wUmVwbGFjZW1lbnRUeXBlIHsKKyAgICAgICAgUmVwbGFjZVdpdGhMb2NhbEp1bXAsCisgICAg
ICAgIFJlcGxhY2VXaXRoRmFySnVtcAorICAgIH07CisgICAgCiAgICAgc3RydWN0IEFzc2VtYmxl
ckxhYmVsIHsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwoKQogICAgICAgICAgICAgOiBtX29mZnNl
dChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCShyZXZp
c2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMTAsNiArMTAxMCwxNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4o
QVJNQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAg
IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBp
bnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogcHJvdGVjdGVkOgogICAg
IEFSTUFzc2VtYmxlcjo6Q29uZGl0aW9uIEFSTUNvbmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NDUsNiArNTQ1LDE3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0K
IAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0
cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2b2lk
IHN0b3JlOChSZWdpc3RlcklEIHNyYywgQXJtQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2OCw2ICsxODY4
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCgqKSgpPihNSVBTQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2Nh
dGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2Rl
TG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5h
dGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAK
KyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwog
cHJpdmF0ZToKICAgICAvLyBJZiBtX2ZpeGVkV2lkdGggaXMgdHJ1ZSwgd2Ugd2lsbCBnZW5lcmF0
ZSBhIGZpeGVkIG51bWJlciBvZiBpbnN0cnVjdGlvbnMuCiAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBj
YW4gZW1pdCBhbnkgbnVtYmVyIG9mIGluc3RydWN0aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJKHJldmlzaW9u
IDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJTSDQuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3MSw2ICsxOTcxLDE3IEBAIHZvaWQgb3IzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHMKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihTSDRBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0
KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlv
bkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU0g0QXNzZW1ibGVyOjpDb25kaXRpb24gU0g0
Q29uZGl0aW9uKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShy
ZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRG91YmxlOwogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZURvdWJsZTsKICAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6Y29udmVydEludDMyVG9Eb3VibGU7CisgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4OwogCiAgICAgdm9pZCBhZGQzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKQEAgLTE2
NSw2ICsxNjYsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMnIoaW5p
dGlhbFZhbHVlLmFzSW50cHRyKCksIGRlc3QpOwogICAgICAgICByZXR1cm4gRGF0YUxhYmVsUHRy
KHRoaXMpOwogICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlv
biBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVz
dGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1hc2subV92YWx1ZSA+PSAtMTI4
ICYmIG1hc2subV92YWx1ZSA8PSAyNTUpOworICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0x
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wYl9pbSgwLCBhZGRyZXNzLm1fcHRyKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaW0obWFzay5tX3ZhbHVl
LCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4
NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KIAogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNo
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHIm
IGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1Q
dHIoMCkpCiAgICAgewpAQCAtMTk4LDYgKzIwOSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oY2FsbC5kYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25T
dGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICAvLyBO
T1RFOiBvbiBYODYtMzIgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIgaXMgdW51c2VkLgorICAgICAgICBY
ODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVB
ZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCksIFJlZ2lzdGVySUQ6OmVh
eCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVm
ZmVyOwogICAgIGZyaWVuZCBjbGFzcyBSZXBhdGNoQnVmZmVyOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAko
cmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MTMsNiArNTEzLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoYWRkciwgc2NyYXRjaFJl
Z2lzdGVyKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hU
ZXN0OChjb25kLCBCYXNlSW5kZXgoc2NyYXRjaFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIFRpbWVz
T25lKSwgbWFzayk7CiAgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIpOwor
ICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQs
IEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKSwgbWFzayk7CisgICAgfQogCiAgICAgc3RhdGljIGJv
b2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIC8vIFNlZSBj
b21tZW50IG9uIE1hY3JvQXNzZW1ibGVyQVJNdjc6OnN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5j
YXRlKCkKQEAgLTUyNyw2ICs1MzMsMTYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZ2lzdGVy
SUQgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJldHVybiBzY3JhdGNoUmVnaXN0ZXI7
IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBp
bnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbiwgSnVtcFJlcGxh
Y2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1i
bGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygp
LCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpLCBzY3JhdGNoUmVnaXN0ZXIsIGp1bXBS
ZXBsYWNlbWVudFR5cGUpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1
bXBSZXBsYWNlbWVudFNpemUoSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50
U2l6ZShqdW1wUmVwbGFjZW1lbnRUeXBlKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIExpbmtCdWZmZXI7CiAgICAgZnJpZW5kIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAko
cmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBh
dGNoQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVyVG9UcmFtcG9saW5lKHJldHVybkFkZHJlc3Ms
IENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1bmN0aW9uKSk7CiAgICAgfQotCisgICAgCiBw
cml2YXRlOgogICAgIHZvaWQqIG1fc3RhcnQ7CiAgICAgc2l6ZV90IG1fc2l6ZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNp
b24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjQ3LDYgKzI0Nyw4IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAK
ICAgICBYODZBc3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElO
VF9NSU4pCisgICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikK
ICAgICB7CiAgICAgfQogCkBAIC03OTgsNiArODAwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQ01QLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKICAgICB9CisgICAgCisjaWYgQ1BVKFg4NikKKyAgICB2b2lkIGNtcGJfaW0oaW50IGltbSwg
Y29uc3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkYXRlOChpbW0pOworICAgIH0KKyNlbmRpZgogCiAgICAgdm9pZCBjbXBsX2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQogICAgIHsKQEAgLTk0OCw2ICs5NTgsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQogCisjaWYgQ1BVKFg4NikKKyAgICB2b2lkIHRl
c3RiX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViSWIsIEdST1VQM19PUF9URVNULCBhZGRyKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKyNlbmRpZgorCiAgICAg
dm9pZCB0ZXN0bF9pMzJtKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQM19Fdkl6LCBHUk9VUDNfT1BfVEVTVCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOwpAQCAtMTcwMiwxMCArMTcyMCwyNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9mb3JtYXR0ZXIuY29kZVNpemUoKTsKICAgICB9CisgICAgCisgICAgQXNzZW1i
bGVyTGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50KEp1bXBSZXBsYWNlbWVudFR5cGUganVtcFJlcGxh
Y2VtZW50VHlwZSkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fZm9y
bWF0dGVyLmxhYmVsKCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29m
ZnNldCkgIT0gbV9pbmRleE9mTGFzdFdhdGNocG9pbnQpCisgICAgICAgICAgICByZXN1bHQgPSBs
YWJlbCgpOworICAgICAgICBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNl
dDsKKyAgICAgICAgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZz
ZXQgKyBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKGp1bXBSZXBsYWNlbWVudFR5cGUpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBBc3NlbWJs
ZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICAvLyBGSVhNRTog
bmVlZCB0byBrbm93IHRoZSBzaXplIG9mIHRoZSBsYXN0IHdhdGNocG9pbnQgYXMgd2VsbC4KKyAg
ICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8
IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KSkgeworICAgICAgICAgICAgbm9wKCk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50
IGFsaWdubWVudCkKQEAgLTE3ODIsNiArMTgxNiw0MyBAQCBwdWJsaWM6CiAgICAgICAgIHNldFBv
aW50ZXIod2hlcmUsIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvLCBSZWdpc3RlcklEIHNj
cmF0Y2gsIEp1bXBSZXBsYWNlbWVudFR5cGUganVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7Cisg
ICAgICAgIGludDhfdCAqcHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihpbnN0cnVjdGlv
blN0YXJ0KTsKKyAgICAgICAgaW50OF90ICpkc3RQdHIgPSByZWludGVycHJldF9jYXN0PGludDhf
dCo+KHRvKTsKKyAgICAgICAgaW50cHRyX3QgZGlzdGFuY2UgPSAoaW50cHRyX3QpKGRzdFB0ciAt
IChwdHIgKyA1KSk7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgaWYgKGRpc3RhbmNlID4gSU5U
MzJfTUFYIHx8IGRpc3RhbmNlIDwgSU5UMzJfTUlOKSB7CisgICAgICAgICAgICBBU1NFUlQoanVt
cFJlcGxhY2VtZW50VHlwZSA9PSBSZXBsYWNlV2l0aEZhckp1bXApOworICAgICAgICAgICAgLy8g
bW92cV9pNjRyIGluc3RydWN0aW9uCisgICAgICAgICAgICBwdHJbMF0gPSBQUkVfUkVYIHwgKDE8
PDMpIHwgKHNjcmF0Y2g+PjMpOworICAgICAgICAgICAgcHRyWzFdID0gT1BfTU9WX0VBWEl2ICsg
KHNjcmF0Y2ggJiA3KTsKKyAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0PGludDY0X3QqPihw
dHIrMykgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0
bykpOworICAgICAgICAgICAgcHRyICs9IDEwOworICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBqbXBfciBpbnN0cnVjdGlvbgorICAgICAgICAgICAgaWYgKHNjcmF0Y2ggPj0gWDg2UmVnaXN0
ZXJzOjpyOCkgeworICAgICAgICAgICAgICAgIHB0clswXSA9IFBSRV9SRVggfCAoc2NyYXRjaD4+
Myk7CisgICAgICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBw
dHJbMF0gPSBPUF9HUk9VUDVfRXY7CisgICAgICAgICAgICBwdHJbMV0gPSAoMzw8NikgfCAoR1JP
VVA1X09QX0pNUE48PDMpIHwgKHNjcmF0Y2ggJiA3KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorI2VuZGlmCisgICAgICAgIHB0clswXSA9IE9QX0pNUF9yZWwzMjsKKyAgICAgICAg
KnJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHB0ciArIDEpID0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4oZGlzdGFuY2UpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBS
ZXBsYWNlbWVudFNpemUoSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQor
ICAgIHsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBpZiAoanVtcFJlcGxhY2VtZW50VHlwZSA9
PSBSZXBsYWNlV2l0aEZhckp1bXApCisgICAgICAgICAgICByZXR1cm4gMTM7CisjZW5kaWYKKyAg
ICAgICAgcmV0dXJuIDU7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkKiByZWFkUG9pbnRl
cih2b2lkKiB3aGVyZSkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqKj4od2hlcmUpWy0xXTsKQEAgLTIzMzksNiArMjQxMCw4IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVyOwogICAgIH0gbV9mb3JtYXR0ZXI7CisgICAgaW50
IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0
Y2hwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MjgsMTIgKzkyOCwyOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4
ZWMsIGNvCiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6IHsKKyAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytpdCktPnUucmVnaXN0ZXJQb2ludGVyOworICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlXHQgJXMsIGcl
ZCglcClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgbV9nbG9i
YWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9p
bnRlcik7CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgaXQrKzsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6IHsKICAg
ICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQp
LT51LnJlZ2lzdGVyUG9pbnRlcjsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dsb2JhbF92YXJcdCBnJWQoJXAp
LCAlc1xuIiwgbG9jYXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdp
c3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2s6IHsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiog
cmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKKyAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
cHV0X2dsb2JhbF92YXJfY2hlY2tcdCBnJWQoJXApLCAlc1xuIiwgbG9jYXRpb24sIG1fZ2xvYmFs
T2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50
ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGl0Kys7Cisg
ICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9yZXNvbHZlX2Jhc2U6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMw
Niw3ICsxMzIyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IG9wX2NhbGxfcHV0X3Jlc3VsdFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBjYWxsX3B1dF9yZXN1
bHRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwog
ICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMTk4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3MywxMCArMjczLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBl
bmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkKKyAgICAgICAgdW5zaWduZWQg
YXBwZW5kT1NSRXhpdChjb25zdCBERkc6Ok9TUkV4aXQmIG9zckV4aXQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT5vc3JFeGl0LnNpemUoKTsKICAgICAgICAgICAgIG1fZGZn
RGF0YS0+b3NyRXhpdC5hcHBlbmQob3NyRXhpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBERkc6Ok9TUkV4aXQmIGxhc3RPU1JFeGl0
KCkKQEAgLTI4NCwxMCArMjg2LDIwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG1fZGZnRGF0YS0+b3NyRXhpdC5sYXN0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIHZvaWQgYXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShjb25zdCBERkc6OlNwZWN1bGF0aW9u
UmVjb3ZlcnkmIHJlY292ZXJ5KQorICAgICAgICB1bnNpZ25lZCBhcHBlbmRTcGVjdWxhdGlvblJl
Y292ZXJ5KGNvbnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAg
dW5zaWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LnNpemUoKTsK
ICAgICAgICAgICAgIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5hcHBlbmQocmVjb3Zl
cnkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgdW5zaWduZWQgYXBwZW5kV2F0Y2hwb2ludChjb25zdCBXYXRjaHBvaW50JiB3YXRjaHBv
aW50KQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuc2l6
ZSgpOworICAgICAgICAgICAgbV9kZmdEYXRhLT53YXRjaHBvaW50cy5hcHBlbmQod2F0Y2hwb2lu
dCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZk9TUkV4aXRzKCkKQEAgLTMwNCw2ICszMTYsMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJl
Y292ZXJ5LnNpemUoKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgbnVt
YmVyT2ZXYXRjaHBvaW50cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9kZmdEYXRh
KQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0
YS0+d2F0Y2hwb2ludHMuc2l6ZSgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBERkc6
Ok9TUkV4aXQmIG9zckV4aXQodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBtX2RmZ0RhdGEtPm9zckV4aXRbaW5kZXhdOwpAQCAtMzE0LDYgKzMzMywxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9u
UmVjb3ZlcnlbaW5kZXhdOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50
JiB3YXRjaHBvaW50KHVuc2lnbmVkIGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbV9kZmdEYXRhLT53YXRjaHBvaW50c1tpbmRleF07CisgICAgICAgIH0KKyAgICAgICAgCiAg
ICAgICAgIHZvaWQgYXBwZW5kV2Vha1JlZmVyZW5jZShKU0NlbGwqIHRhcmdldCkKICAgICAgICAg
ewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xMjM4LDYgKzEy
NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5
RGF0YT4gb3NyRW50cnk7CiAgICAgICAgICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0
LCA4PiBvc3JFeGl0OwogICAgICAgICAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVy
eT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKKyAgICAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxXYXRj
aHBvaW50LCAxLCAwPiB3YXRjaHBvaW50czsKICAgICAgICAgICAgIFZlY3RvcjxXZWFrUmVmZXJl
bmNlVHJhbnNpdGlvbj4gdHJhbnNpdGlvbnM7CiAgICAgICAgICAgICBWZWN0b3I8V3JpdGVCYXJy
aWVyPEpTQ2VsbD4gPiB3ZWFrUmVmZXJlbmNlczsKICAgICAgICAgICAgIGJvb2wgbWF5QmVFeGVj
dXRpbmc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2Zp
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhp
dFByb2ZpbGUuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAg
ZW51bSBFeGl0S2luZCB7CiAgICAgSW5hZGVxdWF0ZUNvdmVyYWdlLCAvLyBXZSBleGl0ZWQgYmVj
YXVzZSB3ZSBlbmRlZCB1cCBpbiBjb2RlIHRoYXQgZGlkbid0IGhhdmUgcHJvZmlsaW5nIGNvdmVy
YWdlLgogICAgIEFyZ3VtZW50c0VzY2FwZWQsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFyZ3VtZW50
cyBlc2NhcGVkIGJ1dCB3ZSBkaWRuJ3QgZXhwZWN0IHRoZW0gdG8uCiAgICAgVW5jb3VudGFibGUs
IC8vIFdlIGV4aXRlZCBmb3Igbm9uZSBvZiB0aGUgYWJvdmUgcmVhc29ucywgYW5kIHdlIHNob3Vs
ZCBub3QgY291bnQgaXQuIE1vc3QgdXNlcyBvZiB0aGlzIHNob3VsZCBiZSB2aWV3ZWQgYXMgYSBG
SVhNRS4KKyAgICBVbmNvdW50YWJsZVdhdGNocG9pbnQgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugb2Yg
YSB3YXRjaHBvaW50LCB3aGljaCBpc24ndCBjb3VudGVkIGJlY2F1c2Ugd2F0Y2hwb2ludHMgZG8g
dHJhY2tpbmcgdGhlbXNlbHZlcy4KIH07CiAKIGlubGluZSBjb25zdCBjaGFyKiBleGl0S2luZFRv
U3RyaW5nKEV4aXRLaW5kIGtpbmQpCkBAIC01OCw2ICs1OSwxMiBAQCBpbmxpbmUgY29uc3QgY2hh
ciogZXhpdEtpbmRUb1N0cmluZyhFeGl0CiAgICAgICAgIHJldHVybiAiTmVnYXRpdmVaZXJvIjsK
ICAgICBjYXNlIEluYWRlcXVhdGVDb3ZlcmFnZToKICAgICAgICAgcmV0dXJuICJJbmFkZXF1YXRl
Q292ZXJhZ2UiOworICAgIGNhc2UgQXJndW1lbnRzRXNjYXBlZDoKKyAgICAgICAgcmV0dXJuICJB
cmd1bWVudHNFc2NhcGVkIjsKKyAgICBjYXNlIFVuY291bnRhYmxlOgorICAgICAgICByZXR1cm4g
IlVuY291bnRhYmxlIjsKKyAgICBjYXNlIFVuY291bnRhYmxlV2F0Y2hwb2ludDoKKyAgICAgICAg
cmV0dXJuICJVbmNvdW50YWJsZVdhdGNocG9pbnQiOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiAiVW5rbm93biI7CiAgICAgfQpAQCAtNzAsNiArNzcsNyBAQCBpbmxpbmUgYm9vbCBleGl0
S2luZElzQ291bnRhYmxlKEV4aXRLaW5kCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIGNhc2UgQmFkVHlwZToKICAgICBjYXNlIFVuY291bnRhYmxlOgorICAgIGNhc2UgVW5jb3Vu
dGFibGVXYXRjaHBvaW50OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsxOTMs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBw
cm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIEluc3Ry
dWN0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKSB7IHUucmVnaXN0
ZXJQb2ludGVyID0gcmVnaXN0ZXJQb2ludGVyOyB9CisgICAgICAgIAorICAgICAgICBJbnN0cnVj
dGlvbihib29sKiBwcmVkaWNhdGVQb2ludGVyKSB7IHUucHJlZGljYXRlUG9pbnRlciA9IHByZWRp
Y2F0ZVBvaW50ZXI7IH0KIAogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bj
b2RlOwpAQCAtMjA1LDYgKzIwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgTExJ
bnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZTsKICAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CisgICAgICAgICAgICBib29sKiBw
cmVkaWNhdGVQb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMTk4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMCw3ICsxMDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8o
b3BfZ2V0X3Njb3BlZF92YXIsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAg
ICBtYWNybyhvcF9wdXRfc2NvcGVkX3ZhciwgNCkgXAogICAgICAgICBtYWNybyhvcF9nZXRfZ2xv
YmFsX3ZhciwgNCkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisgICAgICAgIG1hY3JvKG9w
X2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBc
CiAgICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFyLCAzKSBcCisgICAgICAgIG1hY3JvKG9w
X3B1dF9nbG9iYWxfdmFyX2NoZWNrLCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfYmFz
ZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2Vuc3Vy
ZV9wcm9wZXJ0eV9leGlzdHMsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRoX2Jh
c2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQu
aCIKKworI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1dhdGNo
cG9pbnQ6On5XYXRjaHBvaW50KCkKK3sKKyAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgcmVt
b3ZlKCk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6Y29ycmVjdExhYmVscyhMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJlbDsKKyAgICBsYWJl
bC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9zb3VyY2U7CisgICAgbV9zb3VyY2UgPSBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWwpLmRhdGFMb2NhdGlvbigp
KTsKKyAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9kZXN0aW5hdGlvbjsKKyAgICBtX2Rl
c3RpbmF0aW9uID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZlci5sb2NhdGlvbk9m
KGxhYmVsKS5kYXRhTG9jYXRpb24oKSk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6ZmlyZSgpCit7
CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgKKyAgICAgICAgQ29kZUxvY2F0
aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihtX3NvdXJjZSkpLAorICAgICAgICBDb2RlTG9j
YXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KG1fZGVzdGluYXRpb24pKSwKKyAgICAgICAg
UmVwbGFjZVdpdGhMb2NhbEp1bXApOworICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICByZW1v
dmUoKTsKK30KKworV2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldCgpCisgICAgOiBtX2lzV2F0
Y2hlZChmYWxzZSkKKyAgICAsIG1faXNJbnZhbGlkYXRlZChmYWxzZSkKK3sKK30KKworV2F0Y2hw
b2ludFNldDo6fldhdGNocG9pbnRTZXQoKQoreworICAgIC8vIEZpcmUgYWxsIHdhdGNocG9pbnRz
LiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGlzIHBvc3NpYmxlLCBzYXkgd2l0aAorICAg
IC8vIHN0cnVjdHVyZSB3YXRjaHBvaW50cywgZm9yIHRoZSB3YXRjaHBvaW50IHNldCBvd25lciB0
byBkaWUgd2hpbGUgdGhlCisgICAgLy8gd2F0Y2hwb2ludCBvd25lcnMgYXJlIHN0aWxsIGxpdmUu
CisgICAgZmlyZUFsbFdhdGNocG9pbnRzKCk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludFNldDo6YWRk
KFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCit7CisgICAgaWYgKCF3YXRjaHBvaW50KQorICAgICAg
ICByZXR1cm47CisgICAgbV9zZXQucHVzaCh3YXRjaHBvaW50KTsKKyAgICBtX2lzV2F0Y2hlZCA9
IHRydWU7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludFNldDo6bm90aWZ5V3JpdGVTbG93KCkKK3sKKyAg
ICBBU1NFUlQobV9pc1dhdGNoZWQpOworICAgIAorICAgIGZpcmVBbGxXYXRjaHBvaW50cygpOwor
ICAgIG1faXNXYXRjaGVkID0gZmFsc2U7CisgICAgbV9pc0ludmFsaWRhdGVkID0gdHJ1ZTsKK30K
Kwordm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hwb2ludHMoKQoreworICAgIHdoaWxl
ICghbV9zZXQuaXNFbXB0eSgpKQorICAgICAgICBtX3NldC5iZWdpbigpLT5maXJlKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXYXRjaHBvaW50X2gKKyNkZWZpbmUgV2F0Y2hwb2ludF9oCisKKyNpbmNsdWRlICJDb2Rl
TG9jYXRpb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgV2F0Y2hwb2ludCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTxXYXRjaHBvaW50PiB7CitwdWJsaWM6CisgICAgV2F0Y2hwb2ludChXVEY6OlNlbnRpbmVs
VGFnKQorICAgICAgICA6IEJhc2ljUmF3U2VudGluZWxOb2RlKFdURjo6U2VudGluZWwpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBXYXRjaHBvaW50KE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBzb3Vy
Y2UpCisgICAgICAgIDogbV9zb3VyY2Uoc291cmNlLm1fbGFiZWwubV9vZmZzZXQpCisgICAgICAg
ICwgbV9kZXN0aW5hdGlvbihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnRwdHJfdD46Om1heCgpKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXREZXN0aW5hdGlvbihNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBtX2Rlc3RpbmF0aW9uID0gZGVz
dGluYXRpb24ubV9sYWJlbC5tX29mZnNldDsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb3JyZWN0
TGFiZWxzKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpOworICAgIAorICAgIH5XYXRjaHBvaW50KCk7
CisgICAgCisgICAgdm9pZCBmaXJlKCk7CisgICAgCitwcml2YXRlOgorICAgIHVpbnRwdHJfdCBt
X3NvdXJjZTsKKyAgICB1aW50cHRyX3QgbV9kZXN0aW5hdGlvbjsKK307CisKK2NsYXNzIFdhdGNo
cG9pbnRTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXYXRjaHBvaW50U2V0PiB7CitwdWJsaWM6Cisg
ICAgV2F0Y2hwb2ludFNldCgpOworICAgIH5XYXRjaHBvaW50U2V0KCk7CisgICAgCisgICAgYm9v
bCBpc1N0aWxsVmFsaWQoKSBjb25zdCB7IHJldHVybiAhbV9pc0ludmFsaWRhdGVkOyB9CisgICAg
Ym9vbCBoYXNCZWVuSW52YWxpZGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW52YWxpZGF0ZWQ7
IH0KKyAgICAKKyAgICAvLyBBcyBhIGNvbnZlbmllbmNlLCB0aGlzIHdpbGwgaWdub3JlIDAuIFRo
YXQncyBiZWNhdXNlIGNvZGUgcGF0aHMgaW4gdGhlIERGRworICAgIC8vIHRoYXQgY3JlYXRlIHNw
ZWN1bGF0aW9uIHdhdGNocG9pbnRzIG1heSBjaG9vc2UgdG8gYmFpbCBvdXQgaWYgc3BlY3VsYXRp
b24KKyAgICAvLyBoYWQgYWxyZWFkeSBiZWVuIHRlcm1pbmF0ZWQuCisgICAgdm9pZCBhZGQoV2F0
Y2hwb2ludCopOworICAgIAorICAgIHZvaWQgbm90aWZ5V3JpdGUoKQorICAgIHsKKyAgICAgICAg
aWYgKCFtX2lzV2F0Y2hlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbm90aWZ5V3Jp
dGVTbG93KCk7CisgICAgfQorICAgIAorICAgIGJvb2wqIGFkZHJlc3NPZklzV2F0Y2hlZCgpIHsg
cmV0dXJuICZtX2lzV2F0Y2hlZDsgfQorICAgIAorICAgIHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7
IC8vIENhbGwgb25seSBpZiB5b3UndmUgY2hlY2tlZCBpc1dhdGNoZWQuCisgICAgCitwcml2YXRl
OgorICAgIHZvaWQgZmlyZUFsbFdhdGNocG9pbnRzKCk7CisgICAgCisgICAgU2VudGluZWxMaW5r
ZWRMaXN0PFdhdGNocG9pbnQ+IG1fc2V0OworICAgIGJvb2wgbV9pc1dhdGNoZWQ7CisgICAgYm9v
bCBtX2lzSW52YWxpZGF0ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IFdhdGNocG9pbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTE5ODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiwxMyArMjE2LDE5IEBAIGJvb2wgQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZFZhcihjb25zdCBJZGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW50IEJ5dGVj
b2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wg
aXNDb25zdGFudCkKK2ludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKAorICAgIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBDb25zdGFudE1vZGUgY29uc3RhbnRNb2RlLCBGdW5jdGlv
bk1vZGUgZnVuY3Rpb25Nb2RlKQogeworICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk1vZGUpOwog
ICAgIGludCBpbmRleCA9IHN5bWJvbFRhYmxlKCkuc2l6ZSgpOwotICAgIFN5bWJvbFRhYmxlRW50
cnkgbmV3RW50cnkoaW5kZXgsIGlzQ29uc3RhbnQgPyBSZWFkT25seSA6IDApOworICAgIFN5bWJv
bFRhYmxlRW50cnkgbmV3RW50cnkoaW5kZXgsIChjb25zdGFudE1vZGUgPT0gSXNDb25zdGFudCkg
PyBSZWFkT25seSA6IDApOworICAgIGlmIChmdW5jdGlvbk1vZGUgPT0gSXNGdW5jdGlvblRvU3Bl
Y2lhbGl6ZSkKKyAgICAgICAgbmV3RW50cnkuYXR0ZW1wdFRvV2F0Y2goKTsKICAgICBTeW1ib2xU
YWJsZTo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwg
bmV3RW50cnkpOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIGluZGV4ID0g
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0SW5kZXgoKTsKKyAgICBlbHNlCisgICAgICAgIHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kLm5vdGlmeVdyaXRlKCk7CiAgICAgcmV0dXJuIGluZGV4Owog
fQogCkBAIC0yODksMTcgKzI5NSwyMyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoUHJvCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uU3RhY2suc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24gPSBmdW5jdGlv
blN0YWNrW2ldOwotICAgICAgICBnbG9iYWxPYmplY3QtPnJlbW92ZURpcmVjdCgqbV9nbG9iYWxE
YXRhLCBmdW5jdGlvbi0+aWRlbnQoKSk7IC8vIE5ld2x5IGRlY2xhcmVkIGZ1bmN0aW9ucyBvdmVy
d3JpdGUgZXhpc3RpbmcgcHJvcGVydGllcy4KKyAgICAgICAgYm9vbCBwcm9wZXJ0eURpZEV4aXN0
ID0gCisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnJlbW92ZURpcmVjdCgqbV9nbG9iYWxEYXRh
LCBmdW5jdGlvbi0+aWRlbnQoKSk7IC8vIE5ld2x5IGRlY2xhcmVkIGZ1bmN0aW9ucyBvdmVyd3Jp
dGUgZXhpc3RpbmcgcHJvcGVydGllcy4KIAogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKGV4ZWMsIG1ha2VGdW5jdGlvbihleGVjLCBmdW5jdGlvbiksIHNjb3BlQ2hh
aW4pOwotICAgICAgICBpbnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoZnVuY3Rpb24tPmlkZW50KCks
IGZhbHNlKTsKKyAgICAgICAgaW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKAorICAgICAgICAgICAg
ZnVuY3Rpb24tPmlkZW50KCksIElzVmFyaWFibGUsCisgICAgICAgICAgICBwcm9wZXJ0eURpZEV4
aXN0ID8gSXNGdW5jdGlvblRvU3BlY2lhbGl6ZSA6IE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXph
YmxlKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZWdpc3RlckF0KGluZGV4KS5zZXQoKm1fZ2xv
YmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2YXJTdGFjay5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoZ2xvYmFsT2Jq
ZWN0LT5oYXNQcm9wZXJ0eShleGVjLCAqdmFyU3RhY2tbaV0uZmlyc3QpKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGFkZEdsb2JhbFZhcigqdmFyU3RhY2tbaV0uZmlyc3QsIHZhclN0
YWNrW2ldLnNlY29uZCAmIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KTsKKyAgICAgICAg
YWRkR2xvYmFsVmFyKAorICAgICAgICAgICAgKnZhclN0YWNrW2ldLmZpcnN0LAorICAgICAgICAg
ICAgKHZhclN0YWNrW2ldLnNlY29uZCAmIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KSA/
IElzQ29uc3RhbnQgOiBJc1ZhcmlhYmxlLAorICAgICAgICAgICAgTm90RnVuY3Rpb25Pck5vdFNw
ZWNpYWxpemFibGUpOwogICAgIH0KIH0KIApAQCAtMTIwMiw3ICsxMjE0LDkgQEAgUmVzb2x2ZVJl
c3VsdCBCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZQogICAgICAgICAgICAgaWYgKCsraXRlciA9
PSBlbmQpIHsKICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBSZXNvbHZlUmVzdWx0OjpEeW5h
bWljRmxhZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmR5bmFt
aWNJbmRleGVkR2xvYmFsUmVzb2x2ZShlbnRyeS5nZXRJbmRleCgpLCBkZXB0aCwgY3VycmVudFNj
b3BlLCBmbGFncyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmluZGV4
ZWRHbG9iYWxSZXNvbHZlKGVudHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29wZSwgZmxhZ3MpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjppbmRleGVkR2xvYmFsUmVzb2x2
ZSgKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuZ2V0SW5kZXgoKSwgY3VycmVudFNjb3BlLAor
ICAgICAgICAgICAgICAgICAgICBmbGFncyB8IChlbnRyeS5jb3VsZEJlV2F0Y2hlZCgpID8gUmVz
b2x2ZVJlc3VsdDo6V2F0Y2hlZEZsYWcgOiAwKSk7CiAgICAgICAgICAgICB9CiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgICAgICAgICAgaWYgKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGpz
RHluYW1pY0Nhc3Q8SlNBY3RpdmF0aW9uKj4oY3VycmVudFZhcmlhYmxlT2JqZWN0KSkKQEAgLTEy
OTYsNyArMTMxMCw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OnNob3VsZEF2b2lkUmVzb2wK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZShSZWdpc3RlcklEKiBk
c3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5KQogewogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpCi0gICAgICAg
IHJldHVybiBlbWl0R2V0U3RhdGljVmFyKGRzdCwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBlbWl0R2V0U3RhdGljVmFyKGRzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAg
IAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzR2xvYmFsKCkgJiYgIXNob3VsZEF2b2lkUmVzb2x2
ZUdsb2JhbCgpKSB7CiAjaWYgRU5BQkxFKEpJVCkKQEAgLTEzNzksNyArMTM5Myw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKIAogICAgICAgICBpZiAocmVzb2x2
ZVJlc3VsdC5pc1N0YXRpYygpKSB7CiAgICAgICAgICAgICAvLyBEaXJlY3RseSBpbmRleCB0aGUg
cHJvcGVydHkgbG9va3VwIGFjcm9zcyBtdWx0aXBsZSBzY29wZXMuCi0gICAgICAgICAgICBlbWl0
R2V0U3RhdGljVmFyKHByb3BEc3QsIHJlc29sdmVSZXN1bHQpOworICAgICAgICAgICAgZW1pdEdl
dFN0YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiAgICAgICAgICAg
ICByZXR1cm4gYmFzZURzdDsKICAgICAgICAgfQogCkBAIC0xNDE4LDcgKzE0MzIsNyBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiB7CiAgICAgaWYgKHJlc29sdmVS
ZXN1bHQuaXNTdGF0aWMoKSkgewogICAgICAgICBlbWl0TG9hZChiYXNlRHN0LCBqc1VuZGVmaW5l
ZCgpKTsKLSAgICAgICAgZW1pdEdldFN0YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0KTsK
KyAgICAgICAgZW1pdEdldFN0YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0
eSk7CiAgICAgICAgIHJldHVybiBiYXNlRHN0OwogICAgIH0KIApAQCAtMTQzNiw3ICsxNDUwLDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIHJldHVybiBl
bWl0UmVzb2x2ZShwcm9wRHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiB9CiAKLVJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRz
dCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCkKK1JlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVz
b2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
IHsKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAwOwogCkBAIC0xNDcyLDEzICsxNDg2LDI0
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0U3QKICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgICAgICByZXR1cm4gZHN0OwogCisgICAg
Y2FzZSBSZXNvbHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAgLy8gU2tp
cCB0aGUgcGVlcGhvbGUgZm9yIG5vdy4gSXQncyBub3QgY2xlYXIgdGhhdCBpdCdzIHByb2ZpdGFi
bGUgZ2l2ZW4KKyAgICAgICAgLy8gdGhlIERGRydzIGNhcGFiaWxpdGllcywgYW5kIHRoZSBmYWN0
IHRoYXQgaWYgaXQncyB3YXRjaGFibGUgdGhlbiB3ZQorICAgICAgICAvLyBkb24ndCBleHBlY3Qg
dG8gc2VlIGFueSBwdXRfZ2xvYmFsX3ZhcidzIGFueXdheS4KKyAgICAgICAgcHJvZmlsZSA9IGVt
aXRQcm9maWxlZE9wY29kZShvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHJlc29sdmVSZXN1bHQucmVnaXN0ZXJQb2ludGVyKCkpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOyAvLyBGb3IgdGhlIGJl
bmVmaXQgb2YgdGhlIERGRy4KKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUp
OworICAgICAgICByZXR1cm4gZHN0OworCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIAotUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYg
cmVzb2x2ZVJlc3VsdCwgUmVnaXN0ZXJJRCogdmFsdWUpCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVz
dWx0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsK
ICAgICBzd2l0Y2ggKHJlc29sdmVSZXN1bHQudHlwZSgpKSB7CiAgICAgY2FzZSBSZXNvbHZlUmVz
dWx0OjpSZWdpc3RlcjoKQEAgLTE0OTksNiArMTUyNCwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dFN0CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNv
bHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHZhbHVlLT5pbmRleCgpKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAKKyAg
ICBjYXNlIFJlc29sdmVSZXN1bHQ6OldhdGNoZWRJbmRleGVkR2xvYmFsOgorICAgICAgICBlbWl0
T3Bjb2RlKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHJlc29sdmVSZXN1bHQucmVnaXN0ZXJQb2ludGVyKCkpOworICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoanNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ocmVzb2x2ZVJlc3VsdC5nbG9iYWxPYmplY3Qo
KSktPnN5bWJvbFRhYmxlKCkuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKS5hZGRyZXNzT2ZJc1dhdGNo
ZWQoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChpZGVudGlm
aWVyKSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTE5ODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICAvLyBUaGUgcmVzb2x2ZWQgYmluZGluZyBpcyBpbW11dGFibGUuCiAgICAgICAgICAg
ICBSZWFkT25seUZsYWcgPSAweDIwLAogICAgICAgICAgICAgLy8gVGhlIGJhc2Ugb2JqZWN0IGlz
IHRoZSBnbG9iYWwgb2JqZWN0LgotICAgICAgICAgICAgR2xvYmFsRmxhZyA9IDB4NDAKKyAgICAg
ICAgICAgIEdsb2JhbEZsYWcgPSAweDQwLAorICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5IGlz
IGJlaW5nIHdhdGNoZWQsIHNvIHdyaXRlcyBzaG91bGQgYmUgc3BlY2lhbC4KKyAgICAgICAgICAg
IFdhdGNoZWRGbGFnID0gMHg4MAogICAgICAgICB9OwogICAgICAgICBlbnVtIFR5cGUgewogICAg
ICAgICAgICAgLy8gVGhlIHByb3BlcnR5IGlzIGxvY2FsLCBhbmQgc3RvcmVkIGluIGEgcmVnaXN0
ZXIuCkBAIC0xMzEsNiArMTMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAvLyBi
aW5kaW5nIGNyZWF0ZWQgd2l0aCAidmFyIiBhdCB0aGUgdG9wIGxldmVsLiBBdCBydW50aW1lIHdl
J2xsCiAgICAgICAgICAgICAvLyBqdXN0IGluZGV4IGludG8gdGhlIGdsb2JhbCBvYmplY3QuCiAg
ICAgICAgICAgICBJbmRleGVkR2xvYmFsID0gSW5kZXhlZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3Rh
dGljRmxhZywKKyAgICAgICAgICAgIC8vIExpa2UgSW5kZXhlZEdsb2JhbCwgYnV0IHRoZSBwcm9w
ZXJ0eSBpcyBiZWluZyB3YXRjaGVkLgorICAgICAgICAgICAgV2F0Y2hlZEluZGV4ZWRHbG9iYWwg
PSBJbmRleGVkRmxhZyB8IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnIHwgV2F0Y2hlZEZsYWcsCiAg
ICAgICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWwsIGJ1dCB0aGUgcHJvcGVydHkgaXMgYWxz
byByZWFkLW9ubHksIGxpa2UgTmFOLAogICAgICAgICAgICAgLy8gSW5maW5pdHksIG9yIHVuZGVm
aW5lZC4KICAgICAgICAgICAgIFJlYWRPbmx5SW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwg
UmVhZE9ubHlGbGFnIHwgR2xvYmFsRmxhZyB8IFN0YXRpY0ZsYWcsCkBAIC00NDEsOCArNDQ1LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUeXBlT2YoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRVbmFyeU9wKG9wX3R5cGVv
ZiwgZHN0LCBzcmMpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbihSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBiYXNlKSB7IHJldHVybiBlbWl0
QmluYXJ5T3Aob3BfaW4sIGRzdCwgcHJvcGVydHksIGJhc2UsIE9wZXJhbmRUeXBlcygpKTsgfQog
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRTdGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBj
b25zdCBSZXNvbHZlUmVzdWx0Jik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRTdGF0aWNW
YXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYsIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVS
ZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRT
dGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImLCBSZWdpc3Rl
cklEKiB2YWx1ZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmUoUmVnaXN0ZXJJ
RCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZUJhc2UoUmVnaXN0ZXJJRCogZHN0LCBj
b25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwpAQCAtNTc0
LDcgKzU3OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgLy8gUmV0
dXJucyB0aGUgaW5kZXggb2YgdGhlIGFkZGVkIHZhci4KLSAgICAgICAgaW50IGFkZEdsb2JhbFZh
cihjb25zdCBJZGVudGlmaWVyJiwgYm9vbCBpc0NvbnN0YW50KTsKKyAgICAgICAgZW51bSBDb25z
dGFudE1vZGUgeyBJc0NvbnN0YW50LCBJc1ZhcmlhYmxlIH07CisgICAgICAgIGVudW0gRnVuY3Rp
b25Nb2RlIHsgSXNGdW5jdGlvblRvU3BlY2lhbGl6ZSwgTm90RnVuY3Rpb25Pck5vdFNwZWNpYWxp
emFibGUgfTsKKyAgICAgICAgaW50IGFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiwgQ29u
c3RhbnRNb2RlIGNvbnN0YW50TW9kZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSk7CiAKICAg
ICAgICAgdm9pZCBhZGRQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYsIGludCBwYXJhbWV0ZXJJ
bmRleCk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MzAsNyArNDMwLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5v
ZGU6OmVtaQogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpIHsKICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGZ1bmMuZ2V0KCksIHJlc29sdmVSZXN1bHQpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZlUmVz
dWx0LCBtX2lkZW50KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5n
ZXQoKSksIGZ1bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCks
IGVuZE9mZnNldCgpKTsKICAgICB9CkBAIC02MTgsNyArNjE4LDcgQEAgUmVnaXN0ZXJJRCogUG9z
dGZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZQogICAgIH0KIAogICAgIGlmIChyZXNvbHZlUmVzdWx0
LmlzU3RhdGljKCkgJiYgIXJlc29sdmVSZXN1bHQuaXNSZWFkT25seSgpKSB7Ci0gICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IG9sZFZhbHVlOwogICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
IHsKICAgICAgICAgICAgIG9sZFZhbHVlID0gMDsKQEAgLTYyNiw3ICs2MjYsNyBAQCBSZWdpc3Rl
cklEKiBQb3N0Zml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlCiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgICAg
IH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgdmFs
dWUuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVz
dWx0LCBtX2lkZW50LCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKICAg
ICB9CiAgICAgCkBAIC04MDMsOSArODAzLDkgQEAgUmVnaXN0ZXJJRCogUHJlZml4UmVzb2x2ZU5v
ZGU6OmVtaXRCeXRlYwogICAgIH0KIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkg
JiYgIXJlc29sdmVSZXN1bHQuaXNSZWFkT25seSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcm9wRHN0ID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCksIHJlc29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBlbWl0UHJl
SW5jT3JEZWMoZ2VuZXJhdG9yLCBwcm9wRHN0LmdldCgpLCBtX29wZXJhdG9yKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgcHJvcERzdC5nZXQoKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIG1faWRl
bnQsIHByb3BEc3QuZ2V0KCkpOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKICAgICB9CiAKQEAgLTEyMjYsOSAr
MTIyNiw5IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIKICAgICB9
CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0Lmlz
UmVhZE9ubHkoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRv
ci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2
ZVJlc3VsdCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVt
aXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVz
dWx0LCBtX2lkZW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZW1pdFJlYWRNb2Rp
ZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBz
cmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVz
KFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCByZXN1
bHQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBt
X2lkZW50LCByZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTI1
Niw3ICsxMjU2LDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlYwog
ICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgICAg
ICBkc3QgPSAwOwogICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fcmlnaHQpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNv
bHZlUmVzdWx0LCB2YWx1ZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJl
c29sdmVSZXN1bHQsIG1faWRlbnQsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAg
IH0KIApAQCAtMTM2MSw3ICsxMzYxLDcgQEAgUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6ZW1p
dENvZGVTaW5nbAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG1faW5pdCA/IGdlbmVy
YXRvci5lbWl0Tm9kZShtX2luaXQpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVk
KCkpOwogCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkKLSAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHZhbHVlLmdldCgpKTsK
KyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQs
IG1faWRlbnQsIHZhbHVlLmdldCgpKTsKICAgICAKICAgICBpZiAoZ2VuZXJhdG9yLmNvZGVUeXBl
KCkgIT0gRXZhbENvZGUpCiAgICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24g
MTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQ3Niw3ICsxNDc2LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZp
bHRlcihTcGVjRnVuY3Rpb24pOwogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUgdG8g
cHJvcGFnYXRlIHRoZSBmYWN0IHRoYXQgd2Uga25vdyB3aGF0IHRoZSBmdW5jdGlvbiBpcy4KICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKKyAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkOgog
ICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOwpA
QCAtMTQ4OCw4ICsxNDg4LDEzIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25l
ZCBpbmQKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAgZm9yTm9kZShu
b2RlSW5kZXgpLm1ha2VUb3AoKTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2Ug
R2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOworICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgIGNh
c2UgUHV0R2xvYmFsVmFyQ2hlY2s6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyMzksMTMgKzIyMzksNjEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOiB7CiAgICAgICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0U3BlY3VsYXRpb24oKTsKICAgICAgICAg
ICAgIAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKwogICAgICAgICAgICAgTm9k
ZUluZGV4IGdldEdsb2JhbFZhciA9IGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgR2V0R2xv
YmFsVmFyLAotICAgICAgICAgICAgICAgIE9wSW5mbyhtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCktPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAgICAgICAgICAgT3BJ
bmZvKGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpKSwKICAgICAgICAgICAgICAgICBPcEluZm8o
cHJlZGljdGlvbikpOwogICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsIGdldEdsb2JhbFZhcik7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZ2xv
YmFsX3Zhcik7CiAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
b3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uID0gZ2V0U3BlY3VsYXRpb24oKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFw
W2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOworICAgICAgICAgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcik7
CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsT2JqZWN0LT5zeW1i
b2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSk7CisgICAgICAgICAgICBpZiAoIWVudHJ5
LmNvdWxkQmVXYXRjaGVkKCkpIHsKKyAgICAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0R2xvYmFs
VmFyID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAgR2V0R2xvYmFsVmFyLAorICAg
ICAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5U
aGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAg
ICAgICAgICAgICAgICAgICBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgIHNl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOworICAgICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoZSB3YXRjaHBvaW50IGlz
IHN0aWxsIGludGFjdCEgVGhpcyBtZWFucyB0aGF0IHdlIHdpbGwgZ2V0IG5vdGlmaWVkIGlmIHRo
ZQorICAgICAgICAgICAgLy8gY3VycmVudCB2YWx1ZSBpbiB0aGUgZ2xvYmFsIHZhcmlhYmxlIGNo
YW5nZXMuIFNvLCB3ZSBjYW4gaW5saW5lIHRoYXQgdmFsdWUuCisgICAgICAgICAgICAvLyBNb3Jl
b3ZlciwgY3VycmVudGx5IHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIHZhbHVlIGlzIGEgSlNGdW5j
dGlvbiosIHdoaWNoCisgICAgICAgICAgICAvLyBpbXBsaWVzIHRoYXQgaXQncyBhIGNlbGwuIFRo
aXMgc2ltcGxpZmllcyB0aGluZ3MsIHNpbmNlIGluIGdlbmVyYWwgd2UnZCBoYXZlCisgICAgICAg
ICAgICAvLyB0byB1c2UgYSBKU0NvbnN0YW50IGZvciBub24tY2VsbHMgYW5kIGEgV2Vha0pTQ29u
c3RhbnQgZm9yIGNlbGxzLiBTbyBpbnN0ZWFkCisgICAgICAgICAgICAvLyBvZiBoYXZpbmcgYm90
aCBjYXNlcyB3ZSBqdXN0IGFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhIGNlbGwuCisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIE5CLiBJZiBpdCB3YXNuJ3QgZm9yIENTRSwgR2xvYmFsVmFy
V2F0Y2hwb2ludCB3b3VsZCBoYXZlIG5vIG5lZWQgZm9yIHRoZQorICAgICAgICAgICAgLy8gcmVn
aXN0ZXIgcG9pbnRlci4gQnV0IENTRSB0cmFja3MgZWZmZWN0cyBvbiBnbG9iYWwgdmFyaWFibGVz
IGJ5IGNvbXBhcmluZworICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcG9pbnRlcnMuIEJlY2F1c2Ug
Q1NFIGV4ZWN1dGVzIG11bHRpcGxlIHRpbWVzIHdoaWxlIHRoZSBiYWNrZW5kCisgICAgICAgICAg
ICAvLyBleGVjdXRlcyBvbmNlLCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBwZXJmb3JtYW5jZSB0cmFk
ZS1vZmY6CisgICAgICAgICAgICAvLyAtIFRoZSBub2RlIHJlZmVycyBkaXJlY3RseSB0byB0aGUg
cmVnaXN0ZXIgcG9pbnRlciB0byBtYWtlIENTRSBzdXBlciBjaGVhcC4KKyAgICAgICAgICAgIC8v
IC0gVG8gcGVyZm9ybSBiYWNrZW5kIGNvZGUgZ2VuZXJhdGlvbiwgdGhlIG5vZGUgb25seSBjb250
YWlucyB0aGUgaWRlbnRpZmllcgorICAgICAgICAgICAgLy8gICBudW1iZXIsIGZyb20gd2hpY2gg
aXQgaXMgcG9zc2libGUgdG8gZ2V0ICh2aWEgYSBmZXcgYXZlcmFnZS10aW1lIE8oMSkKKyAgICAg
ICAgICAgIC8vICAgbG9va3VwcykgdG8gdGhlIFdhdGNocG9pbnRTZXQuCisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAgICAgICAgR2xvYmFsVmFyV2F0Y2hw
b2ludCwKKyAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3Rl
cklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikp
LAorICAgICAgICAgICAgICAgIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+cmVn
aXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChzcGVj
aWZpY1ZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQs
IE9wSW5mbyhzcGVjaWZpY1ZhbHVlLmFzQ2VsbCgpKSkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpOworICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAgICAgTm9kZUlu
ZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwpAQCAtMjI1
Niw2ICsyMzA0LDI4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9nbG9iYWxfdmFyKTsKICAgICAgICAgfQog
CisgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6IHsKKyAgICAgICAgICAgIE5v
ZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAg
ICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2Rl
QmxvY2s7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IG1f
Y29kZUJsb2NrLT5pZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKS5nZXQoaWRl
bnRpZmllci5pbXBsKCkpOworICAgICAgICAgICAgaWYgKCFlbnRyeS5jb3VsZEJlV2F0Y2hlZCgp
KSB7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAgUHV0
R2xvYmFsVmFyLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5hc3Nl
cnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVy
UG9pbnRlcikpLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICBQdXRHbG9iYWxWYXJDaGVjaywK
KyAgICAgICAgICAgICAgICBPcEluZm8oY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+YXNzZXJ0
UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBv
aW50ZXIpKSwKKyAgICAgICAgICAgICAgICBPcEluZm8oaWRlbnRpZmllck51bWJlciksCisgICAg
ICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOworICAgICAgICB9CisKICAgICAgICAgLy8gPT09IEJsb2NrIHRlcm1pbmF0
b3JzLiA9PT0KIAogICAgICAgICBjYXNlIG9wX2ptcDogewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NCw2ICs5NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
ICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwogICAgIH0KKyAgICAKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKKyAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3Rh
dGUoKQogICAgIHsKQEAgLTQzMyw2ICs0MzksMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
c2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50
R1BSMT4oYXJnMSwgYXJnMik7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlKGFy
ZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
Nyw2ICsyMTcsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9CiAg
ICAgCisgICAgYm9vbCBnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWluYXRpb24oV3JpdGVCYXJyaWVy
PFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgeworICAgICAgICAgICAgTm9kZUluZGV4IGluZGV4
ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOworICAgICAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3Jh
cGhbaW5kZXhdOworICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAgICAg
IGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5yZWdp
c3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQdXRH
bG9iYWxWYXI6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0g
cmVnaXN0ZXJQb2ludGVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2xvYmJlcnNX
b3JsZChpbmRleCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICBOb2RlSW5kZXggZ2xvYmFsVmFyU3RvcmVF
bGltaW5hdGlvbihXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcikKICAgICB7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CkBAIC0y
MjYsNiArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFB1dEdsb2JhbFZh
cjoKKyAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6CiAgICAgICAgICAgICAgICAg
aWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05ODUs
NyArMTAwOSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoZ2xvYmFs
VmFyTG9hZEVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoK
KyAgICAgICAgICAgIGlmIChnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWluYXRpb24obm9kZS5yZWdp
c3RlclBvaW50ZXIoKSkpCisgICAgICAgICAgICAgICAgZWxpbWluYXRlKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAg
ICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAgICAgIGlmIChtX2ZpeHBvaW50U3Rh
dGUgPT0gRml4cG9pbnROb3RDb252ZXJnZWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBlbGltaW5hdGUoZ2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbihub2RlLnJlZ2lzdGVy
UG9pbnRlcigpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNkZWZpbmUgREZHX0VOQUJMRShERkdf
RkVBVFVSRSkgKGRlZmluZWQgREZHX0VOQUJMRV8jI0RGR19GRUFUVVJFICYmIERGR19FTkFCTEVf
IyNERkdfRkVBVFVSRSkKIAogLy8gRW1pdCB2YXJpb3VzIGxvZ2dpbmcgaW5mb3JtYXRpb24gZm9y
IGRlYnVnZ2luZywgaW5jbHVkaW5nIGR1bXBpbmcgdGhlIGRhdGFmbG93IGdyYXBocy4KLSNkZWZp
bmUgREZHX0VOQUJMRV9ERUJVR19WRVJCT1NFIDAKKyNkZWZpbmUgREZHX0VOQUJMRV9ERUJVR19W
RVJCT1NFIDEKIC8vIEVtaXQgZHVtcHMgZHVyaW5nIHByb3BhZ2F0aW9uLCBpbiBhZGRpdGlvbiB0
byBqdXN0IGFmdGVyLgogI2RlZmluZSBERkdfRU5BQkxFX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJP
U0UgMAogLy8gRW1pdCBsb2dnaW5nIGZvciBPU1IgZXhpdCB2YWx1ZSByZWNvdmVyaWVzIGF0IGV2
ZXJ5IG5vZGUsIG5vdCBqdXN0IG5vZGVzIHRoYXQKQEAgLTcwLDcgKzcwLDcgQEAKIC8vIEVtaXQg
YSBicmVha3BvaW50IGludG8gdGhlIHNwZWN1bGF0aW9uIGZhaWx1cmUgY29kZS4KICNkZWZpbmUg
REZHX0VOQUJMRV9KSVRfQlJFQUtfT05fU1BFQ1VMQVRJT05fRkFJTFVSRSAwCiAvLyBMb2cgZXZl
cnkgc3BlY3VsYXRpb24gZmFpbHVyZS4KLSNkZWZpbmUgREZHX0VOQUJMRV9WRVJCT1NFX1NQRUNV
TEFUSU9OX0ZBSUxVUkUgMAorI2RlZmluZSBERkdfRU5BQkxFX1ZFUkJPU0VfU1BFQ1VMQVRJT05f
RkFJTFVSRSAxCiAvLyBEaXNhYmxlIHRoZSBERkcgSklUIHdpdGhvdXQgaGF2aW5nIHRvIHRvdWNo
IFBsYXRmb3JtLmgKICNkZWZpbmUgREZHX0RFQlVHX0xPQ0FMX0RJU0JBTEUgMAogLy8gRW5hYmxl
IE9TUiBlbnRyeSBmcm9tIGJhc2VsaW5lIEpJVC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgJKHJldmlzaW9uIDExOTgw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsMTEgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
fQogICAgIAorICAgIGJvb2wgaXNTZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29kZU9m
ZnNldCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CisgICAgfQorICAg
IAogICAgIHZvaWQgc3dpdGNoVG9MYXRlSnVtcChNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVt
cCBjaGVjaykKICAgICB7CiAjaWZuZGVmIE5ERUJVRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw3ICs0NCwxMSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoKQogewogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0cygp
OyArK2kpIHsKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkp
OwotICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMpOworICAgICAg
ICBBU1NFUlQoIWV4aXQubV9jaGVjay5pc1NldCgpID09IChleGl0Lm1fd2F0Y2hwb2ludEluZGV4
ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOworICAgICAgICBpZiAo
ZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCisgICAgICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0
Lm1fd2F0Y2hwb2ludEluZGV4KS5zZXREZXN0aW5hdGlvbihsYWJlbCgpKTsKICAgICAgICAgaml0
QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIo
aSksICZnbG9iYWxEYXRhKCktPm9zckV4aXRJbmRleCk7CiAgICAgICAgIGV4aXQubV9jaGVjay5z
d2l0Y2hUb0xhdGVKdW1wKHBhdGNoYWJsZUp1bXAoKSk7CkBAIC0xOTAsNiArMTk0LDkgQEAgdm9p
ZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICBPU1JFeGl0JiBl
eGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhl
eGl0Lm1fY2hlY2subGF0ZUp1bXAoKSwgdGFyZ2V0KTsKICAgICAgICAgZXhpdC5tX2NoZWNrLmNv
cnJlY3RMYXRlSnVtcChsaW5rQnVmZmVyKTsKKyAgICAgICAgQVNTRVJUKCFleGl0Lm1fY2hlY2su
aXNTZXQoKSA9PSAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICAgICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXgg
IT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgICAgICAgICAgY29k
ZUJsb2NrKCktPndhdGNocG9pbnQoZXhpdC5tX3dhdGNocG9pbnRJbmRleCkuY29ycmVjdExhYmVs
cyhsaW5rQnVmZmVyKTsKICAgICB9CiAgICAgCiAgICAgY29kZUJsb2NrKCktPnNocmlua1RvRml0
KENvZGVCbG9jazo6TGF0ZVNocmluayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzMCw5ICs0MzAsMjAgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzSWRlbnRp
Zmllck51bWJlckZvckNoZWNrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEdsb2Jh
bFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXJDaGVjazsKKyAgICB9CisgICAg
CisgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNJZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKSk7CisgICAgICAgIHJldHVybiBt
X29wSW5mbzI7CisgICAgfQorICAgIAogICAgIGJvb2wgaGFzUmVnaXN0ZXJQb2ludGVyKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IEdldEdsb2JhbFZhciB8fCBvcCgpID09IFB1dEds
b2JhbFZhcjsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2V0R2xvYmFsVmFyIHx8IG9wKCkgPT0g
UHV0R2xvYmFsVmFyIHx8IG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hwb2ludCB8fCBvcCgpID09IFB1
dEdsb2JhbFZhckNoZWNrOwogICAgIH0KICAgICAKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4q
IHJlZ2lzdGVyUG9pbnRlcigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0U2NvcGVkVmFyLCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhHZXRHbG9iYWxWYXIsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRHbG9iYWxWYXIs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHbG9iYWxWYXJXYXRjaHBvaW50LCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUHV0R2xvYmFsVmFyQ2hlY2ssIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgXAogICAgIC8qIE9wdGltaXphdGlvbnMgZm9yIGFycmF5IG11dGF0aW9uLiAqL1wKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAxMTk4MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpA
QCAtOTYsNiArOTYsNyBAQCBzdHJ1Y3QgT1NSRXhpdCB7CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVP
cmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7
CisgICAgdW5zaWduZWQgbV93YXRjaHBvaW50SW5kZXg7CiAgICAgCiAgICAgRXhpdEtpbmQgbV9r
aW5kOwogICAgIHVpbnQzMl90IG1fY291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNCw2
ICs5MjQsMTEgQEAgdm9pZCogREZHX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29ucwogICAg
IHJldHVybiB2aXJ0dWFsRm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCit2
b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5R2xvYmFsVmFyV3JpdGUoV2F0Y2hwb2lu
dFNldCogd2F0Y2hwb2ludFNldCkKK3sKKyAgICB3YXRjaHBvaW50U2V0LT5ub3RpZnlXcml0ZSgp
OworfQorCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmUoRXhl
Y1N0YXRlKiBleGVjLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTAwLDYgKzEwMCw3IEBAIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXQK
IHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpKSikoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0
eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VKUFApKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCopOwogdHlwZWRlZiB2b2lk
IERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FUFpKKShFeGVjU3RhdGUqLCB2b2lkKiwg
aW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpW
X0RGR09wZXJhdGlvbl9XKShXYXRjaHBvaW50U2V0Kik7CiB0eXBlZGVmIHZvaWQqIERGR19PUEVS
QVRJT04gKCpQX0RGR09wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIAogLy8gVGhlc2Ugcm91dGlu
ZXMgYXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRpb25zIG9mIG9w
ZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgpAQCAtMTE2LDYgKzExNyw3IEBAIEVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2UKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBJZGVudGlmaWVyKik7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxDdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiwgSlNDZWxsKiwgUHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmMsIElkZW50aWZpZXIqKTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uQ2FsbEdldHRlcihFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKTsKK3ZvaWQgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZShXYXRjaHBvaW50U2V0Kik7CiBF
bmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmUoRXhlY1N0YXRlKiwg
SWRlbnRpZmllciopOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNv
bHZlQmFzZShFeGVjU3RhdGUqLCBJZGVudGlmaWVyKik7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvblJlc29sdmVCYXNlU3RyaWN0UHV0KEV4ZWNTdGF0ZSosIElkZW50aWZp
ZXIqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDkxLDcgKzQ5MSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgUHV0R2xvYmFs
VmFyOiB7CisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAgICBjYXNlIFB1dEdsb2Jh
bFZhckNoZWNrOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTY2OSw2ICs2NzAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRlYXJPZmZB
cmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ2hlY2tOdW1iZXI6CiAgICAgICAgIGNhc2UgQ2hlY2tB
cmd1bWVudHNOb3RDcmVhdGVkOgorICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYxNSw2ICszNjE1LDQxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRHbG9iYWxW
YXJDaGVjazogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICAgICAgCisgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQgPQor
ICAgICAgICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJv
bFRhYmxlKCkuZ2V0KAorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVy
TnVtYmVyRm9yQ2hlY2soKSktPmltcGwoKSkud2F0Y2hwb2ludFNldCgpOworICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
Ok5vblplcm8sCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJl
c3Mod2F0Y2hwb2ludFNldC0+YWRkcmVzc09mSXNXYXRjaGVkKCkpKSwKKyAgICAgICAgICAgICAg
ICB0aGlzLCBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZSwgTm9SZXN1bHQsIHdhdGNocG9p
bnRTZXQpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmllckVuYWJs
ZWQoKSkgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAg
ICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHdyaXRlQmFycmllcihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3Jp
Z2luKSwgdmFsdWUuZ3ByKCksIG5vZGUuY2hpbGQxKCksIFdyaXRlQmFycmllckZvclZhcmlhYmxl
QWNjZXNzLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9qaXQu
c3RvcmVQdHIodmFsdWUuZ3ByKCksIG5vZGUucmVnaXN0ZXJQb2ludGVyKCkpOworCisgICAgICAg
IG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAg
ICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKKyAgICAgICAgbV9qaXQuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCkuZ2V0KAorICAgICAgICAg
ICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKS0+aW1wbCgpKS5h
ZGRXYXRjaHBvaW50KAorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpKTsK
KyAgICAgICAgCisgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOiB7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
MTQsNiArMTQxNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJnMikpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX1cgb3BlcmF0aW9uLCBXYXRj
aHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHMoVHJ1c3RlZEltbVB0cih3YXRjaHBvaW50U2V0KSk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9u
VHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMT4KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5
cGUxIGFyZzEpCiAgICAgewpAQCAtMTY3Miw2ICsxNjc3LDExIEBAIHB1YmxpYzoKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRf
RFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9XIG9wZXJhdGlvbiwgV2F0Y2hwb2lu
dFNldCogd2F0Y2hwb2ludFNldCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
KFRydXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOworICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUs
IHR5cGVuYW1lIEFyZ3VtZW50VHlwZTE+CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBh
cmcxKQogICAgIHsKQEAgLTE3OTMsNiArMTgwMywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0
Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBj
YWxsOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsKGNvbnN0IEZ1bmN0
aW9uUHRyJiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwo
KTsKKyAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOworICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdDEsIEdQUlJlZyByZXN1
bHQyKQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwpAQCAtMjE5MCw2ICsyMjA1LDMyIEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0No
ZWNraW5nQXJndW1lbnRUeXBlcyk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soa2luZCwganNW
YWx1ZVNvdXJjZSwgbm9kZVVzZS5pbmRleCgpLCBqdW1wVG9GYWlsLCByZWNvdmVyeSk7CiAgICAg
fQorICAgIC8vIFVzZSB0aGlzIGxpa2UgeW91IHdvdWxkIHVzZSBzcGVjdWxhdGlvbkNoZWNrKCks
IGV4Y2VwdCB0aGF0IHlvdSBkb24ndCBwYXNzIGl0IGEganVtcAorICAgIC8vIChiZWNhdXNlIHlv
dSBkb24ndCBoYXZlIHRvIGV4ZWN1dGUgYSBicmFuY2g7IHRoYXQncyBraW5kIG9mIHRoZSB3aG9s
ZSBwb2ludCksIGFuZCB5b3UKKyAgICAvLyBtdXN0IHJlZ2lzdGVyIHRoZSByZXR1cm5lZCBXYXRj
aHBvaW50IHdpdGggc29tZXRoaW5nIHJlbGV2YW50LiBJbiBnZW5lcmFsLCB0aGlzIHNob3VsZAor
ICAgIC8vIGJlIHVzZWQgd2l0aCBleHRyZW1lIGNhcmUuIFVzZSBzcGVjdWxhdGlvbkNoZWNrKCkg
dW5sZXNzIHlvdSd2ZSBnb3QgYW4gYW1hemluZyByZWFzb24KKyAgICAvLyBub3QgdG8uCisgICAg
V2F0Y2hwb2ludCogc3BlY3VsYXRpb25XYXRjaHBvaW50KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVT
b3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAg
IGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBBU1NF
UlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5
cGVzKTsKKyAgICAgICAgT1NSRXhpdCYgZXhpdCA9IG1faml0LmNvZGVCbG9jaygpLT5vc3JFeGl0
KAorICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoCisgICAgICAg
ICAgICAgICAgT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJ
bmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCgpLCB0aGlz
KSkpOworICAgICAgICBleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID0gbV9qaXQuY29kZUJsb2NrKCkt
PmFwcGVuZFdhdGNocG9pbnQoCisgICAgICAgICAgICBXYXRjaHBvaW50KG1faml0LndhdGNocG9p
bnRMYWJlbChSZXBsYWNlV2l0aExvY2FsSnVtcCkpKTsKKyAgICAgICAgcmV0dXJuICZtX2ppdC5j
b2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KTsKKyAgICB9Cisg
ICAgLy8gVGhlIGRlZmF1bHQgZm9yIHNwZWN1bGF0aW9uIHdhdGNocG9pbnRzIGlzIHRoYXQgdGhl
eSdyZSB1bmNvdW50ZWQsIGJlY2F1c2UgdGhlCisgICAgLy8gYWN0IG9mIGZpcmluZyBhIHdhdGNo
cG9pbnQgaW52YWxpZGF0ZXMgaXQuIFNvLCBmdXR1cmUgcmVjb21waWxhdGlvbnMgd2lsbCBub3QK
KyAgICAvLyBhdHRlbXB0IHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYWdhaW4uCisgICAgV2F0Y2hw
b2ludCogc3BlY3VsYXRpb25XYXRjaHBvaW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBzcGVj
dWxhdGlvbldhdGNocG9pbnQoVW5jb3VudGFibGVXYXRjaHBvaW50LCBKU1ZhbHVlU291cmNlKCks
IE5vTm9kZSk7CisgICAgfQogICAgIHZvaWQgZm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2soRXhpdEtp
bmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBWYWx1ZVJlY292ZXJ5JiB2
YWx1ZVJlY292ZXJ5KQogICAgIHsKICAgICAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5j
YW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw2ICsyNTksNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlf
dmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKICAgICAgICAg
REVGSU5FX09QKG9wX2dldF9ieV9wbmFtZSkKKyAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zh
cl93YXRjaGFibGU6IC8vIElkZW50aWNhbCB0byBnZXRfZ2xvYmFsX3ZhciBmcm9tIHRoZSBKSVQn
cyBzdGFuZHBvaW50LgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2dsb2JhbF92YXIpCiAgICAg
ICAgIERFRklORV9PUChvcF9nZXRfcG5hbWVzKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Nj
b3BlZF92YXIpCkBAIC0zMjQsNiArMzI1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVGSU5F
X09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dsb2Jh
bF92YXIpCisgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9zY29wZWRfdmFyKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVz
b2x2ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfYmFzZSkKQEAgLTQ4MSw2ICs0ODMs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwp
CisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9yc2hpZnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTY2Miw2ICs2NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9nZXR0ZXJfc2V0dGVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9w
dXRfZ2xvYmFsX3ZhcihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2ds
b2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9z
Y29wZWRfdmFyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlX2Jhc2UoSW5zdHJ1Y3Rp
b24qKTsKQEAgLTczOSw2ICs3NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9wcmVfaW5jKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNr
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX3Jlc29sdmVfZ2xvYmFsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcnNoaWZ0KEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lv
biAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDkwLDYgKzEwOTAsMzcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0
ICsgT1BDT0RFX0xFTkdUSChvcF9wdXRfZ2xvYmFsX3ZhciksIHZhbHVlLCByZWdUMSwgcmVnVDAp
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVn
aXN0ZXJQb2ludGVyID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2ludGVyOwor
ICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnRydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpOworICAgIAorICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOworICAgIAorICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIGN1cnJlbnRJbnN0cnVjdGlvblszXS51
LnByZWRpY2F0ZVBvaW50ZXIpKTsKKyAgICAKKyAgICBpZiAoSGVhcDo6aXNXcml0ZUJhcnJpZXJF
bmFibGVkKCkpIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJl
Z1QyKTsKKyAgICAgICAgZW1pdFdyaXRlQmFycmllcihnbG9iYWxPYmplY3QsIHJlZ1QxLCByZWdU
MywgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3Mp
OworICAgIH0KKyAgICAKKyAgICBzdG9yZTMyKHJlZ1QxLCByZWdpc3RlclBvaW50ZXItPnRhZ1Bv
aW50ZXIoKSk7CisgICAgc3RvcmUzMihyZWdUMCwgcmVnaXN0ZXJQb2ludGVyLT5wYXlsb2FkUG9p
bnRlcigpKTsKKyAgICB1bm1hcCgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2xvYmFs
X3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAg
ICAKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dsb2JhbF92YXJf
Y2hlY2spOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxLCByZWdUMCk7CisgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9w
ZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjpyZXNldFBhdGNo
R2V0QnlJZChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8tPmNhbGxSZXR1
cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9pZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMjcsNiArMTAyNywyOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFs
X3ZhcihJbnN0cnVjCiAgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0LCByZWdU
MCwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxl
QWNjZXNzKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICAKKyAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3MoY3VycmVudElu
c3RydWN0aW9uWzNdLnUucHJlZGljYXRlUG9pbnRlcikpKTsKKworICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgCisgICAg
c3RvcmVQdHIocmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcik7
CisgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKQorICAgICAgICBlbWl0V3Jp
dGVCYXJyaWVyKGdsb2JhbE9iamVjdCwgcmVnVDAsIHJlZ1QyLCBTaG91bGRGaWx0ZXJJbW1lZGlh
dGVzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7Cit9CisKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKKyAgICAKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlf
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1Qw
KTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0
aW9uWzRdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6
OnJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5m
by0+Y2FsbFJldHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3Nyw2
ICsyMzc3LDE1IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X2EKICAg
ICByZXR1cm4gY29uc3RydWN0QXJyYXkoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIoc3RhY2tGcmFtZS5hcmdzWzBd
LmludDMyKCkpLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIoKSk7CiB9CiAKK0RFRklORV9TVFVC
X0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQoreworICAgIFNUVUJfSU5J
VF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKyAgICAKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBzeW1ib2xUYWJsZVB1dChjb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLCBjYWxsRnJhbWUsIGNvZGVCbG9jay0+aWRlbnRpZmllcihzdGFja0ZyYW1lLmFy
Z3NbMV0uaW50MzIoKSksIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCksIHRydWUpOworfQor
CiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZSkKIHsKICAg
ICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzNiw2ICs0MzYsNyBAQCBl
eHRlcm4gIkMiIHsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wb3Bfc2NvcGUoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKTsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wcm9maWxlX2RpZF9jYWxs
KFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHJvZmls
ZV93aWxsX2NhbGwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKKyAgICB2b2lkIEpJVF9TVFVCIGN0
aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZv
aWQgSklUX1NUVUIgY3RpX29wX3B1dF9ieV9pZChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAg
IHZvaWQgSklUX1NUVUIgY3RpX29wX3B1dF9ieV9pZF9mYWlsKFNUVUJfQVJHU19ERUNMQVJBVElP
Tik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU2LDYgKzg1
NiwxNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV93CiAgICAgTExJ
TlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfZ2xvYmFs
X3Zhcl9jaGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgc3ltYm9sVGFibGVQdXQoY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzRdLnUub3BlcmFu
ZCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCB0cnVlKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKIHsKICAgICBMTElO
VF9CRUdJTigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfYgogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOwogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF9iYXNlKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X2dsb2JhbF92YXJfY2hlY2spOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50
c19sZW5ndGgpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTEwMzksNyArMTAzOSw3IEBAIF9sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBkaXNw
YXRjaCg0KQogCiAKLV9sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKK21hY3JvIGdldEdsb2JhbFZh
cihzaXplKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCA4W1BDXSwgdDAKICAgICBs
b2FkaSA0W1BDXSwgdDMKQEAgLTEwNDcsOSArMTA0NywxNyBAQCBfbGxpbnRfb3BfZ2V0X2dsb2Jh
bF92YXI6CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MF0sIHQxCiAgICAgc3RvcmVpIHQyLCBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KLSAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZGkgKHNpemUgLSAxKSAqIDRbUENd
LCB0MwogICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQotICAgIGRpc3BhdGNoKDQpCisgICAg
ZGlzcGF0Y2goc2l6ZSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgZ2V0
R2xvYmFsVmFyKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKKyAg
ICBnZXRHbG9iYWxWYXIoNSkKIAogCiBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CkBAIC0xMDYz
LDYgKzEwNzEsMjIgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgogICAgIGRpc3BhdGNoKDMp
CiAKIAorX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkcCAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgYnRibnogW3QyXSwgLm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93CisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHdyaXRlQmFycmllcih0Miwg
dDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDBdCisgICAgc3RvcmVpIHQzLCBQYXlsb2Fk
T2Zmc2V0W3QwXQorICAgIGRpc3BhdGNoKDUpCisub3BQdXRHbG9iYWxWYXJDaGVja1Nsb3c6Cisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2dsb2JhbF92YXJfY2hlY2spCisg
ICAgZGlzcGF0Y2goNSkKKworCiBfbGxpbnRfb3BfZ2V0X2J5X2lkOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9y
IG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24g
MTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTg5MywxNSArODkzLDIzIEBAIF9sbGludF9vcF9w
dXRfc2NvcGVkX3ZhcjoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9vcF9nZXRfZ2xvYmFs
X3ZhcjoKK21hY3JvIGdldEdsb2JhbFZhcihzaXplKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBsb2FkcCAxNltQQiwgUEMsIDhdLCB0MAogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAg
ICAgbG9hZHAgW3QwXSwgdDEKICAgICBzdG9yZXAgdDEsIFtjZnIsIHQzLCA4XQotICAgIGxvYWRw
IDI0W1BCLCBQQywgOF0sIHQwCisgICAgbG9hZHAgKHNpemUgLSAxKSAqIDhbUEIsIFBDLCA4XSwg
dDAKICAgICB2YWx1ZVByb2ZpbGUodDEsIHQwKQotICAgIGRpc3BhdGNoKDQpCisgICAgZGlzcGF0
Y2goc2l6ZSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgZ2V0R2xvYmFs
VmFyKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKKyAgICBnZXRH
bG9iYWxWYXIoNSkKIAogCiBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CkBAIC05MTQsNiArOTIy
LDIxIEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBkaXNwYXRjaCgzKQogCiAKK19s
bGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZHAgMjRbUEIsIFBDLCA4XSwgdDIKKyAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDEKKyAg
ICBsb2FkcCA4W1BCLCBQQywgOF0sIHQwCisgICAgYnRibnogW3QyXSwgLm9wUHV0R2xvYmFsVmFy
Q2hlY2tTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIpCisgICAgd3JpdGVC
YXJyaWVyKHQyKQorICAgIHN0b3JlcCB0MiwgW3QwXQorICAgIGRpc3BhdGNoKDUpCisub3BQdXRH
bG9iYWxWYXJDaGVja1Nsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0
X2dsb2JhbF92YXJfY2hlY2spCisgICAgZGlzcGF0Y2goNSkKKworCiBfbGxpbnRfb3BfZ2V0X2J5
X2lkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMg
Z2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAx
MTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwMiwyMiArNTAyLDI1IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3Rh
dGljRnVuY3Rpb25zRm9yRGUKICAgICBzdHJ1Y3R1cmUoKS0+c2V0U3RhdGljRnVuY3Rpb25zUmVp
ZmllZCgpOwogfQogCi12b2lkIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU09iamVjdDo6cmVt
b3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUpID09IFdURjo6bm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgc2l6ZV90IG9mZnNldDsKICAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5jYWNo
ZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJlbW92
ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAg
ICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAgICAgICAgcHV0VW5kZWZp
bmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAo
b2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlO
YW1lLCBvZmZzZXQpKTsKLSAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAg
IHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CisgICAgaWYgKG9mZnNldCA9PSBX
VEY6Om5vdEZvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcHV0VW5kZWZpbmVkQXRE
aXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogTkVWRVJfSU5MSU5F
IHZvaWQgSlNPYmplY3Q6OmZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiBzbG90
LCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTc2
LDcgKzE3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlvblRv
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCi0gICAgICAgIHZvaWQgcmVtb3ZlRGlyZWN0
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIGJvb2wgcmVtb3ZlRGlyZWN0
KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7IC8vIFJldHVybiB0cnVlIGlmIGFueXRoaW5n
IGlzIHJlbW92ZWQuCiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJu
IHN0cnVjdHVyZSgpLT5kaWRUcmFuc2l0aW9uKCk7IH0KICAgICAgICAgYm9vbCBoYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclBy
b3BlcnRpZXMoKTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RU
eXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RU
eXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgp
LmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVu
dHJ5OjpGYXN0IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBzbG90LnNldFZhbHVlKG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5n
ZXRJbmRleCgpKS5nZXQoKSk7CkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBib29sIHN5bWJvbFRh
YmxlR2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsCiAgICAgYm9vbCYgc2xvdElzV3JpdGVh
YmxlKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxl
KCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxl
RW50cnk6OkZhc3QgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHNsb3Quc2V0VmFsdWUob2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5
LmdldEluZGV4KCkpLmdldCgpKTsKQEAgLTExMywxMyArMTEzLDE2IEBAIGlubGluZSBib29sIHN5
bWJvbFRhYmxlUHV0KAogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVh
cCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKICAgICAKICAgICBTeW1ib2xUYWJsZUVu
dHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGVF
bnRyeTo6RmFzdCBmYXN0RW50cnkgPSBlbnRyeTsgLy8gZXh0cmFjdCB0aGUgYml0cworICAgIGlm
IChmYXN0RW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZW50
cnkuaXNSZWFkT25seSgpKSB7CisgICAgaWYgKGZhc3RFbnRyeS5pc1JlYWRPbmx5KCkpIHsKICAg
ICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQorICAgIGlmIChVTkxJS0VMWShmYXN0RW50cnkuaXNGYXQoKSkpCisgICAgICAg
IGVudHJ5Lm5vdGlmeVdyaXRlKCk7CiAgICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldElu
ZGV4KCkpLnNldChnbG9iYWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTEzNiw2ICsxMzksNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRy
aWJ1dGVzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRy
eSA9IGl0ZXItPnNlY29uZDsKICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICBlbnRy
eS5ub3RpZnlXcml0ZSgpOwogICAgIGVudHJ5LnNldEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAg
ICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCBv
YmplY3QsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJVU3RyaW5nLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9BbHdh
eXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCkBAIC00Miw0MCArNDMs
MTM0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIHJlYXNvbmFibHkgc21hbGwgcG9zaXRpdmUg
b3IgbmVnYXRpdmUgbnVtYmVyLCBhbmQgdGhlcmVmb3JlIGhhcyBpdHMgaGlnaAogICAgIC8vIGZv
dXIgYml0cyBhbGwgc2V0IG9yIGFsbCB1bnNldC4KIAorICAgIC8vIEluIGFkZGl0aW9uIHRvIGlt
cGxlbWVudGluZyBzZW1hbnRpY3MtbWFuZGF0ZWQgdmFyaWFibGUgYXR0cmlidXRlcyBhbmQKKyAg
ICAvLyBpbXBsZW1lbnRhdGlvbi1tYW5kYXRlZCB2YXJpYWJsZSBpbmRleGluZywgdGhpcyBjbGFz
cyBhbHNvIGltcGxlbWVudHMKKyAgICAvLyB3YXRjaHBvaW50cyB0byBiZSB1c2VkIGZvciBKSVQg
b3B0aW1pemF0aW9ucy4gQmVjYXVzZSB3YXRjaHBvaW50cyBhcmUKKyAgICAvLyBtZWFudCB0byBi
ZSByZWxhdGl2ZWx5IHJhcmUsIHRoaXMgY2xhc3Mgb3B0aW1pemVzIGhlYXZpbHkgZm9yIHRoZSBj
YXNlCisgICAgLy8gdGhhdCB0aGV5IGFyZSBub3QgYmVpbmcgdXNlZC4gVG8gdGhhdCBlbmQsIHRo
aXMgY2xhc3MgdXNlcyB0aGUgdGhpbi1mYXQKKyAgICAvLyBpZGlvbTogZWl0aGVyIGl0IGlzIHRo
aW4sIGluIHdoaWNoIGNhc2UgaXQgY29udGFpbnMgYW4gaW4tcGxhY2UgZW5jb2RlZAorICAgIC8v
IHdvcmQgdGhhdCBjb25zaXN0cyBvZiBhdHRyaWJ1dGVzLCB0aGUgaW5kZXgsIGFuZCBhIGJpdCBz
YXlpbmcgdGhhdCBpdCBpcworICAgIC8vIHRoaW47IG9yIGl0IGlzIGZhdCwgaW4gd2hpY2ggY2Fz
ZSBpdCBjb250YWlucyBhIHBvaW50ZXIgdG8gYSBtYWxsb2MnZAorICAgIC8vIGRhdGEgc3RydWN0
dXJlIGFuZCBhIGJpdCBzYXlpbmcgdGhhdCBpdCBpcyBmYXQuIFRoZSBtYWxsb2MnZCBkYXRhCisg
ICAgLy8gc3RydWN0dXJlIHdpbGwgYmUgbWFsbG9jZWQgYSBzZWNvbmQgdGltZSB1cG9uIGNvcHks
IHRvIHByZXNlcnZlIHRoZQorICAgIC8vIHByb3BlcnR5IHRoYXQgaW4tcGxhY2UgZWRpdHMgdG8g
U3ltYm9sVGFibGVFbnRyeSBkbyBub3QgbWFuaWZlc3QgaW4gYW55CisgICAgLy8gY29waWVzLiBI
b3dldmVyLCB0aGUgbWFsbG9jJ2QgRmF0RW50cnkgZGF0YSBzdHJ1Y3R1cmUgY29udGFpbnMgYSBy
ZWYtCisgICAgLy8gY291bnRlZCBwb2ludGVyIHRvIGEgc2hhcmVkIFdhdGNocG9pbnRTZXQuIFRo
dXMsIGluLXBsYWNlIGVkaXRzIG9mIHRoZQorICAgIC8vIFdhdGNocG9pbnRTZXQgd2lsbCBtYW5p
ZmVzdCBpbiBhbGwgY29waWVzLiBIZXJlJ3MgYSBwaWN0dXJlOgorICAgIC8vCisgICAgLy8gU3lt
Ym9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAvLworICAg
IC8vIElmIHlvdSBtYWtlIGEgY29weSBvZiBhIFN5bWJvbFRhYmxlRW50cnksIHlvdSB3aWxsIGhh
dmU6CisgICAgLy8KKyAgICAvLyBvcmlnaW5hbDogU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50
cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAvLyBjb3B5OiAgICAgU3ltYm9sVGFibGVFbnRyeSAt
LT4gRmF0RW50cnkgLS0tLS1eCisKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7CisgICAg
ICAgIC8vIFVzZSB0aGUgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBjbGFzcywgZWl0aGVyIHZpYSBp
bXBsaWNpdCBjYXN0IG9yIGJ5IGNhbGxpbmcKKyAgICAgICAgLy8gZ2V0RmFzdCgpLCB3aGVuIHlv
dSAoMSkgb25seSBjYXJlIGFib3V0IGlzTnVsbCgpLCBnZXRJbmRleCgpLCBhbmQgaXNSZWFkT25s
eSgpLAorICAgICAgICAvLyBhbmQgKDIpIHlvdSBhcmUgaW4gYSBob3QgcGF0aCB3aGVyZSB5b3Ug
bmVlZCB0byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIHRpbWVzCisgICAgICAgIC8vIHRoYXQgeW91
IGJyYW5jaCBvbiBpc0ZhdCgpIHdoZW4gZ2V0dGluZyB0aGUgYml0cygpLgorICAgICAgICBjbGFz
cyBGYXN0IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgRmFzdCgpCisgICAgICAgICAg
ICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0KGNvbnN0IFN5bWJvbFRhYmxlRW50
cnkmIGVudHJ5KQorICAgICAgICAgICAgICAgIDogbV9iaXRzKGVudHJ5LmJpdHMoKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29sIGlzTnVs
bCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFtX2JpdHM7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBnZXRJbmRleCgpIGNvbnN0CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9iaXRz
ID4+IEZsYWdCaXRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29s
IGlzUmVhZE9ubHkoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBtX2JpdHMgJiBSZWFkT25seUZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGJvb2wgaXNGYXQoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBtX2JpdHMgJiBGYXRGbGFnOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBpbnRwdHJfdCBtX2JpdHM7CisgICAgICAg
IH07CisKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSgpCiAgICAgICAgICAgICA6IG1fYml0cygw
KQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGludCBp
bmRleCkKKyAgICAgICAgICAgIDogbV9iaXRzKDApCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVChpc1ZhbGlkSW5kZXgoaW5kZXgpKTsKICAgICAgICAgICAgIHBhY2soaW5kZXgsIGZhbHNl
LCBmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGludCBpbmRl
eCwgdW5zaWduZWQgYXR0cmlidXRlcykKKyAgICAgICAgICAgIDogbV9iaXRzKDApCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkSW5kZXgoaW5kZXgpKTsKICAgICAgICAgICAg
IHBhY2soaW5kZXgsIGF0dHJpYnV0ZXMgJiBSZWFkT25seSwgYXR0cmlidXRlcyAmIERvbnRFbnVt
KTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgflN5bWJvbFRhYmxlRW50cnkoKQorICAg
ICAgICB7CisgICAgICAgICAgICBmcmVlRmF0RW50cnkoKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgU3ltYm9sVGFibGVFbnRyeShjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikK
KyAgICAgICAgICAgIDogbV9iaXRzKDApCisgICAgICAgIHsKKyAgICAgICAgICAgICp0aGlzID0g
b3RoZXI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIG9w
ZXJhdG9yPShjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKExJS0VMWSghb3RoZXIuaXNGYXQoKSkpIHsKKyAgICAgICAgICAgICAgICBmcmVl
RmF0RW50cnkoKTsKKyAgICAgICAgICAgICAgICBtX2JpdHMgPSBvdGhlci5tX2JpdHM7CisgICAg
ICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRmF0
RW50cnkqIG5ld0ZhdEVudHJ5ID0gbmV3IEZhdEVudHJ5KCpvdGhlci5mYXRFbnRyeSgpKTsKKyAg
ICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICAgICAgbV9iaXRzID0gYml0d2lzZV9j
YXN0PGludHB0cl90PihuZXdGYXRFbnRyeSkgfCBGYXRGbGFnOworICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhbV9iaXRzOworICAgICAgICAgICAgcmV0
dXJuICFiaXRzKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgZ2V0SW5kZXgoKSBjb25zdAog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9iaXRzID4+IEZsYWdCaXRzOworICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYml0cygpID4+IEZsYWdCaXRzKTsKICAgICAg
ICAgfQotCisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QgZ2V0RmFzdCgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBGYXN0KCp0aGlzKTsKKyAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgdW5zaWduZWQgZ2V0QXR0cmlidXRlcygpIGNvbnN0CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwotICAgICAgICAgICAg
aWYgKG1fYml0cyAmIFJlYWRPbmx5RmxhZykKKyAgICAgICAgICAgIGludHB0cl90IHRoZUJpdHMg
PSBiaXRzKCk7CisgICAgICAgICAgICBpZiAodGhlQml0cyAmIFJlYWRPbmx5RmxhZykKICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IFJlYWRPbmx5OwotICAgICAgICAgICAgaWYgKG1fYml0
cyAmIERvbnRFbnVtRmxhZykKKyAgICAgICAgICAgIGlmICh0aGVCaXRzICYgRG9udEVudW1GbGFn
KQogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gRG9udEVudW07CiAgICAgICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlczsKICAgICAgICAgfQpAQCAtODcsMzAgKzE4MiwxNDIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgIHJl
dHVybiBiaXRzKCkgJiBSZWFkT25seUZsYWc7CiAgICAgICAgIH0KLQorICAgICAgICAKKyAgICAg
ICAgYm9vbCBjb3VsZEJlV2F0Y2hlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghaXNG
YXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBXYXRjaHBv
aW50U2V0KiB3YXRjaHBvaW50cyA9IGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7Cisg
ICAgICAgICAgICBpZiAoIXdhdGNocG9pbnRzKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybiB3YXRjaHBvaW50cy0+aXNTdGlsbFZhbGlkKCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE5vdGlmeSBhbiBvcHBvcnR1bml0eSB0byBjcmVh
dGUgYSB3YXRjaHBvaW50IGZvciBhIHZhcmlhYmxlLiBUaGlzIGlzCisgICAgICAgIC8vIGlkZW1w
b3RlbnQgYW5kIGZhaWwtc2lsZW50LiBJdCBpcyBpZGVtcG90ZW50IGluIHRoZSBzZW5zZSB0aGF0
IGlmCisgICAgICAgIC8vIGEgd2F0Y2hwb2ludCBzZXQgaGFkIGFscmVhZHkgYmVlbiBjcmVhdGVk
LCB0aGVuIGFub3RoZXIgb25lIHdpbGwgbm90CisgICAgICAgIC8vIGJlIGNyZWF0ZWQuIEhlbmNl
IHR3byBjYWxscyB0byB0aGlzIG1ldGhvZCBoYXZlIHRoZSBzYW1lIGVmZmVjdCBhcworICAgICAg
ICAvLyBvbmUgY2FsbC4gSXQgaXMgYWxzbyBmYWlsLXNpbGVudCwgaW4gdGhlIHNlbnNlIHRoYXQg
aWYgYSB3YXRjaHBvaW50CisgICAgICAgIC8vIHNldCBoYWQgYmVlbiBjcmVhdGVkIGFuZCBoYWQg
YWxyZWFkeSBiZWVuIGludmFsaWRhdGVkLCB0aGVuIHRoaXMgd2lsbAorICAgICAgICAvLyBqdXN0
IHJldHVybi4gVGhpcyBtZWFucyB0aGF0IGNvdWxkQmVXYXRjaGVkKCkgbWF5IHJldHVybiBmYWxz
ZSBldmVuCisgICAgICAgIC8vIGltbWVkaWF0ZWx5IGFmdGVyIGEgY2FsbCB0byBhdHRlbXB0VG9X
YXRjaCgpLgorICAgICAgICB2b2lkIGF0dGVtcHRUb1dhdGNoKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaW5mbGF0ZSgpOworICAgICAgICAgICAgaWYgKCFmYXRFbnRyeSgpLT5tX3dhdGNocG9p
bnRzKQorICAgICAgICAgICAgICAgIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMgPSBhZG9wdFJl
ZihuZXcgV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9v
bCogYWRkcmVzc09mSXNXYXRjaGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGNv
dWxkQmVXYXRjaGVkKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hw
b2ludHMtPmFkZHJlc3NPZklzV2F0Y2hlZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICB2b2lkIGFkZFdhdGNocG9pbnQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKGNvdWxkQmVXYXRjaGVkKCkpOworICAgICAgICAgICAgZmF0RW50
cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkKHdhdGNocG9pbnQpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlXcml0ZSgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0
RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICAgICAgICAgIGlmICghd2F0Y2hwb2lu
dHMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2F0Y2hwb2ludHMtPm5v
dGlmeVdyaXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFJlYWRPbmx5RmxhZyA9IDB4MTsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4MjsKLSAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIE5vdE51bGxGbGFnID0gMHg0OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgRmxhZ0JpdHMgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRmF0RmxhZyA9
IDB4MTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFJlYWRPbmx5RmxhZyA9IDB4MjsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4NDsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vdE51bGxGbGFnID0gMHg4OworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgRmxhZ0JpdHMgPSA0OworICAgICAgICAKKyAgICAgICAgY2xhc3Mg
RmF0RW50cnkgeworICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgICAg
IHB1YmxpYzoKKyAgICAgICAgICAgIEZhdEVudHJ5KGludHB0cl90IGJpdHMpCisgICAgICAgICAg
ICAgICAgOiBtX2JpdHMoYml0cyB8IEZhdEZsYWcpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGludHB0cl90IG1fYml0czsgLy8gYWx3YXlzIGhhcyBGYXRGbGFn
IHNldCBhbmQgZXhhY3RseSBtYXRjaGVzIHdoYXQgdGhlIGJpdHMgd291bGQgaGF2ZSBiZWVuIGlm
IHRoaXMgd2Fzbid0IGZhdC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVmUHRyPFdhdGNo
cG9pbnRTZXQ+IG1fd2F0Y2hwb2ludHM7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBi
b29sIGlzRmF0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAm
IEZhdEZsYWc7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IEZhdEVudHJ5KiBm
YXRFbnRyeSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0ZhdCgpKTsK
KyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgRmF0RW50cnkqPihtX2JpdHMg
JiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBmYXRF
bnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0ZhdCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RmF0RW50cnkqPihtX2JpdHMgJiB+RmF0RmxhZyk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaW5mbGF0ZSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIG1fYml0cyA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4obmV3IEZhdEVudHJ5KG1fYml0cykp
IHwgRmF0RmxhZzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBp
bnRwdHJfdCBiaXRzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRmF0KCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsKKyAgICAgICAgICAg
IHJldHVybiBtX2JpdHM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJ
TkUgaW50cHRyX3QmIGJpdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNGYXQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV9iaXRzOworICAgICAgICAgICAg
cmV0dXJuIG1fYml0czsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBmcmVlRmF0
RW50cnkoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWlzRmF0KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgZGVsZXRlIGZhdEVudHJ5KCk7CisgICAgICAgIH0K
IAogICAgICAgICB2b2lkIHBhY2soaW50IGluZGV4LCBib29sIHJlYWRPbmx5LCBib29sIGRvbnRF
bnVtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2JpdHMgPSAoaW5kZXggPDwgRmxhZ0JpdHMp
IHwgTm90TnVsbEZsYWc7CisgICAgICAgICAgICBpbnRwdHJfdCYgYml0c1JlZiA9IGJpdHMoKTsK
KyAgICAgICAgICAgIGJpdHNSZWYgPSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBG
bGFnQml0cykgfCBOb3ROdWxsRmxhZzsKICAgICAgICAgICAgIGlmIChyZWFkT25seSkKLSAgICAg
ICAgICAgICAgICBtX2JpdHMgfD0gUmVhZE9ubHlGbGFnOworICAgICAgICAgICAgICAgIGJpdHNS
ZWYgfD0gUmVhZE9ubHlGbGFnOwogICAgICAgICAgICAgaWYgKGRvbnRFbnVtKQotICAgICAgICAg
ICAgICAgIG1fYml0cyB8PSBEb250RW51bUZsYWc7CisgICAgICAgICAgICAgICAgYml0c1JlZiB8
PSBEb250RW51bUZsYWc7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNWYWxp
ZEluZGV4KGludCBpbmRleCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgoaW5kZXgg
PDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRzKSA9PSBpbmRleDsKKyAgICAgICAgICAgIHJldHVybiAo
KHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRzKSA9
PSBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpOwogICAgICAgICB9CiAKLSAgICAgICAgaW50
IG1fYml0czsKKyAgICAgICAgaW50cHRyX3QgbV9iaXRzOwogICAgIH07CiAKICAgICBzdHJ1Y3Qg
U3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFN5bWJvbFRhYmxlRW50cnk+
IHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMTk5NDUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTEwICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIHNldCB3YXRj
aHBvaW50cyBvbiBnbG9iYWwgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgYWJpbGl0eSB0byBzZXQgdGhlIGlubGlu
ZSBjYXBhY2l0eSBvZiBzZWdtZW50ZWQgdmVjdG9ycy4KKworICAgICAgICAqIHd0Zi9TZWdtZW50
ZWRWZWN0b3IuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChTZWdtZW50ZWRWZWN0b3JJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OlNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV1RGOjpTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjo6U2VnbWVudGVkVmVjdG9y
SXRlcmF0b3IpOgorICAgICAgICAoU2VnbWVudGVkVmVjdG9yKToKKwogMjAxMi0wNi0wOSAgRG9t
aW5pYyBDb29uZXkgIDxkb21pbmljY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVt
XSBSZW1vdmUgSmF2YVNjcmlwdENvcmUgZGVwZW5kZW5jaWVzIGZyb20gZ3lwCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9TZWdtZW50ZWRWZWN0b3IuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL1dURi93dGYv
U2VnbWVudGVkVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQAogbmFt
ZXNwYWNlIFdURiB7CiAKICAgICAvLyBBbiBpdGVyYXRvciBmb3IgU2VnbWVudGVkVmVjdG9yLiBJ
dCBzdXBwb3J0cyBvbmx5IHRoZSBwcmUgKysgb3BlcmF0b3IKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplPiBjbGFzcyBTZWdtZW50ZWRWZWN0b3I7Ci0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVj
dG9ySXRlcmF0b3IgeworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNp
emUgPSA4LCBzaXplX3QgSW5saW5lQ2FwYWNpdHkgPSAzMj4gY2xhc3MgU2VnbWVudGVkVmVjdG9y
OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXpl
X3QgSW5saW5lQ2FwYWNpdHkgPSAzMj4gY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3Igewog
ICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3I8VCwgU2Vn
bWVudFNpemU+OworICAgICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21l
bnRTaXplLCBJbmxpbmVDYXBhY2l0eT47CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIFNl
Z21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiBJdGVyYXRvcjsKKyAgICAgICAg
dHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2Fw
YWNpdHk+IEl0ZXJhdG9yOwogCiAgICAgICAgIH5TZWdtZW50ZWRWZWN0b3JJdGVyYXRvcigpIHsg
fQogCkBAIC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgcmV0dXJu
IG1faW5kZXggIT0gb3RoZXIubV9pbmRleCB8fCBtX3NlZ21lbnQgIT0gb3RoZXIubV9zZWdtZW50
IHx8ICZtX3ZlY3RvciAhPSAmb3RoZXIubV92ZWN0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBT
ZWdtZW50ZWRWZWN0b3JJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IFNlZ21lbnRlZFZlY3Rvckl0
ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiYgb3RoZXIpCisgICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0
ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVu
dFNpemUsIElubGluZUNhcGFjaXR5PiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1f
dmVjdG9yID0gb3RoZXIubV92ZWN0b3I7CiAgICAgICAgICAgICBtX3NlZ21lbnQgPSBvdGhlci5t
X3NlZ21lbnQ7CkBAIC04NCwyNSArODQsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKFNlZ21lbnRl
ZFZlY3RvcjxULCBTZWdtZW50U2l6ZT4mIHZlY3Rvciwgc2l6ZV90IHNlZ21lbnQsIHNpemVfdCBp
bmRleCkKKyAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoU2VnbWVudGVkVmVjdG9yPFQs
IFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4mIHZlY3Rvciwgc2l6ZV90IHNlZ21lbnQsIHNp
emVfdCBpbmRleCkKICAgICAgICAgICAgIDogbV92ZWN0b3IodmVjdG9yKQogICAgICAgICAgICAg
LCBtX3NlZ21lbnQoc2VnbWVudCkKICAgICAgICAgICAgICwgbV9pbmRleChpbmRleCkKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXpl
PiYgbV92ZWN0b3I7CisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5s
aW5lQ2FwYWNpdHk+JiBtX3ZlY3RvcjsKICAgICAgICAgc2l6ZV90IG1fc2VnbWVudDsKICAgICAg
ICAgc2l6ZV90IG1faW5kZXg7CiAgICAgfTsKIAogICAgIC8vIFNlZ21lbnRlZFZlY3RvciBpcyBq
dXN0IGxpa2UgVmVjdG9yLCBidXQgaXQgZG9lc24ndCBtb3ZlIHRoZSB2YWx1ZXMKICAgICAvLyBz
dG9yZWQgaW4gaXRzIGJ1ZmZlciB3aGVuIGl0IGdyb3dzLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUg
dG8ga2VlcAotICAgIC8vIHBvaW50ZXJzIGludG8gYSBTZWdtZW50ZWRWZWN0b3IuCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVj
dG9yIHsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNl
Z21lbnRTaXplPjsKKyAgICAvLyBwb2ludGVycyBpbnRvIGEgU2VnbWVudGVkVmVjdG9yLiBUaGUg
ZGVmYXVsdCB0dW5pbmcgdmFsdWVzIGFyZQorICAgIC8vIG9wdGltaXplZCBmb3Igc2VnbWVudGVk
IHZlY3RvcnMgdGhhdCBnZXQgbGFyZ2U7IHlvdSBtYXkgd2FudCB0byB1c2UKKyAgICAvLyBTZWdt
ZW50ZWRWZWN0b3I8dGhpbmd5LCAxLCAwPiBpZiB5b3UgZG9uJ3QgZXhwZWN0IGEgbG90IG9mIGVu
dHJpZXMuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZSwgc2l6
ZV90IElubGluZUNhcGFjaXR5PgorICAgIGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7CisgICAgICAg
IGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5s
aW5lQ2FwYWNpdHk+OwogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0
b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4gSXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgU2Vn
bWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiBJdGVy
YXRvcjsKIAogICAgICAgICBTZWdtZW50ZWRWZWN0b3IoKQogICAgICAgICAgICAgOiBtX3NpemUo
MCkKQEAgLTI1MCw3ICsyNTMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBzaXplX3Qg
bV9zaXplOwogICAgICAgICBTZWdtZW50IG1faW5saW5lU2VnbWVudDsKLSAgICAgICAgVmVjdG9y
PFNlZ21lbnQqLCAzMj4gbV9zZWdtZW50czsKKyAgICAgICAgVmVjdG9yPFNlZ21lbnQqLCBJbmxp
bmVDYXBhY2l0eT4gbV9zZWdtZW50czsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146758</attachid>
            <date>2012-06-10 17:11:12 -0700</date>
            <delta_ts>2012-06-11 20:07:06 -0700</delta_ts>
            <desc>it does things</desc>
            <filename>globalwatch_patch_8.diff</filename>
            <type>text/plain</type>
            <size>115062</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5OTQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyOCBA
QAorMjAxMi0wNi0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFdvcmsgaW4gcHJvZ3Jlc3MhCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6
CisgICAgICAgIChMYWJlbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6
OndhdGNocG9pbnRMYWJlbCk6CisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5o
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNz
ZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om1heEp1bXBSZXBs
YWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6Cisg
ICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk12Nzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJl
cGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclNINDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNp
emUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAo
TWFjcm9Bc3NlbWJsZXJYODYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJh
bmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6Om1heEp1bXBSZXBsYWNlbWVu
dFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAg
ICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4Nl82NDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVm
ZmVyLmg6CisgICAgICAgIChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2QXNzZW1ibGVyKToK
KyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6Y21w
Yl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVzdGJfaW0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OmxhYmVsRm9yV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6bGFiZWwpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VX
aXRoSnVtcCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0
ZXI6Om1lbW9yeU1vZFJNKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZE9TUkV4aXQpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkpOgorICAgICAgICAoQ29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRXYXRjaHBvaW50KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZldhdGNocG9pbnRzKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp3YXRjaHBvaW50KToKKyAgICAgICAgKERGR0RhdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkRGRzo6ZXhpdEtpbmRU
b1N0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6ZXhpdEtpbmRJc0NvdW50YWJsZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAg
ICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29k
ZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6On5XYXRjaHBvaW50KToKKyAgICAgICAgKEpT
Qzo6V2F0Y2hwb2ludDo6Y29ycmVjdExhYmVscyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6
OmZpcmUpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KToKKyAg
ICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6fldhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlND
OjpXYXRjaHBvaW50U2V0OjphZGQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3Rp
ZnlXcml0ZVNsb3cpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hw
b2ludHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuaDogQWRkZWQuCisgICAgICAg
IChKU0MpOgorICAgICAgICAoV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6
OldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50OjpzZXREZXN0aW5hdGlvbik6
CisgICAgICAgIChXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6
aXNTdGlsbFZhbGlkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6aGFzQmVlbkludmFs
aWRhdGVkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6bm90aWZ5V3JpdGUpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGRyZXNzT2ZJc1dhdGNoZWQpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OlJlc29s
dmVSZXN1bHQ6OmNoZWNrVmFsaWRpdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6YWRkR2xvYmFsVmFyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmUp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRTdGF0aWNWYXIpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFN0YXRpY1Zhcik6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQ
b3N0Zml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByZWZpeFJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2
ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb25zdERlY2xOb2RlOjplbWl0Q29kZVNpbmds
ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxsSGVscGVy
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFz
ZTo6Z2xvYmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKToKKyAgICAgICAgKENTRVBoYXNlKToK
KyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbik6
CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAg
KiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9w
Y29kZSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdDb3Jy
ZWN0YWJsZUp1bXBQb2ludC5oOgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBv
aW50Ojppc1NldCk6CisgICAgICAgIChDb3JyZWN0YWJsZUp1bXBQb2ludCk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
bGlua09TUkV4aXRzKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJZGVu
dGlmaWVyTnVtYmVyRm9yQ2hlY2spOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6aWRlbnRpZmllck51bWJlckZvckNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNSZWdpc3RlclBvaW50ZXIpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgor
ICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoK
KyAgICAgICAgKE9TUkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAg
KFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRpb25XYXRjaHBvaW50KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hl
Y2spOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2xvYmFsX3Zhcl9jaGVjayk6CisgICAg
ICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJ
T04pOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVHZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xU
YWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmNvcHlTbG93KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdyk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmNvdWxkQmVXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGVFbnRyeTo6YXR0ZW1wdFRvV2F0Y2gpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
OjphZGRyZXNzT2ZJc1dhdGNoZWQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojph
ZGRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3Jp
dGVTbG93KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZVNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChTeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEZhc3QpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5OjpGYXN0OjpGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6RmFzdDo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6
Z2V0SW5kZXgpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc1JlYWRP
bmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNGYXQpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpTeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAg
KEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6flN5bWJvbFRhYmxlRW50cnkpOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZUVudHJ5OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJs
ZUVudHJ5Ojppc051bGwpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRJbmRl
eCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmdldEZhc3QpOgorICAgICAgICAo
SlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpTQzo6U3lt
Ym9sVGFibGVFbnRyeTo6aXNSZWFkT25seSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50
cnk6OndhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpub3Rp
ZnlXcml0ZSk6CisgICAgICAgIChGYXRFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxl
RW50cnk6OkZhdEVudHJ5OjpGYXRFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50
cnk6OmlzRmF0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6ZmF0RW50cnkpOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjppbmZsYXRlKToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6Yml0cyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6
OmZyZWVGYXRFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OnBhY2spOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojppc1ZhbGlkSW5kZXgpOgorCiAyMDEyLTA2
LTEwICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIEJ1aWxkIGZpeCBmb3IgIUVOQUJMRShKSVQpIGFmdGVyIHIxMTk4NDQgYW5kIHIx
MTk5MjUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTE5ODAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOSBAQAogCQkwRjkxOUQw
RDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdE
IC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdC5jcHAgKi87IH07CiAJCTBGOTE5RDExMTU3RjMzMkMwMDRBNEU3RCAvKiBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjkxOUQwRjE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGOTE5RDI1MTU4NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDIyMTU4NTNDREUwMDRB
NEU3RCAvKiBXYXRjaHBvaW50LmNwcCAqLzsgfTsKKwkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdE
IC8qIFdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlEMjgxNTg1Njc3
MzAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDI3MTU4NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xUYWJs
ZS5jcHAgKi87IH07CiAJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkz
MzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovOyB9OwogCQkwRjkz
MzI5RTE0Q0E3REM1MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAv
KiBDYWxsTGlua1N0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGOTMzMjlGMTRDQTdEQ0EwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk1
MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTgzNiw2ICs4
MzksOSBAQAogCQkwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N5bWJvbFRhYmxlT2JqZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3
RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwRjE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjkxOUQyMzE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGOTE5RDI3MTU4NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xUYWJsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAv
KiBDYWxsTGlua1N0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDYWxsTGlua1N0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMz
Mjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsTGlua1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZXRCeUlkU3RhdHVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDUsNiArMjA1MSw3IEBACiAJCQkJN0U0RUU3
MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLywKIAkJCQk3RTRFRTcw
ODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLywKIAkJCQlCQzkwNDE0NzBF
QjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggKi8sCisJCQkJMEY5
MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLywKIAkJCQkxNEEzOTZB
NjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLywKIAkJCQk5N0Y2OTAzQTExNjlE
RjdGMDBBNkJCNDYgLyogVGVybWluYXRvci5oICovLAogCQkJCTE0QTQyRTNEMEY0RjYwRUUwMDU5
OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgKi8sCkBAIC0yMjk2LDYgKzIzMDMsOCBAQAogCQkJ
CTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLywKIAkJCQkwRjQy
NkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovLAogCQkJCTBGNDI2QTQ2
MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAqLywKKwkJCQkwRjkxOUQyMjE1
ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgKi8sCisJCQkJMEY5MTlEMjMxNTg1M0NE
RTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gYnl0ZWNvZGU7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjY3MSw2ICsyNjgwLDcgQEAKIAkJCQkw
RjE2MDE1RTE1NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3lt
Ym9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDExMTU3RjMzMkMwMDRB
NEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0zMjQ1LDYgKzMyNTUsOCBAQAogCQkJCUMyNUY4QkNEMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNy
ZW1lbnRhbFN3ZWVwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMEMxNTdFRTA5RjAw
NEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5
MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEY5MTlEMjUxNTg1M0NFMDAwNEE0RTdEIC8qIFdhdGNocG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8qIFN5bWJv
bFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9u
IDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBMaW5rQnVmZmVyOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKK2NsYXNzIFdhdGNo
cG9pbnQ7CiBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENvcnJlY3RhYmxlSnVtcFBvaW50OwogfQpA
QCAtNzAsNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUg
dXNlZCBhcyBvcGVyYW5kcyB0byBNYWNyb0Fzc2VtYmxlciBvcGVyYXRpb25zLAogICAgIC8vIGRl
c2NyaWJpbmcgaW1tZWRpYXRlICBhbmQgbWVtb3J5IG9wZXJhbmRzIHRvIHRoZSBpbnN0cnVjdGlv
bnMgdG8gYmUgcGxhbnRlZC4KIAotCiAgICAgZW51bSBTY2FsZSB7CiAgICAgICAgIFRpbWVzT25l
LAogICAgICAgICBUaW1lc1R3bywKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKdW1wOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOwogICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIFdhdGNocG9pbnQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIExhYmVsKCkKQEAgLTU1
OSw2ICs1NjAsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAg
fQogICAgIAorICAgIExhYmVsIHdhdGNocG9pbnRMYWJlbChKdW1wUmVwbGFjZW1lbnRUeXBlIGp1
bXBSZXBsYWNlbWVudFR5cGUpCisgICAgeworICAgICAgICBMYWJlbCByZXN1bHQ7CisgICAgICAg
IHJlc3VsdC5tX2xhYmVsID0gbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRjaHBvaW50KGp1bXBSZXBs
YWNlbWVudFR5cGUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBM
YWJlbCBhbGlnbigpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbGlnbigxNik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVy
LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QXNzZW1ibGVyQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5LDExIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgZW51bSBKdW1wUmVwbGFjZW1lbnRUeXBlIHsKKyAgICAgICAgUmVw
bGFjZVdpdGhMb2NhbEp1bXAsCisgICAgICAgIFJlcGxhY2VXaXRoRmFySnVtcAorICAgIH07Cisg
ICAgCiAgICAgc3RydWN0IEFzc2VtYmxlckxhYmVsIHsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwo
KQogICAgICAgICAgICAgOiBtX29mZnNldChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6
bWF4KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTS5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
MTAsNiArMTAxMCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQoKikoKT4oQVJNQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxs
LmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKwogcHJvdGVjdGVkOgogICAgIEFSTUFzc2VtYmxlcjo6Q29uZGl0aW9uIEFSTUNvbmRp
dGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDUsNiArNTQ1LDE3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgfQogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVt
cChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBk
ZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQXJtQWRkcmVz
cyBhZGRyZXNzKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg2OCw2ICsxODY4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihNSVBTQXNzZW1ibGVyOjpyZWFk
Q2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2
b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBD
b2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBs
YWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKwogcHJpdmF0ZToKICAgICAvLyBJZiBtX2ZpeGVkV2lkdGgg
aXMgdHJ1ZSwgd2Ugd2lsbCBnZW5lcmF0ZSBhIGZpeGVkIG51bWJlciBvZiBpbnN0cnVjdGlvbnMu
CiAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBjYW4gZW1pdCBhbnkgbnVtYmVyIG9mIGluc3RydWN0aW9u
cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJT
SDQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyU0g0LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3MSw2
ICsxOTcxLDE3IEBAIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHMKICAg
ICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihTSDRB
c3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQog
CisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3Ry
dWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZm
X3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU0g0
QXNzZW1ibGVyOjpDb25kaXRpb24gU0g0Q29uZGl0aW9uKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
Ojpsb2FkRG91YmxlOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZURv
dWJsZTsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydEludDMyVG9E
b3VibGU7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4Owog
CiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKQEAgLTE2NSw2ICsxNjYsMTYgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZsX2kzMnIoaW5pdGlhbFZhbHVlLmFzSW50cHRyKCksIGRlc3QpOwogICAg
ICAgICByZXR1cm4gRGF0YUxhYmVsUHRyKHRoaXMpOwogICAgIH0KKyAgICAKKyAgICBKdW1wIGJy
YW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywg
VHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1hc2subV92YWx1ZSA+PSAtMTI4ICYmIG1hc2subV92YWx1ZSA8PSAyNTUpOworICAgICAg
ICBpZiAobWFzay5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wYl9p
bSgwLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJs
ZXIudGVzdGJfaW0obWFzay5tX3ZhbHVlLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgcmV0dXJu
IEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KIAogICAg
IEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFs
UmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewpAQCAtMTk4LDYgKzIwOSwxNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2FsbC5kYXRhTG9jYXRpb24oKSkgKyBv
ZmZzZXQpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICAvLyBOT1RFOiBvbiBYODYtMzIgdGhlIHNjcmF0Y2ggcmVnaXN0
ZXIgaXMgdW51c2VkLgorICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0
cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVB
ZGRyZXNzKCksIFJlZ2lzdGVySUQ6OmVheCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgfQorCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOwogICAgIGZyaWVuZCBjbGFzcyBSZXBhdGNoQnVm
ZmVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01MTMsNiArNTEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21t
b246Om1vdmUoYWRkciwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBCYXNlSW5kZXgoc2NyYXRjaFJlZ2lz
dGVyLCBhZGRyZXNzLmJhc2UsIFRpbWVzT25lKSwgbWFzayk7CiAgICAgfQorICAgIAorICAgIEp1
bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAg
ICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9w
dHIpLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKSwgbWFzayk7
CisgICAgfQogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIC8vIFNlZSBjb21tZW50IG9uIE1hY3JvQXNzZW1ibGVyQVJNdjc6OnN1
cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkKQEAgLTUyNyw2ICs1MzMsMTYgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7
IHJldHVybiBzY3JhdGNoUmVnaXN0ZXI7IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbiwgSnVtcFJlcGxhY2VtZW50VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQor
ICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25T
dGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygp
LCBzY3JhdGNoUmVnaXN0ZXIsIGp1bXBSZXBsYWNlbWVudFR5cGUpOworICAgIH0KKyAgICAKKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoSnVtcFJlcGxhY2VtZW50
VHlwZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2Vt
Ymxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZShqdW1wUmVwbGFjZW1lbnRUeXBlKTsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7CiAgICAgZnJpZW5kIGNs
YXNzIFJlcGF0Y2hCdWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1JlcGF0Y2hCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Miw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWxpbmtOZWFyQ2FsbGVyVG9U
cmFtcG9saW5lKHJldHVybkFkZHJlc3MsIENvZGVMb2NhdGlvbkxhYmVsKG5ld0NhbGxlZUZ1bmN0
aW9uKSk7CiAgICAgfQotCisgICAgCiBwcml2YXRlOgogICAgIHZvaWQqIG1fc3RhcnQ7CiAgICAg
c2l6ZV90IG1fc2l6ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQ3LDYgKzI0Nyw4
IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAKICAgICBYODZBc3NlbWJsZXIoKQorICAgICAgICA6IG1f
aW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAgICAgICwgbV9pbmRleE9mVGFpbE9m
TGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAgICB7CiAgICAgfQogCkBAIC03OTgsNiArODAwLDE0
IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkli
LCBHUk9VUDFfT1BfQ01QLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICB9CisgICAgCisjaWYgQ1BVKFg4NikKKyAg
ICB2b2lkIGNtcGJfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYWRk
cik7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkYXRlOChpbW0pOworICAgIH0KKyNlbmRpZgog
CiAgICAgdm9pZCBjbXBsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsKQEAgLTk0OCw2ICs5NTgsMTQgQEAg
cHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQogCisj
aWYgQ1BVKFg4NikKKyAgICB2b2lkIHRlc3RiX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViSWIsIEdS
T1VQM19PUF9URVNULCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCB0ZXN0bF9pMzJtKGludCBpbW0sIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19Fdkl6LCBHUk9VUDNfT1Bf
VEVTVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwpAQCAtMTcwMiwxMCArMTcyMCwyNiBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIuY29kZVNpemUoKTsK
ICAgICB9CisgICAgCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50KEp1bXBS
ZXBsYWNlbWVudFR5cGUganVtcFJlcGxhY2VtZW50VHlwZSkKKyAgICB7CisgICAgICAgIEFzc2Vt
YmxlckxhYmVsIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkgIT0gbV9pbmRleE9mTGFzdFdhdGNocG9pbnQp
CisgICAgICAgICAgICByZXN1bHQgPSBsYWJlbCgpOworICAgICAgICBtX2luZGV4T2ZMYXN0V2F0
Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldDsKKyAgICAgICAgbV9pbmRleE9mVGFpbE9mTGFzdFdh
dGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQgKyBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKGp1bXBS
ZXBsYWNlbWVudFR5cGUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFz
c2VtYmxlckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5s
YWJlbCgpOworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJl
bCgpOworICAgICAgICAvLyBGSVhNRTogbmVlZCB0byBrbm93IHRoZSBzaXplIG9mIHRoZSBsYXN0
IHdhdGNocG9pbnQgYXMgd2VsbC4KKyAgICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19jYXN0
PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KSkg
eworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtX2Zvcm1hdHRlci5s
YWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAg
QXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkKQEAgLTE3ODIsNiArMTgxNiw0MyBA
QCBwdWJsaWM6CiAgICAgICAgIHNldFBvaW50ZXIod2hlcmUsIHZhbHVlKTsKICAgICB9CiAgICAg
CisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQs
IHZvaWQqIHRvLCBSZWdpc3RlcklEIHNjcmF0Y2gsIEp1bXBSZXBsYWNlbWVudFR5cGUganVtcFJl
cGxhY2VtZW50VHlwZSkKKyAgICB7CisgICAgICAgIGludDhfdCAqcHRyID0gcmVpbnRlcnByZXRf
Y2FzdDxpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyAgICAgICAgaW50OF90ICpkc3RQdHIg
PSByZWludGVycHJldF9jYXN0PGludDhfdCo+KHRvKTsKKyAgICAgICAgaW50cHRyX3QgZGlzdGFu
Y2UgPSAoaW50cHRyX3QpKGRzdFB0ciAtIChwdHIgKyA1KSk7CisjaWYgQ1BVKFg4Nl82NCkKKyAg
ICAgICAgaWYgKGRpc3RhbmNlID4gSU5UMzJfTUFYIHx8IGRpc3RhbmNlIDwgSU5UMzJfTUlOKSB7
CisgICAgICAgICAgICBBU1NFUlQoanVtcFJlcGxhY2VtZW50VHlwZSA9PSBSZXBsYWNlV2l0aEZh
ckp1bXApOworICAgICAgICAgICAgLy8gbW92cV9pNjRyIGluc3RydWN0aW9uCisgICAgICAgICAg
ICBwdHJbMF0gPSBQUkVfUkVYIHwgKDE8PDMpIHwgKHNjcmF0Y2g+PjMpOworICAgICAgICAgICAg
cHRyWzFdID0gT1BfTU9WX0VBWEl2ICsgKHNjcmF0Y2ggJiA3KTsKKyAgICAgICAgICAgICpyZWlu
dGVycHJldF9jYXN0PGludDY0X3QqPihwdHIrMykgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyZWlu
dGVycHJldF9jYXN0PGludHB0cl90Pih0bykpOworICAgICAgICAgICAgcHRyICs9IDEwOworICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBqbXBfciBpbnN0cnVjdGlvbgorICAgICAgICAgICAg
aWYgKHNjcmF0Y2ggPj0gWDg2UmVnaXN0ZXJzOjpyOCkgeworICAgICAgICAgICAgICAgIHB0clsw
XSA9IFBSRV9SRVggfCAoc2NyYXRjaD4+Myk7CisgICAgICAgICAgICAgICAgcHRyKys7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBwdHJbMF0gPSBPUF9HUk9VUDVfRXY7CisgICAgICAgICAg
ICBwdHJbMV0gPSAoMzw8NikgfCAoR1JPVVA1X09QX0pNUE48PDMpIHwgKHNjcmF0Y2ggJiA3KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIHB0clswXSA9
IE9QX0pNUF9yZWwzMjsKKyAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHB0ciAr
IDEpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGlzdGFuY2UpOworICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoSnVtcFJlcGxhY2VtZW50VHlw
ZSBqdW1wUmVwbGFjZW1lbnRUeXBlKQorICAgIHsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBp
ZiAoanVtcFJlcGxhY2VtZW50VHlwZSA9PSBSZXBsYWNlV2l0aEZhckp1bXApCisgICAgICAgICAg
ICByZXR1cm4gMTM7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIDU7CisgICAgfQorICAgIAogICAg
IHN0YXRpYyB2b2lkKiByZWFkUG9pbnRlcih2b2lkKiB3aGVyZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hlcmUpWy0xXTsKQEAgLTIzMzksNiArMjQx
MCw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVyOwogICAg
IH0gbV9mb3JtYXR0ZXI7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OworICAgIGlu
dCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjgsMTIgKzkyOCwyOCBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpdCsrOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93
YXRjaGFibGU6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytpdCkt
PnUucmVnaXN0ZXJQb2ludGVyOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2dsb2Jh
bF92YXJfd2F0Y2hhYmxlXHQgJXMsIGclZCglcClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUo
ZXhlYywgcjApLmRhdGEoKSwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lz
dGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlcik7CisgICAgICAgICAgICBpdCsrOworICAgICAg
ICAgICAgaXQrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfcHV0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiog
cmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0g
cHV0X2dsb2JhbF92YXJcdCBnJWQoJXApLCAlc1xuIiwgbG9jYXRpb24sIG1fZ2xvYmFsT2JqZWN0
LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIsIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6IHsKKyAgICAgICAgICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lz
dGVyUG9pbnRlcjsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dsb2JhbF92YXJfY2hlY2tcdCBnJWQoJXApLCAl
c1xuIiwgbG9jYXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3Rl
clBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGl0Kys7CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2U6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMwNiw3ICsxMzIyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9w
dXRfcmVzdWx0OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIG9wX2NhbGxfcHV0X3Jlc3VsdFx0XHQgJXNcbiIsIGxv
Y2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRh
TG9nKCJbJTRkXSBjYWxsX3B1dF9yZXN1bHRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNs
dWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFsaXplci5oIgogI2lu
Y2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMjczLDEwICsyNzQsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICB2b2lkIGFwcGVuZE9TUkV4aXQoY29uc3QgREZHOjpPU1JFeGl0JiBvc3JFeGl0
KQorICAgICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3Ny
RXhpdCkKICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7
CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPm9zckV4aXQuc2l6ZSgp
OwogICAgICAgICAgICAgbV9kZmdEYXRhLT5vc3JFeGl0LmFwcGVuZChvc3JFeGl0KTsKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERGRzo6
T1NSRXhpdCYgbGFzdE9TUkV4aXQoKQpAQCAtMjg0LDEwICsyODcsMjAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5vc3JFeGl0Lmxhc3QoKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KGNv
bnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgICAgIHVuc2lnbmVk
IGFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292ZXJ5
JiByZWNvdmVyeSkKICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNz
YXJ5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPnNwZWN1bGF0
aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJl
Y292ZXJ5LmFwcGVuZChyZWNvdmVyeSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhcHBlbmRXYXRjaHBvaW50KGNvbnN0
IFdhdGNocG9pbnQmIHdhdGNocG9pbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURG
R0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdE
YXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgICAgICBtX2RmZ0RhdGEtPndhdGNocG9p
bnRzLmFwcGVuZCh3YXRjaHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAt
MzA0LDYgKzMxNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2Rm
Z0RhdGEtPnNwZWN1bGF0aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIAor
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZldhdGNocG9pbnRzKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFtX2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gbV9kZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIERGRzo6T1NSRXhpdCYgb3NyRXhpdCh1bnNpZ25lZCBpbmRleCkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdFtpbmRleF07CkBA
IC0zMTQsNiArMzM0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1f
ZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeVtpbmRleF07CiAgICAgICAgIH0KICAgICAgICAg
CisgICAgICAgIFdhdGNocG9pbnQmIHdhdGNocG9pbnQodW5zaWduZWQgaW5kZXgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRzW2luZGV4XTsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNlKEpTQ2Vs
bCogdGFyZ2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3Nh
cnkoKTsKQEAgLTEyMzgsNiArMTI2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
VmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKICAgICAgICAgICAgIFNlZ21lbnRl
ZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgICAgICAgICBWZWN0b3I8REZH
OjpTcGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OworICAgICAgICAgICAg
U2VnbWVudGVkVmVjdG9yPFdhdGNocG9pbnQsIDEsIDA+IHdhdGNocG9pbnRzOwogICAgICAgICAg
ICAgVmVjdG9yPFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uPiB0cmFuc2l0aW9uczsKICAgICAgICAg
ICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPiA+IHdlYWtSZWZlcmVuY2VzOwogICAgICAg
ICAgICAgYm9vbCBtYXlCZUV4ZWN1dGluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsNyBAQCBlbnVtIEV4aXRLaW5kIHsKICAgICBJbmFkZXF1YXRlQ292ZXJh
Z2UsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuZGVkIHVwIGluIGNvZGUgdGhhdCBkaWRuJ3Qg
aGF2ZSBwcm9maWxpbmcgY292ZXJhZ2UuCiAgICAgQXJndW1lbnRzRXNjYXBlZCwgLy8gV2UgZXhp
dGVkIGJlY2F1c2UgYXJndW1lbnRzIGVzY2FwZWQgYnV0IHdlIGRpZG4ndCBleHBlY3QgdGhlbSB0
by4KICAgICBVbmNvdW50YWJsZSwgLy8gV2UgZXhpdGVkIGZvciBub25lIG9mIHRoZSBhYm92ZSBy
ZWFzb25zLCBhbmQgd2Ugc2hvdWxkIG5vdCBjb3VudCBpdC4gTW9zdCB1c2VzIG9mIHRoaXMgc2hv
dWxkIGJlIHZpZXdlZCBhcyBhIEZJWE1FLgorICAgIFVuY291bnRhYmxlV2F0Y2hwb2ludCAvLyBX
ZSBleGl0ZWQgYmVjYXVzZSBvZiBhIHdhdGNocG9pbnQsIHdoaWNoIGlzbid0IGNvdW50ZWQgYmVj
YXVzZSB3YXRjaHBvaW50cyBkbyB0cmFja2luZyB0aGVtc2VsdmVzLgogfTsKIAogaW5saW5lIGNv
bnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2luZCkKQEAgLTU4LDYgKzU5LDEy
IEBAIGlubGluZSBjb25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXQKICAgICAgICAgcmV0
dXJuICJOZWdhdGl2ZVplcm8iOwogICAgIGNhc2UgSW5hZGVxdWF0ZUNvdmVyYWdlOgogICAgICAg
ICByZXR1cm4gIkluYWRlcXVhdGVDb3ZlcmFnZSI7CisgICAgY2FzZSBBcmd1bWVudHNFc2NhcGVk
OgorICAgICAgICByZXR1cm4gIkFyZ3VtZW50c0VzY2FwZWQiOworICAgIGNhc2UgVW5jb3VudGFi
bGU6CisgICAgICAgIHJldHVybiAiVW5jb3VudGFibGUiOworICAgIGNhc2UgVW5jb3VudGFibGVX
YXRjaHBvaW50OgorICAgICAgICByZXR1cm4gIlVuY291bnRhYmxlV2F0Y2hwb2ludCI7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuICJVbmtub3duIjsKICAgICB9CkBAIC03MCw2ICs3Nyw3
IEBAIGlubGluZSBib29sIGV4aXRLaW5kSXNDb3VudGFibGUoRXhpdEtpbmQKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBCYWRUeXBlOgogICAgIGNhc2UgVW5jb3VudGFi
bGU6CisgICAgY2FzZSBVbmNvdW50YWJsZVdhdGNocG9pbnQ6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMTk4MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMTkzLDYgKzE5Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0cnVj
dGlvbihWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogICAg
ICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3Rl
clBvaW50ZXIpIHsgdS5yZWdpc3RlclBvaW50ZXIgPSByZWdpc3RlclBvaW50ZXI7IH0KKyAgICAg
ICAgCisgICAgICAgIEluc3RydWN0aW9uKGJvb2wqIHByZWRpY2F0ZVBvaW50ZXIpIHsgdS5wcmVk
aWNhdGVQb2ludGVyID0gcHJlZGljYXRlUG9pbnRlcjsgfQogCiAgICAgICAgIHVuaW9uIHsKICAg
ICAgICAgICAgIE9wY29kZSBvcGNvZGU7CkBAIC0yMDUsNiArMjA3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvOwogICAgICAg
ICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsK
KyAgICAgICAgICAgIGJvb2wqIHByZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAg
ICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBtYWNybyhvcF9nZXRfc2NvcGVkX3ZhciwgNSkgLyogaGFzIHZhbHVlIHBy
b2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9zY29wZWRfdmFyLCA0KSBcCiAgICAg
ICAgIG1hY3JvKG9wX2dldF9nbG9iYWxfdmFyLCA0KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICov
IFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlLCA1KSAvKiBoYXMg
dmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2dsb2JhbF92YXIsIDMp
IFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2dsb2JhbF92YXJfY2hlY2ssIDUpIFwKICAgICAgICAg
bWFjcm8ob3BfcmVzb2x2ZV9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAg
ICAgICAgbWFjcm8ob3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cywgMykgXAogICAgICAgICBtYWNy
byhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2F0Y2hwb2ludC5oIgorCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworV2F0Y2hwb2ludDo6fldhdGNocG9pbnQoKQoreworICAgIGlmIChpc09u
TGlzdCgpKQorICAgICAgICByZW1vdmUoKTsKK30KKwordm9pZCBXYXRjaHBvaW50Ojpjb3JyZWN0
TGFiZWxzKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okxh
YmVsIGxhYmVsOworICAgIGxhYmVsLm1fbGFiZWwubV9vZmZzZXQgPSBtX3NvdXJjZTsKKyAgICBt
X3NvdXJjZSA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxpbmtCdWZmZXIubG9jYXRpb25PZihs
YWJlbCkuZGF0YUxvY2F0aW9uKCkpOworICAgIGxhYmVsLm1fbGFiZWwubV9vZmZzZXQgPSBtX2Rl
c3RpbmF0aW9uOworICAgIG1fZGVzdGluYXRpb24gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihs
aW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWwpLmRhdGFMb2NhdGlvbigpKTsKK30KKwordm9pZCBX
YXRjaHBvaW50OjpmaXJlKCkKK3sKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1w
KAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KG1fc291cmNl
KSksCisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4obV9kZXN0
aW5hdGlvbikpLAorICAgICAgICBSZXBsYWNlV2l0aExvY2FsSnVtcCk7CisgICAgaWYgKGlzT25M
aXN0KCkpCisgICAgICAgIHJlbW92ZSgpOworfQorCitXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50
U2V0KCkKKyAgICA6IG1faXNXYXRjaGVkKGZhbHNlKQorICAgICwgbV9pc0ludmFsaWRhdGVkKGZh
bHNlKQoreworfQorCitXYXRjaHBvaW50U2V0Ojp+V2F0Y2hwb2ludFNldCgpCit7CisgICAgLy8g
RmlyZSBhbGwgd2F0Y2hwb2ludHMuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgaXMgcG9z
c2libGUsIHNheSB3aXRoCisgICAgLy8gc3RydWN0dXJlIHdhdGNocG9pbnRzLCBmb3IgdGhlIHdh
dGNocG9pbnQgc2V0IG93bmVyIHRvIGRpZSB3aGlsZSB0aGUKKyAgICAvLyB3YXRjaHBvaW50IG93
bmVycyBhcmUgc3RpbGwgbGl2ZS4KKyAgICBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKK30KKwordm9p
ZCBXYXRjaHBvaW50U2V0OjphZGQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKK3sKKyAgICBpZiAo
IXdhdGNocG9pbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NldC5wdXNoKHdhdGNocG9pbnQp
OworICAgIG1faXNXYXRjaGVkID0gdHJ1ZTsKK30KKwordm9pZCBXYXRjaHBvaW50U2V0Ojpub3Rp
ZnlXcml0ZVNsb3coKQoreworICAgIEFTU0VSVChtX2lzV2F0Y2hlZCk7CisgICAgCisgICAgZmly
ZUFsbFdhdGNocG9pbnRzKCk7CisgICAgbV9pc1dhdGNoZWQgPSBmYWxzZTsKKyAgICBtX2lzSW52
YWxpZGF0ZWQgPSB0cnVlOworfQorCit2b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBv
aW50cygpCit7CisgICAgd2hpbGUgKCFtX3NldC5pc0VtcHR5KCkpCisgICAgICAgIG1fc2V0LmJl
Z2luKCktPmZpcmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2F0Y2hwb2ludF9oCisjZGVmaW5lIFdhdGNocG9pbnRf
aAorCisjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExp
bmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdhdGNocG9pbnQgOiBwdWJs
aWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4geworcHVibGljOgorICAgIFdhdGNo
cG9pbnQoTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHNvdXJjZSkKKyAgICAgICAgOiBtX3NvdXJjZShz
b3VyY2UubV9sYWJlbC5tX29mZnNldCkKKyAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludHB0cl90Pjo6bWF4KCkpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2
b2lkIHNldERlc3RpbmF0aW9uKE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkZXN0aW5hdGlvbikKKyAg
ICB7CisgICAgICAgIG1fZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbi5tX2xhYmVsLm1fb2Zmc2V0
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvcnJlY3RMYWJlbHMoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcik7CisgICAgCisgICAgfldhdGNocG9pbnQoKTsKKyAgICAKKyAgICB2b2lkIGZpcmUoKTsK
KyAgICAKK3ByaXZhdGU6CisgICAgdWludHB0cl90IG1fc291cmNlOworICAgIHVpbnRwdHJfdCBt
X2Rlc3RpbmF0aW9uOworfTsKKworY2xhc3MgV2F0Y2hwb2ludFNldCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdhdGNocG9pbnRTZXQ+IHsKK3B1YmxpYzoKKyAgICBXYXRjaHBvaW50U2V0KCk7CisgICAg
fldhdGNocG9pbnRTZXQoKTsKKyAgICAKKyAgICBib29sIGlzU3RpbGxWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuICFtX2lzSW52YWxpZGF0ZWQ7IH0KKyAgICBib29sIGhhc0JlZW5JbnZhbGlkYXRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJbnZhbGlkYXRlZDsgfQorICAgIAorICAgIC8vIEFzIGEgY29u
dmVuaWVuY2UsIHRoaXMgd2lsbCBpZ25vcmUgMC4gVGhhdCdzIGJlY2F1c2UgY29kZSBwYXRocyBp
biB0aGUgREZHCisgICAgLy8gdGhhdCBjcmVhdGUgc3BlY3VsYXRpb24gd2F0Y2hwb2ludHMgbWF5
IGNob29zZSB0byBiYWlsIG91dCBpZiBzcGVjdWxhdGlvbgorICAgIC8vIGhhZCBhbHJlYWR5IGJl
ZW4gdGVybWluYXRlZC4KKyAgICB2b2lkIGFkZChXYXRjaHBvaW50Kik7CisgICAgCisgICAgdm9p
ZCBub3RpZnlXcml0ZSgpCisgICAgeworICAgICAgICBpZiAoIW1faXNXYXRjaGVkKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBub3RpZnlXcml0ZVNsb3coKTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCogYWRkcmVzc09mSXNXYXRjaGVkKCkgeyByZXR1cm4gJm1faXNXYXRjaGVkOyB9Cisg
ICAgCisgICAgdm9pZCBub3RpZnlXcml0ZVNsb3coKTsgLy8gQ2FsbCBvbmx5IGlmIHlvdSd2ZSBj
aGVja2VkIGlzV2F0Y2hlZC4KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBmaXJlQWxsV2F0Y2hw
b2ludHMoKTsKKyAgICAKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8V2F0Y2hwb2ludCwgQmFzaWNS
YXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4gPiBtX3NldDsKKyAgICBib29sIG1faXNXYXRjaGVk
OworICAgIGJvb2wgbV9pc0ludmFsaWRhdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBXYXRjaHBvaW50X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9u
IDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDcgQEAgdm9pZCBSZXNv
bHZlUmVzdWx0OjpjaGVja1ZhbGlkaXR5KCkKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5k
ZXhlZEdsb2JhbDoKICAgICBjYXNlIFJlYWRPbmx5SW5kZXhlZEdsb2JhbDoKKyAgICBjYXNlIFdh
dGNoZWRJbmRleGVkR2xvYmFsOgogICAgIGNhc2UgRHluYW1pY0luZGV4ZWRHbG9iYWw6CiAgICAg
Y2FzZSBEeW5hbWljUmVhZE9ubHlJbmRleGVkR2xvYmFsOgogICAgICAgICBBU1NFUlQobV9pbmRl
eCAhPSBtaXNzaW5nU3ltYm9sTWFya2VyKCkpOwpAQCAtMjE2LDEzICsyMTcsMTkgQEAgYm9vbCBC
eXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKGNvbnN0IElkZQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1pbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgYm9vbCBpc0NvbnN0YW50KQoraW50IEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxW
YXIoCisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIENvbnN0YW50TW9kZSBjb25zdGFudE1v
ZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGZ1bmN0
aW9uTW9kZSk7CiAgICAgaW50IGluZGV4ID0gc3ltYm9sVGFibGUoKS5zaXplKCk7Ci0gICAgU3lt
Ym9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7
CisgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgKGNvbnN0YW50TW9kZSA9PSBJ
c0NvbnN0YW50KSA/IFJlYWRPbmx5IDogMCk7CisgICAgaWYgKGZ1bmN0aW9uTW9kZSA9PSBJc0Z1
bmN0aW9uVG9TcGVjaWFsaXplKQorICAgICAgICBuZXdFbnRyeS5hdHRlbXB0VG9XYXRjaCgpOwog
ICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRl
bnQuaW1wbCgpLCBuZXdFbnRyeSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpOworICAgIGVsc2UK
KyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsKICAgICByZXR1
cm4gaW5kZXg7CiB9CiAKQEAgLTI4OSwxNyArMjk2LDI2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihQcm8KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rp
b25TdGFjay5zaXplKCk7ICsraSkgewogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlv
biA9IGZ1bmN0aW9uU3RhY2tbaV07Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0
KCptX2dsb2JhbERhdGEsIGZ1bmN0aW9uLT5pZGVudCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVu
Y3Rpb25zIG92ZXJ3cml0ZSBleGlzdGluZyBwcm9wZXJ0aWVzLgorICAgICAgICBib29sIHByb3Bl
cnR5RGlkRXhpc3QgPSAKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCpt
X2dsb2JhbERhdGEsIGZ1bmN0aW9uLT5pZGVudCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rp
b25zIG92ZXJ3cml0ZSBleGlzdGluZyBwcm9wZXJ0aWVzLgorICAgICAgICAKKyAgICAgICAgZGF0
YUxvZygiQ29uc2lkZXJpbmcgZnVuY3Rpb24gJXMsIGRpZEV4aXN0ID0gJWQuXG4iLAorICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uLT5pZGVudCgpLmFzY2lpKCkuZGF0YSgpLCBwcm9wZXJ0eURpZEV4
aXN0KTsKIAogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMs
IG1ha2VGdW5jdGlvbihleGVjLCBmdW5jdGlvbiksIHNjb3BlQ2hhaW4pOwotICAgICAgICBpbnQg
aW5kZXggPSBhZGRHbG9iYWxWYXIoZnVuY3Rpb24tPmlkZW50KCksIGZhbHNlKTsKKyAgICAgICAg
aW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKAorICAgICAgICAgICAgZnVuY3Rpb24tPmlkZW50KCks
IElzVmFyaWFibGUsCisgICAgICAgICAgICAhcHJvcGVydHlEaWRFeGlzdCA/IElzRnVuY3Rpb25U
b1NwZWNpYWxpemUgOiBOb3RGdW5jdGlvbk9yTm90U3BlY2lhbGl6YWJsZSk7CiAgICAgICAgIGds
b2JhbE9iamVjdC0+cmVnaXN0ZXJBdChpbmRleCkuc2V0KCptX2dsb2JhbERhdGEsIGdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFyU3Rh
Y2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzUHJvcGVydHko
ZXhlYywgKnZhclN0YWNrW2ldLmZpcnN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBhZGRHbG9iYWxWYXIoKnZhclN0YWNrW2ldLmZpcnN0LCB2YXJTdGFja1tpXS5zZWNvbmQgJiBE
ZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCk7CisgICAgICAgIGFkZEdsb2JhbFZhcigKKyAg
ICAgICAgICAgICp2YXJTdGFja1tpXS5maXJzdCwKKyAgICAgICAgICAgICh2YXJTdGFja1tpXS5z
ZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCkgPyBJc0NvbnN0YW50IDogSXNW
YXJpYWJsZSwKKyAgICAgICAgICAgIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlKTsKICAg
ICB9CiB9CiAKQEAgLTEyMDIsNyArMTIxOCw5IEBAIFJlc29sdmVSZXN1bHQgQnl0ZWNvZGVHZW5l
cmF0b3I6OnJlc29sdmUKICAgICAgICAgICAgIGlmICgrK2l0ZXIgPT0gZW5kKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGZsYWdzICYgUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWcpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjpkeW5hbWljSW5kZXhlZEdsb2JhbFJl
c29sdmUoZW50cnkuZ2V0SW5kZXgoKSwgZGVwdGgsIGN1cnJlbnRTY29wZSwgZmxhZ3MpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjppbmRleGVkR2xvYmFsUmVzb2x2ZShl
bnRyeS5nZXRJbmRleCgpLCBjdXJyZW50U2NvcGUsIGZsYWdzKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gUmVzb2x2ZVJlc3VsdDo6aW5kZXhlZEdsb2JhbFJlc29sdmUoCisgICAgICAgICAgICAg
ICAgICAgIGVudHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29wZSwKKyAgICAgICAgICAgICAgICAg
ICAgZmxhZ3MgfCAoZW50cnkuY291bGRCZVdhdGNoZWQoKSA/IFJlc29sdmVSZXN1bHQ6OldhdGNo
ZWRGbGFnIDogMCkpOwogICAgICAgICAgICAgfQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAg
ICAgICAgIGlmIChKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBqc0R5bmFtaWNDYXN0PEpTQWN0
aXZhdGlvbio+KGN1cnJlbnRWYXJpYWJsZU9iamVjdCkpCkBAIC0xMjk2LDcgKzEzMTQsNyBAQCBi
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpzaG91bGRBdm9pZFJlc29sCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZl
UmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAg
ICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKQotICAgICAgICByZXR1cm4gZW1pdEdldFN0
YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQpOworICAgICAgICByZXR1cm4gZW1pdEdldFN0YXRp
Y1Zhcihkc3QsIHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsKICAgICAKICAgICBpZiAocmVzb2x2
ZVJlc3VsdC5pc0dsb2JhbCgpICYmICFzaG91bGRBdm9pZFJlc29sdmVHbG9iYWwoKSkgewogI2lm
IEVOQUJMRShKSVQpCkBAIC0xMzc5LDcgKzEzOTcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sCiAKICAgICAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMo
KSkgewogICAgICAgICAgICAgLy8gRGlyZWN0bHkgaW5kZXggdGhlIHByb3BlcnR5IGxvb2t1cCBh
Y3Jvc3MgbXVsdGlwbGUgc2NvcGVzLgotICAgICAgICAgICAgZW1pdEdldFN0YXRpY1Zhcihwcm9w
RHN0LCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERz
dCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIGJhc2VEc3Q7
CiAgICAgICAgIH0KIApAQCAtMTQxOCw3ICsxNDM2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbAogewogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkp
IHsKICAgICAgICAgZW1pdExvYWQoYmFzZURzdCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGVt
aXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIGVtaXRHZXRT
dGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgICAgICByZXR1
cm4gYmFzZURzdDsKICAgICB9CiAKQEAgLTE0MzYsNyArMTQ1NCw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICByZXR1cm4gZW1pdFJlc29sdmUocHJvcERz
dCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVS
ZXN1bHQmIHJlc29sdmVSZXN1bHQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29s
dmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gMDsKIApAQCAtMTQ3MiwxMyArMTQ5MCwyNCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChwcm9maWxlKTsKICAgICAgICAgcmV0dXJuIGRzdDsKIAorICAgIGNhc2UgUmVzb2x2ZVJlc3Vs
dDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6CisgICAgICAgIC8vIFNraXAgdGhlIHBlZXBob2xlIGZv
ciBub3cuIEl0J3Mgbm90IGNsZWFyIHRoYXQgaXQncyBwcm9maXRhYmxlIGdpdmVuCisgICAgICAg
IC8vIHRoZSBERkcncyBjYXBhYmlsaXRpZXMsIGFuZCB0aGUgZmFjdCB0aGF0IGlmIGl0J3Mgd2F0
Y2hhYmxlIHRoZW4gd2UKKyAgICAgICAgLy8gZG9uJ3QgZXhwZWN0IHRvIHNlZSBhbnkgcHV0X2ds
b2JhbF92YXIncyBhbnl3YXkuCisgICAgICAgIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUo
b3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZl
UmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsgLy8gRm9yIHRoZSBiZW5lZml0IG9mIHRoZSBERkcu
CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKyAgICAgICAgcmV0dXJu
IGRzdDsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIFJl
Z2lzdGVySUQqIHZhbHVlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRT
dGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgc3dpdGNoIChyZXNv
bHZlUmVzdWx0LnR5cGUoKSkgewogICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVnaXN0ZXI6CkBA
IC0xNDk5LDYgKzE1MjgsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRTdAogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJlc3VsdC5yZWdpc3Rl
clBvaW50ZXIoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgo
KSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgCisgICAgY2FzZSBSZXNvbHZlUmVz
dWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAgZW1pdE9wY29kZShvcF9wdXRfZ2xv
YmFsX3Zhcl9jaGVjayk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVz
dWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZh
bHVlLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KHJlc29sdmVSZXN1bHQuZ2xvYmFsT2JqZWN0KCkpLT5zeW1ib2xUYWJsZSgp
LmdldChpZGVudGlmaWVyLmltcGwoKSkuYWRkcmVzc09mSXNXYXRjaGVkKCkpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOworICAgICAgICBy
ZXR1cm4gdmFsdWU7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMTExLDcgKzExMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8gVGhlIHJl
c29sdmVkIGJpbmRpbmcgaXMgaW1tdXRhYmxlLgogICAgICAgICAgICAgUmVhZE9ubHlGbGFnID0g
MHgyMCwKICAgICAgICAgICAgIC8vIFRoZSBiYXNlIG9iamVjdCBpcyB0aGUgZ2xvYmFsIG9iamVj
dC4KLSAgICAgICAgICAgIEdsb2JhbEZsYWcgPSAweDQwCisgICAgICAgICAgICBHbG9iYWxGbGFn
ID0gMHg0MCwKKyAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBiZWluZyB3YXRjaGVkLCBz
byB3cml0ZXMgc2hvdWxkIGJlIHNwZWNpYWwuCisgICAgICAgICAgICBXYXRjaGVkRmxhZyA9IDB4
ODAKICAgICAgICAgfTsKICAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAgICAgIC8vIFRoZSBw
cm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBpbiBhIHJlZ2lzdGVyLgpAQCAtMTMxLDYgKzEz
Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8gYmluZGluZyBjcmVhdGVkIHdp
dGggInZhciIgYXQgdGhlIHRvcCBsZXZlbC4gQXQgcnVudGltZSB3ZSdsbAogICAgICAgICAgICAg
Ly8ganVzdCBpbmRleCBpbnRvIHRoZSBnbG9iYWwgb2JqZWN0LgogICAgICAgICAgICAgSW5kZXhl
ZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFsRmxhZyB8IFN0YXRpY0ZsYWcsCisgICAgICAg
ICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWwsIGJ1dCB0aGUgcHJvcGVydHkgaXMgYmVpbmcgd2F0
Y2hlZC4KKyAgICAgICAgICAgIFdhdGNoZWRJbmRleGVkR2xvYmFsID0gSW5kZXhlZEZsYWcgfCBH
bG9iYWxGbGFnIHwgU3RhdGljRmxhZyB8IFdhdGNoZWRGbGFnLAogICAgICAgICAgICAgLy8gTGlr
ZSBJbmRleGVkR2xvYmFsLCBidXQgdGhlIHByb3BlcnR5IGlzIGFsc28gcmVhZC1vbmx5LCBsaWtl
IE5hTiwKICAgICAgICAgICAgIC8vIEluZmluaXR5LCBvciB1bmRlZmluZWQuCiAgICAgICAgICAg
ICBSZWFkT25seUluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxhZyB8IFJlYWRPbmx5RmxhZyB8IEds
b2JhbEZsYWcgfCBTdGF0aWNGbGFnLApAQCAtNDQxLDggKzQ0NSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90eXBlb2YsIGRzdCwgc3JjKTsgfQog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBw
cm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSkgeyByZXR1cm4gZW1pdEJpbmFyeU9wKG9wX2luLCBk
c3QsIHByb3BlcnR5LCBiYXNlLCBPcGVyYW5kVHlwZXMoKSk7IH0KIAotICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3Vs
dCYpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVS
ZXN1bHQmLCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRT
dGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRl
bnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJl
c29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVz
b2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3Vs
dCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKQEAgLTU3NCw3ICs1NzgsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFJldHVybnMgdGhlIGluZGV4IG9m
IHRoZSBhZGRlZCB2YXIuCi0gICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmll
ciYsIGJvb2wgaXNDb25zdGFudCk7CisgICAgICAgIGVudW0gQ29uc3RhbnRNb2RlIHsgSXNDb25z
dGFudCwgSXNWYXJpYWJsZSB9OworICAgICAgICBlbnVtIEZ1bmN0aW9uTW9kZSB7IElzRnVuY3Rp
b25Ub1NwZWNpYWxpemUsIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlIH07CisgICAgICAg
IGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYsIENvbnN0YW50TW9kZSBjb25zdGFu
dE1vZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpOwogCiAgICAgICAgIHZvaWQgYWRkUGFy
YW1ldGVyKGNvbnN0IElkZW50aWZpZXImLCBpbnQgcGFyYW1ldGVySW5kZXgpOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDcgKzQz
MCw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWkKICAgICBpZiAo
cmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBDYWxsQXJndW1lbnRzIGNh
bGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRHZXRTdGF0aWNWYXIoZnVuYy5nZXQoKSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBq
c1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1bmMuZ2V0KCkpLCBmdW5jLmdldCgp
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CiAg
ICAgfQpAQCAtNjE4LDcgKzYxOCw3IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGUKICAgICB9CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFy
ZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJlc29s
dmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBvbGRWYWx1ZTsKICAgICAg
ICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgICAgICBv
bGRWYWx1ZSA9IDA7CkBAIC02MjYsNyArNjI2LDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeFJlc29s
dmVOb2RlOjplbWl0Qnl0ZQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgb2xkVmFsdWUg
PSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHZhbHVlLmdldCgpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgdmFs
dWUuZ2V0KCkpOwogICAgICAgICByZXR1cm4gb2xkVmFsdWU7CiAgICAgfQogICAgIApAQCAtODAz
LDkgKzgwMyw5IEBAIFJlZ2lzdGVySUQqIFByZWZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAg
ICB9CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0
LmlzUmVhZE9ubHkoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdl
bmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwg
cmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wRHN0ID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBy
ZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICAgICAgZW1pdFByZUluY09yRGVjKGdlbmVyYXRv
ciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHByb3BEc3QuZ2V0KCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCBwcm9wRHN0LmdldCgp
KTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRz
dCwgcHJvcERzdC5nZXQoKSk7CiAgICAgfQogCkBAIC0xMjI2LDkgKzEyMjYsOSBAQCBSZWdpc3Rl
cklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAgfQogCiAgICAgaWYgKHJlc29s
dmVSZXN1bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3VsdC5pc1JlYWRPbmx5KCkpIHsKLSAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1Zh
cihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJlc29sdmVSZXN1bHQpOworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5l
cmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEu
Z2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtu
b3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgcmVzdWx0KTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgcmVzdWx0KTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEyNTYsNyArMTI1Niw3IEBAIFJl
Z2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICAgICAgaWYgKGRzdCA9
PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICAgICAgZHN0ID0gMDsKICAgICAg
ICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3JpZ2h0KTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgdmFsdWUp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lk
ZW50LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKQEAgLTEzNjEsNyAr
MTM2MSw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2wKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBtX2luaXQgPyBnZW5lcmF0b3IuZW1pdE5vZGUobV9p
bml0KSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKIAogICAgIGlmIChy
ZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpCi0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1
dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1ZS5n
ZXQoKSk7CiAgICAgCiAgICAgaWYgKGdlbmVyYXRvci5jb2RlVHlwZSgpICE9IEV2YWxDb2RlKQog
ICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0NzYsNyArMTQ3Niw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25l
ZCBpbmQKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Z1bmN0aW9u
KTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0aGUgZmFj
dCB0aGF0IHdlIGtub3cgd2hhdCB0aGUgZnVuY3Rpb24gaXMuCiAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCisgICAgICAgIAogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWRE
aXJlY3Q6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKQEAgLTE0ODgsOCArMTQ4OCwx
MyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIG5v
ZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9w
KCk7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9p
bnQ6CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNo
ZWNrOgogICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjM5LDEzICsy
MjM5LDYxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiA9IGdldFNwZWN1bGF0aW9uKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCk7CisKICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRHbG9iYWxW
YXIgPSBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgIEdldEdsb2JhbFZhciwKLSAgICAgICAg
ICAgICAgICBPcEluZm8obV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3Qt
PmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVn
aXN0ZXJQb2ludGVyKSksCiAgICAgICAgICAgICAgICAgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAg
ICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRHbG9iYWxW
YXIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2dsb2JhbF92YXIpOwogICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFy
X3dhdGNoYWJsZTogeworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdl
dFNwZWN1bGF0aW9uKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IG1f
Y29kZUJsb2NrLT5pZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKS5nZXQoaWRl
bnRpZmllci5pbXBsKCkpOworICAgICAgICAgICAgaWYgKCFlbnRyeS5jb3VsZEJlV2F0Y2hlZCgp
KSB7CisgICAgICAgICAgICAgICAgTm9kZUluZGV4IGdldEdsb2JhbFZhciA9IGFkZFRvR3JhcGgo
CisgICAgICAgICAgICAgICAgICAgIEdldEdsb2JhbFZhciwKKyAgICAgICAgICAgICAgICAgICAg
T3BJbmZvKGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICAgICAg
T3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCwgZ2V0R2xvYmFsVmFyKTsKKyAgICAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBUaGUgd2F0Y2hwb2ludCBpcyBzdGlsbCBpbnRhY3QhIFRo
aXMgbWVhbnMgdGhhdCB3ZSB3aWxsIGdldCBub3RpZmllZCBpZiB0aGUKKyAgICAgICAgICAgIC8v
IGN1cnJlbnQgdmFsdWUgaW4gdGhlIGdsb2JhbCB2YXJpYWJsZSBjaGFuZ2VzLiBTbywgd2UgY2Fu
IGlubGluZSB0aGF0IHZhbHVlLgorICAgICAgICAgICAgLy8gTW9yZW92ZXIsIGN1cnJlbnRseSB3
ZSBjYW4gYXNzdW1lIHRoYXQgdGhpcyB2YWx1ZSBpcyBhIEpTRnVuY3Rpb24qLCB3aGljaAorICAg
ICAgICAgICAgLy8gaW1wbGllcyB0aGF0IGl0J3MgYSBjZWxsLiBUaGlzIHNpbXBsaWZpZXMgdGhp
bmdzLCBzaW5jZSBpbiBnZW5lcmFsIHdlJ2QgaGF2ZQorICAgICAgICAgICAgLy8gdG8gdXNlIGEg
SlNDb25zdGFudCBmb3Igbm9uLWNlbGxzIGFuZCBhIFdlYWtKU0NvbnN0YW50IGZvciBjZWxscy4g
U28gaW5zdGVhZAorICAgICAgICAgICAgLy8gb2YgaGF2aW5nIGJvdGggY2FzZXMgd2UganVzdCBh
c3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYSBjZWxsLgorICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBOQi4gSWYgaXQgd2Fzbid0IGZvciBDU0UsIEdsb2JhbFZhcldhdGNocG9pbnQgd291bGQg
aGF2ZSBubyBuZWVkIGZvciB0aGUKKyAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHBvaW50ZXIuIEJ1
dCBDU0UgdHJhY2tzIGVmZmVjdHMgb24gZ2xvYmFsIHZhcmlhYmxlcyBieSBjb21wYXJpbmcKKyAg
ICAgICAgICAgIC8vIHJlZ2lzdGVyIHBvaW50ZXJzLiBCZWNhdXNlIENTRSBleGVjdXRlcyBtdWx0
aXBsZSB0aW1lcyB3aGlsZSB0aGUgYmFja2VuZAorICAgICAgICAgICAgLy8gZXhlY3V0ZXMgb25j
ZSwgd2UgdXNlIHRoZSBmb2xsb3dpbmcgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmOgorICAgICAgICAg
ICAgLy8gLSBUaGUgbm9kZSByZWZlcnMgZGlyZWN0bHkgdG8gdGhlIHJlZ2lzdGVyIHBvaW50ZXIg
dG8gbWFrZSBDU0Ugc3VwZXIgY2hlYXAuCisgICAgICAgICAgICAvLyAtIFRvIHBlcmZvcm0gYmFj
a2VuZCBjb2RlIGdlbmVyYXRpb24sIHRoZSBub2RlIG9ubHkgY29udGFpbnMgdGhlIGlkZW50aWZp
ZXIKKyAgICAgICAgICAgIC8vICAgbnVtYmVyLCBmcm9tIHdoaWNoIGl0IGlzIHBvc3NpYmxlIHRv
IGdldCAodmlhIGEgZmV3IGF2ZXJhZ2UtdGltZSBPKDEpCisgICAgICAgICAgICAvLyAgIGxvb2t1
cHMpIHRvIHRoZSBXYXRjaHBvaW50U2V0LgorICAgICAgICAgICAgCisgICAgICAgICAgICBhZGRU
b0dyYXBoKAorICAgICAgICAgICAgICAgIEdsb2JhbFZhcldhdGNocG9pbnQsCisgICAgICAgICAg
ICAgICAgT3BJbmZvKGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAg
ICBPcEluZm8oaWRlbnRpZmllck51bWJlcikpOworICAgICAgICAgICAgCisgICAgICAgICAgICBK
U1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBnbG9iYWxPYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0
SW5kZXgoKSkuZ2V0KCk7CisgICAgICAgICAgICBBU1NFUlQoc3BlY2lmaWNWYWx1ZS5pc0NlbGwo
KSk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFdlYWtKU0NvbnN0YW50LCBPcEluZm8oc3BlY2lmaWNW
YWx1ZS5hc0NlbGwoKSkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2Ug
b3BfcHV0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKQEAgLTIyNTYsNiArMjMwNCwyOCBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9wdXRfZ2xvYmFsX3Zhcik7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9w
X3B1dF9nbG9iYWxfdmFyX2NoZWNrOiB7CisgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBn
ZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrOworICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZF07
CisgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBtX2NvZGVCbG9jay0+aWRlbnRp
ZmllcihpZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCkuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKTsK
KyAgICAgICAgICAgIGlmICghZW50cnkuY291bGRCZVdhdGNoZWQoKSkgeworICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAgICAgICAgICAgIFB1dEdsb2JhbFZhciwKKyAgICAg
ICAgICAgICAgICAgICAgT3BJbmZvKGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhp
c09iamVjdChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkZFRvR3Jh
cGgoCisgICAgICAgICAgICAgICAgUHV0R2xvYmFsVmFyQ2hlY2ssCisgICAgICAgICAgICAgICAg
T3BJbmZvKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFzc2VydFJlZ2lzdGVySXNJblRoaXNP
YmplY3QoY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAg
ICAgICAgICAgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLAorICAgICAgICAgICAgICAgIHZhbHVl
KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIC8vID09PSBCbG9jayB0ZXJtaW5hdG9ycy4gPT09CiAKICAgICAg
ICAgY2FzZSBvcF9qbXA6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0Nh
bGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
Q2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsMTIgQEAg
cHVibGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CiAgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcyKTsKICAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzKFRydXN0ZWRJbW1QdHIgYXJnMSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFy
Z3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKICAgICB7CkBAIC00
MzMsNiArNDM5LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjE+KGFyZzEsIGFyZzIp
OwogICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1
c3RlZEltbVB0ciBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c0V4ZWNTdGF0ZSgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
U0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
U0VQaGFzZS5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDI5IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgfQogICAgIAorICAgIGJvb2wgZ2xv
YmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0
ZXJQb2ludGVyKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxv
Y2s7IGktLTspIHsKKyAgICAgICAgICAgIE5vZGVJbmRleCBpbmRleCA9IG1fY3VycmVudEJsb2Nr
LT5hdChpKTsKKyAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW2luZGV4XTsKKyAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIEdsb2JhbFZhcldh
dGNocG9pbnQ6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0g
cmVnaXN0ZXJQb2ludGVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAg
ICAgICAgICAgIGlmIChub2RlLnJlZ2lzdGVyUG9pbnRlcigpID09IHJlZ2lzdGVyUG9pbnRlcikK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmNsb2JiZXJzV29ybGQoaW5kZXgpKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgCiAgICAgTm9kZUluZGV4IGdsb2JhbFZhclN0b3JlRWxpbWluYXRpb24oV3JpdGVC
YXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpCiAgICAgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewpAQCAtMjI2LDYgKzI0OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzd2l0Y2ggKG5v
ZGUub3AoKSkgewogICAgICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgICAgICBj
YXNlIFB1dEdsb2JhbFZhckNoZWNrOgogICAgICAgICAgICAgICAgIGlmIChub2RlLnJlZ2lzdGVy
UG9pbnRlcigpID09IHJlZ2lzdGVyUG9pbnRlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGluZGV4OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTg1LDcgKzEwMDksMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KGdsb2JhbFZhckxvYWRFbGltaW5hdGlv
bihub2RlLnJlZ2lzdGVyUG9pbnRlcigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAgICAgICBpZiAo
Z2xvYmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkpKQor
ICAgICAgICAgICAgICAgIGVsaW1pbmF0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgIGNhc2UgUHV0R2xvYmFs
VmFyQ2hlY2s6CiAgICAgICAgICAgICBpZiAobV9maXhwb2ludFN0YXRlID09IEZpeHBvaW50Tm90
Q29udmVyZ2VkKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZWxpbWluYXRl
KGdsb2JhbFZhclN0b3JlRWxpbWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lv
biAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlT3Bjb2RlKAogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGly
ZWN0OgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ug
b3BfZ2V0X2dsb2JhbF92YXI6CisgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6
CiAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFy
X2NoZWNrOgogICAgIGNhc2Ugb3Bfam1wOgogICAgIGNhc2Ugb3BfbG9vcDoKICAgICBjYXNlIG9w
X2p0cnVlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lv
biAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjZGVmaW5lIERGR19FTkFCTEUoREZHX0ZFQVRV
UkUpIChkZWZpbmVkIERGR19FTkFCTEVfIyNERkdfRkVBVFVSRSAmJiBERkdfRU5BQkxFXyMjREZH
X0ZFQVRVUkUpCiAKIC8vIEVtaXQgdmFyaW91cyBsb2dnaW5nIGluZm9ybWF0aW9uIGZvciBkZWJ1
Z2dpbmcsIGluY2x1ZGluZyBkdW1waW5nIHRoZSBkYXRhZmxvdyBncmFwaHMuCi0jZGVmaW5lIERG
R19FTkFCTEVfREVCVUdfVkVSQk9TRSAwCisjZGVmaW5lIERGR19FTkFCTEVfREVCVUdfVkVSQk9T
RSAxCiAvLyBFbWl0IGR1bXBzIGR1cmluZyBwcm9wYWdhdGlvbiwgaW4gYWRkaXRpb24gdG8ganVz
dCBhZnRlci4KICNkZWZpbmUgREZHX0VOQUJMRV9ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFIDAK
IC8vIEVtaXQgbG9nZ2luZyBmb3IgT1NSIGV4aXQgdmFsdWUgcmVjb3ZlcmllcyBhdCBldmVyeSBu
b2RlLCBub3QganVzdCBub2RlcyB0aGF0CkBAIC03MCw3ICs3MCw3IEBACiAvLyBFbWl0IGEgYnJl
YWtwb2ludCBpbnRvIHRoZSBzcGVjdWxhdGlvbiBmYWlsdXJlIGNvZGUuCiAjZGVmaW5lIERGR19F
TkFCTEVfSklUX0JSRUFLX09OX1NQRUNVTEFUSU9OX0ZBSUxVUkUgMAogLy8gTG9nIGV2ZXJ5IHNw
ZWN1bGF0aW9uIGZhaWx1cmUuCi0jZGVmaW5lIERGR19FTkFCTEVfVkVSQk9TRV9TUEVDVUxBVElP
Tl9GQUlMVVJFIDAKKyNkZWZpbmUgREZHX0VOQUJMRV9WRVJCT1NFX1NQRUNVTEFUSU9OX0ZBSUxV
UkUgMQogLy8gRGlzYWJsZSB0aGUgREZHIEpJVCB3aXRob3V0IGhhdmluZyB0byB0b3VjaCBQbGF0
Zm9ybS5oCiAjZGVmaW5lIERGR19ERUJVR19MT0NBTF9ESVNCQUxFIDAKIC8vIEVuYWJsZSBPU1Ig
ZW50cnkgZnJvbSBiYXNlbGluZSBKSVQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCShyZXZpc2lvbiAxMTk4MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KICAg
ICAKKyAgICBib29sIGlzU2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvZGVPZmZzZXQg
IT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOworICAgIH0KKyAgICAKICAg
ICB2b2lkIHN3aXRjaFRvTGF0ZUp1bXAoTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgY2hl
Y2spCiAgICAgewogI2lmbmRlZiBOREVCVUcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsMTEgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMoKTsgKytp
KSB7CiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhpdChpKTsKLSAg
ICAgICAgZXhpdC5tX2NoZWNrLmluaXRpYWxKdW1wKCkubGluayh0aGlzKTsKKyAgICAgICAgQVNT
RVJUKCFleGl0Lm1fY2hlY2suaXNTZXQoKSA9PSAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCAhPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICAgICAgaWYgKGV4aXQu
bV93YXRjaHBvaW50SW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQorICAgICAgICAgICAgZXhpdC5tX2NoZWNrLmluaXRpYWxKdW1wKCkubGluayh0aGlzKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhpdC5tX3dh
dGNocG9pbnRJbmRleCkuc2V0RGVzdGluYXRpb24obGFiZWwoKSk7CiAgICAgICAgIGppdEFzc2Vy
dEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CiAgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGkpLCAm
Z2xvYmFsRGF0YSgpLT5vc3JFeGl0SW5kZXgpOwogICAgICAgICBleGl0Lm1fY2hlY2suc3dpdGNo
VG9MYXRlSnVtcChwYXRjaGFibGVKdW1wKCkpOwpAQCAtMTkwLDYgKzE5NCw4IEBAIHZvaWQgSklU
Q29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9
IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZXhpdC5t
X2NoZWNrLmxhdGVKdW1wKCksIHRhcmdldCk7CiAgICAgICAgIGV4aXQubV9jaGVjay5jb3JyZWN0
TGF0ZUp1bXAobGlua0J1ZmZlcik7CisgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4
ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIGNv
ZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLmNvcnJlY3RMYWJl
bHMobGlua0J1ZmZlcik7CiAgICAgfQogICAgIAogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0Zp
dChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzAsOSArNDMwLDIwIEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KICAgICAKKyAgICBib29sIGhhc0lkZW50
aWZpZXJOdW1iZXJGb3JDaGVjaygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBHbG9i
YWxWYXJXYXRjaHBvaW50IHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyQ2hlY2s7CisgICAgfQorICAg
IAorICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpCisgICAgeworICAgICAg
ICBBU1NFUlQoaGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpOworICAgICAgICByZXR1cm4g
bV9vcEluZm8yOworICAgIH0KKyAgICAKICAgICBib29sIGhhc1JlZ2lzdGVyUG9pbnRlcigpCiAg
ICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRH
bG9iYWxWYXI7CisgICAgICAgIHJldHVybiBvcCgpID09IEdldEdsb2JhbFZhciB8fCBvcCgpID09
IFB1dEdsb2JhbFZhciB8fCBvcCgpID09IEdsb2JhbFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBQ
dXRHbG9iYWxWYXJDaGVjazsKICAgICB9CiAgICAgCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
KiByZWdpc3RlclBvaW50ZXIoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dFNjb3BlZFZhciwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oR2V0R2xvYmFsVmFyLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFy
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2xvYmFsVmFyV2F0Y2hwb2ludCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFB1dEdsb2JhbFZhckNoZWNrLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIFwKICAgICAvKiBPcHRpbWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9cCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDExOTgw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDYgKzUxLDcgQEAgT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBK
U1ZhbHVlUwogICAgICwgbV9jb2RlT3JpZ2luKGppdC0+bV9jb2RlT3JpZ2luRm9yT1NSKQogICAg
ICwgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUobV9jb2RlT3JpZ2luKQogICAgICwgbV9yZWNv
dmVyeUluZGV4KHJlY292ZXJ5SW5kZXgpCisgICAgLCBtX3dhdGNocG9pbnRJbmRleChzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgLCBtX2tpbmQoa2luZCkKICAgICAs
IG1fY291bnQoMCkKICAgICAsIG1fYXJndW1lbnRzKGppdC0+bV9hcmd1bWVudHMuc2l6ZSgpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHJldmlzaW9uIDExOTgw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Niw2ICs5Niw3IEBAIHN0cnVjdCBPU1JFeGl0IHsKICAgICBDb2RlT3JpZ2luIG1f
Y29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwogICAgIAogICAgIHVuc2lnbmVkIG1fcmVjb3ZlcnlJ
bmRleDsKKyAgICB1bnNpZ25lZCBtX3dhdGNocG9pbnRJbmRleDsKICAgICAKICAgICBFeGl0S2lu
ZCBtX2tpbmQ7CiAgICAgdWludDMyX3QgbV9jb3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTI0LDYgKzkyNCwxMSBAQCB2b2lkKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDb25z
CiAgICAgcmV0dXJuIHZpcnR1YWxGb3IoZXhlY0NhbGxlZSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9
CiAKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZShXYXRj
aHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KQoreworICAgIHdhdGNocG9pbnRTZXQtPm5vdGlmeVdy
aXRlKCk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2
ZShFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDExOTgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDAsNiArMTAwLDcgQEAgdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09w
ZXJhdAogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FSkpKKShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpQUCkoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB2b2lkKik7CiB0eXBlZGVm
IHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZv
aWQqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgREZHX09QRVJBVElP
TiAoKlZfREZHT3BlcmF0aW9uX1cpKFdhdGNocG9pbnRTZXQqKTsKIHR5cGVkZWYgdm9pZCogREZH
X09QRVJBVElPTiAoKlBfREZHT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogCiAvLyBUaGVzZSBy
b3V0aW5lcyBhcmUgcHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMg
b2Ygb3BlcmF0aW9ucyB0b28gY29tcGxleCB0byBKSVQuCkBAIC0xMTYsNiArMTE3LDcgQEAgRW5j
b2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIElkZW50aWZpZXIqKTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uQ2FsbEN1c3RvbUdldHRlcihFeGVjU3RhdGUqLCBKU0NlbGwqLCBQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYywgSWRlbnRpZmllciopOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBv
cGVyYXRpb25DYWxsR2V0dGVyKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopOwordm9pZCBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5vdGlmeUdsb2JhbFZhcldyaXRlKFdhdGNocG9pbnRTZXQq
KTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZShFeGVjU3Rh
dGUqLCBJZGVudGlmaWVyKik7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
blJlc29sdmVCYXNlKEV4ZWNTdGF0ZSosIElkZW50aWZpZXIqKTsKIEVuY29kZWRKU1ZhbHVlIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZUJhc2VTdHJpY3RQdXQoRXhlY1N0YXRlKiwgSWRl
bnRpZmllciopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDExOTgwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTEsNyArNDkxLDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBQdXRH
bG9iYWxWYXI6IHsKKyAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgIGNhc2UgUHV0
R2xvYmFsVmFyQ2hlY2s6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtNjY5LDYgKzY3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVGVh
ck9mZkFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDaGVja051bWJlcjoKICAgICAgICAgY2FzZSBD
aGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2lu
dDoKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjE1LDYgKzM2MTUsNDMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dEds
b2JhbFZhckNoZWNrOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOworICAgICAgICAKKyAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNl
dCA9CisgICAgICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+
c3ltYm9sVGFibGUoKS5nZXQoCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50
aWZpZXJOdW1iZXJGb3JDaGVjaygpKS0+aW1wbCgpKS53YXRjaHBvaW50U2V0KCk7CisgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRl
QWRkcmVzcyh3YXRjaHBvaW50U2V0LT5hZGRyZXNzT2ZJc1dhdGNoZWQoKSkpLAorICAgICAgICAg
ICAgICAgIHRoaXMsIG9wZXJhdGlvbk5vdGlmeUdsb2JhbFZhcldyaXRlLCBOb1Jlc3VsdCwgd2F0
Y2hwb2ludFNldCkpOworICAgICAgICAKKyAgICAgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVy
RW5hYmxlZCgpKSB7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNv
ZGVPcmlnaW4pLCB2YWx1ZS5ncHIoKSwgbm9kZS5jaGlsZDEoKSwgV3JpdGVCYXJyaWVyRm9yVmFy
aWFibGVBY2Nlc3MsIHNjcmF0Y2hSZWcpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIoKSwgbm9kZS5yZWdpc3RlclBvaW50ZXIoKSk7CisKKyAg
ICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgICAgIAorICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDogeworICAgICAgICBXYXRjaHBv
aW50KiB3YXRjaHBvaW50ID0gc3BlY3VsYXRpb25XYXRjaHBvaW50KCk7CisgICAgICAgIGRhdGFM
b2coIiBvZmZzZXQgPSAldSAiLCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgbV9qaXQu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCkuZ2V0KAorICAg
ICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKS0+aW1w
bCgpKS5hZGRXYXRjaHBvaW50KAorICAgICAgICAgICAgICAgIHdhdGNocG9pbnQpOworICAgICAg
ICAKKyAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHN0cnVjdHVyZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxNCw2ICsx
NDE0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fVyBvcGVyYXRpb24sIFdhdGNocG9pbnRT
ZXQqIHdhdGNocG9pbnRTZXQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhU
cnVzdGVkSW1tUHRyKHdhdGNocG9pbnRTZXQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwo
b3BlcmF0aW9uKTsKKyAgICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0
eXBlbmFtZSBBcmd1bWVudFR5cGUxPgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJn
MSkKICAgICB7CkBAIC0xNjcyLDYgKzE2NzcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9B
UkcgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX1cgb3BlcmF0aW9uLCBXYXRjaHBvaW50U2V0KiB3
YXRjaHBvaW50U2V0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoVHJ1c3Rl
ZEltbVB0cih3YXRjaHBvaW50U2V0KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7CisgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5h
bWUgQXJndW1lbnRUeXBlMT4KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZ1
bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5cGUxIGFyZzEpCiAg
ICAgewpAQCAtMTc5Myw2ICsxODAzLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQubW92ZShH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAg
ICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHIm
IGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAg
ICAgICByZXR1cm4gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3Qg
RnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCiAg
ICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhmdW5jdGlvbik7CkBAIC0yMTkwLDYgKzIyMDUsMzIgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdB
cmd1bWVudFR5cGVzKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291
cmNlLCBub2RlVXNlLmluZGV4KCksIGp1bXBUb0ZhaWwsIHJlY292ZXJ5KTsKICAgICB9CisgICAg
Ly8gVXNlIHRoaXMgbGlrZSB5b3Ugd291bGQgdXNlIHNwZWN1bGF0aW9uQ2hlY2soKSwgZXhjZXB0
IHRoYXQgeW91IGRvbid0IHBhc3MgaXQgYSBqdW1wCisgICAgLy8gKGJlY2F1c2UgeW91IGRvbid0
IGhhdmUgdG8gZXhlY3V0ZSBhIGJyYW5jaDsgdGhhdCdzIGtpbmQgb2YgdGhlIHdob2xlIHBvaW50
KSwgYW5kIHlvdQorICAgIC8vIG11c3QgcmVnaXN0ZXIgdGhlIHJldHVybmVkIFdhdGNocG9pbnQg
d2l0aCBzb21ldGhpbmcgcmVsZXZhbnQuIEluIGdlbmVyYWwsIHRoaXMgc2hvdWxkCisgICAgLy8g
YmUgdXNlZCB3aXRoIGV4dHJlbWUgY2FyZS4gVXNlIHNwZWN1bGF0aW9uQ2hlY2soKSB1bmxlc3Mg
eW91J3ZlIGdvdCBhbiBhbWF6aW5nIHJlYXNvbgorICAgIC8vIG5vdCB0by4KKyAgICBXYXRjaHBv
aW50KiBzcGVjdWxhdGlvbldhdGNocG9pbnQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBq
c1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIEFTU0VSVChhdCht
X2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwor
ICAgICAgICBPU1JFeGl0JiBleGl0ID0gbV9qaXQuY29kZUJsb2NrKCktPm9zckV4aXQoCisgICAg
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdCgKKyAgICAgICAgICAgICAg
ICBPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wKCksIHRoaXMpKSk7Cisg
ICAgICAgIGV4aXQubV93YXRjaHBvaW50SW5kZXggPSBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5k
V2F0Y2hwb2ludCgKKyAgICAgICAgICAgIFdhdGNocG9pbnQobV9qaXQud2F0Y2hwb2ludExhYmVs
KFJlcGxhY2VXaXRoTG9jYWxKdW1wKSkpOworICAgICAgICByZXR1cm4gJm1faml0LmNvZGVCbG9j
aygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpOworICAgIH0KKyAgICAvLyBU
aGUgZGVmYXVsdCBmb3Igc3BlY3VsYXRpb24gd2F0Y2hwb2ludHMgaXMgdGhhdCB0aGV5J3JlIHVu
Y291bnRlZCwgYmVjYXVzZSB0aGUKKyAgICAvLyBhY3Qgb2YgZmlyaW5nIGEgd2F0Y2hwb2ludCBp
bnZhbGlkYXRlcyBpdC4gU28sIGZ1dHVyZSByZWNvbXBpbGF0aW9ucyB3aWxsIG5vdAorICAgIC8v
IGF0dGVtcHQgdG8gc2V0IHRoaXMgd2F0Y2hwb2ludCBhZ2Fpbi4KKyAgICBXYXRjaHBvaW50KiBz
cGVjdWxhdGlvbldhdGNocG9pbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
V2F0Y2hwb2ludChVbmNvdW50YWJsZVdhdGNocG9pbnQsIEpTVmFsdWVTb3VyY2UoKSwgTm9Ob2Rl
KTsKKyAgICB9CiAgICAgdm9pZCBmb3J3YXJkU3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5k
LCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHZhbHVlUmVj
b3ZlcnkpCiAgICAgewogICAgICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQo
KSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDYgKzI1OSw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCiAg
ICAgICAgIERFRklORV9PUChvcF9nZXRfYXJndW1lbnRfYnlfdmFsKQogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2J5X3BuYW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2dsb2JhbF92YXJf
d2F0Y2hhYmxlKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2dsb2JhbF92YXIpCiAgICAgICAg
IERFRklORV9PUChvcF9nZXRfcG5hbWVzKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Njb3Bl
ZF92YXIpCkBAIC0zMjQsNiArMzI1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF9nZXR0ZXJfc2V0dGVyKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dsb2JhbF92
YXIpCisgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9zY29wZWRfdmFyKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzb2x2
ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfYmFzZSkKQEAgLTQ4MSw2ICs0ODMsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9yc2hpZnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlz
aW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2Myw3ICs0NjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBp
c01hcHBlZChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpOwogICAgICAgICBib29sIGdldE1hcHBl
ZFBheWxvYWQoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEJiBwYXlsb2FkKTsK
ICAgICAgICAgYm9vbCBnZXRNYXBwZWRUYWcoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdp
c3RlcklEJiB0YWcpOwotCisgICAgICAgIAogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpOwogICAgICAgICB2b2lkIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVy
SUQgdGFnKTsKIApAQCAtNTk5LDYgKzU5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfZ2xvYmFsX3ZhcihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
Z2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikgeyBlbWl0
X29wX2dldF9nbG9iYWxfdmFyKGluc3RydWN0aW9uKTsgfQogICAgICAgICB2b2lkIGVtaXRfb3Bf
Z2V0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luaXRf
bGF6eV9yZWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX2hhc19p
bnN0YW5jZShJbnN0cnVjdGlvbiopOwpAQCAtNjYyLDYgKzY2Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX3Jlc29sdmUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVf
YmFzZShJbnN0cnVjdGlvbiopOwpAQCAtNzM5LDYgKzc0MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX3ByZV9pbmMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5
X2lkKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2ds
b2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9yc2hpZnQo
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTAsNiArMTA5MCwz
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiAgICAgbWFwKG1f
Ynl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX3B1dF9nbG9iYWxfdmFyKSwgdmFsdWUs
IHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgV3JpdGVCYXJyaWVy
PFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdp
c3RlclBvaW50ZXI7CisgICAgaW50IHZhbHVlID0gY3VycmVudEludHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOworICAgIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgCisgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdU
MCk7CisgICAgCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgY3VycmVudElu
c3RydWN0aW9uWzNdLnUucHJlZGljYXRlUG9pbnRlcikpOworICAgIAorICAgIGlmIChIZWFwOjpp
c1dyaXRlQmFycmllckVuYWJsZWQoKSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xv
YmFsT2JqZWN0KSwgcmVnVDIpOworICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGdsb2JhbE9iamVj
dCwgcmVnVDEsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JW
YXJpYWJsZUFjY2Vzcyk7CisgICAgfQorICAgIAorICAgIHN0b3JlMzIocmVnVDEsIHJlZ2lzdGVy
UG9pbnRlci0+dGFnUG9pbnRlcigpKTsKKyAgICBzdG9yZTMyKHJlZ1QwLCByZWdpc3RlclBvaW50
ZXItPnBheWxvYWRQb2ludGVyKCkpOworICAgIHVubWFwKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOworICAgIAorICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9w
dXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEsIHJl
Z1QwKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3Ry
dWN0aW9uWzRdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNhbGwoKTsKK30KKwogdm9pZCBK
SVQ6OnJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHVi
SW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lv
biAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNyw2ICsxMDI3LDI5IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWMKICAgICAgICAgZW1pdFdyaXRlQmFycmllcihnbG9i
YWxPYmplY3QsIHJlZ1QwLCByZWdUMiwgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJy
aWVyRm9yVmFyaWFibGVBY2Nlc3MpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFs
X3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDAp
OworICAgIAorICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFic29sdXRlQWRk
cmVzcyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5wcmVkaWNhdGVQb2ludGVyKSkpOworCisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KTsKKyAgICAKKyAgICBzdG9yZVB0cihyZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVn
aXN0ZXJQb2ludGVyKTsKKyAgICBpZiAoSGVhcDo6aXNXcml0ZUJhcnJpZXJFbmFibGVkKCkpCisg
ICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0LCByZWdUMCwgcmVnVDIsIFNob3Vs
ZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIAorICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQocmVnVDApOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwuY2FsbCgpOwor
fQorCiB2b2lkIEpJVDo6cmVzZXRQYXRjaEdldEJ5SWQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1
ZmZlciwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGN0aV9vcF9nZXRfYnlfaWQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDExOTgw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzc3LDYgKzIzNzcsMTUgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3Qq
LCBvcF9uZXdfYQogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShzdGFja0ZyYW1lLmNhbGxGcmFt
ZSwgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihzdGFj
a0ZyYW1lLmFyZ3NbMF0uaW50MzIoKSksIHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpKTsKIH0K
IAorREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spCit7
CisgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOworICAgIAorICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIHN5bWJvbFRhYmxlUHV0KGNv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGNhbGxGcmFtZSwgY29kZUJsb2NrLT5pZGVudGlmaWVy
KHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpKSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUo
KSwgdHJ1ZSk7Cit9CisKIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9y
ZXNvbHZlKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDM2
LDYgKzQzNiw3IEBAIGV4dGVybiAiQyIgewogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3BvcF9z
Y29wZShTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3By
b2ZpbGVfZGlkX2NhbGwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICB2b2lkIEpJVF9TVFVC
IGN0aV9vcF9wcm9maWxlX3dpbGxfY2FsbChTVFVCX0FSR1NfREVDTEFSQVRJT04pOworICAgIHZv
aWQgSklUX1NUVUIgY3RpX29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKFNUVUJfQVJHU19ERUNMQVJB
VElPTik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X2lkKFNUVUJfQVJHU19ERUNM
QVJBVElPTik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X2lkX2ZhaWwoU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKTsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfYnlfaWRfZ2Vu
ZXJpYyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NTYsNiArODU2LDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNv
bHZlX3cKICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBzeW1ib2xUYWJsZVB1
dChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIo
cGNbNF0udS5vcGVyYW5kKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIHRydWUpOworICAgIExM
SU5UX0VORCgpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lk
KQogewogICAgIExMSU5UX0JFR0lOKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2
ICsxNDQsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9iCiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX2Jhc2UpOwogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMTk4MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQko
d29ya2luZyBjb3B5KQpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgX2xsaW50X29wX3B1dF9zY29wZWRf
dmFyOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorbWFj
cm8gZ2V0R2xvYmFsVmFyKHNpemUpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRwIDhb
UENdLCB0MAogICAgIGxvYWRpIDRbUENdLCB0MwpAQCAtMTA0Nyw5ICsxMDQ3LDE3IEBAIF9sbGlu
dF9vcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwXSwgdDEKICAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkaSAoc2l6
ZSAtIDEpICogNFtQQ10sIHQzCiAgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDMpCi0gICAgZGlz
cGF0Y2goNCkKKyAgICBkaXNwYXRjaChzaXplKQorZW5kCisKK19sbGludF9vcF9nZXRfZ2xvYmFs
X3ZhcjoKKyAgICBnZXRHbG9iYWxWYXIoNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXJf
d2F0Y2hhYmxlOgorICAgIGdldEdsb2JhbFZhcig1KQogCiAKIF9sbGludF9vcF9wdXRfZ2xvYmFs
X3ZhcjoKQEAgLTEwNjMsNiArMTA3MSwyMiBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CiAg
ICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwg
dDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBidGJueiBbdDJdLCAub3BQdXRHbG9iYWxWYXJD
aGVja1Nsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgd3Jp
dGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbdDBdCisgICAgZGlzcGF0Y2goNSkKKy5vcFB1dEdsb2JhbFZh
ckNoZWNrU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2xvYmFs
X3Zhcl9jaGVjaykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlf
aWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODkzLDE1ICs4OTMsMjMg
QEAgX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50
X29wX2dldF9nbG9iYWxfdmFyOgorbWFjcm8gZ2V0R2xvYmFsVmFyKHNpemUpCiAgICAgdHJhY2VF
eGVjdXRpb24oKQogICAgIGxvYWRwIDE2W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZGlzIDhbUEIs
IFBDLCA4XSwgdDMKICAgICBsb2FkcCBbdDBdLCB0MQogICAgIHN0b3JlcCB0MSwgW2NmciwgdDMs
IDhdCi0gICAgbG9hZHAgMjRbUEIsIFBDLCA4XSwgdDAKKyAgICBsb2FkcCAoc2l6ZSAtIDEpICog
OFtQQiwgUEMsIDhdLCB0MAogICAgIHZhbHVlUHJvZmlsZSh0MSwgdDApCi0gICAgZGlzcGF0Y2go
NCkKKyAgICBkaXNwYXRjaChzaXplKQorZW5kCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoK
KyAgICBnZXRHbG9iYWxWYXIoNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hh
YmxlOgorICAgIGdldEdsb2JhbFZhcig1KQogCiAKIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoK
QEAgLTkxNCw2ICs5MjIsMjEgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgogICAgIGRpc3Bh
dGNoKDMpCiAKIAorX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkcCAyNFtQQiwgUEMsIDhdLCB0MgorICAgIGxvYWRpcyAxNltQQiwg
UEMsIDhdLCB0MQorICAgIGxvYWRwIDhbUEIsIFBDLCA4XSwgdDAKKyAgICBidGJueiBbdDJdLCAu
b3BQdXRHbG9iYWxWYXJDaGVja1Nsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0
MikKKyAgICB3cml0ZUJhcnJpZXIodDIpCisgICAgc3RvcmVwIHQyLCBbdDBdCisgICAgZGlzcGF0
Y2goNSkKKy5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9s
bGludF9vcF9nZXRfYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgICMgV2Ugb25seSBk
byBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1v
ZGlmeSB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDIyICs1MDIsMjUgQEAgdm9pZCBKU09i
amVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZQogICAgIHN0cnVjdHVyZSgpLT5zZXRTdGF0
aWNGdW5jdGlvbnNSZWlmaWVkKCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1
cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAg
ICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEs
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RG
b3VuZCkKLSAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICBp
ZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBw
dXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgIHJldHVybiB0cnVlOwogfQog
CiBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9w
ZXJ0eVNsb3QmIHNsb3QsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMTk4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCB0cmFuc2l0aW9uVG8oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgdm9p
ZCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgYm9v
bCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsgLy8gUmV0dXJuIHRy
dWUgaWYgYW55dGhpbmcgaXMgcmVtb3ZlZC4KICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0
aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRpb24oKTsgfQogICAgICAgICBi
b29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDExOTgw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1i
b2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAgICBTeW1i
b2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3Qt
PnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAg
IFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5s
aW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNsb3Quc2V0VmFsdWUob2JqZWN0LT5yZWdp
c3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpKTsKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5l
IGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwKICAgICBib29s
JiBzbG90SXNXcml0ZWFibGUpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVj
dC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Cisg
ICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QtPnJl
Z2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwpAQCAtMTEzLDEzICsxMTMsMTYgQEAg
aW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVl
KSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKG9iamVjdCkpOwogICAgIAogICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0
KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAg
ICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGZhc3RFbnRyeSA9IGVudHJ5OyAvLyBleHRyYWN0IHRo
ZSBiaXRzCisgICAgaWYgKGZhc3RFbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsKKyAgICBpZiAoZmFzdEVudHJ5LmlzUmVh
ZE9ubHkoKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgaWYgKFVOTElLRUxZKGZhc3RFbnRyeS5pc0Zh
dCgpKSkKKyAgICAgICAgZW50cnkubm90aWZ5V3JpdGUoKTsKICAgICBvYmplY3QtPnJlZ2lzdGVy
QXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUpOwogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMTM2LDYgKzEzOSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRh
YmxlUHV0V2l0aEF0dHJpYnV0ZXMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRh
YmxlRW50cnkmIGVudHJ5ID0gaXRlci0+c2Vjb25kOwogICAgIEFTU0VSVCghZW50cnkuaXNOdWxs
KCkpOworICAgIGVudHJ5Lm5vdGlmeVdyaXRlKCk7CiAgICAgZW50cnkuc2V0QXR0cmlidXRlcyhh
dHRyaWJ1dGVzKTsKICAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0
KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlN5bWJvbFRhYmxlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTeW1ib2xUYWJsZUVudHJ5JiBT
eW1ib2xUYWJsZUVudHJ5Ojpjb3B5U2xvdyhjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikK
K3sKKyAgICBBU1NFUlQob3RoZXIuaXNGYXQoKSk7CisgICAgRmF0RW50cnkqIG5ld0ZhdEVudHJ5
ID0gbmV3IEZhdEVudHJ5KCpvdGhlci5mYXRFbnRyeSgpKTsKKyAgICBmcmVlRmF0RW50cnkoKTsK
KyAgICBtX2JpdHMgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KG5ld0ZhdEVudHJ5KSB8IEZhdEZs
YWc7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmZyZWVG
YXRFbnRyeVNsb3coKQoreworICAgIEFTU0VSVChpc0ZhdCgpKTsKKyAgICBkZWxldGUgZmF0RW50
cnkoKTsKK30KKworYm9vbCBTeW1ib2xUYWJsZUVudHJ5Ojpjb3VsZEJlV2F0Y2hlZCgpCit7Cisg
ICAgaWYgKCFpc0ZhdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgV2F0Y2hwb2ludFNl
dCogd2F0Y2hwb2ludHMgPSBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLmdldCgpOworICAgIGlm
ICghd2F0Y2hwb2ludHMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gd2F0Y2hw
b2ludHMtPmlzU3RpbGxWYWxpZCgpOworfQorCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmF0dGVt
cHRUb1dhdGNoKCkKK3sKKyAgICBGYXRFbnRyeSogZW50cnkgPSBpbmZsYXRlKCk7CisgICAgaWYg
KCFlbnRyeS0+bV93YXRjaHBvaW50cykKKyAgICAgICAgZW50cnktPm1fd2F0Y2hwb2ludHMgPSBh
ZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldCgpKTsKK30KKworYm9vbCogU3ltYm9sVGFibGVFbnRy
eTo6YWRkcmVzc09mSXNXYXRjaGVkKCkKK3sKKyAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7
CisgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMtPmFkZHJlc3NPZklzV2F0Y2hl
ZCgpOworfQorCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmFkZFdhdGNocG9pbnQoV2F0Y2hwb2lu
dCogd2F0Y2hwb2ludCkKK3sKKyAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7CisgICAgZmF0
RW50cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkKHdhdGNocG9pbnQpOworfQorCit2b2lkIFN5bWJv
bFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlU2xvdygpCit7CisgICAgV2F0Y2hwb2ludFNldCogd2F0
Y2hwb2ludHMgPSBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLmdldCgpOworICAgIGlmICghd2F0
Y2hwb2ludHMpCisgICAgICAgIHJldHVybjsKKyAgICB3YXRjaHBvaW50cy0+bm90aWZ5V3JpdGUo
KTsKK30KKworU3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnkqIFN5bWJvbFRhYmxlRW50cnk6Omlu
ZmxhdGVTbG93KCkKK3sKKyAgICBGYXRFbnRyeSogZW50cnkgPSBuZXcgRmF0RW50cnkobV9iaXRz
KTsKKyAgICBtX2JpdHMgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGVudHJ5KSB8IEZhdEZsYWc7
CisgICAgcmV0dXJuIGVudHJ5OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxMTk4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw1MSArMzEsMTQ1IEBACiAKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAj
aW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgV2F0Y2hwb2ludDsKKyAgICBjbGFzcyBX
YXRjaHBvaW50U2V0OworCiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgaW50IG1pc3NpbmdTeW1i
b2xNYXJrZXIoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOyB9CiAK
ICAgICAvLyBUaGUgYml0IHR3aWRkbGluZyBpbiB0aGlzIGNsYXNzIGFzc3VtZXMgdGhhdCBldmVy
eSByZWdpc3RlciBpbmRleCBpcyBhCiAgICAgLy8gcmVhc29uYWJseSBzbWFsbCBwb3NpdGl2ZSBv
ciBuZWdhdGl2ZSBudW1iZXIsIGFuZCB0aGVyZWZvcmUgaGFzIGl0cyBoaWdoCiAgICAgLy8gZm91
ciBiaXRzIGFsbCBzZXQgb3IgYWxsIHVuc2V0LgogCisgICAgLy8gSW4gYWRkaXRpb24gdG8gaW1w
bGVtZW50aW5nIHNlbWFudGljcy1tYW5kYXRlZCB2YXJpYWJsZSBhdHRyaWJ1dGVzIGFuZAorICAg
IC8vIGltcGxlbWVudGF0aW9uLW1hbmRhdGVkIHZhcmlhYmxlIGluZGV4aW5nLCB0aGlzIGNsYXNz
IGFsc28gaW1wbGVtZW50cworICAgIC8vIHdhdGNocG9pbnRzIHRvIGJlIHVzZWQgZm9yIEpJVCBv
cHRpbWl6YXRpb25zLiBCZWNhdXNlIHdhdGNocG9pbnRzIGFyZQorICAgIC8vIG1lYW50IHRvIGJl
IHJlbGF0aXZlbHkgcmFyZSwgdGhpcyBjbGFzcyBvcHRpbWl6ZXMgaGVhdmlseSBmb3IgdGhlIGNh
c2UKKyAgICAvLyB0aGF0IHRoZXkgYXJlIG5vdCBiZWluZyB1c2VkLiBUbyB0aGF0IGVuZCwgdGhp
cyBjbGFzcyB1c2VzIHRoZSB0aGluLWZhdAorICAgIC8vIGlkaW9tOiBlaXRoZXIgaXQgaXMgdGhp
biwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyBhbiBpbi1wbGFjZSBlbmNvZGVkCisgICAgLy8g
d29yZCB0aGF0IGNvbnNpc3RzIG9mIGF0dHJpYnV0ZXMsIHRoZSBpbmRleCwgYW5kIGEgYml0IHNh
eWluZyB0aGF0IGl0IGlzCisgICAgLy8gdGhpbjsgb3IgaXQgaXMgZmF0LCBpbiB3aGljaCBjYXNl
IGl0IGNvbnRhaW5zIGEgcG9pbnRlciB0byBhIG1hbGxvYydkCisgICAgLy8gZGF0YSBzdHJ1Y3R1
cmUgYW5kIGEgYml0IHNheWluZyB0aGF0IGl0IGlzIGZhdC4gVGhlIG1hbGxvYydkIGRhdGEKKyAg
ICAvLyBzdHJ1Y3R1cmUgd2lsbCBiZSBtYWxsb2NlZCBhIHNlY29uZCB0aW1lIHVwb24gY29weSwg
dG8gcHJlc2VydmUgdGhlCisgICAgLy8gcHJvcGVydHkgdGhhdCBpbi1wbGFjZSBlZGl0cyB0byBT
eW1ib2xUYWJsZUVudHJ5IGRvIG5vdCBtYW5pZmVzdCBpbiBhbnkKKyAgICAvLyBjb3BpZXMuIEhv
d2V2ZXIsIHRoZSBtYWxsb2MnZCBGYXRFbnRyeSBkYXRhIHN0cnVjdHVyZSBjb250YWlucyBhIHJl
Zi0KKyAgICAvLyBjb3VudGVkIHBvaW50ZXIgdG8gYSBzaGFyZWQgV2F0Y2hwb2ludFNldC4gVGh1
cywgaW4tcGxhY2UgZWRpdHMgb2YgdGhlCisgICAgLy8gV2F0Y2hwb2ludFNldCB3aWxsIG1hbmlm
ZXN0IGluIGFsbCBjb3BpZXMuIEhlcmUncyBhIHBpY3R1cmU6CisgICAgLy8KKyAgICAvLyBTeW1i
b2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hwb2ludFNldAorICAgIC8vCisgICAg
Ly8gSWYgeW91IG1ha2UgYSBjb3B5IG9mIGEgU3ltYm9sVGFibGVFbnRyeSwgeW91IHdpbGwgaGF2
ZToKKyAgICAvLworICAgIC8vIG9yaWdpbmFsOiBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRy
eSAtLT4gV2F0Y2hwb2ludFNldAorICAgIC8vIGNvcHk6ICAgICBTeW1ib2xUYWJsZUVudHJ5IC0t
PiBGYXRFbnRyeSAtLS0tLV4KKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5IHsKKyAgICAg
ICAgLy8gVXNlIHRoZSBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGNsYXNzLCBlaXRoZXIgdmlhIGlt
cGxpY2l0IGNhc3Qgb3IgYnkgY2FsbGluZworICAgICAgICAvLyBnZXRGYXN0KCksIHdoZW4geW91
ICgxKSBvbmx5IGNhcmUgYWJvdXQgaXNOdWxsKCksIGdldEluZGV4KCksIGFuZCBpc1JlYWRPbmx5
KCksCisgICAgICAgIC8vIGFuZCAoMikgeW91IGFyZSBpbiBhIGhvdCBwYXRoIHdoZXJlIHlvdSBu
ZWVkIHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2YgdGltZXMKKyAgICAgICAgLy8gdGhhdCB5b3Ug
YnJhbmNoIG9uIGlzRmF0KCkgd2hlbiBnZXR0aW5nIHRoZSBiaXRzKCkuCisgICAgICAgIGNsYXNz
IEZhc3QgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBGYXN0KCkKKyAgICAgICAgICAg
ICAgICA6IG1fYml0cygwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QoY29uc3QgU3ltYm9sVGFibGVFbnRy
eSYgZW50cnkpCisgICAgICAgICAgICAgICAgOiBtX2JpdHMoZW50cnkuYml0cygpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIW1fYml0czsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IGdldEluZGV4KCkgY29uc3QKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2JpdHMg
Pj4gRmxhZ0JpdHMpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGJvb2wg
aXNSZWFkT25seSgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgYm9vbCBpc0ZhdCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIGludHB0cl90IG1fYml0czsKKyAgICAgICAg
fTsKKwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KCkKICAgICAgICAgICAgIDogbV9iaXRzKDAp
CiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGlu
ZGV4KQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgZmFsc2Us
IGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAg
cGFjayhpbmRleCwgYXR0cmlidXRlcyAmIFJlYWRPbmx5LCBhdHRyaWJ1dGVzICYgRG9udEVudW0p
OwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB+U3ltYm9sVGFibGVFbnRyeSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQor
ICAgICAgICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgeworICAgICAgICAgICAgKnRoaXMgPSBv
dGhlcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgb3Bl
cmF0b3I9KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkob3RoZXIuaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNvcHlTbG93KG90aGVyKTsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICAg
ICAgbV9iaXRzID0gb3RoZXIubV9iaXRzOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAg
ICAgICB9CisgICAgICAgIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiAhbV9iaXRzOworICAgICAgICAgICAgcmV0dXJuICFiaXRzKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgZ2V0SW5kZXgoKSBjb25zdAogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9iaXRzID4+IEZsYWdCaXRzOworICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oYml0cygpID4+IEZsYWdCaXRzKTsKICAgICAgICAgfQotCisgICAg
ICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QgZ2V0RmFzdCgpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBGYXN0KCp0aGlzKTsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgdW5zaWduZWQgZ2V0QXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwotICAgICAgICAgICAgaWYgKG1fYml0cyAm
IFJlYWRPbmx5RmxhZykKKyAgICAgICAgICAgIGludHB0cl90IHRoZUJpdHMgPSBiaXRzKCk7Cisg
ICAgICAgICAgICBpZiAodGhlQml0cyAmIFJlYWRPbmx5RmxhZykKICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGVzIHw9IFJlYWRPbmx5OwotICAgICAgICAgICAgaWYgKG1fYml0cyAmIERvbnRFbnVt
RmxhZykKKyAgICAgICAgICAgIGlmICh0aGVCaXRzICYgRG9udEVudW1GbGFnKQogICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZXMgfD0gRG9udEVudW07CiAgICAgICAgICAgICByZXR1cm4gYXR0cmli
dXRlczsKICAgICAgICAgfQpAQCAtODcsMzAgKzE4MSwxMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgIHJldHVybiBiaXRzKCkg
JiBSZWFkT25seUZsYWc7CiAgICAgICAgIH0KLQorICAgICAgICAKKyAgICAgICAgYm9vbCBjb3Vs
ZEJlV2F0Y2hlZCgpOworICAgICAgICAKKyAgICAgICAgLy8gTm90aWZ5IGFuIG9wcG9ydHVuaXR5
IHRvIGNyZWF0ZSBhIHdhdGNocG9pbnQgZm9yIGEgdmFyaWFibGUuIFRoaXMgaXMKKyAgICAgICAg
Ly8gaWRlbXBvdGVudCBhbmQgZmFpbC1zaWxlbnQuIEl0IGlzIGlkZW1wb3RlbnQgaW4gdGhlIHNl
bnNlIHRoYXQgaWYKKyAgICAgICAgLy8gYSB3YXRjaHBvaW50IHNldCBoYWQgYWxyZWFkeSBiZWVu
IGNyZWF0ZWQsIHRoZW4gYW5vdGhlciBvbmUgd2lsbCBub3QKKyAgICAgICAgLy8gYmUgY3JlYXRl
ZC4gSGVuY2UgdHdvIGNhbGxzIHRvIHRoaXMgbWV0aG9kIGhhdmUgdGhlIHNhbWUgZWZmZWN0IGFz
CisgICAgICAgIC8vIG9uZSBjYWxsLiBJdCBpcyBhbHNvIGZhaWwtc2lsZW50LCBpbiB0aGUgc2Vu
c2UgdGhhdCBpZiBhIHdhdGNocG9pbnQKKyAgICAgICAgLy8gc2V0IGhhZCBiZWVuIGNyZWF0ZWQg
YW5kIGhhZCBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQsIHRoZW4gdGhpcyB3aWxsCisgICAgICAg
IC8vIGp1c3QgcmV0dXJuLiBUaGlzIG1lYW5zIHRoYXQgY291bGRCZVdhdGNoZWQoKSBtYXkgcmV0
dXJuIGZhbHNlIGV2ZW4KKyAgICAgICAgLy8gaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYWxsIHRvIGF0
dGVtcHRUb1dhdGNoKCkuCisgICAgICAgIHZvaWQgYXR0ZW1wdFRvV2F0Y2goKTsKKyAgICAgICAg
CisgICAgICAgIGJvb2wqIGFkZHJlc3NPZklzV2F0Y2hlZCgpOworICAgICAgICAKKyAgICAgICAg
dm9pZCBhZGRXYXRjaHBvaW50KFdhdGNocG9pbnQqKTsKKyAgICAgICAgCisgICAgICAgIFdhdGNo
cG9pbnRTZXQqIHdhdGNocG9pbnRTZXQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG5vdGlmeVdyaXRlKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKExJS0VMWSghaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgbm90aWZ5V3JpdGVTbG93KCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFJlYWRPbmx5RmxhZyA9IDB4MTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4MjsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vdE51bGxGbGFnID0gMHg0OwotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgRmxhZ0JpdHMgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgaW50
cHRyX3QgRmF0RmxhZyA9IDB4MTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IFJlYWRP
bmx5RmxhZyA9IDB4MjsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IERvbnRFbnVtRmxh
ZyA9IDB4NDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IE5vdE51bGxGbGFnID0gMHg4
OworICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgRmxhZ0JpdHMgPSA0OworICAgICAgICAK
KyAgICAgICAgY2xhc3MgRmF0RW50cnkgeworICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEZhdEVudHJ5KGludHB0cl90IGJp
dHMpCisgICAgICAgICAgICAgICAgOiBtX2JpdHMoYml0cyB8IEZhdEZsYWcpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludHB0cl90IG1f
Yml0czsgLy8gYWx3YXlzIGhhcyBGYXRGbGFnIHNldCBhbmQgZXhhY3RseSBtYXRjaGVzIHdoYXQg
dGhlIGJpdHMgd291bGQgaGF2ZSBiZWVuIGlmIHRoaXMgd2Fzbid0IGZhdC4KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fd2F0Y2hwb2ludHM7CisgICAg
ICAgIH07CisgICAgICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBjb3B5U2xvdyhjb25z
dCBTeW1ib2xUYWJsZUVudHJ5Jik7CisgICAgICAgIHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7Cisg
ICAgICAgIAorICAgICAgICBib29sIGlzRmF0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGNvbnN0IEZhdEVudHJ5KiBmYXRFbnRyeSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChpc0ZhdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3Qg
RmF0RW50cnkqPihtX2JpdHMgJiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIEZhdEVudHJ5KiBmYXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChp
c0ZhdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RmF0RW50cnkqPihtX2Jp
dHMgJiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBp
bmZsYXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKExJS0VMWShpc0ZhdCgpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZs
YXRlU2xvdygpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogaW5mbGF0
ZVNsb3coKTsKKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgaW50cHRyX3QgYml0cygp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRz
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90JiBi
aXRzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRmF0KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHM7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgZnJlZUZhdEVudHJ5KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKExJS0VMWSghaXNGYXQoKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgZnJlZUZhdEVudHJ5U2xvdygpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB2b2lkIGZyZWVGYXRFbnRyeVNsb3coKTsKIAogICAgICAgICB2b2lkIHBh
Y2soaW50IGluZGV4LCBib29sIHJlYWRPbmx5LCBib29sIGRvbnRFbnVtKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBtX2JpdHMgPSAoaW5kZXggPDwgRmxhZ0JpdHMpIHwgTm90TnVsbEZsYWc7Cisg
ICAgICAgICAgICBpbnRwdHJfdCYgYml0c1JlZiA9IGJpdHMoKTsKKyAgICAgICAgICAgIGJpdHNS
ZWYgPSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBGbGFnQml0cykgfCBOb3ROdWxs
RmxhZzsKICAgICAgICAgICAgIGlmIChyZWFkT25seSkKLSAgICAgICAgICAgICAgICBtX2JpdHMg
fD0gUmVhZE9ubHlGbGFnOworICAgICAgICAgICAgICAgIGJpdHNSZWYgfD0gUmVhZE9ubHlGbGFn
OwogICAgICAgICAgICAgaWYgKGRvbnRFbnVtKQotICAgICAgICAgICAgICAgIG1fYml0cyB8PSBE
b250RW51bUZsYWc7CisgICAgICAgICAgICAgICAgYml0c1JlZiB8PSBEb250RW51bUZsYWc7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNWYWxpZEluZGV4KGludCBpbmRleCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgoaW5kZXggPDwgRmxhZ0JpdHMpID4+IEZs
YWdCaXRzKSA9PSBpbmRleDsKKyAgICAgICAgICAgIHJldHVybiAoKHN0YXRpY19jYXN0PGludHB0
cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRzKSA9PSBzdGF0aWNfY2FzdDxpbnRw
dHJfdD4oaW5kZXgpOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IG1fYml0czsKKyAgICAgICAg
aW50cHRyX3QgbV9iaXRzOwogICAgIH07CiAKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVJbmRleEhh
c2hUcmFpdHMgOiBIYXNoVHJhaXRzPFN5bWJvbFRhYmxlRW50cnk+IHsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMTk5NDUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDEyLTA2LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIHNldCB3YXRjaHBvaW50cyBvbiBnbG9iYWwg
dmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04ODY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgQWRkZWQgYWJpbGl0eSB0byBzZXQgdGhlIGlubGluZSBjYXBhY2l0eSBvZiBzZWdt
ZW50ZWQgdmVjdG9ycy4KKworICAgICAgICAqIHd0Zi9TZWdtZW50ZWRWZWN0b3IuaDoKKyAgICAg
ICAgKFdURik6CisgICAgICAgIChTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcik6CisgICAgICAgIChX
VEY6OlNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpT
ZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjo6U2VnbWVudGVkVmVjdG9ySXRlcmF0b3IpOgorICAgICAg
ICAoU2VnbWVudGVkVmVjdG9yKToKKwogMjAxMi0wNi0wOSAgRG9taW5pYyBDb29uZXkgIDxkb21p
bmljY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgSmF2YVNjcmlw
dENvcmUgZGVwZW5kZW5jaWVzIGZyb20gZ3lwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50
ZWRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3Iu
aAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQAogbmFtZXNwYWNlIFdURiB7CiAKICAg
ICAvLyBBbiBpdGVyYXRvciBmb3IgU2VnbWVudGVkVmVjdG9yLiBJdCBzdXBwb3J0cyBvbmx5IHRo
ZSBwcmUgKysgb3BlcmF0b3IKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21l
bnRTaXplPiBjbGFzcyBTZWdtZW50ZWRWZWN0b3I7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IgeworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXplX3QgSW5s
aW5lQ2FwYWNpdHkgPSAzMj4gY2xhc3MgU2VnbWVudGVkVmVjdG9yOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXplX3QgSW5saW5lQ2FwYWNpdHkg
PSAzMj4gY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IgewogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemU+OworICAgICAg
ICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBh
Y2l0eT47CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3Rvckl0ZXJh
dG9yPFQsIFNlZ21lbnRTaXplPiBJdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRW
ZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+IEl0ZXJhdG9yOwog
CiAgICAgICAgIH5TZWdtZW50ZWRWZWN0b3JJdGVyYXRvcigpIHsgfQogCkBAIC03NSw3ICs3NSw3
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggIT0gb3RoZXIu
bV9pbmRleCB8fCBtX3NlZ21lbnQgIT0gb3RoZXIubV9zZWdtZW50IHx8ICZtX3ZlY3RvciAhPSAm
b3RoZXIubV92ZWN0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVy
YXRvciYgb3BlcmF0b3I9KGNvbnN0IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRT
aXplPiYgb3RoZXIpCisgICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yJiBvcGVyYXRvcj0o
Y29uc3QgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFj
aXR5PiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdmVjdG9yID0gb3RoZXIubV92
ZWN0b3I7CiAgICAgICAgICAgICBtX3NlZ21lbnQgPSBvdGhlci5tX3NlZ21lbnQ7CkBAIC04NCwy
NSArODQsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50
U2l6ZT4mIHZlY3Rvciwgc2l6ZV90IHNlZ21lbnQsIHNpemVfdCBpbmRleCkKKyAgICAgICAgU2Vn
bWVudGVkVmVjdG9ySXRlcmF0b3IoU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxp
bmVDYXBhY2l0eT4mIHZlY3Rvciwgc2l6ZV90IHNlZ21lbnQsIHNpemVfdCBpbmRleCkKICAgICAg
ICAgICAgIDogbV92ZWN0b3IodmVjdG9yKQogICAgICAgICAgICAgLCBtX3NlZ21lbnQoc2VnbWVu
dCkKICAgICAgICAgICAgICwgbV9pbmRleChpbmRleCkKICAgICAgICAgewogICAgICAgICB9CiAK
LSAgICAgICAgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPiYgbV92ZWN0b3I7CisgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+JiBtX3Zl
Y3RvcjsKICAgICAgICAgc2l6ZV90IG1fc2VnbWVudDsKICAgICAgICAgc2l6ZV90IG1faW5kZXg7
CiAgICAgfTsKIAogICAgIC8vIFNlZ21lbnRlZFZlY3RvciBpcyBqdXN0IGxpa2UgVmVjdG9yLCBi
dXQgaXQgZG9lc24ndCBtb3ZlIHRoZSB2YWx1ZXMKICAgICAvLyBzdG9yZWQgaW4gaXRzIGJ1ZmZl
ciB3aGVuIGl0IGdyb3dzLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8ga2VlcAotICAgIC8vIHBv
aW50ZXJzIGludG8gYSBTZWdtZW50ZWRWZWN0b3IuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVjdG9yIHsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPjsKKyAgICAv
LyBwb2ludGVycyBpbnRvIGEgU2VnbWVudGVkVmVjdG9yLiBUaGUgZGVmYXVsdCB0dW5pbmcgdmFs
dWVzIGFyZQorICAgIC8vIG9wdGltaXplZCBmb3Igc2VnbWVudGVkIHZlY3RvcnMgdGhhdCBnZXQg
bGFyZ2U7IHlvdSBtYXkgd2FudCB0byB1c2UKKyAgICAvLyBTZWdtZW50ZWRWZWN0b3I8dGhpbmd5
LCAxLCAwPiBpZiB5b3UgZG9uJ3QgZXhwZWN0IGEgbG90IG9mIGVudHJpZXMuCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZSwgc2l6ZV90IElubGluZUNhcGFjaXR5
PgorICAgIGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZWdt
ZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+OwogICAg
IHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdt
ZW50U2l6ZT4gSXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0
b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiBJdGVyYXRvcjsKIAogICAgICAgICBT
ZWdtZW50ZWRWZWN0b3IoKQogICAgICAgICAgICAgOiBtX3NpemUoMCkKQEAgLTI1MCw3ICsyNTMs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBzaXplX3QgbV9zaXplOwogICAgICAgICBT
ZWdtZW50IG1faW5saW5lU2VnbWVudDsKLSAgICAgICAgVmVjdG9yPFNlZ21lbnQqLCAzMj4gbV9z
ZWdtZW50czsKKyAgICAgICAgVmVjdG9yPFNlZ21lbnQqLCBJbmxpbmVDYXBhY2l0eT4gbV9zZWdt
ZW50czsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146996</attachid>
            <date>2012-06-11 20:07:06 -0700</date>
            <delta_ts>2012-06-12 14:00:41 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>globalwatch_patch_9.diff</filename>
            <type>text/plain</type>
            <size>125245</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5OTQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NiBA
QAorMjAxMi0wNi0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaW1wbGVtZW50cyBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgZm9sZGluZyBieSBhbGxv
d2luZyB0aGUgb3B0aW1pemluZworICAgICAgICBjb21waWxlciB0byBzZXQgYSAid2F0Y2hwb2lu
dCIgb24gZ2xvYmFscyB0aGF0IGl0IHdpc2hlcyB0byBjb25zdGFudCBmb2xkLgorICAgICAgICBJ
ZiB0aGUgd2F0Y2hwb2ludCBmaXJlcywgdGhlbiBhbiBPU1IgZXhpdCBpcyBmb3JjZWQgYnkgb3Zl
cndyaXRpbmcgdGhlCisgICAgICAgIG1hY2hpbmUgY29kZSB0aGF0IHRoZSBvcHRpbWl6aW5nIGNv
bXBpbGVyIGdlbmVyYXRlZCB3aXRoIGEganVtcC4KKyAgICAgICAgCisgICAgICAgIEFzIHN1Y2gs
IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHF1aXRlIGEgYml0IG9mIHN0dWZmOgorICAgICAgICAKKyAg
ICAgICAgLSBKdW1wIHJlcGxhY2VtZW50IG9uIHRob3NlIGhhcmR3YXJlIHRhcmdldHMgc3VwcG9y
dGVkIGJ5IHRoZSBvcHRpbWl6aW5nCisgICAgICAgICAgSklULiBJdCBpcyBub3cgcG9zc2libGUg
dG8gcGF0Y2ggaW4gYSBqdW1wIGluc3RydWN0aW9uIG92ZXIgYW55IHJlY29yZGVkCisgICAgICAg
ICAgd2F0Y2hwb2ludCBsYWJlbC4gVGhlIGp1bXAgbXVzdCBiZSAibG9jYWwiIGluIHRoZSBzZW5z
ZSB0aGF0IGl0IG11c3QgYmUKKyAgICAgICAgICB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBsYXJn
ZXN0IGp1bXAgZGlzdGFuY2Ugc3VwcG9ydGVkIGJ5IGEgb25lCisgICAgICAgICAgaW5zdHJ1Y3Rp
b24ganVtcC4KKyAgICAgICAgICAKKyAgICAgICAgLSBXYXRjaHBvaW50U2V0cyBhbmQgV2F0Y2hw
b2ludHMuIEEgV2F0Y2hwb2ludCBpcyBhIGRvdWJseS1saW5rZWQgbGlzdCBub2RlCisgICAgICAg
ICAgdGhhdCByZWNvcmRzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIGp1bXAgbXVzdCBiZSBpbnNlcnRl
ZCBhbmQgdGhlCisgICAgICAgICAgZGVzdGluYXRpb24gdG8gd2hpY2ggaXQgc2hvdWxkIGp1bXAu
IFdhdGNocG9pbnRzIGNhbiBiZSBhZGRlZCB0byBhCisgICAgICAgICAgV2F0Y2hwb2ludFNldC4g
VGhlIFdhdGNocG9pbnRTZXQgY2FuIGJlIGZpcmVkIGFsbCBhdCBvbmNlLCB3aGljaCBwbGFudHMK
KyAgICAgICAgICBhbGwganVtcHMuIFdhdGNocG9pbnRTZXQgYWxzbyByZW1lbWJlcnMgaWYgaXQg
aGFkIGV2ZXIgYmVlbiBpbnZhbGlkYXRlZCwKKyAgICAgICAgICB3aGljaCBhbGxvd3MgZm9yIG1v
bm90b25pY2l0eTogd2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8gb3B0aW1pemUgdXNpbmcKKyAg
ICAgICAgICB3YXRjaHBvaW50cyBvbiBzb21ldGhpbmcgZm9yIHdoaWNoIHdhdGNocG9pbnRzIGhh
ZCBwcmV2aW91c2x5IGZpcmVkLiBUaGUKKyAgICAgICAgICBhY3Qgb2Ygbm90aWZ5aW5nIGEgV2F0
Y2hwb2ludFNldCBoYXMgYSB0cml2aWFsIGZhc3QgcGF0aCBpbiBjYXNlIG5vCisgICAgICAgICAg
V2F0Y2hwb2ludHMgYXJlIHJlZ2lzdGVyZWQgKG9uZS1ieXRlIGxvYWQrYnJhbmNoKS4KKyAgICAg
ICAgCisgICAgICAgIC0gU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLiBJ
dCdzIGxpa2Ugc3BlY3VsYXRpb25DaGVjaygpLAorICAgICAgICAgIGV4Y2VwdCB0aGF0IHlvdSBk
b24ndCBoYXZlIHRvIGVtaXQgYnJhbmNoZXMuIEJ1dCwgeW91IG5lZWQgdG8ga25vdyB3aGF0Cisg
ICAgICAgICAgV2F0Y2hwb2ludFNldCB0byBhZGQgdGhlIHJlc3VsdGluZyBXYXRjaHBvaW50IHRv
LiBOb3QgZXZlcnl0aGluZyB0aGF0CisgICAgICAgICAgeW91IGNvdWxkIHdyaXRlIGEgc3BlY3Vs
YXRpb25DaGVjaygpIGZvciB3aWxsIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRoYXQKKyAgICAgICAg
ICB3b3VsZCBnZXQgbm90aWZpZWQgaWYgdGhlIGNvbmRpdGlvbiB5b3Ugd2VyZSBzcGVjdWxhdGlu
ZyBhZ2FpbnN0IGJlY2FtZQorICAgICAgICAgIGludmFsaWQuCisgICAgICAgICAgCisgICAgICAg
IC0gU3ltYm9sVGFibGVFbnRyeSBub3cgaGFzIHRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgV2F0
Y2hwb2ludFNldC4gSXQgY2FuCisgICAgICAgICAgZG8gc28gd2l0aG91dCBpbmN1cnJpbmcgYW55
IHNwYWNlIG92ZXJoZWFkIGZvciB0aG9zZSBlbnRyaWVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICBo
YXZlIFdhdGNocG9pbnRTZXRzLgorICAgICAgICAgIAorICAgICAgICAtIFRoZSBieXRlY29kZSBn
ZW5lcmF0b3IgaW5mZXJzIGFsbCBnbG9iYWwgZnVuY3Rpb24gdmFyaWFibGVzIHRvIGJlCisgICAg
ICAgICAgd2F0Y2hhYmxlLCBhbmQgbWFrZXMgYWxsIHN0b3JlcyBwZXJmb3JtIHRoZSBXYXRjaHBv
aW50U2V0J3Mgd3JpdGUgY2hlY2ssCisgICAgICAgICAgYW5kIG1hcmtzIGFsbCBsb2FkcyBhcyBi
ZWluZyBwb3RlbnRpYWxseSB3YXRjaGFibGUgKGkuZS4geW91IGNhbiBjb21waWxlCisgICAgICAg
ICAgdGhlbSB0byBhIHdhdGNocG9pbnQgYW5kIGEgY29uc3RhbnQpLgorICAgICAgICAKKyAgICAg
ICAgUHV0IHRvZ2V0aGVyLCB0aGlzIGFsbG93cyBmb3IgZnVsbHkgc2xlYXp5IGlubGluaW5nIG9m
IGNhbGxzIHRvIGdsb2JhbGx5CisgICAgICAgIGRlY2xhcmVkIGZ1bmN0aW9ucy4gVGhlIGlubGlu
ZSBwcm9sb2d1ZSB3aWxsIG5vIGxvbmdlciBjb250YWluIHRoZSBsb2FkIG9mCisgICAgICAgIHRo
ZSBmdW5jdGlvbiwgb3IgYW55IGNoZWNrcyBvZiB0aGUgZnVuY3Rpb24geW91J3JlIGNhbGxpbmcu
IEkuZS4gaXQncworICAgICAgICBwcmV0dHkgbXVjaCBsaWtlIHRoZSBraW5kIG9mIGlubGluaW5n
IHlvdSB3b3VsZCBzZWUgaW4gSmF2YSBvciBDKysuCisgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUg
d2F0Y2hwb2ludGluZyBmdW5jdGlvbmFsaXR5IGlzIGJ1aWx0IHRvIGJlIGZhaXJseSBnZW5lcmFs
LAorICAgICAgICBhbmQgc2hvdWxkIGFsbG93IHNldHRpbmcgd2F0Y2hwb2ludHMgb24gYWxsIHNv
cnRzIG9mIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHNsZWF6eSBpbmxpbmluZyBtZWFucyB0aGF0IHdlIHdpbGwgbm93IHNv
bWV0aW1lcyBpbmxpbmUgaW4gY29kZSBwYXRocworICAgICAgICB0aGF0IGhhdmUgbmV2ZXIgZXhl
Y3V0ZWQuIFByZXZpb3VzbHksIHRvIGlubGluZSB3ZSB3b3VsZCBoYXZlIGVpdGhlciBoYWQKKyAg
ICAgICAgdG8gaGF2ZSBleGVjdXRlZCB0aGUgY2FsbCAodG8gcmVhZCB0aGUgY2FsbCdzIGlubGlu
ZSBjYWNoZSkgb3IgaGF2ZQorICAgICAgICBleGVjdXRlZCB0aGUgbWV0aG9kIGNoZWNrICh0byBy
ZWFkIHRoZSBtZXRob2QgY2hlY2sncyBpbmxpbmUgY2FjaGUpLiBOb3csCisgICAgICAgIHdlIG1p
Z2h0IGlubGluZSB3aGVuIHRoZSBjYWxsZWUgaXMgYSB3YXRjaGVkIGdsb2JhbCB2YXJpYWJsZS4g
VGhpcworICAgICAgICByZXZlYWxlZCBzb21lIGh1bW9yb3VzIGJ1Z3MuIEZpcnN0LCBjb25zdGFu
dCBmb2xkaW5nIGRpc2FncmVlZCB3aXRoIENGQQorICAgICAgICBvdmVyIHdoYXQga2luZHMgb2Yg
b3BlcmF0aW9ucyBjYW4gY2xvYmJlciAoZXhhbXBsZTogY29kZSBwYXRoIEEgaXMgZGVhZAorICAg
ICAgICBidXQgc3RvcmVzIGEgU3RyaW5nIGludG8gdmFyaWFibGUgWCwgYWxsIG90aGVyIGNvZGUg
cGF0aHMgc3RvcmUgMCBpbnRvCisgICAgICAgIFgsIGFuZCB0aGVuIHlvdSBkbyBDb21wYXJlRXEo
WCwgMCkgLSBDRkEgd2lsbCBzYXkgdGhhdCB0aGlzIGlzIGEgbm9uLQorICAgICAgICBjbG9iYmVy
aW5nIGNvbnN0YW50LCBidXQgY29uc3RhbnQgZm9sZGluZyB0aG91Z2h0IGl0IHdhcyBjbG9iYmVy
aW5nCisgICAgICAgIGJlY2F1c2UgaXQgc2F3IHRoZSBTdHJpbmcgcHJlZGljdGlvbikuIFNlY29u
ZCwgaW5saW5pbmcgd291bGQgY3Jhc2ggaWYKKyAgICAgICAgdGhlIGlubGluZSBjYWxsZWUgaGFk
IG5vdCBiZWVuIGNvbXBpbGVkLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggYnVncywKKyAgICAgICAg
c2luY2Ugb3RoZXJ3aXNlIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyB3b3VsZCByZXBvcnQgcmVn
cmVzc2lvbnMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAg
IChMYWJlbCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OndhdGNocG9p
bnRMYWJlbCk6CisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJN
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om1heEp1bXBSZXBsYWNlbWVudFNp
emUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChN
YWNyb0Fzc2VtYmxlckFSTXY3KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRo
SnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclNINC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNI
NDo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoTWFjcm9Bc3Nl
bWJsZXJYODYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoVGVzdDgp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAg
ICAgKE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDgpOgorICAg
ICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAgIChSZXBhdGNoQnVmZmVy
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6WDg2QXNzZW1ibGVyKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6Y21wYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6dGVzdGJfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmxhYmVsRm9yV2F0
Y2hwb2ludCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bGFiZWwpOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om1lbW9yeU1vZFJNKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmFwcGVuZE9TUkV4aXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZFNwZWN1bGF0
aW9uUmVjb3ZlcnkpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjphcHBlbmRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJP
ZldhdGNocG9pbnRzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp3YXRjaHBvaW50KToKKyAg
ICAgICAgKERGR0RhdGEpOgorICAgICAgICAqIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZXhpdEtpbmRUb1N0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6
ZXhpdEtpbmRJc0NvdW50YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoK
KyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3Ry
dWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9p
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6
On5XYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6Y29ycmVjdExhYmVscyk6
CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6OmZpcmUpOgorICAgICAgICAoSlNDOjpXYXRjaHBv
aW50U2V0OjpXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6fldh
dGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGQpOgorICAgICAg
ICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZVNsb3cpOgorICAgICAgICAoSlNDOjpX
YXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hwb2ludHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1dh
dGNocG9pbnQuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6OldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpX
YXRjaHBvaW50OjpzZXREZXN0aW5hdGlvbik6CisgICAgICAgIChXYXRjaHBvaW50U2V0KToKKyAg
ICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6aXNTdGlsbFZhbGlkKToKKyAgICAgICAgKEpTQzo6
V2F0Y2hwb2ludFNldDo6aGFzQmVlbkludmFsaWRhdGVkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hw
b2ludFNldDo6bm90aWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGRy
ZXNzT2ZJc1dhdGNoZWQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OlJlc29sdmVSZXN1bHQ6OmNoZWNrVmFsaWRpdHkpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFJlc29sdmVXaXRoQmFzZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRTdGF0aWNWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFN0
YXRpY1Zhcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6Cisg
ICAgICAgIChCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OlByZWZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpD
b25zdERlY2xOb2RlOjplbWl0Q29kZVNpbmdsZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmNsb2JiZXJTdHJ1Y3R1cmVzKToKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoQWJzdHJhY3RTdGF0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZGlkQ2xvYmJlcik6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ0NhbGxIZWxwZXJzLmg6CisgICAg
ICAgIChDQ2FsbEhlbHBlcnMpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0
dXBBcmd1bWVudHMpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Q1NFUGhhc2U6Omdsb2JhbFZhcldhdGNocG9pbnRFbGltaW5hdGlvbik6CisgICAg
ICAgIChDU0VQaGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6Omdsb2JhbFZhclN0
b3JlRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpwZXJmb3JtTm9k
ZUNTRSk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnJ1bik6
CisgICAgICAgICogZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50Lmg6CisgICAgICAgIChKU0M6
OkRGRzo6Q29ycmVjdGFibGVKdW1wUG9pbnQ6OmlzU2V0KToKKyAgICAgICAgKENvcnJlY3RhYmxl
SnVtcFBvaW50KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMpOgorICAgICAgICAoSlNDOjpERkc6
OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0lkZW50aWZpZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAgIChO
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2sp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1JlZ2lzdGVyUG9pbnRlcik6CisgICAgICAg
ICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAoT1NSRXhpdCk6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmFwcGVuZENhbGwpOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAg
ICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNr
KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dsb2JhbF92YXJfY2hlY2spOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9O
KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xP
V19QQVRIX0RFQ0wpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmg6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAg
ICAgIChKU09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFi
bGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpjb3B5U2xvdyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6OmZyZWVGYXRFbnRyeVNsb3cpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5Ojpjb3VsZEJlV2F0Y2hlZCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxl
RW50cnk6OmF0dGVtcHRUb1dhdGNoKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6
YWRkcmVzc09mSXNXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRk
V2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRl
U2xvdyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmluZmxhdGVTbG93KToKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9s
VGFibGVFbnRyeTo6RmFzdDo6RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6
OkZhc3Q6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6Omdl
dEluZGV4KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNSZWFkT25s
eSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmdldEF0dHJpYnV0ZXMp
OgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc0ZhdCk6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OlN5bWJvbFRhYmxlRW50cnkpOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZUVudHJ5Ojp+U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50
cnk6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmdldEluZGV4KToK
KyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0RmFzdCk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZUVudHJ5Ojppc1JlYWRPbmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6
d2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdy
aXRlKToKKyAgICAgICAgKEZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6RmF0RW50cnk6OkZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6
aXNGYXQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpmYXRFbnRyeSk6CisgICAg
ICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmluZmxhdGUpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5OjpiaXRzKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJl
ZUZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6cGFjayk6CisgICAg
ICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzVmFsaWRJbmRleCk6CisKIDIwMTItMDYtMTAg
IFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gQnVpbGQgZml4IGZvciAhRU5BQkxFKEpJVCkgYWZ0ZXIgcjExOTg0NCBhbmQgcjExOTky
NS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTk4MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw5IEBACiAJCTBGOTE5RDBEMTU3
RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0QgLyog
SlNTeW1ib2xUYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0LmNwcCAqLzsgfTsKIAkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOTE5RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY5MTlEMjUxNTg1M0NFMDAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdE
IC8qIFdhdGNocG9pbnQuY3BwICovOyB9OworCQkwRjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0QgLyog
V2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY5MTlEMjMxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjkxOUQyODE1ODU2NzczMDA0
QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY5MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNw
cCAqLzsgfTsKIAkJMEY5MzMyOUQxNENBN0RDMzAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjkz
MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi87IH07CiAJCTBGOTMzMjlF
MTRDQTdEQzUwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENh
bGxMaW5rU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY5MzMyOUYxNENBN0RDQTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTUxNENB
N0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovOyB9OwpAQCAtODM2LDYgKzgzOSw5
IEBACiAJCTBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3ltYm9sVGFibGVPYmplY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEUxNTdGMzMyNzAwNEE0RTdEIC8q
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGOTE5RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlE
MjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY5MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFRhYmxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENh
bGxMaW5rU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
bGxMaW5rU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTQx
NENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhbGxMaW5rU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldEJ5SWRTdGF0dXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0NSw2ICsyMDUxLDcgQEAKIAkJCQk3RTRFRTcwRTBF
QkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovLAogCQkJCTdFNEVFNzA4MEVC
Qjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOTA0MTQ3MEVCOTI1
MDkwMEZFMjZGQSAvKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCAqLywKKwkJCQkwRjkxOUQy
NzE1ODU2NzcwMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwICovLAogCQkJCTE0QTM5NkE2MENE
MjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5oICovLAogCQkJCTk3RjY5MDNBMTE2OURGN0Yw
MEE2QkI0NiAvKiBUZXJtaW5hdG9yLmggKi8sCiAJCQkJMTRBNDJFM0QwRjRGNjBFRTAwNTk5MDk5
IC8qIFRpbWVvdXRDaGVja2VyLmNwcCAqLywKQEAgLTIyOTYsNiArMjMwMyw4IEBACiAJCQkJMEY5
NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGNDI2QTQ1
MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8sCiAJCQkJMEY0MjZBNDYxNDYw
Q0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovLAorCQkJCTBGOTE5RDIyMTU4NTND
REUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCAqLywKKwkJCQkwRjkxOUQyMzE1ODUzQ0RFMDA0
QTRFN0QgLyogV2F0Y2hwb2ludC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNjcxLDYgKzI2ODAsNyBAQAogCQkJCTBGMTYw
MTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xU
YWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdE
IC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE5
RDI2MTU4NTNDRTMwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTMy
NDUsNiArMzI1NSw4IEBACiAJCQkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVu
dGFsU3dlZXBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRF
N0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQx
MDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjkxOUQyNTE1ODUzQ0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTE5
ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIExpbmtCdWZmZXI7CiBjbGFzcyBSZXBhdGNoQnVmZmVyOworY2xhc3MgV2F0Y2hwb2lu
dDsKIG5hbWVzcGFjZSBERkcgewogY2xhc3MgQ29ycmVjdGFibGVKdW1wUG9pbnQ7CiB9CkBAIC03
MCw3ICs3MSw2IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSB1c2Vk
IGFzIG9wZXJhbmRzIHRvIE1hY3JvQXNzZW1ibGVyIG9wZXJhdGlvbnMsCiAgICAgLy8gZGVzY3Jp
YmluZyBpbW1lZGlhdGUgIGFuZCBtZW1vcnkgb3BlcmFuZHMgdG8gdGhlIGluc3RydWN0aW9ucyB0
byBiZSBwbGFudGVkLgogCi0KICAgICBlbnVtIFNjYWxlIHsKICAgICAgICAgVGltZXNPbmUsCiAg
ICAgICAgIFRpbWVzVHdvLApAQCAtMjc5LDYgKzI3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEp1bXA7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOworICAgICAgICBmcmllbmQgY2xh
c3MgV2F0Y2hwb2ludDsKIAogICAgIHB1YmxpYzoKICAgICAgICAgTGFiZWwoKQpAQCAtNTU5LDYg
KzU2MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBMYWJlbCh0aGlzKTsKICAgICB9CiAg
ICAgCisgICAgTGFiZWwgd2F0Y2hwb2ludExhYmVsKCkKKyAgICB7CisgICAgICAgIExhYmVsIHJl
c3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbEZvcldhdGNo
cG9pbnQoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgTGFiZWwg
YWxpZ24oKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWxpZ24oMTYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCShy
ZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2Vt
YmxlckJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCShyZXZpc2lvbiAxMTk4MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMTAsNiArMTAxMCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oQVJNQXNzZW1ibGVyOjpy
ZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRp
YyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0
LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBS
ZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIEFSTUFzc2VtYmxlcjo6
Q29uZGl0aW9uIEFSTUNvbmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDUs
NiArNTQ1LDE3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAorICAgIHN0YXRpYyB2
b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBD
b2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBs
YWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHN0b3JlOChSZWdpc3Rl
cklEIHNyYywgQXJtQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAkocmV2aXNp
b24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2OCw2ICsxODY4LDE3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihN
SVBTQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAg
IH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBp
bnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogcHJpdmF0ZToKICAgICAv
LyBJZiBtX2ZpeGVkV2lkdGggaXMgdHJ1ZSwgd2Ugd2lsbCBnZW5lcmF0ZSBhIGZpeGVkIG51bWJl
ciBvZiBpbnN0cnVjdGlvbnMuCiAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBjYW4gZW1pdCBhbnkgbnVt
YmVyIG9mIGluc3RydWN0aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk3MSw2ICsxOTcxLDE3IEBAIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHMKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCgqKSgpPihTSDRBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0
aW9uKCkpKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVM
b2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0
aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAor
ICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgU0g0QXNzZW1ibGVyOjpDb25kaXRpb24gU0g0Q29uZGl0aW9uKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lvbiAxMTk4MDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRG91YmxlOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpzdG9yZURvdWJsZTsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6Y29udmVydEludDMyVG9Eb3VibGU7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmJyYW5jaFRlc3Q4OwogCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKQEAgLTE2NSw2ICsxNjYsMTYgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMnIoaW5pdGlhbFZhbHVlLmFzSW50
cHRyKCksIGRlc3QpOwogICAgICAgICByZXR1cm4gRGF0YUxhYmVsUHRyKHRoaXMpOwogICAgIH0K
KyAgICAKKyAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0
ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1hc2subV92YWx1ZSA+PSAtMTI4ICYmIG1hc2subV92YWx1
ZSA8PSAyNTUpOworICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIuY21wYl9pbSgwLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaW0obWFzay5tX3ZhbHVlLCBhZGRyZXNzLm1fcHRy
KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25k
KSkpOworICAgIH0KIAogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1
c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDA4LDYgKzE0MDgsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0
aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24p
CisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlv
blN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNz
KCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxh
Y2VtZW50U2l6ZSgpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFg4NkFzc2VtYmxlcjo6Q29u
ZGl0aW9uIHg4NkNvbmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MTMsNiAr
NTEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUo
YWRkciwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBCYXNlSW5kZXgoc2NyYXRjaFJlZ2lzdGVyLCBhZGRy
ZXNzLmJhc2UsIFRpbWVzT25lKSwgbWFzayk7CiAgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNo
VGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVz
dGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3Jh
dGNoUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJy
YW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKSwgbWFzayk7CisgICAgfQog
CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIC8vIFNlZSBjb21tZW50IG9uIE1hY3JvQXNzZW1ibGVyQVJNdjc6OnN1cHBvcnRzRmxv
YXRpbmdQb2ludFRydW5jYXRlKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJlbGlua05lYXJDYWxsZXJU
b1RyYW1wb2xpbmUocmV0dXJuQWRkcmVzcywgQ29kZUxvY2F0aW9uTGFiZWwobmV3Q2FsbGVlRnVu
Y3Rpb24pKTsKICAgICB9Ci0KKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCogbV9zdGFydDsKICAg
ICBzaXplX3QgbV9zaXplOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Y
ODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNDcsNiArMjQ3
LDggQEAgcHJpdmF0ZToKIHB1YmxpYzoKIAogICAgIFg4NkFzc2VtYmxlcigpCisgICAgICAgIDog
bV9pbmRleE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICAgICAgLCBtX2luZGV4T2ZUYWls
T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQogICAgIHsKICAgICB9CiAKQEAgLTc5OCw2ICs4MDAs
MTQgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0Vi
SWIsIEdST1VQMV9PUF9DTVAsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KKyAgICAKKyNpZiBDUFUoWDg2KQor
ICAgIHZvaWQgY21wYl9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQ01QLCBh
ZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKyNlbmRp
ZgogCiAgICAgdm9pZCBjbXBsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsKQEAgLTk0OCw2ICs5NTgsMTQg
QEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQog
CisjaWYgQ1BVKFg4NikKKyAgICB2b2lkIHRlc3RiX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViSWIs
IEdST1VQM19PUF9URVNULCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCB0ZXN0bF9pMzJtKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19Fdkl6LCBHUk9VUDNf
T1BfVEVTVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwpAQCAtMTcwMiwxMCArMTcyMCwy
NiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIuY29kZVNpemUo
KTsKICAgICB9CisgICAgCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50KCkK
KyAgICB7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVs
KCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkgIT0gbV9p
bmRleE9mTGFzdFdhdGNocG9pbnQpCisgICAgICAgICAgICByZXN1bHQgPSBsYWJlbCgpOworICAg
ICAgICBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldDsKKyAgICAgICAg
bV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQgKyBtYXhKdW1w
UmVwbGFjZW1lbnRTaXplKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAg
QXNzZW1ibGVyTGFiZWwgbGFiZWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZm9ybWF0dGVy
LmxhYmVsKCk7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxh
YmVsKCk7CisgICAgICAgIC8vIEZJWE1FOiBuZWVkIHRvIGtub3cgdGhlIHNpemUgb2YgdGhlIGxh
c3Qgd2F0Y2hwb2ludCBhcyB3ZWxsLgorICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3RhdGljX2Nh
c3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQp
KSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1fZm9ybWF0dGVy
LmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAg
ICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQpAQCAtMTc4Miw2ICsxODE2LDIw
IEBAIHB1YmxpYzoKICAgICAgICAgc2V0UG9pbnRlcih3aGVyZSwgdmFsdWUpOwogICAgIH0KICAg
ICAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFy
dCwgdm9pZCogdG8pCisgICAgeworICAgICAgICBpbnQ4X3QgKnB0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIGludDhfdCAqZHN0UHRyID0g
cmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPih0byk7CisgICAgICAgIGludHB0cl90IGRpc3RhbmNl
ID0gKGludHB0cl90KShkc3RQdHIgLSAocHRyICsgNSkpOworICAgICAgICBwdHJbMF0gPSBPUF9K
TVBfcmVsMzI7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PGludDMyX3QqPihwdHIgKyAxKSA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KGRpc3RhbmNlKTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVy
biA1OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hl
cmUpCiAgICAgewogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHdoZXJl
KVstMV07CkBAIC0yMzM5LDYgKzIzODcsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIEFzc2VtYmxl
ckJ1ZmZlciBtX2J1ZmZlcjsKICAgICB9IG1fZm9ybWF0dGVyOworICAgIGludCBtX2luZGV4T2ZM
YXN0V2F0Y2hwb2ludDsKKyAgICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI4LDEy
ICs5MjgsMjggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAg
ICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNh
c2Ugb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVn
aXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKKyAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIGdldF9nbG9iYWxfdmFyX3dhdGNoYWJsZVx0ICVzLCBnJWQoJXApXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG1fZ2xvYmFsT2JqZWN0LT5m
aW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIpOworICAg
ICAgICAgICAgaXQrKzsKKyAgICAgICAgICAgIGl0Kys7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOiB7CiAgICAgICAgICAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3Rl
clBvaW50ZXI7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9nbG9iYWxfdmFyXHQgZyVkKCVwKSwgJXNcbiIsIGxv
Y2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVy
KSwgcmVnaXN0ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFy
X2NoZWNrOiB7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9p
bnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CisgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9nbG9iYWxf
dmFyX2NoZWNrXHQgZyVkKCVwKSwgJXNcbiIsIGxvY2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+Zmlu
ZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyLCByZWdpc3Rl
ck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAg
aXQrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVz
b2x2ZV9iYXNlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTEzMDYsNyArMTMyMiw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2NhbGxfcHV0X3Jlc3VsdDogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBvcF9jYWxsX3B1
dF9yZXN1bHRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRh
KCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY2FsbF9wdXRfcmVzdWx0XHRcdCAlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAg
IGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIlVuY29uZGl0
aW9uYWxGaW5hbGl6ZXIuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlICJX
YXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTI3
MywxMCArMjc0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBlbmRPU1JFeGl0KGNvbnN0
IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkKKyAgICAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChj
b25zdCBERkc6Ok9TUkV4aXQmIG9zckV4aXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNyZWF0
ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9k
ZmdEYXRhLT5vc3JFeGl0LnNpemUoKTsKICAgICAgICAgICAgIG1fZGZnRGF0YS0+b3NyRXhpdC5h
cHBlbmQob3NyRXhpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBERkc6Ok9TUkV4aXQmIGxhc3RPU1JFeGl0KCkKQEAgLTI4NCwxMCAr
Mjg3LDIwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+
b3NyRXhpdC5sYXN0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgYXBwZW5k
U3BlY3VsYXRpb25SZWNvdmVyeShjb25zdCBERkc6OlNwZWN1bGF0aW9uUmVjb3ZlcnkmIHJlY292
ZXJ5KQorICAgICAgICB1bnNpZ25lZCBhcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KGNvbnN0IERG
Rzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0
ID0gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LnNpemUoKTsKICAgICAgICAgICAgIG1f
ZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5hcHBlbmQocmVjb3ZlcnkpOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdW5zaWduZWQg
YXBwZW5kV2F0Y2hwb2ludChjb25zdCBXYXRjaHBvaW50JiB3YXRjaHBvaW50KQorICAgICAgICB7
CisgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIHJlc3VsdCA9IG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuc2l6ZSgpOworICAgICAgICAg
ICAgbV9kZmdEYXRhLT53YXRjaHBvaW50cy5hcHBlbmQod2F0Y2hwb2ludCk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBu
dW1iZXJPZk9TUkV4aXRzKCkKQEAgLTMwNCw2ICszMTcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LnNpemUoKTsK
ICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZXYXRjaHBvaW50
cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9kZmdEYXRhKQorICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMu
c2l6ZSgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBERkc6Ok9TUkV4aXQmIG9zckV4
aXQodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0Rh
dGEtPm9zckV4aXRbaW5kZXhdOwpAQCAtMzE0LDYgKzMzNCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVjb3ZlcnlbaW5kZXhd
OwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50JiB3YXRjaHBvaW50KHVu
c2lnbmVkIGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT53
YXRjaHBvaW50c1tpbmRleF07CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgYXBw
ZW5kV2Vha1JlZmVyZW5jZShKU0NlbGwqIHRhcmdldCkKICAgICAgICAgewogICAgICAgICAgICAg
Y3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xMjM4LDYgKzEyNjMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7
CiAgICAgICAgICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0Owog
ICAgICAgICAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25S
ZWNvdmVyeTsKKyAgICAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxXYXRjaHBvaW50LCAxLCAwPiB3
YXRjaHBvaW50czsKICAgICAgICAgICAgIFZlY3RvcjxXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbj4g
dHJhbnNpdGlvbnM7CiAgICAgICAgICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4gPiB3
ZWFrUmVmZXJlbmNlczsKICAgICAgICAgICAgIGJvb2wgbWF5QmVFeGVjdXRpbmc7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2
aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQ
cm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBFeGl0S2luZCB7
CiAgICAgSW5hZGVxdWF0ZUNvdmVyYWdlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmRlZCB1
cCBpbiBjb2RlIHRoYXQgZGlkbid0IGhhdmUgcHJvZmlsaW5nIGNvdmVyYWdlLgogICAgIEFyZ3Vt
ZW50c0VzY2FwZWQsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFyZ3VtZW50cyBlc2NhcGVkIGJ1dCB3
ZSBkaWRuJ3QgZXhwZWN0IHRoZW0gdG8uCiAgICAgVW5jb3VudGFibGUsIC8vIFdlIGV4aXRlZCBm
b3Igbm9uZSBvZiB0aGUgYWJvdmUgcmVhc29ucywgYW5kIHdlIHNob3VsZCBub3QgY291bnQgaXQu
IE1vc3QgdXNlcyBvZiB0aGlzIHNob3VsZCBiZSB2aWV3ZWQgYXMgYSBGSVhNRS4KKyAgICBVbmNv
dW50YWJsZVdhdGNocG9pbnQgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugb2YgYSB3YXRjaHBvaW50LCB3
aGljaCBpc24ndCBjb3VudGVkIGJlY2F1c2Ugd2F0Y2hwb2ludHMgZG8gdHJhY2tpbmcgdGhlbXNl
bHZlcy4KIH07CiAKIGlubGluZSBjb25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5k
IGtpbmQpCkBAIC01OCw2ICs1OSwxMiBAQCBpbmxpbmUgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0
cmluZyhFeGl0CiAgICAgICAgIHJldHVybiAiTmVnYXRpdmVaZXJvIjsKICAgICBjYXNlIEluYWRl
cXVhdGVDb3ZlcmFnZToKICAgICAgICAgcmV0dXJuICJJbmFkZXF1YXRlQ292ZXJhZ2UiOworICAg
IGNhc2UgQXJndW1lbnRzRXNjYXBlZDoKKyAgICAgICAgcmV0dXJuICJBcmd1bWVudHNFc2NhcGVk
IjsKKyAgICBjYXNlIFVuY291bnRhYmxlOgorICAgICAgICByZXR1cm4gIlVuY291bnRhYmxlIjsK
KyAgICBjYXNlIFVuY291bnRhYmxlV2F0Y2hwb2ludDoKKyAgICAgICAgcmV0dXJuICJVbmNvdW50
YWJsZVdhdGNocG9pbnQiOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAiVW5rbm93biI7
CiAgICAgfQpAQCAtNzAsNiArNzcsNyBAQCBpbmxpbmUgYm9vbCBleGl0S2luZElzQ291bnRhYmxl
KEV4aXRLaW5kCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGNhc2UgQmFkVHlw
ZToKICAgICBjYXNlIFVuY291bnRhYmxlOgorICAgIGNhc2UgVW5jb3VudGFibGVXYXRjaHBvaW50
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24u
aAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsxOTMsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJv
ZmlsZSA9IHByb2ZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKFdyaXRlQmFy
cmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKSB7IHUucmVnaXN0ZXJQb2ludGVyID0gcmVn
aXN0ZXJQb2ludGVyOyB9CisgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlvbihib29sKiBwcmVk
aWNhdGVQb2ludGVyKSB7IHUucHJlZGljYXRlUG9pbnRlciA9IHByZWRpY2F0ZVBvaW50ZXI7IH0K
IAogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlOwpAQCAtMjA1LDYg
KzIwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKICAgICAg
ICAgICAgIHZvaWQqIHBvaW50ZXI7CisgICAgICAgICAgICBib29sKiBwcmVkaWNhdGVQb2ludGVy
OwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3
ICsxMDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X3Njb3BlZF92
YXIsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9wdXRf
c2NvcGVkX3ZhciwgNCkgXAogICAgICAgICBtYWNybyhvcF9nZXRfZ2xvYmFsX3ZhciwgNCkgLyog
aGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisgICAgICAgIG1hY3JvKG9wX2dldF9nbG9iYWxfdmFy
X3dhdGNoYWJsZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3Jv
KG9wX3B1dF9nbG9iYWxfdmFyLCAzKSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFy
X2NoZWNrLCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfYmFzZSwgNSkgLyogaGFzIHZh
bHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlz
dHMsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRoX2Jhc2UsIDUpIC8qIGhhcyB2
YWx1ZSBwcm9maWxpbmcgKi8gXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKworI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1dhdGNocG9pbnQ6On5XYXRjaHBv
aW50KCkKK3sKKyAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgcmVtb3ZlKCk7Cit9CisKK3Zv
aWQgV2F0Y2hwb2ludDo6Y29ycmVjdExhYmVscyhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQorewor
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJlbDsKKyAgICBsYWJlbC5tX2xhYmVsLm1fb2Zm
c2V0ID0gbV9zb3VyY2U7CisgICAgbV9zb3VyY2UgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihs
aW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWwpLmRhdGFMb2NhdGlvbigpKTsKKyAgICBsYWJlbC5t
X2xhYmVsLm1fb2Zmc2V0ID0gbV9kZXN0aW5hdGlvbjsKKyAgICBtX2Rlc3RpbmF0aW9uID0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGxhYmVsKS5kYXRhTG9j
YXRpb24oKSk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6ZmlyZSgpCit7CisgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lz
ZV9jYXN0PHZvaWQqPihtX3NvdXJjZSkpLAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChiaXR3
aXNlX2Nhc3Q8dm9pZCo+KG1fZGVzdGluYXRpb24pKSk7CisgICAgaWYgKGlzT25MaXN0KCkpCisg
ICAgICAgIHJlbW92ZSgpOworfQorCitXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KCkKKyAg
ICA6IG1faXNXYXRjaGVkKGZhbHNlKQorICAgICwgbV9pc0ludmFsaWRhdGVkKGZhbHNlKQorewor
fQorCitXYXRjaHBvaW50U2V0Ojp+V2F0Y2hwb2ludFNldCgpCit7CisgICAgLy8gRmlyZSBhbGwg
d2F0Y2hwb2ludHMuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgaXMgcG9zc2libGUsIHNh
eSB3aXRoCisgICAgLy8gc3RydWN0dXJlIHdhdGNocG9pbnRzLCBmb3IgdGhlIHdhdGNocG9pbnQg
c2V0IG93bmVyIHRvIGRpZSB3aGlsZSB0aGUKKyAgICAvLyB3YXRjaHBvaW50IG93bmVycyBhcmUg
c3RpbGwgbGl2ZS4KKyAgICBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKK30KKwordm9pZCBXYXRjaHBv
aW50U2V0OjphZGQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKK3sKKyAgICBpZiAoIXdhdGNocG9p
bnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NldC5wdXNoKHdhdGNocG9pbnQpOworICAgIG1f
aXNXYXRjaGVkID0gdHJ1ZTsKK30KKwordm9pZCBXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZVNs
b3coKQoreworICAgIEFTU0VSVChtX2lzV2F0Y2hlZCk7CisgICAgCisgICAgZmlyZUFsbFdhdGNo
cG9pbnRzKCk7CisgICAgbV9pc1dhdGNoZWQgPSBmYWxzZTsKKyAgICBtX2lzSW52YWxpZGF0ZWQg
PSB0cnVlOworfQorCit2b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cygpCit7
CisgICAgd2hpbGUgKCFtX3NldC5pc0VtcHR5KCkpCisgICAgICAgIG1fc2V0LmJlZ2luKCktPmZp
cmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
OTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2F0Y2hwb2ludF9oCisjZGVmaW5lIFdhdGNocG9pbnRfaAorCisjaW5j
bHVkZSAiQ29kZUxvY2F0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3Qu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdhdGNocG9pbnQgOiBwdWJsaWMgQmFzaWNS
YXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4geworcHVibGljOgorICAgIFdhdGNocG9pbnQoTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIHNvdXJjZSkKKyAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UubV9s
YWJlbC5tX29mZnNldCkKKyAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludHB0cl90Pjo6bWF4KCkpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldERl
c3RpbmF0aW9uKE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAg
ICAgIG1fZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbi5tX2xhYmVsLm1fb2Zmc2V0OworICAgIH0K
KyAgICAKKyAgICB2b2lkIGNvcnJlY3RMYWJlbHMoTGlua0J1ZmZlciYgbGlua0J1ZmZlcik7Cisg
ICAgCisgICAgfldhdGNocG9pbnQoKTsKKyAgICAKKyAgICB2b2lkIGZpcmUoKTsKKyAgICAKK3By
aXZhdGU6CisgICAgdWludHB0cl90IG1fc291cmNlOworICAgIHVpbnRwdHJfdCBtX2Rlc3RpbmF0
aW9uOworfTsKKworY2xhc3MgV2F0Y2hwb2ludFNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdhdGNo
cG9pbnRTZXQ+IHsKK3B1YmxpYzoKKyAgICBXYXRjaHBvaW50U2V0KCk7CisgICAgfldhdGNocG9p
bnRTZXQoKTsKKyAgICAKKyAgICBib29sIGlzU3RpbGxWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICFt
X2lzSW52YWxpZGF0ZWQ7IH0KKyAgICBib29sIGhhc0JlZW5JbnZhbGlkYXRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNJbnZhbGlkYXRlZDsgfQorICAgIAorICAgIC8vIEFzIGEgY29udmVuaWVuY2Us
IHRoaXMgd2lsbCBpZ25vcmUgMC4gVGhhdCdzIGJlY2F1c2UgY29kZSBwYXRocyBpbiB0aGUgREZH
CisgICAgLy8gdGhhdCBjcmVhdGUgc3BlY3VsYXRpb24gd2F0Y2hwb2ludHMgbWF5IGNob29zZSB0
byBiYWlsIG91dCBpZiBzcGVjdWxhdGlvbgorICAgIC8vIGhhZCBhbHJlYWR5IGJlZW4gdGVybWlu
YXRlZC4KKyAgICB2b2lkIGFkZChXYXRjaHBvaW50Kik7CisgICAgCisgICAgdm9pZCBub3RpZnlX
cml0ZSgpCisgICAgeworICAgICAgICBpZiAoIW1faXNXYXRjaGVkKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBub3RpZnlXcml0ZVNsb3coKTsKKyAgICB9CisgICAgCisgICAgYm9vbCog
YWRkcmVzc09mSXNXYXRjaGVkKCkgeyByZXR1cm4gJm1faXNXYXRjaGVkOyB9CisgICAgCisgICAg
dm9pZCBub3RpZnlXcml0ZVNsb3coKTsgLy8gQ2FsbCBvbmx5IGlmIHlvdSd2ZSBjaGVja2VkIGlz
V2F0Y2hlZC4KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBmaXJlQWxsV2F0Y2hwb2ludHMoKTsK
KyAgICAKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8V2F0Y2hwb2ludCwgQmFzaWNSYXdTZW50aW5l
bE5vZGU8V2F0Y2hwb2ludD4gPiBtX3NldDsKKyAgICBib29sIG1faXNXYXRjaGVkOworICAgIGJv
b2wgbV9pc0ludmFsaWRhdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBXYXRjaHBvaW50X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDExOTgwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDcgQEAgdm9pZCBSZXNvbHZlUmVzdWx0
OjpjaGVja1ZhbGlkaXR5KCkKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5kZXhlZEdsb2Jh
bDoKICAgICBjYXNlIFJlYWRPbmx5SW5kZXhlZEdsb2JhbDoKKyAgICBjYXNlIFdhdGNoZWRJbmRl
eGVkR2xvYmFsOgogICAgIGNhc2UgRHluYW1pY0luZGV4ZWRHbG9iYWw6CiAgICAgY2FzZSBEeW5h
bWljUmVhZE9ubHlJbmRleGVkR2xvYmFsOgogICAgICAgICBBU1NFUlQobV9pbmRleCAhPSBtaXNz
aW5nU3ltYm9sTWFya2VyKCkpOwpAQCAtMjE2LDEzICsyMTcsMTkgQEAgYm9vbCBCeXRlY29kZUdl
bmVyYXRvcjo6YWRkVmFyKGNvbnN0IElkZQogICAgIHJldHVybiB0cnVlOwogfQogCi1pbnQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgYm9v
bCBpc0NvbnN0YW50KQoraW50IEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIoCisgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUsIEZ1bmN0
aW9uTW9kZSBmdW5jdGlvbk1vZGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTW9kZSk7
CiAgICAgaW50IGluZGV4ID0gc3ltYm9sVGFibGUoKS5zaXplKCk7Ci0gICAgU3ltYm9sVGFibGVF
bnRyeSBuZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7CisgICAgU3lt
Ym9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgKGNvbnN0YW50TW9kZSA9PSBJc0NvbnN0YW50
KSA/IFJlYWRPbmx5IDogMCk7CisgICAgaWYgKGZ1bmN0aW9uTW9kZSA9PSBJc0Z1bmN0aW9uVG9T
cGVjaWFsaXplKQorICAgICAgICBuZXdFbnRyeS5hdHRlbXB0VG9XYXRjaCgpOwogICAgIFN5bWJv
bFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgp
LCBuZXdFbnRyeSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgaW5kZXgg
PSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpOworICAgIGVsc2UKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsKICAgICByZXR1cm4gaW5kZXg7
CiB9CiAKQEAgLTI4OSwxNyArMjk2LDIzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihQcm8KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5z
aXplKCk7ICsraSkgewogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0
aW9uU3RhY2tbaV07Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2Jh
bERhdGEsIGZ1bmN0aW9uLT5pZGVudCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92
ZXJ3cml0ZSBleGlzdGluZyBwcm9wZXJ0aWVzLgotCisgICAgICAgIGJvb2wgcHJvcGVydHlEaWRF
eGlzdCA9IAorICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFs
RGF0YSwgZnVuY3Rpb24tPmlkZW50KCkpOyAvLyBOZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3Zl
cndyaXRlIGV4aXN0aW5nIHByb3BlcnRpZXMuCisgICAgICAgIAogICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIG1ha2VGdW5jdGlvbihleGVjLCBmdW5jdGlv
biksIHNjb3BlQ2hhaW4pOwotICAgICAgICBpbnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoZnVuY3Rp
b24tPmlkZW50KCksIGZhbHNlKTsKKyAgICAgICAgaW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKAor
ICAgICAgICAgICAgZnVuY3Rpb24tPmlkZW50KCksIElzVmFyaWFibGUsCisgICAgICAgICAgICAh
cHJvcGVydHlEaWRFeGlzdCA/IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUgOiBOb3RGdW5jdGlvbk9y
Tm90U3BlY2lhbGl6YWJsZSk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChpbmRl
eCkuc2V0KCptX2dsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIH0KIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFyU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
aWYgKGdsb2JhbE9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgKnZhclN0YWNrW2ldLmZpcnN0KSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhZGRHbG9iYWxWYXIoKnZhclN0YWNrW2ld
LmZpcnN0LCB2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFu
dCk7CisgICAgICAgIGFkZEdsb2JhbFZhcigKKyAgICAgICAgICAgICp2YXJTdGFja1tpXS5maXJz
dCwKKyAgICAgICAgICAgICh2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6
SXNDb25zdGFudCkgPyBJc0NvbnN0YW50IDogSXNWYXJpYWJsZSwKKyAgICAgICAgICAgIE5vdEZ1
bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlKTsKICAgICB9CiB9CiAKQEAgLTEyMDIsNyArMTIxNSw5
IEBAIFJlc29sdmVSZXN1bHQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmUKICAgICAgICAgICAg
IGlmICgrK2l0ZXIgPT0gZW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgUmVzb2x2
ZVJlc3VsdDo6RHluYW1pY0ZsYWcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZl
UmVzdWx0OjpkeW5hbWljSW5kZXhlZEdsb2JhbFJlc29sdmUoZW50cnkuZ2V0SW5kZXgoKSwgZGVw
dGgsIGN1cnJlbnRTY29wZSwgZmxhZ3MpOwotICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZl
UmVzdWx0OjppbmRleGVkR2xvYmFsUmVzb2x2ZShlbnRyeS5nZXRJbmRleCgpLCBjdXJyZW50U2Nv
cGUsIGZsYWdzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6aW5kZXhl
ZEdsb2JhbFJlc29sdmUoCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmdldEluZGV4KCksIGN1
cnJlbnRTY29wZSwKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfCAoZW50cnkuY291bGRCZVdh
dGNoZWQoKSA/IFJlc29sdmVSZXN1bHQ6OldhdGNoZWRGbGFnIDogMCkpOwogICAgICAgICAgICAg
fQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChKU0FjdGl2YXRpb24qIGFj
dGl2YXRpb24gPSBqc0R5bmFtaWNDYXN0PEpTQWN0aXZhdGlvbio+KGN1cnJlbnRWYXJpYWJsZU9i
amVjdCkpCkBAIC0xMjk2LDcgKzEzMTEsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpzaG91
bGRBdm9pZFJlc29sCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUo
UmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRp
YygpKQotICAgICAgICByZXR1cm4gZW1pdEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQp
OworICAgICAgICByZXR1cm4gZW1pdEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQsIHBy
b3BlcnR5KTsKICAgICAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc0dsb2JhbCgpICYmICFzaG91
bGRBdm9pZFJlc29sdmVHbG9iYWwoKSkgewogI2lmIEVOQUJMRShKSVQpCkBAIC0xMzc5LDcgKzEz
OTQsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAKICAgICAg
ICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkgewogICAgICAgICAgICAgLy8gRGlyZWN0
bHkgaW5kZXggdGhlIHByb3BlcnR5IGxvb2t1cCBhY3Jvc3MgbXVsdGlwbGUgc2NvcGVzLgotICAg
ICAgICAgICAgZW1pdEdldFN0YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0KTsKKyAgICAg
ICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkp
OwogICAgICAgICAgICAgcmV0dXJuIGJhc2VEc3Q7CiAgICAgICAgIH0KIApAQCAtMTQxOCw3ICsx
NDMzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogewogICAg
IGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpIHsKICAgICAgICAgZW1pdExvYWQoYmFzZURz
dCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVz
b2x2ZVJlc3VsdCk7CisgICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJl
c3VsdCwgcHJvcGVydHkpOwogICAgICAgICByZXR1cm4gYmFzZURzdDsKICAgICB9CiAKQEAgLTE0
MzYsNyArMTQ1MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wK
ICAgICByZXR1cm4gZW1pdFJlc29sdmUocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkp
OwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihS
ZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQpCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBk
c3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpCiB7CiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gMDsKIApAQCAtMTQ3
MiwxMyArMTQ4NywyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0
CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICAgICAgcmV0dXJu
IGRzdDsKIAorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6Cisg
ICAgICAgIC8vIFNraXAgdGhlIHBlZXBob2xlIGZvciBub3cuIEl0J3Mgbm90IGNsZWFyIHRoYXQg
aXQncyBwcm9maXRhYmxlIGdpdmVuCisgICAgICAgIC8vIHRoZSBERkcncyBjYXBhYmlsaXRpZXMs
IGFuZCB0aGUgZmFjdCB0aGF0IGlmIGl0J3Mgd2F0Y2hhYmxlIHRoZW4gd2UKKyAgICAgICAgLy8g
ZG9uJ3QgZXhwZWN0IHRvIHNlZSBhbnkgcHV0X2dsb2JhbF92YXIncyBhbnl3YXkuCisgICAgICAg
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxl
KTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsK
KyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsg
Ly8gRm9yIHRoZSBiZW5lZml0IG9mIHRoZSBERkcuCisgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChwcm9maWxlKTsKKyAgICAgICAgcmV0dXJuIGRzdDsKKwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAK
LVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJl
c29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIFJlZ2lzdGVySUQqIHZhbHVlKQorUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3Vs
dCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUmVnaXN0ZXJJ
RCogdmFsdWUpCiB7CiAgICAgc3dpdGNoIChyZXNvbHZlUmVzdWx0LnR5cGUoKSkgewogICAgIGNh
c2UgUmVzb2x2ZVJlc3VsdDo6UmVnaXN0ZXI6CkBAIC0xNDk5LDYgKzE1MjUsMTQgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTdAogICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQocmVzb2x2ZVJlc3VsdC5yZWdpc3RlclBvaW50ZXIoKSk7CiAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICAgICAgCisgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoK
KyAgICAgICAgZW1pdE9wY29kZShvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHJlc29sdmVSZXN1bHQu
Z2xvYmFsT2JqZWN0KCkpLT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSkuYWRk
cmVzc09mSXNXYXRjaGVkKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29u
c3RhbnQoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlz
aW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgLy8gVGhlIHJlc29sdmVkIGJpbmRpbmcgaXMgaW1tdXRhYmxl
LgogICAgICAgICAgICAgUmVhZE9ubHlGbGFnID0gMHgyMCwKICAgICAgICAgICAgIC8vIFRoZSBi
YXNlIG9iamVjdCBpcyB0aGUgZ2xvYmFsIG9iamVjdC4KLSAgICAgICAgICAgIEdsb2JhbEZsYWcg
PSAweDQwCisgICAgICAgICAgICBHbG9iYWxGbGFnID0gMHg0MCwKKyAgICAgICAgICAgIC8vIFRo
ZSBwcm9wZXJ0eSBpcyBiZWluZyB3YXRjaGVkLCBzbyB3cml0ZXMgc2hvdWxkIGJlIHNwZWNpYWwu
CisgICAgICAgICAgICBXYXRjaGVkRmxhZyA9IDB4ODAKICAgICAgICAgfTsKICAgICAgICAgZW51
bSBUeXBlIHsKICAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3Jl
ZCBpbiBhIHJlZ2lzdGVyLgpAQCAtMTMxLDYgKzEzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgLy8gYmluZGluZyBjcmVhdGVkIHdpdGggInZhciIgYXQgdGhlIHRvcCBsZXZlbC4g
QXQgcnVudGltZSB3ZSdsbAogICAgICAgICAgICAgLy8ganVzdCBpbmRleCBpbnRvIHRoZSBnbG9i
YWwgb2JqZWN0LgogICAgICAgICAgICAgSW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xv
YmFsRmxhZyB8IFN0YXRpY0ZsYWcsCisgICAgICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWws
IGJ1dCB0aGUgcHJvcGVydHkgaXMgYmVpbmcgd2F0Y2hlZC4KKyAgICAgICAgICAgIFdhdGNoZWRJ
bmRleGVkR2xvYmFsID0gSW5kZXhlZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZyB8IFdh
dGNoZWRGbGFnLAogICAgICAgICAgICAgLy8gTGlrZSBJbmRleGVkR2xvYmFsLCBidXQgdGhlIHBy
b3BlcnR5IGlzIGFsc28gcmVhZC1vbmx5LCBsaWtlIE5hTiwKICAgICAgICAgICAgIC8vIEluZmlu
aXR5LCBvciB1bmRlZmluZWQuCiAgICAgICAgICAgICBSZWFkT25seUluZGV4ZWRHbG9iYWwgPSBJ
bmRleGVkRmxhZyB8IFJlYWRPbmx5RmxhZyB8IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnLApAQCAt
NDQxLDggKzQ0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5h
cnlPcChvcF90eXBlb2YsIGRzdCwgc3JjKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW4o
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSkg
eyByZXR1cm4gZW1pdEJpbmFyeU9wKG9wX2luLCBkc3QsIHByb3BlcnR5LCBiYXNlLCBPcGVyYW5k
VHlwZXMoKSk7IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lz
dGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYpOwotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmLCBSZWdpc3RlcklEKiB2YWx1ZSk7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRTdGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBj
b25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlm
aWVyJiwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNv
bHZlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNlKFJlZ2lz
dGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KTsKQEAgLTU3NCw3ICs1NzgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBhZGRlZCB2YXIuCi0gICAgICAgIGlu
dCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYsIGJvb2wgaXNDb25zdGFudCk7CisgICAg
ICAgIGVudW0gQ29uc3RhbnRNb2RlIHsgSXNDb25zdGFudCwgSXNWYXJpYWJsZSB9OworICAgICAg
ICBlbnVtIEZ1bmN0aW9uTW9kZSB7IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUsIE5vdEZ1bmN0aW9u
T3JOb3RTcGVjaWFsaXphYmxlIH07CisgICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRl
bnRpZmllciYsIENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlv
bk1vZGUpOwogCiAgICAgICAgIHZvaWQgYWRkUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXImLCBp
bnQgcGFyYW1ldGVySW5kZXgpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDExOTgw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDcgKzQzMCw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9u
Q2FsbFJlc29sdmVOb2RlOjplbWkKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7
CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOwogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2Fy
Z3MpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNv
bHZlUmVzdWx0KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZnVuYy5nZXQo
KSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3Jl
ZChkc3QsIGZ1bmMuZ2V0KCkpLCBmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBz
dGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CiAgICAgfQpAQCAtNjE4LDcgKzYxOCw3IEBAIFJl
Z2lzdGVySUQqIFBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGUKICAgICB9CiAKICAgICBpZiAo
cmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkg
ewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0
YXRpY1ZhcihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJlc29sdmVSZXN1bHQpOworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1Zhcihn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJlc29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAg
ICBSZWdpc3RlcklEKiBvbGRWYWx1ZTsKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdu
b3JlZFJlc3VsdCgpKSB7CiAgICAgICAgICAgICBvbGRWYWx1ZSA9IDA7CkBAIC02MjYsNyArNjI2
LDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRv
ciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0
b3IpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29s
dmVSZXN1bHQsIHZhbHVlLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNW
YXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgdmFsdWUuZ2V0KCkpOwogICAgICAgICByZXR1cm4g
b2xkVmFsdWU7CiAgICAgfQogICAgIApAQCAtODAzLDkgKzgwMyw5IEBAIFJlZ2lzdGVySUQqIFBy
ZWZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICB9CiAKICAgICBpZiAocmVzb2x2ZVJlc3Vs
dC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcm9wRHN0ID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAg
ICAgICAgZW1pdFByZUluY09yRGVjKGdlbmVyYXRvciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRv
cik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHBy
b3BEc3QuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZl
UmVzdWx0LCBtX2lkZW50LCBwcm9wRHN0LmdldCgpKTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRv
ci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiAgICAgfQog
CkBAIC0xMjI2LDkgKzEyMjYsOSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6
OmVtaXRCCiAgICAgfQogCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSAmJiAhcmVz
b2x2ZVJlc3VsdC5pc1JlYWRPbmx5KCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNy
YzEgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9
IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9
IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3Is
IE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHRE
ZXNjcmlwdG9yKCkpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2
ZVJlc3VsdCwgcmVzdWx0KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVz
b2x2ZVJlc3VsdCwgbV9pZGVudCwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKQEAgLTEyNTYsNyArMTI1Niw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2Rl
OjplbWl0Qnl0ZWMKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KQogICAgICAgICAgICAgZHN0ID0gMDsKICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdE5vZGUoZHN0LCBtX3JpZ2h0KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRT
dGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgdmFsdWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1ZSk7CiAgICAgICAgIHJldHVy
biB2YWx1ZTsKICAgICB9CiAKQEAgLTEzNjEsNyArMTM2MSw3IEBAIFJlZ2lzdGVySUQqIENvbnN0
RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2wKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBt
X2luaXQgPyBnZW5lcmF0b3IuZW1pdE5vZGUobV9pbml0KSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpCi0g
ICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCB2
YWx1ZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1Zhcihy
ZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1ZS5nZXQoKSk7CiAgICAgCiAgICAgaWYgKGdlbmVy
YXRvci5jb2RlVHlwZSgpICE9IEV2YWxDb2RlKQogICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5j
cHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksOSBAQCBib29sIEFi
c3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiB7CiAgICAgQVNTRVJUKG1fYmxvY2sp
OwogICAgIEFTU0VSVChtX2lzVmFsaWQpOwotICAgICAgICAKKyAgICAKKyAgICBtX2RpZENsb2Ji
ZXIgPSBmYWxzZTsKKyAgICAKICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gbV9ibG9jay0+YXQo
aW5kZXhJbkJsb2NrKTsKICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwogICAg
ICAgICAKQEAgLTIzNyw4ICsyMzksMTIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVu
c2lnbmVkIGluZAogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAgICBW
YXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nl
c3NEYXRhKCk7CisgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKSA9
PSBTcGVjTm9uZSkgeworICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgICAgICAg
ICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgICAgICBib29sIGNhbkV4aXQgPSBmYWxzZTsKLSAgICAgICAgY2FuRXhpdCB8PSB2YXJpYWJs
ZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKSA9PSBTcGVjTm9uZTsKICAgICAgICAgQWJzdHJhY3RW
YWx1ZSB2YWx1ZSA9IG1fdmFyaWFibGVzLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5sb2Nh
bCgpKTsKICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkgewog
ICAgICAgICAgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkKQEAgLTE0NzYsNyArMTQ4Miw3IEBAIGJv
b2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgLy8gRklYTUU6IFNo
b3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0aGUgZmFjdCB0aGF0IHdlIGtub3cgd2hhdCB0aGUg
ZnVuY3Rpb24gaXMuCiAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisgICAgICAgIAogICAg
IGNhc2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIG5vZGUuc2V0
Q2FuRXhpdCh0cnVlKTsKQEAgLTE0ODgsOCArMTQ5NCwxMyBAQCBib29sIEFic3RyYWN0U3RhdGU6
OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAg
ICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAgICAgIGJyZWFrOworICAg
ICAgICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAgIG5vZGUuc2V0Q2Fu
RXhpdCh0cnVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dEds
b2JhbFZhcjoKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOgogICAgICAgICBub2RlLnNldENh
bkV4aXQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTU3OCw2ICsx
NTg5LDcgQEAgaW5saW5lIHZvaWQgQWJzdHJhY3RTdGF0ZTo6Y2xvYmJlclN0cnVjdAogICAgIGZv
ciAoc2l6ZV90IGkgPSBtX3ZhcmlhYmxlcy5udW1iZXJPZkxvY2FscygpOyBpLS07KQogICAgICAg
ICBtX3ZhcmlhYmxlcy5sb2NhbChpKS5jbG9iYmVyU3RydWN0dXJlcygpOwogICAgIG1faGF2ZVN0
cnVjdHVyZXMgPSBmYWxzZTsKKyAgICBtX2RpZENsb2JiZXIgPSB0cnVlOwogfQogCiBpbmxpbmUg
Ym9vbCBBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKEFic3RyYWN0VmFsdWUmIGRlc3Rp
bmF0aW9uLCBBYnN0cmFjdFZhbHVlJiBpblZhcmlhYmxlLCBOb2RlSW5kZXggbm9kZUluZGV4KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDkgQEAgcHVibGljOgogICAgIC8v
IG9mIFRocm93LgogICAgIGJvb2wgZXhlY3V0ZSh1bnNpZ25lZCk7CiAgICAgCisgICAgLy8gRGlk
IHRoZSBsYXN0IGV4ZWN1dGVkIG5vZGUgY2xvYmJlciB0aGUgd29ybGQ/CisgICAgYm9vbCBkaWRD
bG9iYmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaWRDbG9iYmVyOyB9CisgICAgCiAgICAgLy8gSXMg
dGhlIGV4ZWN1dGlvbiBzdGF0ZSBzdGlsbCB2YWxpZD8gVGhpcyB3aWxsIGJlIGZhbHNlIGlmIGV4
ZWN1dGUoKSBoYXMKICAgICAvLyByZXR1cm5lZCBmYWxzZSBwcmV2aW91c2x5LgogICAgIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQpAQCAtMjc0LDYgKzI3Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2ZvdW5kQ29uc3RhbnRzOwogICAgIAogICAgIGJvb2wgbV9p
c1ZhbGlkOworICAgIGJvb2wgbV9kaWRDbG9iYmVyOwogICAgIAogICAgIEJyYW5jaERpcmVjdGlv
biBtX2JyYW5jaERpcmVjdGlvbjsgLy8gVGhpcyBpcyBvbmx5IHNldCBmb3IgYmxvY2tzIHRoYXQg
ZW5kIGluIEJyYW5jaCBhbmQgdGhhdCBleGVjdXRlIHRvIGNvbXBsZXRpb24gKGkuZS4gbV9pc1Zh
bGlkID09IHRydWUpLgogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIz
NCw2ICsxMjM0LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAog
ICAgIC8vIERvZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3Jl
cXVpcmVtZW50cyBmb3IgYmVpbmcKICAgICAvLyBhbiBpbmxpbmUgY2FuZGlkYXRlPwogICAgIENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGV4ZWN1dGFibGUtPnByb2ZpbGVkQ29kZUJsb2NrRm9y
KGtpbmQpOworICAgIGlmICghcHJvZmlsZWRCbG9jaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAogICAgIGlmICghbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihwcm9maWxlZEJsb2NrLCBraW5k
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMjIzOSwxMyArMjI0Miw2MSBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBnZXRTcGVjdWxhdGlvbigpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOworCiAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0R2xvYmFsVmFyID0gYWRkVG9H
cmFwaCgKICAgICAgICAgICAgICAgICBHZXRHbG9iYWxWYXIsCi0gICAgICAgICAgICAgICAgT3BJ
bmZvKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+YXNzZXJ0
UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5yZWdpc3RlclBv
aW50ZXIpKSwKKyAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdp
c3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRl
cikpLAogICAgICAgICAgICAgICAgIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgICAgICBz
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0R2xvYmFsVmFyKTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9nbG9iYWxfdmFyKTsKICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6
IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRTcGVjdWxhdGlv
bigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZF07CisgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBtX2NvZGVCbG9jay0+
aWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50
cnkgZW50cnkgPSBnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCkuZ2V0KGlkZW50aWZpZXIuaW1w
bCgpKTsKKyAgICAgICAgICAgIGlmICghZW50cnkuY291bGRCZVdhdGNoZWQoKSkgeworICAgICAg
ICAgICAgICAgIE5vZGVJbmRleCBnZXRHbG9iYWxWYXIgPSBhZGRUb0dyYXBoKAorICAgICAgICAg
ICAgICAgICAgICBHZXRHbG9iYWxWYXIsCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9i
YWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9u
WzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhwcmVk
aWN0aW9uKSk7CisgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsIGdldEdsb2JhbFZhcik7CisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0
X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgLy8gVGhlIHdhdGNocG9pbnQgaXMgc3RpbGwgaW50YWN0ISBUaGlzIG1lYW5zIHRo
YXQgd2Ugd2lsbCBnZXQgbm90aWZpZWQgaWYgdGhlCisgICAgICAgICAgICAvLyBjdXJyZW50IHZh
bHVlIGluIHRoZSBnbG9iYWwgdmFyaWFibGUgY2hhbmdlcy4gU28sIHdlIGNhbiBpbmxpbmUgdGhh
dCB2YWx1ZS4KKyAgICAgICAgICAgIC8vIE1vcmVvdmVyLCBjdXJyZW50bHkgd2UgY2FuIGFzc3Vt
ZSB0aGF0IHRoaXMgdmFsdWUgaXMgYSBKU0Z1bmN0aW9uKiwgd2hpY2gKKyAgICAgICAgICAgIC8v
IGltcGxpZXMgdGhhdCBpdCdzIGEgY2VsbC4gVGhpcyBzaW1wbGlmaWVzIHRoaW5ncywgc2luY2Ug
aW4gZ2VuZXJhbCB3ZSdkIGhhdmUKKyAgICAgICAgICAgIC8vIHRvIHVzZSBhIEpTQ29uc3RhbnQg
Zm9yIG5vbi1jZWxscyBhbmQgYSBXZWFrSlNDb25zdGFudCBmb3IgY2VsbHMuIFNvIGluc3RlYWQK
KyAgICAgICAgICAgIC8vIG9mIGhhdmluZyBib3RoIGNhc2VzIHdlIGp1c3QgYXNzZXJ0IHRoYXQg
dGhlIHZhbHVlIGlzIGEgY2VsbC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTkIuIElm
IGl0IHdhc24ndCBmb3IgQ1NFLCBHbG9iYWxWYXJXYXRjaHBvaW50IHdvdWxkIGhhdmUgbm8gbmVl
ZCBmb3IgdGhlCisgICAgICAgICAgICAvLyByZWdpc3RlciBwb2ludGVyLiBCdXQgQ1NFIHRyYWNr
cyBlZmZlY3RzIG9uIGdsb2JhbCB2YXJpYWJsZXMgYnkgY29tcGFyaW5nCisgICAgICAgICAgICAv
LyByZWdpc3RlciBwb2ludGVycy4gQmVjYXVzZSBDU0UgZXhlY3V0ZXMgbXVsdGlwbGUgdGltZXMg
d2hpbGUgdGhlIGJhY2tlbmQKKyAgICAgICAgICAgIC8vIGV4ZWN1dGVzIG9uY2UsIHdlIHVzZSB0
aGUgZm9sbG93aW5nIHBlcmZvcm1hbmNlIHRyYWRlLW9mZjoKKyAgICAgICAgICAgIC8vIC0gVGhl
IG5vZGUgcmVmZXJzIGRpcmVjdGx5IHRvIHRoZSByZWdpc3RlciBwb2ludGVyIHRvIG1ha2UgQ1NF
IHN1cGVyIGNoZWFwLgorICAgICAgICAgICAgLy8gLSBUbyBwZXJmb3JtIGJhY2tlbmQgY29kZSBn
ZW5lcmF0aW9uLCB0aGUgbm9kZSBvbmx5IGNvbnRhaW5zIHRoZSBpZGVudGlmaWVyCisgICAgICAg
ICAgICAvLyAgIG51bWJlciwgZnJvbSB3aGljaCBpdCBpcyBwb3NzaWJsZSB0byBnZXQgKHZpYSBh
IGZldyBhdmVyYWdlLXRpbWUgTygxKQorICAgICAgICAgICAgLy8gICBsb29rdXBzKSB0byB0aGUg
V2F0Y2hwb2ludFNldC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgYWRkVG9HcmFwaCgKKyAg
ICAgICAgICAgICAgICBHbG9iYWxWYXJXYXRjaHBvaW50LAorICAgICAgICAgICAgICAgIE9wSW5m
byhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAgICAgICAgICAgT3BJbmZvKGlk
ZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgSlNWYWx1ZSBzcGVj
aWZpY1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdl
dCgpOworICAgICAgICAgICAgQVNTRVJUKHNwZWNpZmljVmFsdWUuaXNDZWxsKCkpOworICAgICAg
ICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsCisgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChXZWFrSlNDb25zdGFudCwgT3BJbmZvKHNwZWNpZmljVmFsdWUuYXNDZWxs
KCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9nbG9i
YWxfdmFyX3dhdGNoYWJsZSk7CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3B1dF9nbG9i
YWxfdmFyOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC0yMjU2LDYgKzIzMDcsMjggQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
cHV0X2dsb2JhbF92YXIpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFs
X3Zhcl9jaGVjazogeworICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jazsKKyAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRl
bnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmRdOworICAgICAgICAg
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoaWRlbnRp
Zmllck51bWJlcik7CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFs
T2JqZWN0LT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSk7CisgICAgICAgICAg
ICBpZiAoIWVudHJ5LmNvdWxkQmVXYXRjaGVkKCkpIHsKKyAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKAorICAgICAgICAgICAgICAgICAgICBQdXRHbG9iYWxWYXIsCisgICAgICAgICAgICAgICAg
ICAgIE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjayk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhZGRUb0dyYXBoKAorICAgICAg
ICAgICAgICAgIFB1dEdsb2JhbFZhckNoZWNrLAorICAgICAgICAgICAgICAgIE9wSW5mbyhjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIE9w
SW5mbyhpZGVudGlmaWVyTnVtYmVyKSwKKyAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgIH0KKwog
ICAgICAgICAvLyA9PT0gQmxvY2sgdGVybWluYXRvcnMuID09PQogCiAgICAgICAgIGNhc2Ugb3Bf
am1wOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJz
LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0Nh
bGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Mik7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhU
cnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgIH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCiAgICAgewpAQCAtNDMzLDYgKzQzOSwx
MSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxPihhcmcxLCBhcmcyKTsKICAgICB9Cisg
ICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKFRydXN0ZWRJbW1QdHIg
YXJnMSkKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUo
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
CShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYgKzIxNywyOSBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gTm9Ob2RlOwogICAgIH0KICAgICAKKyAgICBib29sIGdsb2JhbFZhcldhdGNo
cG9pbnRFbGltaW5hdGlvbihXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcikK
KyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7
CisgICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7Cisg
ICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtpbmRleF07CisgICAgICAgICAgICBzd2l0
Y2ggKG5vZGUub3AoKSkgeworICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50Ogor
ICAgICAgICAgICAgICAgIGlmIChub2RlLnJlZ2lzdGVyUG9pbnRlcigpID09IHJlZ2lzdGVyUG9p
bnRlcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAobV9ncmFwaC5jbG9iYmVyc1dvcmxkKGluZGV4KSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAog
ICAgIE5vZGVJbmRleCBnbG9iYWxWYXJTdG9yZUVsaW1pbmF0aW9uKFdyaXRlQmFycmllcjxVbmtu
b3duPiogcmVnaXN0ZXJQb2ludGVyKQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9pbmRleEluQmxvY2s7IGktLTspIHsKQEAgLTIyNiw2ICsyNDksNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsK
ICAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAgICAgICAgY2FzZSBQdXRHbG9i
YWxWYXJDaGVjazoKICAgICAgICAgICAgICAgICBpZiAobm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9
PSByZWdpc3RlclBvaW50ZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTk4NSw3ICsxMDA5LDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBzZXRSZXBsYWNlbWVudChnbG9iYWxWYXJMb2FkRWxpbWluYXRpb24obm9kZS5yZWdp
c3RlclBvaW50ZXIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAgICAgICAgICAgaWYgKGdsb2JhbFZhcldh
dGNocG9pbnRFbGltaW5hdGlvbihub2RlLnJlZ2lzdGVyUG9pbnRlcigpKSkKKyAgICAgICAgICAg
ICAgICBlbGltaW5hdGUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOgog
ICAgICAgICAgICAgaWYgKG1fZml4cG9pbnRTdGF0ZSA9PSBGaXhwb2ludE5vdENvbnZlcmdlZCkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGVsaW1pbmF0ZShnbG9iYWxWYXJT
dG9yZUVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTE5ODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIzLDcgKzEyMyw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZU9wY29kZSgKICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIG9wX2dldF9nbG9i
YWxfdmFyOgorICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOgogICAgIGNhc2Ug
b3BfcHV0X2dsb2JhbF92YXI6CisgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAg
ICBjYXNlIG9wX2ptcDoKICAgICBjYXNlIG9wX2xvb3A6CiAgICAgY2FzZSBvcF9qdHJ1ZToKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiAr
NTYsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBp
ZiAoIWJsb2NrLT5jZmFGb3VuZENvbnN0YW50cykKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisgICAgICAgICAgICBk
YXRhTG9nKCJDb25zdGFudCBmb2xkaW5nIGNvbnNpZGVyaW5nIEJsb2NrICMldS5cbiIsIGJsb2Nr
SW5kZXgpOworI2VuZGlmCiAgICAgICAgICAgICBzdGF0ZS5iZWdpbkJhc2ljQmxvY2soYmxvY2sp
OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxv
Y2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgICAgIGlm
ICghc3RhdGUuaXNWYWxpZCgpKQpAQCAtOTAsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgc3RhdGUuZXhlY3V0ZShpbmRleEluQmxvY2spOwogICAg
ICAgICAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgpCi0gICAgICAgICAgICAgICAg
ICAgIHx8IG1fZ3JhcGguY2xvYmJlcnNXb3JsZChub2RlKQorICAgICAgICAgICAgICAgICAgICB8
fCBzdGF0ZS5kaWRDbG9iYmVyKCkKICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS5oYXNDb25z
dGFudCgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gc3RhdGUuZm9yTm9kZShub2RlSW5kZXgpLnZhbHVlKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2lu
dC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
cnJlY3RhYmxlSnVtcFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDExIEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIH0KICAgICAKKyAgICBib29sIGlzU2V0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2NvZGVPZmZzZXQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpOworICAgIH0KKyAgICAKICAgICB2b2lkIHN3aXRjaFRvTGF0ZUp1bXAoTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgY2hlY2spCiAgICAgewogI2lmbmRlZiBOREVCVUcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lv
biAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsMTEgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlu
a09TUkV4aXRzKCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrKCkt
Pm51bWJlck9mT1NSRXhpdHMoKTsgKytpKSB7CiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBjb2Rl
QmxvY2soKS0+b3NyRXhpdChpKTsKLSAgICAgICAgZXhpdC5tX2NoZWNrLmluaXRpYWxKdW1wKCku
bGluayh0aGlzKTsKKyAgICAgICAgQVNTRVJUKCFleGl0Lm1fY2hlY2suaXNTZXQoKSA9PSAoZXhp
dC5tX3dhdGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpKTsKKyAgICAgICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggPT0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgICAgICAgICAgZXhpdC5tX2NoZWNrLmluaXRp
YWxKdW1wKCkubGluayh0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZUJsb2Nr
KCktPndhdGNocG9pbnQoZXhpdC5tX3dhdGNocG9pbnRJbmRleCkuc2V0RGVzdGluYXRpb24obGFi
ZWwoKSk7CiAgICAgICAgIGppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CiAgICAgICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKGkpLCAmZ2xvYmFsRGF0YSgpLT5vc3JFeGl0SW5kZXgpOwogICAg
ICAgICBleGl0Lm1fY2hlY2suc3dpdGNoVG9MYXRlSnVtcChwYXRjaGFibGVKdW1wKCkpOwpAQCAt
MTkwLDYgKzE5NCw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IK
ICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOwogICAgICAg
ICBsaW5rQnVmZmVyLmxpbmsoZXhpdC5tX2NoZWNrLmxhdGVKdW1wKCksIHRhcmdldCk7CiAgICAg
ICAgIGV4aXQubV9jaGVjay5jb3JyZWN0TGF0ZUp1bXAobGlua0J1ZmZlcik7CisgICAgICAgIGlm
IChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSkKKyAgICAgICAgICAgIGNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRj
aHBvaW50SW5kZXgpLmNvcnJlY3RMYWJlbHMobGlua0J1ZmZlcik7CiAgICAgfQogICAgIAogICAg
IGNvZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2RlQmxvY2s6OkxhdGVTaHJpbmspOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzAsOSAr
NDMwLDIwIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0K
ICAgICAKKyAgICBib29sIGhhc0lkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpCisgICAgeworICAg
ICAgICByZXR1cm4gb3AoKSA9PSBHbG9iYWxWYXJXYXRjaHBvaW50IHx8IG9wKCkgPT0gUHV0R2xv
YmFsVmFyQ2hlY2s7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXJG
b3JDaGVjaygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzSWRlbnRpZmllck51bWJlckZvckNo
ZWNrKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8yOworICAgIH0KKyAgICAKICAgICBib29s
IGhhc1JlZ2lzdGVyUG9pbnRlcigpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRH
bG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXI7CisgICAgICAgIHJldHVybiBvcCgpID09
IEdldEdsb2JhbFZhciB8fCBvcCgpID09IFB1dEdsb2JhbFZhciB8fCBvcCgpID09IEdsb2JhbFZh
cldhdGNocG9pbnQgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXJDaGVjazsKICAgICB9CiAgICAgCiAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIoKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3Jv
KFB1dFNjb3BlZFZhciwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAg
ICAgbWFjcm8oR2V0R2xvYmFsVmFyLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
R2xvYmFsVmFyV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFB1dEds
b2JhbFZhckNoZWNrLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tGdW5jdGlv
biwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAgICAvKiBPcHRpbWl6YXRpb25zIGZvciBh
cnJheSBtdXRhdGlvbi4gKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgT1NSRXhpdDo6
T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlUwogICAgICwgbV9jb2RlT3JpZ2luKGppdC0+
bV9jb2RlT3JpZ2luRm9yT1NSKQogICAgICwgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUobV9j
b2RlT3JpZ2luKQogICAgICwgbV9yZWNvdmVyeUluZGV4KHJlY292ZXJ5SW5kZXgpCisgICAgLCBt
X3dhdGNocG9pbnRJbmRleChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgLCBtX2tpbmQoa2luZCkKICAgICAsIG1fY291bnQoMCkKICAgICAsIG1fYXJndW1lbnRzKGpp
dC0+bV9hcmd1bWVudHMuc2l6ZSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIHN0cnVjdCBPU1JF
eGl0IHsKICAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwogICAgIAog
ICAgIHVuc2lnbmVkIG1fcmVjb3ZlcnlJbmRleDsKKyAgICB1bnNpZ25lZCBtX3dhdGNocG9pbnRJ
bmRleDsKICAgICAKICAgICBFeGl0S2luZCBtX2tpbmQ7CiAgICAgdWludDMyX3QgbV9jb3VudDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI0LDYgKzkyNCwxMSBAQCB2b2lkKiBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvblZpcnR1YWxDb25zCiAgICAgcmV0dXJuIHZpcnR1YWxGb3IoZXhlY0NhbGxl
ZSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25O
b3RpZnlHbG9iYWxWYXJXcml0ZShXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KQoreworICAg
IHdhdGNocG9pbnRTZXQtPm5vdGlmeVdyaXRlKCk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXIqIHBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xv
YmFsRGF0YSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDcgQEAgdHlwZWRlZiB2b2lk
IERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdAogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04g
KCpWX0RGR09wZXJhdGlvbl9FSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgq
Vl9ERkdPcGVyYXRpb25fRUpQUCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCB2b2lkKik7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0
aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0
eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX1cpKFdhdGNocG9pbnRT
ZXQqKTsKIHR5cGVkZWYgdm9pZCogREZHX09QRVJBVElPTiAoKlBfREZHT3BlcmF0aW9uX0UpKEV4
ZWNTdGF0ZSopOwogCiAvLyBUaGVzZSByb3V0aW5lcyBhcmUgcHJvdmlkZSBjYWxsYmFja3Mgb3V0
IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0aW9ucyB0b28gY29tcGxleCB0byBKSVQu
CkBAIC0xMTYsNiArMTE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRp
b25HZQogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqKTsKIEVuY29kZWRKU1Zh
bHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEN1c3RvbUdldHRlcihFeGVjU3RhdGUqLCBK
U0NlbGwqLCBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYywgSWRlbnRpZmllciopOwogRW5jb2Rl
ZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25DYWxsR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
Q2VsbCosIEpTQ2VsbCopOwordm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5vdGlmeUdsb2Jh
bFZhcldyaXRlKFdhdGNocG9pbnRTZXQqKTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uUmVzb2x2ZShFeGVjU3RhdGUqLCBJZGVudGlmaWVyKik7CiBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmVCYXNlKEV4ZWNTdGF0ZSosIElkZW50aWZp
ZXIqKTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZUJhc2VT
dHJpY3RQdXQoRXhlY1N0YXRlKiwgSWRlbnRpZmllciopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTEsNyAr
NDkxLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6IHsKKyAgICAgICAgY2FzZSBQdXRHbG9i
YWxWYXI6CisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6IHsKICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1
ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjY5LDYgKzY3MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDaGVj
a051bWJlcjoKICAgICAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgICAg
IGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VE
ZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTk2LDYgKzM1
OTYsNjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOiB7CisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICAKKyAg
ICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCA9CisgICAgICAgICAgICBtX2ppdC5n
bG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQoCisgICAg
ICAgICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKS0+
aW1wbCgpKS53YXRjaHBvaW50U2V0KCk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAor
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q4KAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywKKyAgICAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyh3YXRjaHBvaW50U2V0LT5h
ZGRyZXNzT2ZJc1dhdGNoZWQoKSkpLAorICAgICAgICAgICAgICAgIHRoaXMsIG9wZXJhdGlvbk5v
dGlmeUdsb2JhbFZhcldyaXRlLCBOb1Jlc3VsdCwgd2F0Y2hwb2ludFNldCkpOworICAgICAgICAK
KyAgICAgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKSB7CisgICAgICAgICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNo
UmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd3JpdGVCYXJy
aWVyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLCB2YWx1ZS50YWdHUFIo
KSwgbm9kZS5jaGlsZDEoKSwgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MsIHNjcmF0Y2hS
ZWcpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IGlmIHdlIGhhcHBlbiB0byBoYXZl
IGEgc3BhcmUgcmVnaXN0ZXIgLSBhbmQgX09OTFlfIGlmIHdlIGhhcHBlbiB0byBoYXZlCisgICAg
ICAgIC8vIGEgc3BhcmUgcmVnaXN0ZXIgLSBhIGdvb2Qgb3B0aW1pemF0aW9uIHdvdWxkIGJlIHRv
IHB1dCB0aGUgcmVnaXN0ZXIgcG9pbnRlciBpbnRvCisgICAgICAgIC8vIGEgcmVnaXN0ZXIgYW5k
IHRoZW4gZG8gYSB6ZXJvIG9mZnNldCBzdG9yZSBmb2xsb3dlZCBieSBhIGZvdXItb2Zmc2V0IHN0
b3JlIChvcgorICAgICAgICAvLyB2aWNlLXZlcnNhIGRlcGVuZGluZyBvbiBlbmRpYW5uZXNzKS4K
KyAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS50YWdHUFIoKSwgbm9kZS5yZWdpc3RlclBvaW50
ZXIoKS0+dGFnUG9pbnRlcigpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5wYXlsb2Fk
R1BSKCksIG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnBheWxvYWRQb2ludGVyKCkpOworCisgICAg
ICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
ICAgICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKKyAgICAgICAgbV9qaXQuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCkuZ2V0KAorICAgICAg
ICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKS0+aW1wbCgp
KS5hZGRXYXRjaHBvaW50KAorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgp
KTsKKyAgICAgICAgCisjaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQorICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOworICAgICAgICBtX2ppdC5sb2FkMzIobm9kZS5yZWdpc3RlclBvaW50ZXIoKS0+dGFn
UG9pbnRlcigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90T0sg
PSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc2Ny
YXRjaEdQUiwKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihub2RlLnJlZ2lzdGVyUG9pbnRlcigp
LT5nZXQoKS50YWcoKSkpOworICAgICAgICBtX2ppdC5sb2FkMzIobm9kZS5yZWdpc3RlclBvaW50
ZXIoKS0+cGF5bG9hZFBvaW50ZXIoKSwgc2NyYXRjaEdQUik7CisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1
YWwsIHNjcmF0Y2hHUFIsCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIobm9kZS5yZWdpc3RlclBv
aW50ZXIoKS0+Z2V0KCkucGF5bG9hZCgpKSk7CisgICAgICAgIG5vdE9LLmxpbmsoJm1faml0KTsK
KyAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAgICAgICBvay5saW5rKCZtX2ppdCk7Cisj
ZW5kaWYKKyAgICAgICAgCisgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOiB7CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAg
IEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDExOTgwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2MTUsNiArMzYxNSw1MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0
R2xvYmFsVmFyQ2hlY2s6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CisgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50
U2V0ID0KKyAgICAgICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4p
LT5zeW1ib2xUYWJsZSgpLmdldCgKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyKG5vZGUuaWRl
bnRpZmllck51bWJlckZvckNoZWNrKCkpLT5pbXBsKCkpLndhdGNocG9pbnRTZXQoKTsKKyAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICBzbG93UGF0aENhbGwoCisgICAg
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpOb25aZXJvLAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJzb2x1
dGVBZGRyZXNzKHdhdGNocG9pbnRTZXQtPmFkZHJlc3NPZklzV2F0Y2hlZCgpKSksCisgICAgICAg
ICAgICAgICAgdGhpcywgb3BlcmF0aW9uTm90aWZ5R2xvYmFsVmFyV3JpdGUsIE5vUmVzdWx0LCB3
YXRjaHBvaW50U2V0KSk7CisgICAgICAgIAorICAgICAgICBpZiAoSGVhcDo6aXNXcml0ZUJhcnJp
ZXJFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUu
Y29kZU9yaWdpbiksIHZhbHVlLmdwcigpLCBub2RlLmNoaWxkMSgpLCBXcml0ZUJhcnJpZXJGb3JW
YXJpYWJsZUFjY2Vzcywgc2NyYXRjaFJlZyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IG1faml0LnN0b3JlUHRyKHZhbHVlLmdwcigpLCBub2RlLnJlZ2lzdGVyUG9pbnRlcigpKTsKKwor
ICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICAgICAgCisgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OiB7CisgICAgICAgIG1faml0
Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpLmdldCgKKyAg
ICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKSktPmlt
cGwoKSkuYWRkV2F0Y2hwb2ludCgKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9p
bnQoKSk7CisgICAgICAgIAorI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihub2RlLnJlZ2lzdGVyUG9pbnRlcigp
LCBzY3JhdGNoR1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgb2sgPSBtX2ppdC5icmFu
Y2hQdHIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHNjcmF0Y2hHUFIsCisgICAg
ICAgICAgICBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oSlNWYWx1ZTo6ZW5jb2Rl
KG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPmdldCgpKSkpKTsKKyAgICAgICAgbV9qaXQuYnJlYWtw
b2ludCgpOworICAgICAgICBvay5saW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICAgICAgCisgICAg
ICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1
cmUodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MTQsNiArMTQxNCwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBUcnVzdGVkSW1tMzIoYXJnMikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX1cgb3BlcmF0aW9uLCBXYXRjaHBvaW50U2V0KiB3YXRj
aHBvaW50U2V0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoVHJ1c3RlZElt
bVB0cih3YXRjaHBvaW50U2V0KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CisgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUg
QXJndW1lbnRUeXBlMT4KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZ1bmN0
aW9uVHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5cGUxIGFyZzEpCiAgICAg
ewpAQCAtMTY3Miw2ICsxNjc3LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzNQ
YXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0RGR09wZXJhdGlvbl9XIG9wZXJhdGlvbiwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2lu
dFNldCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKFRydXN0ZWRJbW1QdHIo
d2F0Y2hwb2ludFNldCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwor
ICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3Vt
ZW50VHlwZTE+CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5
cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBhcmcxKQogICAgIHsKQEAg
LTE3OTMsNiArMTgwMywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlv
bikKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0
dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOworICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9u
UHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdDEsIEdQUlJlZyByZXN1bHQyKQogICAgIHsKICAg
ICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2soZnVuY3Rpb24pOwpAQCAtMjE5MCw2ICsyMjA1LDMyIEBAIHB1YmxpYzoKICAgICAgICAgQVNT
RVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRU
eXBlcyk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soa2luZCwganNWYWx1ZVNvdXJjZSwgbm9k
ZVVzZS5pbmRleCgpLCBqdW1wVG9GYWlsLCByZWNvdmVyeSk7CiAgICAgfQorICAgIC8vIFVzZSB0
aGlzIGxpa2UgeW91IHdvdWxkIHVzZSBzcGVjdWxhdGlvbkNoZWNrKCksIGV4Y2VwdCB0aGF0IHlv
dSBkb24ndCBwYXNzIGl0IGEganVtcAorICAgIC8vIChiZWNhdXNlIHlvdSBkb24ndCBoYXZlIHRv
IGV4ZWN1dGUgYSBicmFuY2g7IHRoYXQncyBraW5kIG9mIHRoZSB3aG9sZSBwb2ludCksIGFuZCB5
b3UKKyAgICAvLyBtdXN0IHJlZ2lzdGVyIHRoZSByZXR1cm5lZCBXYXRjaHBvaW50IHdpdGggc29t
ZXRoaW5nIHJlbGV2YW50LiBJbiBnZW5lcmFsLCB0aGlzIHNob3VsZAorICAgIC8vIGJlIHVzZWQg
d2l0aCBleHRyZW1lIGNhcmUuIFVzZSBzcGVjdWxhdGlvbkNoZWNrKCkgdW5sZXNzIHlvdSd2ZSBn
b3QgYW4gYW1hemluZyByZWFzb24KKyAgICAvLyBub3QgdG8uCisgICAgV2F0Y2hwb2ludCogc3Bl
Y3VsYXRpb25XYXRjaHBvaW50KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNv
dXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIGlmICghbV9jb21waWxl
T2theSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBBU1NFUlQoYXQobV9jb21waWxl
SW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKKyAgICAgICAg
T1NSRXhpdCYgZXhpdCA9IG1faml0LmNvZGVCbG9jaygpLT5vc3JFeGl0KAorICAgICAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoCisgICAgICAgICAgICAgICAgT1NSRXhp
dChraW5kLCBqc1ZhbHVlU291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3Jh
cGgoKS5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksCisgICAgICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCgpLCB0aGlzKSkpOworICAgICAgICBl
eGl0Lm1fd2F0Y2hwb2ludEluZGV4ID0gbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZFdhdGNocG9p
bnQoCisgICAgICAgICAgICBXYXRjaHBvaW50KG1faml0LndhdGNocG9pbnRMYWJlbCgpKSk7Cisg
ICAgICAgIHJldHVybiAmbV9qaXQuY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhpdC5tX3dhdGNo
cG9pbnRJbmRleCk7CisgICAgfQorICAgIC8vIFRoZSBkZWZhdWx0IGZvciBzcGVjdWxhdGlvbiB3
YXRjaHBvaW50cyBpcyB0aGF0IHRoZXkncmUgdW5jb3VudGVkLCBiZWNhdXNlIHRoZQorICAgIC8v
IGFjdCBvZiBmaXJpbmcgYSB3YXRjaHBvaW50IGludmFsaWRhdGVzIGl0LiBTbywgZnV0dXJlIHJl
Y29tcGlsYXRpb25zIHdpbGwgbm90CisgICAgLy8gYXR0ZW1wdCB0byBzZXQgdGhpcyB3YXRjaHBv
aW50IGFnYWluLgorICAgIFdhdGNocG9pbnQqIHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpCisgICAg
eworICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25XYXRjaHBvaW50KFVuY291bnRhYmxlV2F0Y2hw
b2ludCwgSlNWYWx1ZVNvdXJjZSgpLCBOb05vZGUpOworICAgIH0KICAgICB2b2lkIGZvcndhcmRT
cGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJj
ZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCwg
Y29uc3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVSZWNvdmVyeSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlw
ZXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTE5ODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTksNiArMjU5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9hcmd1
bWVudF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfcG5hbWUpCisgICAgICAg
IERFRklORV9PUChvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfZ2xvYmFsX3ZhcikKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9wbmFtZXMpCiAg
ICAgICAgIERFRklORV9PUChvcF9nZXRfc2NvcGVkX3ZhcikKQEAgLTMyNCw2ICszMjUsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXIpCiAgICAg
ICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3ZhcikKKyAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3Njb3BlZF92YXIp
CiAgICAgICAgIERFRklORV9PUChvcF9yZXNvbHZlKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVz
b2x2ZV9iYXNlKQpAQCAtNDgxLDYgKzQ4Myw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jl
c29sdmVfZ2xvYmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3JzaGlmdCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDcgKzQ2Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzTWFwcGVkKGludCB2aXJ0dWFsUmVnaXN0ZXJJ
bmRleCk7CiAgICAgICAgIGJvb2wgZ2V0TWFwcGVkUGF5bG9hZChpbnQgdmlydHVhbFJlZ2lzdGVy
SW5kZXgsIFJlZ2lzdGVySUQmIHBheWxvYWQpOwogICAgICAgICBib29sIGdldE1hcHBlZFRhZyhp
bnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQmIHRhZyk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGludCB2aXJ0dWFsUmVnaXN0
ZXJJbmRleCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGludCB2
aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCB0YWcpOwogCkBAIC01OTksNiArNTk5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlf
dmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9nbG9iYWxfdmFyKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUoSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uKSB7IGVtaXRfb3BfZ2V0X2dsb2JhbF92YXIoaW5zdHJ1Y3Rp
b24pOyB9CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfc2NvcGVkX3ZhcihJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5pdF9sYXp5X3JlZyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKEluc3RydWN0aW9uKik7CkBAIC02
NjIsNiArNjYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRf
YnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX3Nl
dHRlcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dsb2JhbF92YXIo
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNr
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfc2NvcGVkX3ZhcihJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZShJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV9iYXNlKEluc3RydWN0aW9uKik7CkBAIC03Mzks
NiArNzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHJl
X2luYyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5
X3ZhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9yZXNvbHZlX2dsb2JhbF9keW5h
bWljKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX3JzaGlmdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTE5ODAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA5MCw2ICsxMDkwLDM3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9n
bG9iYWxfdmFyKEluc3RydWMKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5H
VEgob3BfcHV0X2dsb2JhbF92YXIpLCB2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3sKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcjsKKyAgICBpbnQgdmFsdWUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIAorICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgCisg
ICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CisgICAgCisgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNzKGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51LnByZWRpY2F0ZVBvaW50ZXIpKSk7CisgICAgCisgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJy
aWVyRW5hYmxlZCgpKSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3Qp
LCByZWdUMik7CisgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0LCByZWdUMSwg
cmVnVDMsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNj
ZXNzKTsKKyAgICB9CisgICAgCisgICAgc3RvcmUzMihyZWdUMSwgcmVnaXN0ZXJQb2ludGVyLT50
YWdQb2ludGVyKCkpOworICAgIHN0b3JlMzIocmVnVDAsIHJlZ2lzdGVyUG9pbnRlci0+cGF5bG9h
ZFBvaW50ZXIoKSk7CisgICAgdW5tYXAoKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOworICAgIAorICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9wdXRfZ2xv
YmFsX3Zhcl9jaGVjayk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEsIHJlZ1QwKTsK
KyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6OnJl
c2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby0+
Y2FsbFJldHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMTk4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAyNyw2ICsxMDI3LDI5IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9nbG9iYWxfdmFyKEluc3RydWMKICAgICAgICAgZW1pdFdyaXRlQmFycmllcihnbG9iYWxPYmpl
Y3QsIHJlZ1QwLCByZWdUMiwgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9y
VmFyaWFibGVBY2Nlc3MpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9j
aGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOworICAg
IAorICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFic29sdXRlQWRkcmVzcyhj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5wcmVkaWNhdGVQb2ludGVyKSkpOworCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAKKyAgICBzdG9yZVB0cihyZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQ
b2ludGVyKTsKKyAgICBpZiAoSGVhcDo6aXNXcml0ZUJhcnJpZXJFbmFibGVkKCkpCisgICAgICAg
IGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0LCByZWdUMCwgcmVnVDIsIFNob3VsZEZpbHRl
ckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7Cisg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIAorICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRo
aXMsIGN0aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQocmVnVDApOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwuY2FsbCgpOworfQorCiB2
b2lkIEpJVDo6cmVzZXRQYXRjaEdldEJ5SWQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
KHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGN0aV9vcF9nZXRfYnlfaWQpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDExOTgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzc3LDYgKzIzNzcsMTUgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9u
ZXdfYQogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3Rh
Y2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihzdGFja0ZyYW1l
LmFyZ3NbMF0uaW50MzIoKSksIHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpKTsKIH0KIAorREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spCit7CisgICAg
U1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOworICAgIAorICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIHN5bWJvbFRhYmxlUHV0KGNvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCksIGNhbGxGcmFtZSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHN0YWNr
RnJhbWUuYXJnc1sxXS5pbnQzMigpKSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSwgdHJ1
ZSk7Cit9CisKIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNvbHZl
KQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDM2LDYgKzQz
Niw3IEBAIGV4dGVybiAiQyIgewogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3BvcF9zY29wZShT
VFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3Byb2ZpbGVf
ZGlkX2NhbGwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9v
cF9wcm9maWxlX3dpbGxfY2FsbChTVFVCX0FSR1NfREVDTEFSQVRJT04pOworICAgIHZvaWQgSklU
X1NUVUIgY3RpX29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTik7
CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X2lkKFNUVUJfQVJHU19ERUNMQVJBVElP
Tik7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X2lkX2ZhaWwoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKTsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfYnlfaWRfZ2VuZXJpYyhT
VFVCX0FSR1NfREVDTEFSQVRJT04pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NTYsNiArODU2LDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3cK
ICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9nbG9iYWxfdmFyX2NoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBzeW1ib2xUYWJsZVB1dChjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbNF0u
dS5vcGVyYW5kKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIHRydWUpOworICAgIExMSU5UX0VO
RCgpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogewog
ICAgIExMSU5UX0JFR0lOKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMTE5ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9iCiBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CiBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX2Jhc2UpOwogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CiBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YXJndW1lbnRzX2xlbmd0aCk7CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5
X2lkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgog
ICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorbWFjcm8gZ2V0
R2xvYmFsVmFyKHNpemUpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRwIDhbUENdLCB0
MAogICAgIGxvYWRpIDRbUENdLCB0MwpAQCAtMTA0Nyw5ICsxMDQ3LDE3IEBAIF9sbGludF9vcF9n
ZXRfZ2xvYmFsX3ZhcjoKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwXSwgdDEKICAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQzLCA4XQotICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkaSAoc2l6ZSAtIDEp
ICogNFtQQ10sIHQzCiAgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDMpCi0gICAgZGlzcGF0Y2go
NCkKKyAgICBkaXNwYXRjaChzaXplKQorZW5kCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoK
KyAgICBnZXRHbG9iYWxWYXIoNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hh
YmxlOgorICAgIGdldEdsb2JhbFZhcig1KQogCiAKIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoK
QEAgLTEwNjMsNiArMTA3MSwyMiBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgZGlz
cGF0Y2goMykKIAogCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRwIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBidGJueiBbdDJdLCAub3BQdXRHbG9iYWxWYXJDaGVja1Ns
b3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgd3JpdGVCYXJy
aWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbdDBdCisgICAgZGlzcGF0Y2goNSkKKy5vcFB1dEdsb2JhbFZhckNoZWNr
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9j
aGVjaykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2Fj
aGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShy
ZXZpc2lvbiAxMTk4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODkzLDE1ICs4OTMsMjMgQEAgX2xs
aW50X29wX3B1dF9zY29wZWRfdmFyOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX2dl
dF9nbG9iYWxfdmFyOgorbWFjcm8gZ2V0R2xvYmFsVmFyKHNpemUpCiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGxvYWRwIDE2W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4
XSwgdDMKICAgICBsb2FkcCBbdDBdLCB0MQogICAgIHN0b3JlcCB0MSwgW2NmciwgdDMsIDhdCi0g
ICAgbG9hZHAgMjRbUEIsIFBDLCA4XSwgdDAKKyAgICBsb2FkcCAoc2l6ZSAtIDEpICogOFtQQiwg
UEMsIDhdLCB0MAogICAgIHZhbHVlUHJvZmlsZSh0MSwgdDApCi0gICAgZGlzcGF0Y2goNCkKKyAg
ICBkaXNwYXRjaChzaXplKQorZW5kCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICBn
ZXRHbG9iYWxWYXIoNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOgor
ICAgIGdldEdsb2JhbFZhcig1KQogCiAKIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKQEAgLTkx
NCw2ICs5MjIsMjEgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgogICAgIGRpc3BhdGNoKDMp
CiAKIAorX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkcCAyNFtQQiwgUEMsIDhdLCB0MgorICAgIGxvYWRpcyAxNltQQiwgUEMsIDhd
LCB0MQorICAgIGxvYWRwIDhbUEIsIFBDLCA4XSwgdDAKKyAgICBidGJueiBbdDJdLCAub3BQdXRH
bG9iYWxWYXJDaGVja1Nsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MikKKyAg
ICB3cml0ZUJhcnJpZXIodDIpCisgICAgc3RvcmVwIHQyLCBbdDBdCisgICAgZGlzcGF0Y2goNSkK
Ky5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGludF9v
cF9nZXRfYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgICMgV2Ugb25seSBkbyBtb25v
bW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0
aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJl
dmlzaW9uIDExOTgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDIyICs1MDIsMjUgQEAgdm9pZCBKU09iamVjdDo6
cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZQogICAgIHN0cnVjdHVyZSgpLT5zZXRTdGF0aWNGdW5j
dGlvbnNSZWlmaWVkKCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTT2Jq
ZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+
aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgICAgICBw
dXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBw
cm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkK
LSAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICBpZiAob2Zm
c2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwdXRVbmRl
ZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgIHJldHVybiB0cnVlOwogfQogCiBORVZF
Ul9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNs
b3QmIHNsb3QsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMTk4MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzYsNyArMTc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCB0cmFu
c2l0aW9uVG8oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgdm9pZCByZW1v
dmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgYm9vbCByZW1v
dmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsgLy8gUmV0dXJuIHRydWUgaWYg
YW55dGhpbmcgaXMgcmVtb3ZlZC4KICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkg
eyByZXR1cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRpb24oKTsgfQogICAgICAgICBib29sIGhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDExOTgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNzIsOSArNzIsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFi
bGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFi
bGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1i
b2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICBpZiAo
ZW50cnkuaXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gb2JqZWN0LT5z
eW1ib2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFi
bGUuZmluZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBpZiAoaXRlciA9PSBzeW1i
b2xUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN5bWJvbFRhYmxlRW50
cnk6OkZhc3QgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CisgICAgQVNTRVJUKCFlbnRyeS5pc051bGwo
KSk7CiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgo
KSkuZ2V0KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODMsOSArODYsMTIgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFi
bGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBTeW1i
b2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxsKCkpCisgICAgU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpOworICAgIFN5bWJv
bFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT5z
ZWNvbmQ7CisgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgZGVzY3JpcHRvci5zZXRE
ZXNjcmlwdG9yKAogICAgICAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSku
Z2V0KCksIGVudHJ5LmdldEF0dHJpYnV0ZXMoKSB8IERvbnREZWxldGUpOwogICAgIHJldHVybiB0
cnVlOwpAQCAtOTYsOSArMTAyLDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogICAg
IFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QsCiAgICAgYm9vbCYgc2xvdElzV3JpdGVhYmxlKQogewotICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0
KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAg
ICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCk7CisgICAg
U3ltYm9sVGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0
ZXItPnNlY29uZDsKKyAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICBzbG90LnNldFZh
bHVlKG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CiAgICAgc2xv
dElzV3JpdGVhYmxlID0gIWVudHJ5LmlzUmVhZE9ubHkoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTExMiwxNSArMTIxLDIxIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgIEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBBU1NFUlQoIUhl
YXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAob2JqZWN0
KSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFi
bGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Ci0gICAgaWYgKGVudHJ5
LmlzTnVsbCgpKQorICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IG9iamVjdC0+c3ltYm9s
VGFibGUoKTsKKyAgICBTeW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZp
bmQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZW50cnkuaXNSZWFkT25s
eSgpKSB7CisgICAgYm9vbCB3YXNGYXQ7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBmYXN0
RW50cnkgPSBpdGVyLT5zZWNvbmQuZ2V0RmFzdCh3YXNGYXQpOworICAgIEFTU0VSVCghZmFzdEVu
dHJ5LmlzTnVsbCgpKTsKKyAgICBpZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHkoKSkgewogICAgICAg
ICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9Ci0gICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLnNldChnbG9i
YWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkod2FzRmF0KSkKKyAgICAg
ICAgaXRlci0+c2Vjb25kLm5vdGlmeVdyaXRlKCk7CisgICAgb2JqZWN0LT5yZWdpc3RlckF0KGZh
c3RFbnRyeS5nZXRJbmRleCgpKS5zZXQoZ2xvYmFsRGF0YSwgb2JqZWN0LCB2YWx1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzNiw2ICsxNTEsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xU
YWJsZVB1dFdpdGhBdHRyaWJ1dGVzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xU
YWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnNlY29uZDsKICAgICBBU1NFUlQoIWVudHJ5LmlzTnVs
bCgpKTsKKyAgICBlbnRyeS5ub3RpZnlXcml0ZSgpOwogICAgIGVudHJ5LnNldEF0dHJpYnV0ZXMo
YXR0cmlidXRlcyk7CiAgICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLnNl
dChnbG9iYWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTeW1ib2xUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU3ltYm9sVGFibGVFbnRyeSYg
U3ltYm9sVGFibGVFbnRyeTo6Y29weVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgb3RoZXIp
Cit7CisgICAgQVNTRVJUKG90aGVyLmlzRmF0KCkpOworICAgIEZhdEVudHJ5KiBuZXdGYXRFbnRy
eSA9IG5ldyBGYXRFbnRyeSgqb3RoZXIuZmF0RW50cnkoKSk7CisgICAgZnJlZUZhdEVudHJ5KCk7
CisgICAgbV9iaXRzID0gYml0d2lzZV9jYXN0PGludHB0cl90PihuZXdGYXRFbnRyeSkgfCBGYXRG
bGFnOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5OjpmcmVl
RmF0RW50cnlTbG93KCkKK3sKKyAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgZGVsZXRlIGZhdEVu
dHJ5KCk7Cit9CisKK2Jvb2wgU3ltYm9sVGFibGVFbnRyeTo6Y291bGRCZVdhdGNoZWQoKQorewor
ICAgIGlmICghaXNGYXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFdhdGNocG9pbnRT
ZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICBp
ZiAoIXdhdGNocG9pbnRzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHdhdGNo
cG9pbnRzLT5pc1N0aWxsVmFsaWQoKTsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5OjphdHRl
bXB0VG9XYXRjaCgpCit7CisgICAgRmF0RW50cnkqIGVudHJ5ID0gaW5mbGF0ZSgpOworICAgIGlm
ICghZW50cnktPm1fd2F0Y2hwb2ludHMpCisgICAgICAgIGVudHJ5LT5tX3dhdGNocG9pbnRzID0g
YWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoKSk7Cit9CisKK2Jvb2wqIFN5bWJvbFRhYmxlRW50
cnk6OmFkZHJlc3NPZklzV2F0Y2hlZCgpCit7CisgICAgQVNTRVJUKGNvdWxkQmVXYXRjaGVkKCkp
OworICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLT5hZGRyZXNzT2ZJc1dhdGNo
ZWQoKTsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5OjphZGRXYXRjaHBvaW50KFdhdGNocG9p
bnQqIHdhdGNocG9pbnQpCit7CisgICAgQVNTRVJUKGNvdWxkQmVXYXRjaGVkKCkpOworICAgIGZh
dEVudHJ5KCktPm1fd2F0Y2hwb2ludHMtPmFkZCh3YXRjaHBvaW50KTsKK30KKwordm9pZCBTeW1i
b2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZVNsb3coKQoreworICAgIFdhdGNocG9pbnRTZXQqIHdh
dGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICBpZiAoIXdh
dGNocG9pbnRzKQorICAgICAgICByZXR1cm47CisgICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdyaXRl
KCk7Cit9CisKK1N5bWJvbFRhYmxlRW50cnk6OkZhdEVudHJ5KiBTeW1ib2xUYWJsZUVudHJ5Ojpp
bmZsYXRlU2xvdygpCit7CisgICAgRmF0RW50cnkqIGVudHJ5ID0gbmV3IEZhdEVudHJ5KG1fYml0
cyk7CisgICAgbV9iaXRzID0gYml0d2lzZV9jYXN0PGludHB0cl90PihlbnRyeSkgfCBGYXRGbGFn
OworICAgIHJldHVybiBlbnRyeTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTE5
ODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNTMgKzMxLDE2MyBAQAogCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgog
I2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIFdhdGNocG9pbnQ7CisgICAgY2xhc3Mg
V2F0Y2hwb2ludFNldDsKKwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGludCBtaXNzaW5nU3lt
Ym9sTWFya2VyKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsgfQog
CiAgICAgLy8gVGhlIGJpdCB0d2lkZGxpbmcgaW4gdGhpcyBjbGFzcyBhc3N1bWVzIHRoYXQgZXZl
cnkgcmVnaXN0ZXIgaW5kZXggaXMgYQogICAgIC8vIHJlYXNvbmFibHkgc21hbGwgcG9zaXRpdmUg
b3IgbmVnYXRpdmUgbnVtYmVyLCBhbmQgdGhlcmVmb3JlIGhhcyBpdHMgaGlnaAogICAgIC8vIGZv
dXIgYml0cyBhbGwgc2V0IG9yIGFsbCB1bnNldC4KIAorICAgIC8vIEluIGFkZGl0aW9uIHRvIGlt
cGxlbWVudGluZyBzZW1hbnRpY3MtbWFuZGF0ZWQgdmFyaWFibGUgYXR0cmlidXRlcyBhbmQKKyAg
ICAvLyBpbXBsZW1lbnRhdGlvbi1tYW5kYXRlZCB2YXJpYWJsZSBpbmRleGluZywgdGhpcyBjbGFz
cyBhbHNvIGltcGxlbWVudHMKKyAgICAvLyB3YXRjaHBvaW50cyB0byBiZSB1c2VkIGZvciBKSVQg
b3B0aW1pemF0aW9ucy4gQmVjYXVzZSB3YXRjaHBvaW50cyBhcmUKKyAgICAvLyBtZWFudCB0byBi
ZSByZWxhdGl2ZWx5IHJhcmUsIHRoaXMgY2xhc3Mgb3B0aW1pemVzIGhlYXZpbHkgZm9yIHRoZSBj
YXNlCisgICAgLy8gdGhhdCB0aGV5IGFyZSBub3QgYmVpbmcgdXNlZC4gVG8gdGhhdCBlbmQsIHRo
aXMgY2xhc3MgdXNlcyB0aGUgdGhpbi1mYXQKKyAgICAvLyBpZGlvbTogZWl0aGVyIGl0IGlzIHRo
aW4sIGluIHdoaWNoIGNhc2UgaXQgY29udGFpbnMgYW4gaW4tcGxhY2UgZW5jb2RlZAorICAgIC8v
IHdvcmQgdGhhdCBjb25zaXN0cyBvZiBhdHRyaWJ1dGVzLCB0aGUgaW5kZXgsIGFuZCBhIGJpdCBz
YXlpbmcgdGhhdCBpdCBpcworICAgIC8vIHRoaW47IG9yIGl0IGlzIGZhdCwgaW4gd2hpY2ggY2Fz
ZSBpdCBjb250YWlucyBhIHBvaW50ZXIgdG8gYSBtYWxsb2MnZAorICAgIC8vIGRhdGEgc3RydWN0
dXJlIGFuZCBhIGJpdCBzYXlpbmcgdGhhdCBpdCBpcyBmYXQuIFRoZSBtYWxsb2MnZCBkYXRhCisg
ICAgLy8gc3RydWN0dXJlIHdpbGwgYmUgbWFsbG9jZWQgYSBzZWNvbmQgdGltZSB1cG9uIGNvcHks
IHRvIHByZXNlcnZlIHRoZQorICAgIC8vIHByb3BlcnR5IHRoYXQgaW4tcGxhY2UgZWRpdHMgdG8g
U3ltYm9sVGFibGVFbnRyeSBkbyBub3QgbWFuaWZlc3QgaW4gYW55CisgICAgLy8gY29waWVzLiBI
b3dldmVyLCB0aGUgbWFsbG9jJ2QgRmF0RW50cnkgZGF0YSBzdHJ1Y3R1cmUgY29udGFpbnMgYSBy
ZWYtCisgICAgLy8gY291bnRlZCBwb2ludGVyIHRvIGEgc2hhcmVkIFdhdGNocG9pbnRTZXQuIFRo
dXMsIGluLXBsYWNlIGVkaXRzIG9mIHRoZQorICAgIC8vIFdhdGNocG9pbnRTZXQgd2lsbCBtYW5p
ZmVzdCBpbiBhbGwgY29waWVzLiBIZXJlJ3MgYSBwaWN0dXJlOgorICAgIC8vCisgICAgLy8gU3lt
Ym9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAvLworICAg
IC8vIElmIHlvdSBtYWtlIGEgY29weSBvZiBhIFN5bWJvbFRhYmxlRW50cnksIHlvdSB3aWxsIGhh
dmU6CisgICAgLy8KKyAgICAvLyBvcmlnaW5hbDogU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50
cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAvLyBjb3B5OiAgICAgU3ltYm9sVGFibGVFbnRyeSAt
LT4gRmF0RW50cnkgLS0tLS1eCisKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7CisgICAg
ICAgIC8vIFVzZSB0aGUgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBjbGFzcywgZWl0aGVyIHZpYSBp
bXBsaWNpdCBjYXN0IG9yIGJ5IGNhbGxpbmcKKyAgICAgICAgLy8gZ2V0RmFzdCgpLCB3aGVuIHlv
dSAoMSkgb25seSBjYXJlIGFib3V0IGlzTnVsbCgpLCBnZXRJbmRleCgpLCBhbmQgaXNSZWFkT25s
eSgpLAorICAgICAgICAvLyBhbmQgKDIpIHlvdSBhcmUgaW4gYSBob3QgcGF0aCB3aGVyZSB5b3Ug
bmVlZCB0byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIHRpbWVzCisgICAgICAgIC8vIHRoYXQgeW91
IGJyYW5jaCBvbiBpc0ZhdCgpIHdoZW4gZ2V0dGluZyB0aGUgYml0cygpLgorICAgICAgICBjbGFz
cyBGYXN0IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgRmFzdCgpCisgICAgICAgICAg
ICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0KGNvbnN0IFN5bWJvbFRhYmxlRW50
cnkmIGVudHJ5KQorICAgICAgICAgICAgICAgIDogbV9iaXRzKGVudHJ5LmJpdHMoKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29sIGlzTnVs
bCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFtX2JpdHM7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBnZXRJbmRleCgpIGNvbnN0CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9iaXRz
ID4+IEZsYWdCaXRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29s
IGlzUmVhZE9ubHkoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBtX2JpdHMgJiBSZWFkT25seUZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOworICAgICAgICAgICAgICAg
IGlmIChtX2JpdHMgJiBSZWFkT25seUZsYWcpCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZXMgfD0gUmVhZE9ubHk7CisgICAgICAgICAgICAgICAgaWYgKG1fYml0cyAmIERvbnRFbnVtRmxh
ZykKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBEb250RW51bTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYXR0cmlidXRlczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ym9vbCBpc0ZhdCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fYml0cyAmIEZhdEZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
cHJpdmF0ZToKKyAgICAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeTsKKyAg
ICAgICAgICAgIGludHB0cl90IG1fYml0czsKKyAgICAgICAgfTsKKwogICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5KCkKICAgICAgICAgICAgIDogbV9iaXRzKDApCiAgICAgICAgIHsKICAgICAgICAg
fQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4KQorICAgICAgICAgICAgOiBt
X2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChpbmRl
eCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgfQog
CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4LCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgYXR0cmlidXRl
cyAmIFJlYWRPbmx5LCBhdHRyaWJ1dGVzICYgRG9udEVudW0pOwogICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICB+U3ltYm9sVGFibGVFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZy
ZWVGYXRFbnRyeSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQorICAgICAgICAgICAgOiBtX2JpdHMo
MCkKKyAgICAgICAgeworICAgICAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgb3BlcmF0b3I9KGNvbnN0IFN5bWJvbFRh
YmxlRW50cnkmIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkob3Ro
ZXIuaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHlTbG93KG90aGVyKTsKKyAg
ICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICAgICAgbV9iaXRzID0gb3RoZXIubV9i
aXRzOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIAogICAg
ICAgICBib29sIGlzTnVsbCgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAh
bV9iaXRzOworICAgICAgICAgICAgcmV0dXJuICFiaXRzKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpbnQgZ2V0SW5kZXgoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9i
aXRzID4+IEZsYWdCaXRzOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYml0
cygpID4+IEZsYWdCaXRzKTsKICAgICAgICAgfQotCisgICAgICAgIAorICAgICAgICBBTFdBWVNf
SU5MSU5FIEZhc3QgZ2V0RmFzdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBGYXN0KCp0aGlzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElO
RSBGYXN0IGdldEZhc3QoYm9vbCYgd2FzRmF0KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBGYXN0IHJlc3VsdDsKKyAgICAgICAgICAgIHdhc0ZhdCA9IGlzRmF0KCk7CisgICAgICAgICAg
ICBpZiAod2FzRmF0KQorICAgICAgICAgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBmYXRFbnRyeSgp
LT5tX2JpdHM7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fYml0
cyA9IG1fYml0czsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdAogICAgICAgICB7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICAgICAgICAgIGlmIChtX2Jp
dHMgJiBSZWFkT25seUZsYWcpCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBSZWFkT25s
eTsKLSAgICAgICAgICAgIGlmIChtX2JpdHMgJiBEb250RW51bUZsYWcpCi0gICAgICAgICAgICAg
ICAgYXR0cmlidXRlcyB8PSBEb250RW51bTsKLSAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVz
OworICAgICAgICAgICAgcmV0dXJuIGdldEZhc3QoKS5nZXRBdHRyaWJ1dGVzKCk7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmlidXRlcykKQEAg
LTg3LDMwICsxOTcsMTI1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNSZWFk
T25seSgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBSZWFk
T25seUZsYWc7CisgICAgICAgICAgICByZXR1cm4gYml0cygpICYgUmVhZE9ubHlGbGFnOwogICAg
ICAgICB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgY291bGRCZVdhdGNoZWQoKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIE5vdGlmeSBhbiBvcHBvcnR1bml0eSB0byBjcmVhdGUgYSB3YXRjaHBv
aW50IGZvciBhIHZhcmlhYmxlLiBUaGlzIGlzCisgICAgICAgIC8vIGlkZW1wb3RlbnQgYW5kIGZh
aWwtc2lsZW50LiBJdCBpcyBpZGVtcG90ZW50IGluIHRoZSBzZW5zZSB0aGF0IGlmCisgICAgICAg
IC8vIGEgd2F0Y2hwb2ludCBzZXQgaGFkIGFscmVhZHkgYmVlbiBjcmVhdGVkLCB0aGVuIGFub3Ro
ZXIgb25lIHdpbGwgbm90CisgICAgICAgIC8vIGJlIGNyZWF0ZWQuIEhlbmNlIHR3byBjYWxscyB0
byB0aGlzIG1ldGhvZCBoYXZlIHRoZSBzYW1lIGVmZmVjdCBhcworICAgICAgICAvLyBvbmUgY2Fs
bC4gSXQgaXMgYWxzbyBmYWlsLXNpbGVudCwgaW4gdGhlIHNlbnNlIHRoYXQgaWYgYSB3YXRjaHBv
aW50CisgICAgICAgIC8vIHNldCBoYWQgYmVlbiBjcmVhdGVkIGFuZCBoYWQgYWxyZWFkeSBiZWVu
IGludmFsaWRhdGVkLCB0aGVuIHRoaXMgd2lsbAorICAgICAgICAvLyBqdXN0IHJldHVybi4gVGhp
cyBtZWFucyB0aGF0IGNvdWxkQmVXYXRjaGVkKCkgbWF5IHJldHVybiBmYWxzZSBldmVuCisgICAg
ICAgIC8vIGltbWVkaWF0ZWx5IGFmdGVyIGEgY2FsbCB0byBhdHRlbXB0VG9XYXRjaCgpLgorICAg
ICAgICB2b2lkIGF0dGVtcHRUb1dhdGNoKCk7CisgICAgICAgIAorICAgICAgICBib29sKiBhZGRy
ZXNzT2ZJc1dhdGNoZWQoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgYWRkV2F0Y2hwb2ludChX
YXRjaHBvaW50Kik7CisgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50
U2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hw
b2ludHMuZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBub3RpZnlXcml0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIWlz
RmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG5vdGlmeVdyaXRl
U2xvdygpOworICAgICAgICB9CisgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBSZWFkT25seUZsYWcgPSAweDE7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBEb250RW51bUZsYWcgPSAweDI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBOb3ROdWxsRmxhZyA9IDB4NDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEZs
YWdCaXRzID0gMzsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IEZhdEZsYWcgPSAweDE7
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBSZWFkT25seUZsYWcgPSAweDI7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBEb250RW51bUZsYWcgPSAweDQ7CisgICAgICAgIHN0
YXRpYyBjb25zdCBpbnRwdHJfdCBOb3ROdWxsRmxhZyA9IDB4ODsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludHB0cl90IEZsYWdCaXRzID0gNDsKKyAgICAgICAgCisgICAgICAgIGNsYXNzIEZhdEVu
dHJ5IHsKKyAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBwdWJs
aWM6CisgICAgICAgICAgICBGYXRFbnRyeShpbnRwdHJfdCBiaXRzKQorICAgICAgICAgICAgICAg
IDogbV9iaXRzKGJpdHMgfCBGYXRGbGFnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpbnRwdHJfdCBtX2JpdHM7IC8vIGFsd2F5cyBoYXMg
RmF0RmxhZyBzZXQgYW5kIGV4YWN0bHkgbWF0Y2hlcyB3aGF0IHRoZSBiaXRzIHdvdWxkIGhhdmUg
YmVlbiBpZiB0aGlzIHdhc24ndCBmYXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlZlB0
cjxXYXRjaHBvaW50U2V0PiBtX3dhdGNocG9pbnRzOworICAgICAgICB9OworICAgICAgICAKKyAg
ICAgICAgU3ltYm9sVGFibGVFbnRyeSYgY29weVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYp
OworICAgICAgICB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOworICAgICAgICAKKyAgICAgICAgYm9v
bCBpc0ZhdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBG
YXRGbGFnOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBGYXRFbnRyeSogZmF0
RW50cnkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IEZhdEVudHJ5Kj4obV9iaXRzICYg
fkZhdEZsYWcpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogZmF0RW50
cnkoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PEZhdEVudHJ5Kj4obV9iaXRzICYgfkZhdEZsYWcpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogaW5mbGF0ZSgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChMSUtFTFkoaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhdEVudHJ5KCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbGF0ZVNsb3coKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgRmF0RW50cnkqIGluZmxhdGVTbG93KCk7CisgICAgICAgIAor
ICAgICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90IGJpdHMoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoaXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmF0RW50cnko
KS0+bV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIG1fYml0czsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBpbnRwdHJfdCYgYml0cygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYXRFbnRyeSgp
LT5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB2b2lkIGZyZWVGYXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChMSUtFTFkoIWlzRmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGZyZWVGYXRFbnRyeVNsb3coKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBm
cmVlRmF0RW50cnlTbG93KCk7CiAKICAgICAgICAgdm9pZCBwYWNrKGludCBpbmRleCwgYm9vbCBy
ZWFkT25seSwgYm9vbCBkb250RW51bSkKICAgICAgICAgewotICAgICAgICAgICAgbV9iaXRzID0g
KGluZGV4IDw8IEZsYWdCaXRzKSB8IE5vdE51bGxGbGFnOworICAgICAgICAgICAgaW50cHRyX3Qm
IGJpdHNSZWYgPSBiaXRzKCk7CisgICAgICAgICAgICBiaXRzUmVmID0gKHN0YXRpY19jYXN0PGlu
dHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpIHwgTm90TnVsbEZsYWc7CiAgICAgICAgICAgICBp
ZiAocmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgbV9iaXRzIHw9IFJlYWRPbmx5RmxhZzsKKyAg
ICAgICAgICAgICAgICBiaXRzUmVmIHw9IFJlYWRPbmx5RmxhZzsKICAgICAgICAgICAgIGlmIChk
b250RW51bSkKLSAgICAgICAgICAgICAgICBtX2JpdHMgfD0gRG9udEVudW1GbGFnOworICAgICAg
ICAgICAgICAgIGJpdHNSZWYgfD0gRG9udEVudW1GbGFnOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBib29sIGlzVmFsaWRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAoKGluZGV4IDw8IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gaW5kZXg7Cisg
ICAgICAgICAgICByZXR1cm4gKChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IEZsYWdC
aXRzKSA+PiBGbGFnQml0cykgPT0gc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KTsKICAgICAg
ICAgfQogCi0gICAgICAgIGludCBtX2JpdHM7CisgICAgICAgIGludHB0cl90IG1fYml0czsKICAg
ICB9OwogCiAgICAgc3RydWN0IFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzIDogSGFzaFRyYWl0
czxTeW1ib2xUYWJsZUVudHJ5PiB7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5OTQ1KQorKysgU291cmNl
L1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNi0x
MCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBzaG91bGQg
YmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGFiaWxp
dHkgdG8gc2V0IHRoZSBpbmxpbmUgY2FwYWNpdHkgb2Ygc2VnbWVudGVkIHZlY3RvcnMuCisKKyAg
ICAgICAgKiB3dGYvU2VnbWVudGVkVmVjdG9yLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAo
U2VnbWVudGVkVmVjdG9ySXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpTZWdtZW50ZWRWZWN0b3JJ
dGVyYXRvcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6U2VnbWVudGVkVmVjdG9ySXRlcmF0
b3I6OlNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKToKKyAgICAgICAgKFNlZ21lbnRlZFZlY3Rvcik6
CisKIDIwMTItMDYtMDkgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gUmVtb3ZlIEphdmFTY3JpcHRDb3JlIGRlcGVuZGVuY2llcyBm
cm9tIGd5cApJbmRleDogU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgJKHJldmlzaW9uIDExOTgwMykK
KysrIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCwxMiArMzQsMTIgQEAKIG5hbWVzcGFjZSBXVEYgewogCiAgICAgLy8gQW4gaXRlcmF0b3IgZm9y
IFNlZ21lbnRlZFZlY3Rvci4gSXQgc3VwcG9ydHMgb25seSB0aGUgcHJlICsrIG9wZXJhdG9yCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVu
dGVkVmVjdG9yOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemU+
IGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yIHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgc2l6ZV90IFNlZ21lbnRTaXplID0gOCwgc2l6ZV90IElubGluZUNhcGFjaXR5ID0gMzI+IGNs
YXNzIFNlZ21lbnRlZFZlY3RvcjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNl
Z21lbnRTaXplID0gOCwgc2l6ZV90IElubGluZUNhcGFjaXR5ID0gMzI+IGNsYXNzIFNlZ21lbnRl
ZFZlY3Rvckl0ZXJhdG9yIHsKICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgU2Vn
bWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFNlZ21l
bnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+OwogICAgIHB1YmxpYzoK
LSAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4g
SXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2Vn
bWVudFNpemUsIElubGluZUNhcGFjaXR5PiBJdGVyYXRvcjsKIAogICAgICAgICB+U2VnbWVudGVk
VmVjdG9ySXRlcmF0b3IoKSB7IH0KIApAQCAtNzUsNyArNzUsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ICE9IG90aGVyLm1faW5kZXggfHwgbV9zZWdtZW50
ICE9IG90aGVyLm1fc2VnbWVudCB8fCAmbV92ZWN0b3IgIT0gJm90aGVyLm1fdmVjdG9yOwogICAg
ICAgICB9CiAKLSAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3ImIG9wZXJhdG9yPShjb25z
dCBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4mIG90aGVyKQorICAgICAg
ICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IFNlZ21lbnRlZFZlY3Rv
ckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4mIG90aGVyKQogICAgICAg
ICB7CiAgICAgICAgICAgICBtX3ZlY3RvciA9IG90aGVyLm1fdmVjdG9yOwogICAgICAgICAgICAg
bV9zZWdtZW50ID0gb3RoZXIubV9zZWdtZW50OwpAQCAtODQsMjUgKzg0LDI4IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBTZWdtZW50ZWRWZWN0
b3JJdGVyYXRvcihTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemU+JiB2ZWN0b3IsIHNpemVf
dCBzZWdtZW50LCBzaXplX3QgaW5kZXgpCisgICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9y
KFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3Is
IHNpemVfdCBzZWdtZW50LCBzaXplX3QgaW5kZXgpCiAgICAgICAgICAgICA6IG1fdmVjdG9yKHZl
Y3RvcikKICAgICAgICAgICAgICwgbV9zZWdtZW50KHNlZ21lbnQpCiAgICAgICAgICAgICAsIG1f
aW5kZXgoaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFNlZ21lbnRlZFZl
Y3RvcjxULCBTZWdtZW50U2l6ZT4mIG1fdmVjdG9yOworICAgICAgICBTZWdtZW50ZWRWZWN0b3I8
VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiYgbV92ZWN0b3I7CiAgICAgICAgIHNpemVf
dCBtX3NlZ21lbnQ7CiAgICAgICAgIHNpemVfdCBtX2luZGV4OwogICAgIH07CiAKICAgICAvLyBT
ZWdtZW50ZWRWZWN0b3IgaXMganVzdCBsaWtlIFZlY3RvciwgYnV0IGl0IGRvZXNuJ3QgbW92ZSB0
aGUgdmFsdWVzCiAgICAgLy8gc3RvcmVkIGluIGl0cyBidWZmZXIgd2hlbiBpdCBncm93cy4gVGhl
cmVmb3JlLCBpdCBpcyBzYWZlIHRvIGtlZXAKLSAgICAvLyBwb2ludGVycyBpbnRvIGEgU2VnbWVu
dGVkVmVjdG9yLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemU+
IGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRW
ZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT47CisgICAgLy8gcG9pbnRlcnMgaW50byBhIFNl
Z21lbnRlZFZlY3Rvci4gVGhlIGRlZmF1bHQgdHVuaW5nIHZhbHVlcyBhcmUKKyAgICAvLyBvcHRp
bWl6ZWQgZm9yIHNlZ21lbnRlZCB2ZWN0b3JzIHRoYXQgZ2V0IGxhcmdlOyB5b3UgbWF5IHdhbnQg
dG8gdXNlCisgICAgLy8gU2VnbWVudGVkVmVjdG9yPHRoaW5neSwgMSwgMD4gaWYgeW91IGRvbid0
IGV4cGVjdCBhIGxvdCBvZiBlbnRyaWVzLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgU2VnbWVudFNpemUsIHNpemVfdCBJbmxpbmVDYXBhY2l0eT4KKyAgICBjbGFzcyBTZWdtZW50
ZWRWZWN0b3IgeworICAgICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8
VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PjsKICAgICBwdWJsaWM6Ci0gICAgICAgIHR5
cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+IEl0ZXJhdG9yOwor
ICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplLCBJ
bmxpbmVDYXBhY2l0eT4gSXRlcmF0b3I7CiAKICAgICAgICAgU2VnbWVudGVkVmVjdG9yKCkKICAg
ICAgICAgICAgIDogbV9zaXplKDApCkBAIC0yNTAsNyArMjUzLDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKICAgICAgICAgU2VnbWVudCBtX2lubGluZVNlZ21l
bnQ7Ci0gICAgICAgIFZlY3RvcjxTZWdtZW50KiwgMzI+IG1fc2VnbWVudHM7CisgICAgICAgIFZl
Y3RvcjxTZWdtZW50KiwgSW5saW5lQ2FwYWNpdHk+IG1fc2VnbWVudHM7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCg==
</data>
<flag name="review"
          id="154406"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147154</attachid>
            <date>2012-06-12 14:00:41 -0700</date>
            <delta_ts>2012-06-12 16:52:36 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>globalwatch_patch_10.diff</filename>
            <type>text/plain</type>
            <size>128692</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5OCBA
QAorMjAxMi0wNi0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaW1wbGVtZW50cyBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgZm9sZGluZyBieSBhbGxv
d2luZyB0aGUgb3B0aW1pemluZworICAgICAgICBjb21waWxlciB0byBzZXQgYSAid2F0Y2hwb2lu
dCIgb24gZ2xvYmFscyB0aGF0IGl0IHdpc2hlcyB0byBjb25zdGFudCBmb2xkLgorICAgICAgICBJ
ZiB0aGUgd2F0Y2hwb2ludCBmaXJlcywgdGhlbiBhbiBPU1IgZXhpdCBpcyBmb3JjZWQgYnkgb3Zl
cndyaXRpbmcgdGhlCisgICAgICAgIG1hY2hpbmUgY29kZSB0aGF0IHRoZSBvcHRpbWl6aW5nIGNv
bXBpbGVyIGdlbmVyYXRlZCB3aXRoIGEganVtcC4KKyAgICAgICAgCisgICAgICAgIEFzIHN1Y2gs
IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHF1aXRlIGEgYml0IG9mIHN0dWZmOgorICAgICAgICAKKyAg
ICAgICAgLSBKdW1wIHJlcGxhY2VtZW50IG9uIHRob3NlIGhhcmR3YXJlIHRhcmdldHMgc3VwcG9y
dGVkIGJ5IHRoZSBvcHRpbWl6aW5nCisgICAgICAgICAgSklULiBJdCBpcyBub3cgcG9zc2libGUg
dG8gcGF0Y2ggaW4gYSBqdW1wIGluc3RydWN0aW9uIG92ZXIgYW55IHJlY29yZGVkCisgICAgICAg
ICAgd2F0Y2hwb2ludCBsYWJlbC4gVGhlIGp1bXAgbXVzdCBiZSAibG9jYWwiIGluIHRoZSBzZW5z
ZSB0aGF0IGl0IG11c3QgYmUKKyAgICAgICAgICB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBsYXJn
ZXN0IGp1bXAgZGlzdGFuY2Ugc3VwcG9ydGVkIGJ5IGEgb25lCisgICAgICAgICAgaW5zdHJ1Y3Rp
b24ganVtcC4KKyAgICAgICAgICAKKyAgICAgICAgLSBXYXRjaHBvaW50U2V0cyBhbmQgV2F0Y2hw
b2ludHMuIEEgV2F0Y2hwb2ludCBpcyBhIGRvdWJseS1saW5rZWQgbGlzdCBub2RlCisgICAgICAg
ICAgdGhhdCByZWNvcmRzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIGp1bXAgbXVzdCBiZSBpbnNlcnRl
ZCBhbmQgdGhlCisgICAgICAgICAgZGVzdGluYXRpb24gdG8gd2hpY2ggaXQgc2hvdWxkIGp1bXAu
IFdhdGNocG9pbnRzIGNhbiBiZSBhZGRlZCB0byBhCisgICAgICAgICAgV2F0Y2hwb2ludFNldC4g
VGhlIFdhdGNocG9pbnRTZXQgY2FuIGJlIGZpcmVkIGFsbCBhdCBvbmNlLCB3aGljaCBwbGFudHMK
KyAgICAgICAgICBhbGwganVtcHMuIFdhdGNocG9pbnRTZXQgYWxzbyByZW1lbWJlcnMgaWYgaXQg
aGFkIGV2ZXIgYmVlbiBpbnZhbGlkYXRlZCwKKyAgICAgICAgICB3aGljaCBhbGxvd3MgZm9yIG1v
bm90b25pY2l0eTogd2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8gb3B0aW1pemUgdXNpbmcKKyAg
ICAgICAgICB3YXRjaHBvaW50cyBvbiBzb21ldGhpbmcgZm9yIHdoaWNoIHdhdGNocG9pbnRzIGhh
ZCBwcmV2aW91c2x5IGZpcmVkLiBUaGUKKyAgICAgICAgICBhY3Qgb2Ygbm90aWZ5aW5nIGEgV2F0
Y2hwb2ludFNldCBoYXMgYSB0cml2aWFsIGZhc3QgcGF0aCBpbiBjYXNlIG5vCisgICAgICAgICAg
V2F0Y2hwb2ludHMgYXJlIHJlZ2lzdGVyZWQgKG9uZS1ieXRlIGxvYWQrYnJhbmNoKS4KKyAgICAg
ICAgCisgICAgICAgIC0gU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLiBJ
dCdzIGxpa2Ugc3BlY3VsYXRpb25DaGVjaygpLAorICAgICAgICAgIGV4Y2VwdCB0aGF0IHlvdSBk
b24ndCBoYXZlIHRvIGVtaXQgYnJhbmNoZXMuIEJ1dCwgeW91IG5lZWQgdG8ga25vdyB3aGF0Cisg
ICAgICAgICAgV2F0Y2hwb2ludFNldCB0byBhZGQgdGhlIHJlc3VsdGluZyBXYXRjaHBvaW50IHRv
LiBOb3QgZXZlcnl0aGluZyB0aGF0CisgICAgICAgICAgeW91IGNvdWxkIHdyaXRlIGEgc3BlY3Vs
YXRpb25DaGVjaygpIGZvciB3aWxsIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRoYXQKKyAgICAgICAg
ICB3b3VsZCBnZXQgbm90aWZpZWQgaWYgdGhlIGNvbmRpdGlvbiB5b3Ugd2VyZSBzcGVjdWxhdGlu
ZyBhZ2FpbnN0IGJlY2FtZQorICAgICAgICAgIGludmFsaWQuCisgICAgICAgICAgCisgICAgICAg
IC0gU3ltYm9sVGFibGVFbnRyeSBub3cgaGFzIHRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgV2F0
Y2hwb2ludFNldC4gSXQgY2FuCisgICAgICAgICAgZG8gc28gd2l0aG91dCBpbmN1cnJpbmcgYW55
IHNwYWNlIG92ZXJoZWFkIGZvciB0aG9zZSBlbnRyaWVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICBo
YXZlIFdhdGNocG9pbnRTZXRzLgorICAgICAgICAgIAorICAgICAgICAtIFRoZSBieXRlY29kZSBn
ZW5lcmF0b3IgaW5mZXJzIGFsbCBnbG9iYWwgZnVuY3Rpb24gdmFyaWFibGVzIHRvIGJlCisgICAg
ICAgICAgd2F0Y2hhYmxlLCBhbmQgbWFrZXMgYWxsIHN0b3JlcyBwZXJmb3JtIHRoZSBXYXRjaHBv
aW50U2V0J3Mgd3JpdGUgY2hlY2ssCisgICAgICAgICAgYW5kIG1hcmtzIGFsbCBsb2FkcyBhcyBi
ZWluZyBwb3RlbnRpYWxseSB3YXRjaGFibGUgKGkuZS4geW91IGNhbiBjb21waWxlCisgICAgICAg
ICAgdGhlbSB0byBhIHdhdGNocG9pbnQgYW5kIGEgY29uc3RhbnQpLgorICAgICAgICAKKyAgICAg
ICAgUHV0IHRvZ2V0aGVyLCB0aGlzIGFsbG93cyBmb3IgZnVsbHkgc2xlYXp5IGlubGluaW5nIG9m
IGNhbGxzIHRvIGdsb2JhbGx5CisgICAgICAgIGRlY2xhcmVkIGZ1bmN0aW9ucy4gVGhlIGlubGlu
ZSBwcm9sb2d1ZSB3aWxsIG5vIGxvbmdlciBjb250YWluIHRoZSBsb2FkIG9mCisgICAgICAgIHRo
ZSBmdW5jdGlvbiwgb3IgYW55IGNoZWNrcyBvZiB0aGUgZnVuY3Rpb24geW91J3JlIGNhbGxpbmcu
IEkuZS4gaXQncworICAgICAgICBwcmV0dHkgbXVjaCBsaWtlIHRoZSBraW5kIG9mIGlubGluaW5n
IHlvdSB3b3VsZCBzZWUgaW4gSmF2YSBvciBDKysuCisgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUg
d2F0Y2hwb2ludGluZyBmdW5jdGlvbmFsaXR5IGlzIGJ1aWx0IHRvIGJlIGZhaXJseSBnZW5lcmFs
LAorICAgICAgICBhbmQgc2hvdWxkIGFsbG93IHNldHRpbmcgd2F0Y2hwb2ludHMgb24gYWxsIHNv
cnRzIG9mIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHNsZWF6eSBpbmxpbmluZyBtZWFucyB0aGF0IHdlIHdpbGwgbm93IHNv
bWV0aW1lcyBpbmxpbmUgaW4gY29kZSBwYXRocworICAgICAgICB0aGF0IGhhdmUgbmV2ZXIgZXhl
Y3V0ZWQuIFByZXZpb3VzbHksIHRvIGlubGluZSB3ZSB3b3VsZCBoYXZlIGVpdGhlciBoYWQKKyAg
ICAgICAgdG8gaGF2ZSBleGVjdXRlZCB0aGUgY2FsbCAodG8gcmVhZCB0aGUgY2FsbCdzIGlubGlu
ZSBjYWNoZSkgb3IgaGF2ZQorICAgICAgICBleGVjdXRlZCB0aGUgbWV0aG9kIGNoZWNrICh0byBy
ZWFkIHRoZSBtZXRob2QgY2hlY2sncyBpbmxpbmUgY2FjaGUpLiBOb3csCisgICAgICAgIHdlIG1p
Z2h0IGlubGluZSB3aGVuIHRoZSBjYWxsZWUgaXMgYSB3YXRjaGVkIGdsb2JhbCB2YXJpYWJsZS4g
VGhpcworICAgICAgICByZXZlYWxlZCBzb21lIGh1bW9yb3VzIGJ1Z3MuIEZpcnN0LCBjb25zdGFu
dCBmb2xkaW5nIGRpc2FncmVlZCB3aXRoIENGQQorICAgICAgICBvdmVyIHdoYXQga2luZHMgb2Yg
b3BlcmF0aW9ucyBjYW4gY2xvYmJlciAoZXhhbXBsZTogY29kZSBwYXRoIEEgaXMgZGVhZAorICAg
ICAgICBidXQgc3RvcmVzIGEgU3RyaW5nIGludG8gdmFyaWFibGUgWCwgYWxsIG90aGVyIGNvZGUg
cGF0aHMgc3RvcmUgMCBpbnRvCisgICAgICAgIFgsIGFuZCB0aGVuIHlvdSBkbyBDb21wYXJlRXEo
WCwgMCkgLSBDRkEgd2lsbCBzYXkgdGhhdCB0aGlzIGlzIGEgbm9uLQorICAgICAgICBjbG9iYmVy
aW5nIGNvbnN0YW50LCBidXQgY29uc3RhbnQgZm9sZGluZyB0aG91Z2h0IGl0IHdhcyBjbG9iYmVy
aW5nCisgICAgICAgIGJlY2F1c2UgaXQgc2F3IHRoZSBTdHJpbmcgcHJlZGljdGlvbikuIFNlY29u
ZCwgaW5saW5pbmcgd291bGQgY3Jhc2ggaWYKKyAgICAgICAgdGhlIGlubGluZSBjYWxsZWUgaGFk
IG5vdCBiZWVuIGNvbXBpbGVkLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggYnVncywKKyAgICAgICAg
c2luY2Ugb3RoZXJ3aXNlIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyB3b3VsZCByZXBvcnQgcmVn
cmVzc2lvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcik6CisgICAgICAgIChMYWJlbCk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OndhdGNocG9pbnRMYWJlbCk6CisgICAgICAg
ICogYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cmVwbGFj
ZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChN
YWNyb0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clNINC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cmVwbGFjZVdpdGhKdW1w
KToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoVGVzdDgpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1heEp1
bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAqIGFzc2VtYmxlci9Y
ODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZBc3NlbWJsZXIp
OgorICAgICAgICAoWDg2QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpj
bXBiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp0ZXN0Yl9pbSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpsYWJlbCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVwbGFj
ZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1l
bnRTaXplKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1h
dHRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kT1NSRXhpdCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6YXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeSk6CisgICAgICAgIChD
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZFdhdGNocG9pbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mV2F0Y2hwb2ludHMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OndhdGNocG9pbnQpOgorICAgICAgICAoREZHRGF0YSk6CisgICAgICAg
ICogYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpleGl0S2lu
ZFRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpleGl0S2luZElzQ291bnRhYmxlKToKKyAg
ICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFt
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6fldhdGNocG9pbnQpOgorICAgICAgICAo
SlNDOjpXYXRjaHBvaW50Ojpjb3JyZWN0TGFiZWxzKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2lu
dDo6ZmlyZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OldhdGNocG9pbnRTZXQpOgor
ICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojp+V2F0Y2hwb2ludFNldCk6CisgICAgICAgIChK
U0M6OldhdGNocG9pbnRTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Om5v
dGlmeVdyaXRlU2xvdyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRj
aHBvaW50cyk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2lu
dDo6V2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6OnNldERlc3RpbmF0aW9u
KToKKyAgICAgICAgKFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0
Ojppc1N0aWxsVmFsaWQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpoYXNCZWVuSW52
YWxpZGF0ZWQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZSk6Cisg
ICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmFkZHJlc3NPZklzV2F0Y2hlZCk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVz
b2x2ZVJlc3VsdDo6Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1Zhcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9y
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4
UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2lu
Z2xlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RTdGF0ZTo6Y2xvYmJlclN0cnVjdHVyZXMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0
YXRlLmg6CisgICAgICAgIChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdFN0YXRlOjpkaWRDbG9iYmVyKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAg
ICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxsSGVscGVycyk6CisgICAg
ICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgICog
ZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFs
VmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKToKKyAgICAgICAgKENTRVBoYXNlKToKKyAgICAgICAg
KEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbik6CisgICAgICAg
IChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZH
Q2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQ29ycmVj
dGFibGVKdW1wUG9pbnQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2lu
dDo6aXNTZXQpOgorICAgICAgICAoQ29ycmVjdGFibGVKdW1wUG9pbnQpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Omxp
bmtPU1JFeGl0cyk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRp
Zmllck51bWJlckZvckNoZWNrKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzUmVnaXN0ZXJQb2ludGVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6Cisg
ICAgICAgIChPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChT
cGVjdWxhdGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9i
YWxfdmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6
CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAg
ICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgIChM
TEludCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OnN5bWJv
bFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAoSlND
OjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bFRhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZUVudHJ5Ojpjb3B5U2xvdyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmZy
ZWVGYXRFbnRyeVNsb3cpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpjb3VsZEJl
V2F0Y2hlZCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmF0dGVtcHRUb1dhdGNo
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRkcmVzc09mSXNXYXRjaGVkKToK
KyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRkV2F0Y2hwb2ludCk6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlU2xvdyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6OmluZmxhdGVTbG93KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bFRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3ltYm9sVGFibGVFbnRyeSk6Cisg
ICAgICAgIChGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6RmFz
dCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzTnVsbCk6CisgICAg
ICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmdldEluZGV4KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNSZWFkT25seSk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5OjpGYXN0Ojppc0ZhdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50
cnk6OlN5bWJvbFRhYmxlRW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojp+
U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om9wZXJh
dG9yPSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzTnVsbCk6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmdldEluZGV4KToKKyAgICAgICAgKEpTQzo6U3ltYm9s
VGFibGVFbnRyeTo6Z2V0RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Omdl
dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojppc1JlYWRPbmx5
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6d2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlKToKKyAgICAgICAgKEZhdEVu
dHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnk6OkZhdEVudHJ5
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNGYXQpOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZUVudHJ5OjpmYXRFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxl
RW50cnk6OmluZmxhdGUpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpiaXRzKToK
KyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5KToKKyAgICAgICAg
KEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6cGFjayk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxl
RW50cnk6OmlzVmFsaWRJbmRleCk6CisKIDIwMTItMDYtMTIgIEhvam9uZyBIYW4gIDxob2pvbmcu
aGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFByb3BlcnR5IG5hbWVzIG9mIHRoZSBidWlsdC1p
biBvYmplY3QgY2Fubm90IGJlIHJldHJpZXZlZCAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBTRVQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiAgICAgYnl0
ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAorICAgIGJ5dGVjb2RlL1dhdGNocG9pbnQuY3BwCiAKICAgICBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTIz
MSw2ICsyMzIsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3Ry
aW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAKICAgICBydW50aW1lL1N0cnVjdHVyZS5jcHAKICAgICBy
dW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAorICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCiAg
ICAgcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAKICAgICBydW50aW1lL1VTdHJpbmcuY3BwCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lv
biAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
d29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTGFiZWwuaCBcCkBAIC02MDMsNiArNjA1LDcgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Rlcm1pbmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGltZW91dENoZWNrZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQko
d29ya2luZyBjb3B5KQpAQCAtNjIsMTAgKzYyLDExIEBAIFNPVVJDRVMgKz0gXAogICAgIGJ5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9PcGNv
ZGUuY3BwIFwKICAgICBieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBcCi0gICAg
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIFwKICAgICBieXRlY29kZS9QdXRCeUlkU3RhdHVz
LmNwcCBcCiAgICAgYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcCBcCisgICAgYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuY3BwIFwKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgXAor
ICAgIGJ5dGVjb2RlL1dhdGNocG9pbnQuY3BwIFwKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwIFwKICAgICBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBcCiAgICAg
aGVhcC9Db3BpZWRTcGFjZS5jcHAgXApAQCAtMjM2LDYgKzIzNyw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIHJ1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgXAogICAgIHJ1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uY3BwIFwKICAgICBydW50aW1lL1N0cnVjdHVyZS5jcHAgXAorICAgIHJ1bnRp
bWUvU3ltYm9sVGFibGUuY3BwIFwKICAgICBydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCiAg
ICAgcnVudGltZS9VU3RyaW5nLmNwcCBcCiAgICAgdG9vbHMvQ29kZVByb2ZpbGUuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTI1NCw2ICsxMjU0LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuY3Bw
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxy
dW50aW1lXFN5bWJvbFRhYmxlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMTY4MSw2ICsxNjg1
LDE0IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxWYWx1ZVByb2ZpbGUuaCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0
ZWNvZGVcV2F0Y2hwb2ludC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXFdhdGNocG9pbnQuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCiAJCQlOYW1lPSJkZWJ1Z2dlciIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw5IEBACiAJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3
RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJs
ZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5
RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCAqLzsg
fTsKIAkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5
RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlEMjUxNTg1
M0NFMDAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9p
bnQuY3BwICovOyB9OworCQkwRjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMjMx
NTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3lt
Ym9sVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY5MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLzsgfTsKIAkJ
MEY5MzMyOUQxNENBN0RDMzAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjkzMTRDQTdEQzEwMDg1
RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi87IH07CiAJCTBGOTMzMjlFMTRDQTdEQzUwMDg1
RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5
MzMyOUYxNENBN0RDQTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2
IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovOyB9OwpAQCAtODM2LDYgKzgzOSw5IEBACiAJCTBGOTE5
RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3ltYm9sVGFibGVPYmplY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEUxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGOTE5RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMjIxNTg1M0NERTAw
NEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTE5
RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY5MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxMaW5rU3RhdHVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTQxNENBN0RDMTAwODVG
M0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhbGxMaW5rU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjk1
MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdldEJ5SWRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjA0NSw2ICsyMDUxLDcgQEAKIAkJCQk3RTRFRTcwRTBFQkI3QTVCMDA1OTM0
QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovLAogCQkJCTdFNEVFNzA4MEVCQjc5NjMwMDU5MzRB
QSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOTA0MTQ3MEVCOTI1MDkwMEZFMjZGQSAv
KiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCAqLywKKwkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0
QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRG
RiAvKiBTeW1ib2xUYWJsZS5oICovLAogCQkJCTk3RjY5MDNBMTE2OURGN0YwMEE2QkI0NiAvKiBU
ZXJtaW5hdG9yLmggKi8sCiAJCQkJMTRBNDJFM0QwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRD
aGVja2VyLmNwcCAqLywKQEAgLTIyOTYsNiArMjMwMyw4IEBACiAJCQkJMEY5NjNCMzYxM0ZDNkZE
RTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGNDI2QTQ1MTQ2MENCQUIwMDEz
MUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8sCiAJCQkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhG
IC8qIFZpcnR1YWxSZWdpc3Rlci5oICovLAorCQkJCTBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAv
KiBXYXRjaHBvaW50LmNwcCAqLywKKwkJCQkwRjkxOUQyMzE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0
Y2hwb2ludC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0yNjcxLDYgKzI2ODAsNyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4Qzkw
MEMyNTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE5RDI2MTU4NTNDRTMw
MDRBNEU3RCAvKiBXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTMyNDUsNiArMzI1NSw4
IEBACiAJCQkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQxMDE1N0YzMzI5MDA0
QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjkxOUQyNTE1ODUzQ0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTIwMDk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIExpbmtC
dWZmZXI7CiBjbGFzcyBSZXBhdGNoQnVmZmVyOworY2xhc3MgV2F0Y2hwb2ludDsKIG5hbWVzcGFj
ZSBERkcgewogY2xhc3MgQ29ycmVjdGFibGVKdW1wUG9pbnQ7CiB9CkBAIC03MCw3ICs3MSw2IEBA
IHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSB1c2VkIGFzIG9wZXJhbmRz
IHRvIE1hY3JvQXNzZW1ibGVyIG9wZXJhdGlvbnMsCiAgICAgLy8gZGVzY3JpYmluZyBpbW1lZGlh
dGUgIGFuZCBtZW1vcnkgb3BlcmFuZHMgdG8gdGhlIGluc3RydWN0aW9ucyB0byBiZSBwbGFudGVk
LgogCi0KICAgICBlbnVtIFNjYWxlIHsKICAgICAgICAgVGltZXNPbmUsCiAgICAgICAgIFRpbWVz
VHdvLApAQCAtMjc5LDYgKzI3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIEp1
bXA7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOworICAgICAgICBmcmllbmQgY2xhc3MgV2F0Y2hwb2lu
dDsKIAogICAgIHB1YmxpYzoKICAgICAgICAgTGFiZWwoKQpAQCAtNTU5LDYgKzU2MCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBMYWJlbCh0aGlzKTsKICAgICB9CiAgICAgCisgICAgTGFi
ZWwgd2F0Y2hwb2ludExhYmVsKCkKKyAgICB7CisgICAgICAgIExhYmVsIHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0Lm1fbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbEZvcldhdGNocG9pbnQoKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgTGFiZWwgYWxpZ24oKQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWxpZ24oMTYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCShyZXZpc2lvbiAxMjAw
OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMTAsNiArMTAxMCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0
cihyZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oQVJNQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdl
dChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxh
Y2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRp
b25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNp
emUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIEFSTUFzc2VtYmxlcjo6Q29uZGl0aW9uIEFS
TUNvbmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDUsNiArNTQ1LDE3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VX
aXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25M
YWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQXJt
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAkocmV2aXNpb24gMTIwMDk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTg2OCw2ICsxODY4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihNSVBTQXNzZW1ibGVy
OjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0
YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0
YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1
bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogcHJpdmF0ZToKICAgICAvLyBJZiBtX2ZpeGVk
V2lkdGggaXMgdHJ1ZSwgd2Ugd2lsbCBnZW5lcmF0ZSBhIGZpeGVkIG51bWJlciBvZiBpbnN0cnVj
dGlvbnMuCiAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBjYW4gZW1pdCBhbnkgbnVtYmVyIG9mIGluc3Ry
dWN0aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJTSDQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyU0g0LmgJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTk3MSw2ICsxOTcxLDE3IEBAIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklE
IHMKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgp
PihTSDRBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAg
ICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVs
IGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBw
dHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAg
ICAgU0g0QXNzZW1ibGVyOjpDb25kaXRpb24gU0g0Q29uZGl0aW9uKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpsb2FkRG91YmxlOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpz
dG9yZURvdWJsZTsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydElu
dDMyVG9Eb3VibGU7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRl
c3Q4OwogCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKQEAgLTE2NSw2ICsxNjYsMTYgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMnIoaW5pdGlhbFZhbHVlLmFzSW50cHRyKCksIGRlc3Qp
OwogICAgICAgICByZXR1cm4gRGF0YUxhYmVsUHRyKHRoaXMpOwogICAgIH0KKyAgICAKKyAgICBK
dW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRk
cmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1hc2subV92YWx1ZSA+PSAtMTI4ICYmIG1hc2subV92YWx1ZSA8PSAyNTUpOwor
ICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
Y21wYl9pbSgwLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIudGVzdGJfaW0obWFzay5tX3ZhbHVlLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAg
cmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0K
IAogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBp
bml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaAkocmV2aXNpb24gMTIwMDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDA4
LDYgKzE0MDgsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICB9
CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5z
dHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAg
ICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1
dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
OworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNv
bmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAkocmV2aXNpb24gMTIwMDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MTMsNiArNTEzLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoYWRkciwgc2NyYXRj
aFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFu
Y2hUZXN0OChjb25kLCBCYXNlSW5kZXgoc2NyYXRjaFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIFRp
bWVzT25lKSwgbWFzayk7CiAgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFz
ayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIp
OworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNv
bmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKSwgbWFzayk7CisgICAgfQogCiAgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIC8vIFNl
ZSBjb21tZW50IG9uIE1hY3JvQXNzZW1ibGVyQVJNdjc6OnN1cHBvcnRzRmxvYXRpbmdQb2ludFRy
dW5jYXRlKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAkocmV2aXNpb24gMTIwMDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQ3LDYgKzI0Nyw4IEBAIHBy
aXZhdGU6CiBwdWJsaWM6CiAKICAgICBYODZBc3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhP
Zkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdh
dGNocG9pbnQoSU5UX01JTikKICAgICB7CiAgICAgfQogCkBAIC03OTgsNiArODAwLDE0IEBAIHB1
YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9V
UDFfT1BfQ01QLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICB9CisgICAgCisjaWYgQ1BVKFg4NikKKyAgICB2b2lk
IGNtcGJfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYWRkcik7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisjZW5kaWYKIAogICAg
IHZvaWQgY21wbF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CkBAIC05NDgsNiArOTU4LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KIAorI2lmIENQ
VShYODYpCisgICAgdm9pZCB0ZXN0Yl9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYkliLCBHUk9VUDNf
T1BfVEVTVCwgYWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAg
ICB9CisjZW5kaWYKKwogICAgIHZvaWQgdGVzdGxfaTMybShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CiAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1Qs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKQEAgLTE3MDIsMTAgKzE3MjAsMjUgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZm9ybWF0dGVyLmNvZGVTaXplKCk7CiAgICAg
fQorICAgIAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgewor
ICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9p
bmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgp
OworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOwor
ICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQp
IDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihp
bnQgYWxpZ25tZW50KQpAQCAtMTc4Miw2ICsxODE1LDIwIEBAIHB1YmxpYzoKICAgICAgICAgc2V0
UG9pbnRlcih3aGVyZSwgdmFsdWUpOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgeworICAg
ICAgICBpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oaW5zdHJ1Y3Rpb25T
dGFydCk7CisgICAgICAgIGludDhfdCogZHN0UHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3Qq
Pih0byk7CisgICAgICAgIGludHB0cl90IGRpc3RhbmNlID0gKGludHB0cl90KShkc3RQdHIgLSAo
cHRyICsgNSkpOworICAgICAgICBwdHJbMF0gPSBPUF9KTVBfcmVsMzI7CisgICAgICAgICpyZWlu
dGVycHJldF9jYXN0PGludDMyX3QqPihwdHIgKyAxKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRp
c3RhbmNlKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiA1OworICAgIH0KKyAgICAKICAgICBz
dGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hlcmUpCiAgICAgewogICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHdoZXJlKVstMV07CkBAIC0yMzM5LDYgKzIzODYs
OCBAQCBwcml2YXRlOgogCiAgICAgICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsKICAgICB9
IG1fZm9ybWF0dGVyOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKKyAgICBpbnQg
bV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI4LDEyICs5MjgsMjggQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXJfd2F0
Y2hhYmxlOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51
LnJlZ2lzdGVyUG9pbnRlcjsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9nbG9iYWxf
dmFyX3dhdGNoYWJsZVx0ICVzLCBnJWQoJXApXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3Rl
clBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIpOworICAgICAgICAgICAgaXQrKzsKKyAgICAgICAg
ICAgIGl0Kys7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3B1dF9nbG9iYWxfdmFyOiB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJl
Z2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1
dF9nbG9iYWxfdmFyXHQgZyVkKCVwKSwgJXNcbiIsIGxvY2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+
ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorICAgICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOiB7CisgICAgICAgICAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3Rl
clBvaW50ZXI7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9nbG9iYWxfdmFyX2NoZWNrXHQgZyVkKCVwKSwgJXNc
biIsIGxvY2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQ
b2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7
CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgaXQrKzsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9iYXNlOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytp
dCktPnUub3BlcmFuZDsKQEAgLTEzMDYsNyArMTMyMiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
KEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGxfcHV0
X3Jlc3VsdDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSBvcF9jYWxsX3B1dF9yZXN1bHRcdFx0ICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gY2FsbF9wdXRfcmVzdWx0XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkocmV2aXNpb24gMTIwMDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVk
ZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIlVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIKICNpbmNs
dWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTI3MywxMCArMjc0LDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgdm9pZCBhcHBlbmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkK
KyAgICAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBERkc6Ok9TUkV4aXQmIG9zckV4
aXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOwor
ICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT5vc3JFeGl0LnNpemUoKTsK
ICAgICAgICAgICAgIG1fZGZnRGF0YS0+b3NyRXhpdC5hcHBlbmQob3NyRXhpdCk7CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBERkc6Ok9T
UkV4aXQmIGxhc3RPU1JFeGl0KCkKQEAgLTI4NCwxMCArMjg3LDIwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdC5sYXN0KCk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgYXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShjb25z
dCBERkc6OlNwZWN1bGF0aW9uUmVjb3ZlcnkmIHJlY292ZXJ5KQorICAgICAgICB1bnNpZ25lZCBh
cHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KGNvbnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYg
cmVjb3ZlcnkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2Fy
eSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT5zcGVjdWxhdGlv
blJlY292ZXJ5LnNpemUoKTsKICAgICAgICAgICAgIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNv
dmVyeS5hcHBlbmQocmVjb3ZlcnkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgYXBwZW5kV2F0Y2hwb2ludChjb25zdCBX
YXRjaHBvaW50JiB3YXRjaHBvaW50KQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVERkdE
YXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fZGZnRGF0
YS0+d2F0Y2hwb2ludHMuc2l6ZSgpOworICAgICAgICAgICAgbV9kZmdEYXRhLT53YXRjaHBvaW50
cy5hcHBlbmQod2F0Y2hwb2ludCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZk9TUkV4aXRzKCkKQEAgLTMw
NCw2ICszMTcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdE
YXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LnNpemUoKTsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZXYXRjaHBvaW50cygpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbV9kZmdEYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuc2l6ZSgpOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBERkc6Ok9TUkV4aXQmIG9zckV4aXQodW5zaWduZWQgaW5kZXgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPm9zckV4aXRbaW5kZXhdOwpAQCAt
MzE0LDYgKzMzNCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2Rm
Z0RhdGEtPnNwZWN1bGF0aW9uUmVjb3ZlcnlbaW5kZXhdOwogICAgICAgICB9CiAgICAgICAgIAor
ICAgICAgICBXYXRjaHBvaW50JiB3YXRjaHBvaW50KHVuc2lnbmVkIGluZGV4KQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT53YXRjaHBvaW50c1tpbmRleF07CisgICAg
ICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgYXBwZW5kV2Vha1JlZmVyZW5jZShKU0NlbGwq
IHRhcmdldCkKICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5
KCk7CkBAIC0xMjM4LDYgKzEyNjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFZl
Y3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7CiAgICAgICAgICAgICBTZWdtZW50ZWRW
ZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgICAgICAgICAgVmVjdG9yPERGRzo6
U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKKyAgICAgICAgICAgIFNl
Z21lbnRlZFZlY3RvcjxXYXRjaHBvaW50LCAxLCAwPiB3YXRjaHBvaW50czsKICAgICAgICAgICAg
IFZlY3RvcjxXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbj4gdHJhbnNpdGlvbnM7CiAgICAgICAgICAg
ICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4gPiB3ZWFrUmVmZXJlbmNlczsKICAgICAgICAg
ICAgIGJvb2wgbWF5QmVFeGVjdXRpbmc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMTIwMDk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDYgKzQxLDcgQEAgZW51bSBFeGl0S2luZCB7CiAgICAgSW5hZGVxdWF0ZUNvdmVyYWdl
LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmRlZCB1cCBpbiBjb2RlIHRoYXQgZGlkbid0IGhh
dmUgcHJvZmlsaW5nIGNvdmVyYWdlLgogICAgIEFyZ3VtZW50c0VzY2FwZWQsIC8vIFdlIGV4aXRl
ZCBiZWNhdXNlIGFyZ3VtZW50cyBlc2NhcGVkIGJ1dCB3ZSBkaWRuJ3QgZXhwZWN0IHRoZW0gdG8u
CiAgICAgVW5jb3VudGFibGUsIC8vIFdlIGV4aXRlZCBmb3Igbm9uZSBvZiB0aGUgYWJvdmUgcmVh
c29ucywgYW5kIHdlIHNob3VsZCBub3QgY291bnQgaXQuIE1vc3QgdXNlcyBvZiB0aGlzIHNob3Vs
ZCBiZSB2aWV3ZWQgYXMgYSBGSVhNRS4KKyAgICBVbmNvdW50YWJsZVdhdGNocG9pbnQgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2Ugb2YgYSB3YXRjaHBvaW50LCB3aGljaCBpc24ndCBjb3VudGVkIGJlY2F1
c2Ugd2F0Y2hwb2ludHMgZG8gdHJhY2tpbmcgdGhlbXNlbHZlcy4KIH07CiAKIGlubGluZSBjb25z
dCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpbmQpCkBAIC01OCw2ICs1OSwxMiBA
QCBpbmxpbmUgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0cmluZyhFeGl0CiAgICAgICAgIHJldHVy
biAiTmVnYXRpdmVaZXJvIjsKICAgICBjYXNlIEluYWRlcXVhdGVDb3ZlcmFnZToKICAgICAgICAg
cmV0dXJuICJJbmFkZXF1YXRlQ292ZXJhZ2UiOworICAgIGNhc2UgQXJndW1lbnRzRXNjYXBlZDoK
KyAgICAgICAgcmV0dXJuICJBcmd1bWVudHNFc2NhcGVkIjsKKyAgICBjYXNlIFVuY291bnRhYmxl
OgorICAgICAgICByZXR1cm4gIlVuY291bnRhYmxlIjsKKyAgICBjYXNlIFVuY291bnRhYmxlV2F0
Y2hwb2ludDoKKyAgICAgICAgcmV0dXJuICJVbmNvdW50YWJsZVdhdGNocG9pbnQiOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiAiVW5rbm93biI7CiAgICAgfQpAQCAtNzAsNiArNzcsNyBA
QCBpbmxpbmUgYm9vbCBleGl0S2luZElzQ291bnRhYmxlKEV4aXRLaW5kCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIGNhc2UgQmFkVHlwZToKICAgICBjYXNlIFVuY291bnRhYmxl
OgorICAgIGNhc2UgVW5jb3VudGFibGVXYXRjaHBvaW50OgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTIwMDk5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5Myw2ICsxOTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rp
b24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KICAgICAg
ICAgCiAgICAgICAgIEluc3RydWN0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQ
b2ludGVyKSB7IHUucmVnaXN0ZXJQb2ludGVyID0gcmVnaXN0ZXJQb2ludGVyOyB9CisgICAgICAg
IAorICAgICAgICBJbnN0cnVjdGlvbihib29sKiBwcmVkaWNhdGVQb2ludGVyKSB7IHUucHJlZGlj
YXRlUG9pbnRlciA9IHByZWRpY2F0ZVBvaW50ZXI7IH0KIAogICAgICAgICB1bmlvbiB7CiAgICAg
ICAgICAgICBPcGNvZGUgb3Bjb2RlOwpAQCAtMjA1LDYgKzIwNyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAg
ICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKICAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7Cisg
ICAgICAgICAgICBib29sKiBwcmVkaWNhdGVQb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAg
IAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29k
ZS5oCShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X3Njb3BlZF92YXIsIDUpIC8qIGhhcyB2YWx1ZSBwcm9m
aWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9wdXRfc2NvcGVkX3ZhciwgNCkgXAogICAgICAg
ICBtYWNybyhvcF9nZXRfZ2xvYmFsX3ZhciwgNCkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBc
CisgICAgICAgIG1hY3JvKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSwgNSkgLyogaGFzIHZh
bHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFyLCAzKSBc
CisgICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrLCA1KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3Jlc29sdmVfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAg
ICAgIG1hY3JvKG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMsIDMpIFwKICAgICAgICAgbWFjcm8o
b3BfcmVzb2x2ZV93aXRoX2Jhc2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldhdGNocG9pbnQuaCIKKworI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK1dhdGNocG9pbnQ6On5XYXRjaHBvaW50KCkKK3sKKyAgICBpZiAoaXNPbkxp
c3QoKSkKKyAgICAgICAgcmVtb3ZlKCk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6Y29ycmVjdExh
YmVscyhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBsYWJlbDsKKyAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9zb3VyY2U7CisgICAgbV9z
b3VyY2UgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFi
ZWwpLmRhdGFMb2NhdGlvbigpKTsKKyAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9kZXN0
aW5hdGlvbjsKKyAgICBtX2Rlc3RpbmF0aW9uID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGxhYmVsKS5kYXRhTG9jYXRpb24oKSk7Cit9CisKK3ZvaWQgV2F0
Y2hwb2ludDo6ZmlyZSgpCit7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgK
KyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihtX3NvdXJjZSkp
LAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KG1fZGVzdGlu
YXRpb24pKSk7CisgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgIHJlbW92ZSgpOworfQorCitX
YXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KCkKKyAgICA6IG1faXNXYXRjaGVkKGZhbHNlKQor
ICAgICwgbV9pc0ludmFsaWRhdGVkKGZhbHNlKQoreworfQorCitXYXRjaHBvaW50U2V0Ojp+V2F0
Y2hwb2ludFNldCgpCit7CisgICAgLy8gRmlyZSBhbGwgd2F0Y2hwb2ludHMuIFRoaXMgaXMgbmVj
ZXNzYXJ5IGJlY2F1c2UgaXQgaXMgcG9zc2libGUsIHNheSB3aXRoCisgICAgLy8gc3RydWN0dXJl
IHdhdGNocG9pbnRzLCBmb3IgdGhlIHdhdGNocG9pbnQgc2V0IG93bmVyIHRvIGRpZSB3aGlsZSB0
aGUKKyAgICAvLyB3YXRjaHBvaW50IG93bmVycyBhcmUgc3RpbGwgbGl2ZS4KKyAgICBmaXJlQWxs
V2F0Y2hwb2ludHMoKTsKK30KKwordm9pZCBXYXRjaHBvaW50U2V0OjphZGQoV2F0Y2hwb2ludCog
d2F0Y2hwb2ludCkKK3sKKyAgICBpZiAoIXdhdGNocG9pbnQpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX3NldC5wdXNoKHdhdGNocG9pbnQpOworICAgIG1faXNXYXRjaGVkID0gdHJ1ZTsKK30KKwor
dm9pZCBXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZVNsb3coKQoreworICAgIEFTU0VSVChtX2lz
V2F0Y2hlZCk7CisgICAgCisgICAgZmlyZUFsbFdhdGNocG9pbnRzKCk7CisgICAgbV9pc1dhdGNo
ZWQgPSBmYWxzZTsKKyAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOworfQorCit2b2lkIFdhdGNo
cG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cygpCit7CisgICAgd2hpbGUgKCFtX3NldC5pc0Vt
cHR5KCkpCisgICAgICAgIG1fc2V0LmJlZ2luKCktPmZpcmUoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9p
bnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRj
aHBvaW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2F0Y2hwb2lu
dF9oCisjZGVmaW5lIFdhdGNocG9pbnRfaAorCisjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFdhdGNocG9pbnQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2lu
dD4geworcHVibGljOgorICAgIFdhdGNocG9pbnQoTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHNvdXJj
ZSkKKyAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UubV9sYWJlbC5tX29mZnNldCkKKyAgICAgICAg
LCBtX2Rlc3RpbmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludHB0cl90Pjo6bWF4KCkpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldERlc3RpbmF0aW9uKE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIG1fZGVzdGluYXRpb24gPSBkZXN0
aW5hdGlvbi5tX2xhYmVsLm1fb2Zmc2V0OworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvcnJlY3RM
YWJlbHMoTGlua0J1ZmZlciYgbGlua0J1ZmZlcik7CisgICAgCisgICAgfldhdGNocG9pbnQoKTsK
KyAgICAKKyAgICB2b2lkIGZpcmUoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgdWludHB0cl90IG1f
c291cmNlOworICAgIHVpbnRwdHJfdCBtX2Rlc3RpbmF0aW9uOworfTsKKworY2xhc3MgV2F0Y2hw
b2ludFNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdhdGNocG9pbnRTZXQ+IHsKK3B1YmxpYzoKKyAg
ICBXYXRjaHBvaW50U2V0KCk7CisgICAgfldhdGNocG9pbnRTZXQoKTsKKyAgICAKKyAgICBib29s
IGlzU3RpbGxWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICFtX2lzSW52YWxpZGF0ZWQ7IH0KKyAgICBi
b29sIGhhc0JlZW5JbnZhbGlkYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnZhbGlkYXRlZDsg
fQorICAgIAorICAgIC8vIEFzIGEgY29udmVuaWVuY2UsIHRoaXMgd2lsbCBpZ25vcmUgMC4gVGhh
dCdzIGJlY2F1c2UgY29kZSBwYXRocyBpbiB0aGUgREZHCisgICAgLy8gdGhhdCBjcmVhdGUgc3Bl
Y3VsYXRpb24gd2F0Y2hwb2ludHMgbWF5IGNob29zZSB0byBiYWlsIG91dCBpZiBzcGVjdWxhdGlv
bgorICAgIC8vIGhhZCBhbHJlYWR5IGJlZW4gdGVybWluYXRlZC4KKyAgICB2b2lkIGFkZChXYXRj
aHBvaW50Kik7CisgICAgCisgICAgdm9pZCBub3RpZnlXcml0ZSgpCisgICAgeworICAgICAgICBp
ZiAoIW1faXNXYXRjaGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBub3RpZnlXcml0
ZVNsb3coKTsKKyAgICB9CisgICAgCisgICAgYm9vbCogYWRkcmVzc09mSXNXYXRjaGVkKCkgeyBy
ZXR1cm4gJm1faXNXYXRjaGVkOyB9CisgICAgCisgICAgdm9pZCBub3RpZnlXcml0ZVNsb3coKTsg
Ly8gQ2FsbCBvbmx5IGlmIHlvdSd2ZSBjaGVja2VkIGlzV2F0Y2hlZC4KKyAgICAKK3ByaXZhdGU6
CisgICAgdm9pZCBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKKyAgICAKKyAgICBTZW50aW5lbExpbmtl
ZExpc3Q8V2F0Y2hwb2ludCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4gPiBtX3Nl
dDsKKyAgICBib29sIG1faXNXYXRjaGVkOworICAgIGJvb2wgbV9pc0ludmFsaWRhdGVkOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBXYXRjaHBvaW50X2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDgsNiArMTQ4LDcgQEAgdm9pZCBSZXNvbHZlUmVzdWx0OjpjaGVja1ZhbGlkaXR5KCkKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgSW5kZXhlZEdsb2JhbDoKICAgICBjYXNlIFJlYWRPbmx5SW5k
ZXhlZEdsb2JhbDoKKyAgICBjYXNlIFdhdGNoZWRJbmRleGVkR2xvYmFsOgogICAgIGNhc2UgRHlu
YW1pY0luZGV4ZWRHbG9iYWw6CiAgICAgY2FzZSBEeW5hbWljUmVhZE9ubHlJbmRleGVkR2xvYmFs
OgogICAgICAgICBBU1NFUlQobV9pbmRleCAhPSBtaXNzaW5nU3ltYm9sTWFya2VyKCkpOwpAQCAt
MjE2LDEzICsyMTcsMTkgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKGNvbnN0IElk
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1pbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2Jh
bFZhcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgYm9vbCBpc0NvbnN0YW50KQoraW50IEJ5dGVj
b2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIoCisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpCiB7
CisgICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTW9kZSk7CiAgICAgaW50IGluZGV4ID0gc3ltYm9s
VGFibGUoKS5zaXplKCk7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgaXND
b25zdGFudCA/IFJlYWRPbmx5IDogMCk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShp
bmRleCwgKGNvbnN0YW50TW9kZSA9PSBJc0NvbnN0YW50KSA/IFJlYWRPbmx5IDogMCk7CisgICAg
aWYgKGZ1bmN0aW9uTW9kZSA9PSBJc0Z1bmN0aW9uVG9TcGVjaWFsaXplKQorICAgICAgICBuZXdF
bnRyeS5hdHRlbXB0VG9XYXRjaCgpOwogICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0
ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CiAgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZC5nZXRJbmRleCgpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQu
bm90aWZ5V3JpdGUoKTsKICAgICByZXR1cm4gaW5kZXg7CiB9CiAKQEAgLTI4OSwxNyArMjk2LDIz
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm8KIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsraSkgewogICAgICAgICBG
dW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07Ci0gICAgICAgIGds
b2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERhdGEsIGZ1bmN0aW9uLT5pZGVudCgp
KTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3cml0ZSBleGlzdGluZyBwcm9wZXJ0
aWVzLgotCisgICAgICAgIGJvb2wgcHJvcGVydHlEaWRFeGlzdCA9IAorICAgICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24tPmlkZW50KCkp
OyAvLyBOZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4aXN0aW5nIHByb3BlcnRp
ZXMuCisgICAgICAgIAogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KGV4ZWMsIG1ha2VGdW5jdGlvbihleGVjLCBmdW5jdGlvbiksIHNjb3BlQ2hhaW4pOwotICAgICAg
ICBpbnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoZnVuY3Rpb24tPmlkZW50KCksIGZhbHNlKTsKKyAg
ICAgICAgaW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKAorICAgICAgICAgICAgZnVuY3Rpb24tPmlk
ZW50KCksIElzVmFyaWFibGUsCisgICAgICAgICAgICAhcHJvcGVydHlEaWRFeGlzdCA/IElzRnVu
Y3Rpb25Ub1NwZWNpYWxpemUgOiBOb3RGdW5jdGlvbk9yTm90U3BlY2lhbGl6YWJsZSk7CiAgICAg
ICAgIGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChpbmRleCkuc2V0KCptX2dsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmFyU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzUHJv
cGVydHkoZXhlYywgKnZhclN0YWNrW2ldLmZpcnN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBhZGRHbG9iYWxWYXIoKnZhclN0YWNrW2ldLmZpcnN0LCB2YXJTdGFja1tpXS5zZWNv
bmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCk7CisgICAgICAgIGFkZEdsb2JhbFZh
cigKKyAgICAgICAgICAgICp2YXJTdGFja1tpXS5maXJzdCwKKyAgICAgICAgICAgICh2YXJTdGFj
a1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCkgPyBJc0NvbnN0YW50
IDogSXNWYXJpYWJsZSwKKyAgICAgICAgICAgIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxl
KTsKICAgICB9CiB9CiAKQEAgLTEyMDIsNyArMTIxNSw5IEBAIFJlc29sdmVSZXN1bHQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OnJlc29sdmUKICAgICAgICAgICAgIGlmICgrK2l0ZXIgPT0gZW5kKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWcpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjpkeW5hbWljSW5kZXhlZEds
b2JhbFJlc29sdmUoZW50cnkuZ2V0SW5kZXgoKSwgZGVwdGgsIGN1cnJlbnRTY29wZSwgZmxhZ3Mp
OwotICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjppbmRleGVkR2xvYmFsUmVz
b2x2ZShlbnRyeS5nZXRJbmRleCgpLCBjdXJyZW50U2NvcGUsIGZsYWdzKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6aW5kZXhlZEdsb2JhbFJlc29sdmUoCisgICAgICAg
ICAgICAgICAgICAgIGVudHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29wZSwKKyAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MgfCAoZW50cnkuY291bGRCZVdhdGNoZWQoKSA/IFJlc29sdmVSZXN1bHQ6
OldhdGNoZWRGbGFnIDogMCkpOwogICAgICAgICAgICAgfQogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgICAgIGlmIChKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBqc0R5bmFtaWNDYXN0
PEpTQWN0aXZhdGlvbio+KGN1cnJlbnRWYXJpYWJsZU9iamVjdCkpCkBAIC0xMjk2LDcgKzEzMTEs
NyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpzaG91bGRBdm9pZFJlc29sCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBS
ZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkK
IHsKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKQotICAgICAgICByZXR1cm4gZW1p
dEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQpOworICAgICAgICByZXR1cm4gZW1pdEdl
dFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsKICAgICAKICAgICBpZiAo
cmVzb2x2ZVJlc3VsdC5pc0dsb2JhbCgpICYmICFzaG91bGRBdm9pZFJlc29sdmVHbG9iYWwoKSkg
ewogI2lmIEVOQUJMRShKSVQpCkBAIC0xMzc5LDcgKzEzOTQsNyBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAKICAgICAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNT
dGF0aWMoKSkgewogICAgICAgICAgICAgLy8gRGlyZWN0bHkgaW5kZXggdGhlIHByb3BlcnR5IGxv
b2t1cCBhY3Jvc3MgbXVsdGlwbGUgc2NvcGVzLgotICAgICAgICAgICAgZW1pdEdldFN0YXRpY1Zh
cihwcm9wRHN0LCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgICAgIGVtaXRHZXRTdGF0aWNWYXIo
cHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIGJh
c2VEc3Q7CiAgICAgICAgIH0KIApAQCAtMTQxOCw3ICsxNDMzLDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogewogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3Rh
dGljKCkpIHsKICAgICAgICAgZW1pdExvYWQoYmFzZURzdCwganNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIGVt
aXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgICAg
ICByZXR1cm4gYmFzZURzdDsKICAgICB9CiAKQEAgLTE0MzYsNyArMTQ1MSw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICByZXR1cm4gZW1pdFJlc29sdmUo
cHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogfQogCi1SZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJl
c29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQm
IHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgVmFs
dWVQcm9maWxlKiBwcm9maWxlID0gMDsKIApAQCAtMTQ3MiwxMyArMTQ4NywyNCBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0CiAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChwcm9maWxlKTsKICAgICAgICAgcmV0dXJuIGRzdDsKIAorICAgIGNhc2UgUmVzb2x2
ZVJlc3VsdDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6CisgICAgICAgIC8vIFNraXAgdGhlIHBlZXBo
b2xlIGZvciBub3cuIEl0J3Mgbm90IGNsZWFyIHRoYXQgaXQncyBwcm9maXRhYmxlIGdpdmVuCisg
ICAgICAgIC8vIHRoZSBERkcncyBjYXBhYmlsaXRpZXMsIGFuZCB0aGUgZmFjdCB0aGF0IGlmIGl0
J3Mgd2F0Y2hhYmxlIHRoZW4gd2UKKyAgICAgICAgLy8gZG9uJ3QgZXhwZWN0IHRvIHNlZSBhbnkg
cHV0X2dsb2JhbF92YXIncyBhbnl3YXkuCisgICAgICAgIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRP
cGNvZGUob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChy
ZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsgLy8gRm9yIHRoZSBiZW5lZml0IG9mIHRo
ZSBERkcuCisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKyAgICAgICAg
cmV0dXJuIGRzdDsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1
bHQsIFJlZ2lzdGVySUQqIHZhbHVlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllciwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgc3dpdGNo
IChyZXNvbHZlUmVzdWx0LnR5cGUoKSkgewogICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVnaXN0
ZXI6CkBAIC0xNDk5LDYgKzE1MjUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRTdAogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJlc3VsdC5y
ZWdpc3RlclBvaW50ZXIoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+
aW5kZXgoKSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgCisgICAgY2FzZSBSZXNv
bHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAgZW1pdE9wY29kZShvcF9w
dXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNv
bHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KHJlc29sdmVSZXN1bHQuZ2xvYmFsT2JqZWN0KCkpLT5zeW1ib2xU
YWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSkuYWRkcmVzc09mSXNXYXRjaGVkKCkpOworICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOworICAg
ICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMTExLDcgKzExMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8g
VGhlIHJlc29sdmVkIGJpbmRpbmcgaXMgaW1tdXRhYmxlLgogICAgICAgICAgICAgUmVhZE9ubHlG
bGFnID0gMHgyMCwKICAgICAgICAgICAgIC8vIFRoZSBiYXNlIG9iamVjdCBpcyB0aGUgZ2xvYmFs
IG9iamVjdC4KLSAgICAgICAgICAgIEdsb2JhbEZsYWcgPSAweDQwCisgICAgICAgICAgICBHbG9i
YWxGbGFnID0gMHg0MCwKKyAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBiZWluZyB3YXRj
aGVkLCBzbyB3cml0ZXMgc2hvdWxkIGJlIHNwZWNpYWwuCisgICAgICAgICAgICBXYXRjaGVkRmxh
ZyA9IDB4ODAKICAgICAgICAgfTsKICAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAgICAgIC8v
IFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBpbiBhIHJlZ2lzdGVyLgpAQCAtMTMx
LDYgKzEzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8gYmluZGluZyBjcmVh
dGVkIHdpdGggInZhciIgYXQgdGhlIHRvcCBsZXZlbC4gQXQgcnVudGltZSB3ZSdsbAogICAgICAg
ICAgICAgLy8ganVzdCBpbmRleCBpbnRvIHRoZSBnbG9iYWwgb2JqZWN0LgogICAgICAgICAgICAg
SW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFsRmxhZyB8IFN0YXRpY0ZsYWcsCisg
ICAgICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWwsIGJ1dCB0aGUgcHJvcGVydHkgaXMgYmVp
bmcgd2F0Y2hlZC4KKyAgICAgICAgICAgIFdhdGNoZWRJbmRleGVkR2xvYmFsID0gSW5kZXhlZEZs
YWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZyB8IFdhdGNoZWRGbGFnLAogICAgICAgICAgICAg
Ly8gTGlrZSBJbmRleGVkR2xvYmFsLCBidXQgdGhlIHByb3BlcnR5IGlzIGFsc28gcmVhZC1vbmx5
LCBsaWtlIE5hTiwKICAgICAgICAgICAgIC8vIEluZmluaXR5LCBvciB1bmRlZmluZWQuCiAgICAg
ICAgICAgICBSZWFkT25seUluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxhZyB8IFJlYWRPbmx5Rmxh
ZyB8IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnLApAQCAtNDQxLDggKzQ0NSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90eXBlb2YsIGRzdCwgc3Jj
KTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSkgeyByZXR1cm4gZW1pdEJpbmFyeU9wKG9w
X2luLCBkc3QsIHByb3BlcnR5LCBiYXNlLCBPcGVyYW5kVHlwZXMoKSk7IH0KIAotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2
ZVJlc3VsdCYpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJl
c29sdmVSZXN1bHQmLCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRHZXRTdGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29u
c3QgSWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3RhdGljVmFyKGNv
bnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCogdmFsdWUp
OwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKFJlZ2lzdGVySUQqIGRzdCwgY29u
c3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2
ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKQEAgLTU3NCw3ICs1NzgsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFJldHVybnMgdGhlIGlu
ZGV4IG9mIHRoZSBhZGRlZCB2YXIuCi0gICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRl
bnRpZmllciYsIGJvb2wgaXNDb25zdGFudCk7CisgICAgICAgIGVudW0gQ29uc3RhbnRNb2RlIHsg
SXNDb25zdGFudCwgSXNWYXJpYWJsZSB9OworICAgICAgICBlbnVtIEZ1bmN0aW9uTW9kZSB7IElz
RnVuY3Rpb25Ub1NwZWNpYWxpemUsIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlIH07Cisg
ICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYsIENvbnN0YW50TW9kZSBj
b25zdGFudE1vZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpOwogCiAgICAgICAgIHZvaWQg
YWRkUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXImLCBpbnQgcGFyYW1ldGVySW5kZXgpOwogICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMw
LDcgKzQzMCw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWkKICAg
ICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZnVuYy5nZXQoKSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVu
dCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1bmMuZ2V0KCkpLCBmdW5j
LmdldCgpLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQo
KSk7CiAgICAgfQpAQCAtNjE4LDcgKzYxOCw3IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhSZXNvbHZl
Tm9kZTo6ZW1pdEJ5dGUKICAgICB9CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygp
ICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFs
dWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHJlc29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBvbGRWYWx1ZTsK
ICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAg
ICAgICBvbGRWYWx1ZSA9IDA7CkBAIC02MjYsNyArNjI2LDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZp
eFJlc29sdmVOb2RlOjplbWl0Qnl0ZQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgb2xk
VmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgICAgICB9Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHZhbHVlLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVu
dCwgdmFsdWUuZ2V0KCkpOwogICAgICAgICByZXR1cm4gb2xkVmFsdWU7CiAgICAgfQogICAgIApA
QCAtODAzLDkgKzgwMyw5IEBAIFJlZ2lzdGVySUQqIFByZWZpeFJlc29sdmVOb2RlOjplbWl0Qnl0
ZWMKICAgICB9CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZl
UmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERz
dCA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wRHN0
ID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICAgICAgZW1pdFByZUluY09yRGVjKGdl
bmVyYXRvciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHByb3BEc3QuZ2V0KCkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCBwcm9wRHN0
LmdldCgpKTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVl
ZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiAgICAgfQogCkBAIC0xMjI2LDkgKzEyMjYsOSBAQCBS
ZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAgfQogCiAgICAgaWYg
KHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3VsdC5pc1JlYWRPbmx5KCkp
IHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdEdldFN0
YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJlc29sdmVSZXN1bHQpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGlj
VmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVu
dCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVu
dChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSks
IHNyYzEuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBl
Ojp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgcmVzdWx0KTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgcmVz
dWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEyNTYsNyArMTI1Niw3
IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICAgICAgZHN0ID0gMDsK
ICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3Jp
Z2h0KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwg
dmFsdWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0
LCBtX2lkZW50LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKQEAgLTEz
NjEsNyArMTM2MSw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2wK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBtX2luaXQgPyBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9pbml0KSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKIAogICAg
IGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpCi0gICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2
YWx1ZS5nZXQoKSk7CiAgICAgCiAgICAgaWYgKGdlbmVyYXRvci5jb2RlVHlwZSgpICE9IEV2YWxD
b2RlKQogICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEyMDA5OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxOSw3ICsyMTksOSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5z
aWduZWQgaW5kCiB7CiAgICAgQVNTRVJUKG1fYmxvY2spOwogICAgIEFTU0VSVChtX2lzVmFsaWQp
OwotICAgICAgICAKKyAgICAKKyAgICBtX2RpZENsb2JiZXIgPSBmYWxzZTsKKyAgICAKICAgICBO
b2RlSW5kZXggbm9kZUluZGV4ID0gbV9ibG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKICAgICBOb2Rl
JiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwogICAgICAgICAKQEAgLTIzNyw4ICsyMzksMTIg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAg
CiAgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgIGlmICh2
YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKSA9PSBTcGVjTm9uZSkgeworICAgICAgICAg
ICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBib29sIGNhbkV4aXQgPSBm
YWxzZTsKLSAgICAgICAgY2FuRXhpdCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24o
KSA9PSBTcGVjTm9uZTsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9IG1fdmFyaWFibGVz
Lm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpKTsKICAgICAgICAgaWYgKCF2YXJp
YWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkgewogICAgICAgICAgICAgaWYgKHZhbHVlLmlz
Q2xlYXIoKSkKQEAgLTE0NzYsNyArMTQ4Miw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0
ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3Bl
Y0Z1bmN0aW9uKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0
ZSB0aGUgZmFjdCB0aGF0IHdlIGtub3cgd2hhdCB0aGUgZnVuY3Rpb24gaXMuCiAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgCisgICAgICAgIAogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNl
IFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKQEAgLTE0ODgs
OCArMTQ5NCwxMyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAg
ICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5tYWtlVG9wKCk7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEdsb2JhbFZh
cldhdGNocG9pbnQ6CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICBjYXNlIFB1dEds
b2JhbFZhckNoZWNrOgogICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIApAQCAtMTU3OCw2ICsxNTg5LDcgQEAgaW5saW5lIHZvaWQgQWJz
dHJhY3RTdGF0ZTo6Y2xvYmJlclN0cnVjdAogICAgIGZvciAoc2l6ZV90IGkgPSBtX3ZhcmlhYmxl
cy5udW1iZXJPZkxvY2FscygpOyBpLS07KQogICAgICAgICBtX3ZhcmlhYmxlcy5sb2NhbChpKS5j
bG9iYmVyU3RydWN0dXJlcygpOwogICAgIG1faGF2ZVN0cnVjdHVyZXMgPSBmYWxzZTsKKyAgICBt
X2RpZENsb2JiZXIgPSB0cnVlOwogfQogCiBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjptZXJn
ZVN0YXRlQXRUYWlsKEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uLCBBYnN0cmFjdFZhbHVlJiBp
blZhcmlhYmxlLCBOb2RlSW5kZXggbm9kZUluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTMsNiArMTkzLDkgQEAgcHVibGljOgogICAgIC8vIG9mIFRocm93LgogICAgIGJvb2wgZXhl
Y3V0ZSh1bnNpZ25lZCk7CiAgICAgCisgICAgLy8gRGlkIHRoZSBsYXN0IGV4ZWN1dGVkIG5vZGUg
Y2xvYmJlciB0aGUgd29ybGQ/CisgICAgYm9vbCBkaWRDbG9iYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9kaWRDbG9iYmVyOyB9CisgICAgCiAgICAgLy8gSXMgdGhlIGV4ZWN1dGlvbiBzdGF0ZSBzdGls
bCB2YWxpZD8gVGhpcyB3aWxsIGJlIGZhbHNlIGlmIGV4ZWN1dGUoKSBoYXMKICAgICAvLyByZXR1
cm5lZCBmYWxzZSBwcmV2aW91c2x5LgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNWYWxpZDsgfQpAQCAtMjc0LDYgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Zv
dW5kQ29uc3RhbnRzOwogICAgIAogICAgIGJvb2wgbV9pc1ZhbGlkOworICAgIGJvb2wgbV9kaWRD
bG9iYmVyOwogICAgIAogICAgIEJyYW5jaERpcmVjdGlvbiBtX2JyYW5jaERpcmVjdGlvbjsgLy8g
VGhpcyBpcyBvbmx5IHNldCBmb3IgYmxvY2tzIHRoYXQgZW5kIGluIEJyYW5jaCBhbmQgdGhhdCBl
eGVjdXRlIHRvIGNvbXBsZXRpb24gKGkuZS4gbV9pc1ZhbGlkID09IHRydWUpLgogfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzNCw2ICsxMjM0LDkgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAgIC8vIERvZXMgdGhlIGNvZGUgYmxv
Y2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVpcmVtZW50cyBmb3IgYmVpbmcKICAg
ICAvLyBhbiBpbmxpbmUgY2FuZGlkYXRlPwogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9
IGV4ZWN1dGFibGUtPnByb2ZpbGVkQ29kZUJsb2NrRm9yKGtpbmQpOworICAgIGlmICghcHJvZmls
ZWRCbG9jaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIGlmICghbWlnaHRJbmxp
bmVGdW5jdGlvbkZvcihwcm9maWxlZEJsb2NrLCBraW5kKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIApAQCAtMjIzOSwxMyArMjI0Miw2MSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6IHsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisKICAgICAgICAgICAg
IE5vZGVJbmRleCBnZXRHbG9iYWxWYXIgPSBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgIEdl
dEdsb2JhbFZhciwKLSAgICAgICAgICAgICAgICBPcEluZm8obV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAg
IE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCiAgICAgICAgICAgICAgICAgT3BJ
bmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0
X2dsb2JhbF92YXIpOwogICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBj
YXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZTogeworICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJl
bWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOworICAgICAgICAgICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoaWRlbnRpZmllck51bWJl
cik7CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsT2JqZWN0LT5z
eW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSk7CisgICAgICAgICAgICBpZiAoIWVu
dHJ5LmNvdWxkQmVXYXRjaGVkKCkpIHsKKyAgICAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0R2xv
YmFsVmFyID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAgR2V0R2xvYmFsVmFyLAor
ICAgICAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3Rlcklz
SW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAor
ICAgICAgICAgICAgICAgICAgICBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgICAg
IHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOworICAg
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoZSB3YXRjaHBvaW50
IGlzIHN0aWxsIGludGFjdCEgVGhpcyBtZWFucyB0aGF0IHdlIHdpbGwgZ2V0IG5vdGlmaWVkIGlm
IHRoZQorICAgICAgICAgICAgLy8gY3VycmVudCB2YWx1ZSBpbiB0aGUgZ2xvYmFsIHZhcmlhYmxl
IGNoYW5nZXMuIFNvLCB3ZSBjYW4gaW5saW5lIHRoYXQgdmFsdWUuCisgICAgICAgICAgICAvLyBN
b3Jlb3ZlciwgY3VycmVudGx5IHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIHZhbHVlIGlzIGEgSlNG
dW5jdGlvbiosIHdoaWNoCisgICAgICAgICAgICAvLyBpbXBsaWVzIHRoYXQgaXQncyBhIGNlbGwu
IFRoaXMgc2ltcGxpZmllcyB0aGluZ3MsIHNpbmNlIGluIGdlbmVyYWwgd2UnZCBoYXZlCisgICAg
ICAgICAgICAvLyB0byB1c2UgYSBKU0NvbnN0YW50IGZvciBub24tY2VsbHMgYW5kIGEgV2Vha0pT
Q29uc3RhbnQgZm9yIGNlbGxzLiBTbyBpbnN0ZWFkCisgICAgICAgICAgICAvLyBvZiBoYXZpbmcg
Ym90aCBjYXNlcyB3ZSBqdXN0IGFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhIGNlbGwuCisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIC8vIE5CLiBJZiBpdCB3YXNuJ3QgZm9yIENTRSwgR2xvYmFs
VmFyV2F0Y2hwb2ludCB3b3VsZCBoYXZlIG5vIG5lZWQgZm9yIHRoZQorICAgICAgICAgICAgLy8g
cmVnaXN0ZXIgcG9pbnRlci4gQnV0IENTRSB0cmFja3MgZWZmZWN0cyBvbiBnbG9iYWwgdmFyaWFi
bGVzIGJ5IGNvbXBhcmluZworICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcG9pbnRlcnMuIEJlY2F1
c2UgQ1NFIGV4ZWN1dGVzIG11bHRpcGxlIHRpbWVzIHdoaWxlIHRoZSBiYWNrZW5kCisgICAgICAg
ICAgICAvLyBleGVjdXRlcyBvbmNlLCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBwZXJmb3JtYW5jZSB0
cmFkZS1vZmY6CisgICAgICAgICAgICAvLyAtIFRoZSBub2RlIHJlZmVycyBkaXJlY3RseSB0byB0
aGUgcmVnaXN0ZXIgcG9pbnRlciB0byBtYWtlIENTRSBzdXBlciBjaGVhcC4KKyAgICAgICAgICAg
IC8vIC0gVG8gcGVyZm9ybSBiYWNrZW5kIGNvZGUgZ2VuZXJhdGlvbiwgdGhlIG5vZGUgb25seSBj
b250YWlucyB0aGUgaWRlbnRpZmllcgorICAgICAgICAgICAgLy8gICBudW1iZXIsIGZyb20gd2hp
Y2ggaXQgaXMgcG9zc2libGUgdG8gZ2V0ICh2aWEgYSBmZXcgYXZlcmFnZS10aW1lIE8oMSkKKyAg
ICAgICAgICAgIC8vICAgbG9va3VwcykgdG8gdGhlIFdhdGNocG9pbnRTZXQuCisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAgICAgICAgR2xvYmFsVmFyV2F0
Y2hwb2ludCwKKyAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdp
c3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRl
cikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+
cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChz
cGVjaWZpY1ZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoV2Vha0pTQ29uc3Rh
bnQsIE9wSW5mbyhzcGVjaWZpY1ZhbHVlLmFzQ2VsbCgpKSkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpOworICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAgICAgTm9k
ZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwpAQCAt
MjI1Niw2ICsyMzA3LDI4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9nbG9iYWxfdmFyKTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6IHsKKyAgICAgICAgICAg
IE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsK
KyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2s7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9
IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKS5nZXQo
aWRlbnRpZmllci5pbXBsKCkpOworICAgICAgICAgICAgaWYgKCFlbnRyeS5jb3VsZEJlV2F0Y2hl
ZCgpKSB7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAg
UHV0R2xvYmFsVmFyLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5h
c3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lz
dGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICBQdXRHbG9iYWxWYXJDaGVj
aywKKyAgICAgICAgICAgICAgICBPcEluZm8oY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+YXNz
ZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdpc3Rl
clBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICBPcEluZm8oaWRlbnRpZmllck51bWJlciksCisg
ICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2ds
b2JhbF92YXJfY2hlY2spOworICAgICAgICB9CisKICAgICAgICAgLy8gPT09IEJsb2NrIHRlcm1p
bmF0b3JzLiA9PT0KIAogICAgICAgICBjYXNlIG9wX2ptcDogewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAxMjAwOTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NCw2ICs5NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwogICAgIH0KKyAgICAKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQorICAgIHsK
KyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKKyAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVj
U3RhdGUoKQogICAgIHsKQEAgLTQzMyw2ICs0MzksMTEgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMT4oYXJnMSwgYXJnMik7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAgICBtb3Zl
KGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQogCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTIwMDk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxNyw2ICsyMTcsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9
CiAgICAgCisgICAgYm9vbCBnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWluYXRpb24oV3JpdGVCYXJy
aWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpCisgICAgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgeworICAgICAgICAgICAgTm9kZUluZGV4IGlu
ZGV4ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOworICAgICAgICAgICAgTm9kZSYgbm9kZSA9IG1f
Z3JhcGhbaW5kZXhdOworICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5y
ZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQ
dXRHbG9iYWxWYXI6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkg
PT0gcmVnaXN0ZXJQb2ludGVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2xvYmJl
cnNXb3JsZChpbmRleCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICBOb2RlSW5kZXggZ2xvYmFsVmFyU3Rv
cmVFbGltaW5hdGlvbihXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcikKICAg
ICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CkBA
IC0yMjYsNiArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFB1dEdsb2Jh
bFZhcjoKKyAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6CiAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05
ODUsNyArMTAwOSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoZ2xv
YmFsVmFyTG9hZEVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2lu
dDoKKyAgICAgICAgICAgIGlmIChnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWluYXRpb24obm9kZS5y
ZWdpc3RlclBvaW50ZXIoKSkpCisgICAgICAgICAgICAgICAgZWxpbWluYXRlKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAg
ICAgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAgICAgIGlmIChtX2ZpeHBvaW50
U3RhdGUgPT0gRml4cG9pbnROb3RDb252ZXJnZWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBlbGltaW5hdGUoZ2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbihub2RlLnJlZ2lz
dGVyUG9pbnRlcigpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmgJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsOSBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGVPcGNvZGUoCiAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICBjYXNlIG9wX2dldF9n
bG9iYWxfdmFyX3dhdGNoYWJsZToKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgorICAgIGNh
c2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CiAgICAgY2FzZSBvcF9qbXA6CiAgICAgY2FzZSBv
cF9sb29wOgogICAgIGNhc2Ugb3BfanRydWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTIw
MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDkgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhRm91bmRDb25zdGFu
dHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisjaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAgZGF0YUxvZygiQ29uc3RhbnQgZm9sZGluZyBj
b25zaWRlcmluZyBCbG9jayAjJXUuXG4iLCBibG9ja0luZGV4KTsKKyNlbmRpZgogICAgICAgICAg
ICAgc3RhdGUuYmVnaW5CYXNpY0Jsb2NrKGJsb2NrKTsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytpbmRl
eEluQmxvY2spIHsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlLmlzVmFsaWQoKSkKQEAgLTkw
LDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0
YXRlLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUuc2hv
dWxkR2VuZXJhdGUoKQotICAgICAgICAgICAgICAgICAgICB8fCBtX2dyYXBoLmNsb2JiZXJzV29y
bGQobm9kZSkKKyAgICAgICAgICAgICAgICAgICAgfHwgc3RhdGUuZGlkQ2xvYmJlcigpCiAgICAg
ICAgICAgICAgICAgICAgIHx8IG5vZGUuaGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLmZvck5v
ZGUobm9kZUluZGV4KS52YWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkocmV2aXNpb24gMTIwMDk5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw2ICs2NiwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAg
CisgICAgYm9vbCBpc1NldCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9jb2RlT2Zmc2V0ICE9
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICB9CisgICAgCiAgICAg
dm9pZCBzd2l0Y2hUb0xhdGVKdW1wKE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGNoZWNr
KQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTIwMDk5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcg
KzQ0LDExIEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygpCiB7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7ICsraSkg
ewogICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7Ci0gICAg
ICAgIGV4aXQubV9jaGVjay5pbml0aWFsSnVtcCgpLmxpbmsodGhpcyk7CisgICAgICAgIEFTU0VS
VCghZXhpdC5tX2NoZWNrLmlzU2V0KCkgPT0gKGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7CisgICAgICAgIGlmIChleGl0Lm1f
d2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
KyAgICAgICAgICAgIGV4aXQubV9jaGVjay5pbml0aWFsSnVtcCgpLmxpbmsodGhpcyk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRj
aHBvaW50SW5kZXgpLnNldERlc3RpbmF0aW9uKGxhYmVsKCkpOwogICAgICAgICBqaXRBc3NlcnRI
YXNWYWxpZENhbGxGcmFtZSgpOwogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpKSwgJmds
b2JhbERhdGEoKS0+b3NyRXhpdEluZGV4KTsKICAgICAgICAgZXhpdC5tX2NoZWNrLnN3aXRjaFRv
TGF0ZUp1bXAocGF0Y2hhYmxlSnVtcCgpKTsKQEAgLTE5MCw2ICsxOTQsOCBAQCB2b2lkIEpJVENv
bXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBj
b2RlQmxvY2soKS0+b3NyRXhpdChpKTsKICAgICAgICAgbGlua0J1ZmZlci5saW5rKGV4aXQubV9j
aGVjay5sYXRlSnVtcCgpLCB0YXJnZXQpOwogICAgICAgICBleGl0Lm1fY2hlY2suY29ycmVjdExh
dGVKdW1wKGxpbmtCdWZmZXIpOworICAgICAgICBpZiAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCAh
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAgICAgICBjb2Rl
QmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5jb3JyZWN0TGFiZWxz
KGxpbmtCdWZmZXIpOwogICAgIH0KICAgICAKICAgICBjb2RlQmxvY2soKS0+c2hyaW5rVG9GaXQo
Q29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDkgKzQzMCwyMCBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIHJldHVybiBtX29wSW5mbzsKICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNJZGVudGlm
aWVyTnVtYmVyRm9yQ2hlY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2xvYmFs
VmFyV2F0Y2hwb2ludCB8fCBvcCgpID09IFB1dEdsb2JhbFZhckNoZWNrOworICAgIH0KKyAgICAK
KyAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGhhc0lkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKTsKKyAgICAgICAgcmV0dXJuIG1f
b3BJbmZvMjsKKyAgICB9CisgICAgCiAgICAgYm9vbCBoYXNSZWdpc3RlclBvaW50ZXIoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2V0R2xvYmFsVmFyIHx8IG9wKCkgPT0gUHV0R2xv
YmFsVmFyOworICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQ
dXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBHbG9iYWxWYXJXYXRjaHBvaW50IHx8IG9wKCkgPT0gUHV0
R2xvYmFsVmFyQ2hlY2s7CiAgICAgfQogICAgIAogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiog
cmVnaXN0ZXJQb2ludGVyKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRTY29wZWRWYXIsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKEdldEdsb2JhbFZhciwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dEdsb2JhbFZhciwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdsb2JhbFZhcldhdGNocG9pbnQsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhQdXRHbG9iYWxWYXJDaGVjaywgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBcCiAgICAgLyogT3B0aW1pemF0aW9ucyBmb3IgYXJyYXkgbXV0YXRpb24uICovXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAxMjAwOTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MSw2ICs1MSw3IEBAIE9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNW
YWx1ZVMKICAgICAsIG1fY29kZU9yaWdpbihqaXQtPm1fY29kZU9yaWdpbkZvck9TUikKICAgICAs
IG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKG1fY29kZU9yaWdpbikKICAgICAsIG1fcmVjb3Zl
cnlJbmRleChyZWNvdmVyeUluZGV4KQorICAgICwgbV93YXRjaHBvaW50SW5kZXgoc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICwgbV9raW5kKGtpbmQpCiAgICAgLCBt
X2NvdW50KDApCiAgICAgLCBtX2FyZ3VtZW50cyhqaXQtPm1fYXJndW1lbnRzLnNpemUoKSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAxMjAwOTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5
KQpAQCAtOTYsNiArOTYsNyBAQCBzdHJ1Y3QgT1NSRXhpdCB7CiAgICAgQ29kZU9yaWdpbiBtX2Nv
ZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5k
ZXg7CisgICAgdW5zaWduZWQgbV93YXRjaHBvaW50SW5kZXg7CiAgICAgCiAgICAgRXhpdEtpbmQg
bV9raW5kOwogICAgIHVpbnQzMl90IG1fY291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTky
NCw2ICs5MjQsMTEgQEAgdm9pZCogREZHX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29ucwog
ICAgIHJldHVybiB2aXJ0dWFsRm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQog
Cit2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5R2xvYmFsVmFyV3JpdGUoV2F0Y2hw
b2ludFNldCogd2F0Y2hwb2ludFNldCkKK3sKKyAgICB3YXRjaHBvaW50U2V0LT5ub3RpZnlXcml0
ZSgpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmUo
RXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxMjAwOTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDYgKzEwMCw3IEBAIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVy
YXQKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpKSikoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7
CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VKUFApKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCopOwogdHlwZWRlZiB2
b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FUFpKKShFeGVjU3RhdGUqLCB2b2lk
KiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04g
KCpWX0RGR09wZXJhdGlvbl9XKShXYXRjaHBvaW50U2V0Kik7CiB0eXBlZGVmIHZvaWQqIERGR19P
UEVSQVRJT04gKCpQX0RGR09wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIAogLy8gVGhlc2Ugcm91
dGluZXMgYXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRpb25zIG9m
IG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgpAQCAtMTE2LDYgKzExNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2UKIEVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBvcGVyYXRpb25DYWxsQ3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jLCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25DYWxsR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
Q2VsbCosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRp
b25Ob3RpZnlHbG9iYWxWYXJXcml0ZShXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmUo
RXhlY1N0YXRlKiwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZUJhc2UoRXhlY1N0YXRlKiwgSWRlbnRpZmllciop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVz
b2x2ZUJhc2VTdHJpY3RQdXQoRXhlY1N0YXRlKiwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDkxLDcgKzQ5MSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOiB7
CisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAgICBjYXNlIFB1dEdsb2JhbFZhckNo
ZWNrOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVy
Z2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTY2OSw2ICs2NzAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRlYXJPZmZBcmd1bWVu
dHM6CiAgICAgICAgIGNhc2UgQ2hlY2tOdW1iZXI6CiAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVu
dHNOb3RDcmVhdGVkOgorICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTIwMDk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzU5Niw2ICszNTk2LDYyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRHbG9i
YWxWYXJDaGVjazogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNo
aWxkMSgpKTsKKyAgICAgICAgCisgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQg
PQorICAgICAgICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5
bWJvbFRhYmxlKCkuZ2V0KAorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlm
aWVyTnVtYmVyRm9yQ2hlY2soKSktPmltcGwoKSkud2F0Y2hwb2ludFNldCgpOworICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6Ok5vblplcm8sCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFk
ZHJlc3Mod2F0Y2hwb2ludFNldC0+YWRkcmVzc09mSXNXYXRjaGVkKCkpKSwKKyAgICAgICAgICAg
ICAgICB0aGlzLCBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZSwgTm9SZXN1bHQsIHdhdGNo
cG9pbnRTZXQpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmllckVu
YWJsZWQoKSkgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAg
ICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHdyaXRlQmFycmllcihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2Rl
T3JpZ2luKSwgdmFsdWUudGFnR1BSKCksIG5vZGUuY2hpbGQxKCksIFdyaXRlQmFycmllckZvclZh
cmlhYmxlQWNjZXNzLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1F
OiBpZiB3ZSBoYXBwZW4gdG8gaGF2ZSBhIHNwYXJlIHJlZ2lzdGVyIC0gYW5kIF9PTkxZXyBpZiB3
ZSBoYXBwZW4gdG8gaGF2ZQorICAgICAgICAvLyBhIHNwYXJlIHJlZ2lzdGVyIC0gYSBnb29kIG9w
dGltaXphdGlvbiB3b3VsZCBiZSB0byBwdXQgdGhlIHJlZ2lzdGVyIHBvaW50ZXIgaW50bworICAg
ICAgICAvLyBhIHJlZ2lzdGVyIGFuZCB0aGVuIGRvIGEgemVybyBvZmZzZXQgc3RvcmUgZm9sbG93
ZWQgYnkgYSBmb3VyLW9mZnNldCBzdG9yZSAob3IKKyAgICAgICAgLy8gdmljZS12ZXJzYSBkZXBl
bmRpbmcgb24gZW5kaWFubmVzcykuCisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUudGFnR1BS
KCksIG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnRhZ1BvaW50ZXIoKSk7CisgICAgICAgIG1faml0
LnN0b3JlMzIodmFsdWUucGF5bG9hZEdQUigpLCBub2RlLnJlZ2lzdGVyUG9pbnRlcigpLT5wYXls
b2FkUG9pbnRlcigpKTsKKworICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50
OiB7CisgICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5zeW1i
b2xUYWJsZSgpLmdldCgKKyAgICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVt
YmVyRm9yQ2hlY2soKSktPmltcGwoKSkuYWRkV2F0Y2hwb2ludCgKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbldhdGNocG9pbnQoKSk7CisgICAgICAgIAorI2lmIERGR19FTkFCTEUoSklUX0FT
U0VSVCkKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKG5vZGUu
cmVnaXN0ZXJQb2ludGVyKCktPnRhZ1BvaW50ZXIoKSwgc2NyYXRjaEdQUik7CisgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdE9LID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBKSVRD
b21waWxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIo
bm9kZS5yZWdpc3RlclBvaW50ZXIoKS0+Z2V0KCkudGFnKCkpKTsKKyAgICAgICAgbV9qaXQubG9h
ZDMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnBheWxvYWRQb2ludGVyKCksIHNjcmF0Y2hHUFIp
OworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBvayA9IG1faml0LmJyYW5jaDMyKAorICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgVHJ1c3Rl
ZEltbTMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPmdldCgpLnBheWxvYWQoKSkpOworICAgICAg
ICBub3RPSy5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAg
ICAgb2subGluaygmbV9qaXQpOworI2VuZGlmCisgICAgICAgIAorICAgICAgICBub1Jlc3VsdCht
X2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ2hlY2tI
YXNJbnN0YW5jZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjE1LDYgKzM2MTUsNTIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOiB7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICAKKyAgICAgICAgV2F0
Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCA9CisgICAgICAgICAgICBtX2ppdC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQoCisgICAgICAgICAgICAg
ICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKS0+aW1wbCgpKS53
YXRjaHBvaW50U2V0KCk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAorICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyh3YXRjaHBvaW50U2V0LT5hZGRyZXNzT2ZJ
c1dhdGNoZWQoKSkpLAorICAgICAgICAgICAgICAgIHRoaXMsIG9wZXJhdGlvbk5vdGlmeUdsb2Jh
bFZhcldyaXRlLCBOb1Jlc3VsdCwgd2F0Y2hwb2ludFNldCkpOworICAgICAgICAKKyAgICAgICAg
aWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2Ny
YXRjaC5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0
Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLCB2YWx1ZS5ncHIoKSwgbm9kZS5jaGls
ZDEoKSwgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MsIHNjcmF0Y2hSZWcpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBtX2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIoKSwgbm9kZS5y
ZWdpc3RlclBvaW50ZXIoKSk7CisKKyAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hw
b2ludDogeworICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+
c3ltYm9sVGFibGUoKS5nZXQoCisgICAgICAgICAgICBpZGVudGlmaWVyKG5vZGUuaWRlbnRpZmll
ck51bWJlckZvckNoZWNrKCkpLT5pbXBsKCkpLmFkZFdhdGNocG9pbnQoCisgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOworICAgICAgICAKKyNpZiBERkdfRU5BQkxFKEpJ
VF9BU1NFUlQpCisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgIG1faml0LmxvYWRQdHIo
bm9kZS5yZWdpc3RlclBvaW50ZXIoKSwgc2NyYXRjaEdQUik7CisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVx
dWFsLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8
dm9pZCo+KEpTVmFsdWU6OmVuY29kZShub2RlLnJlZ2lzdGVyUG9pbnRlcigpLT5nZXQoKSkpKSk7
CisgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgb2subGluaygmbV9qaXQpOwor
I2VuZGlmCisgICAgICAgIAorICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZTogewogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAg
ICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTIwMDk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDE0LDYgKzE0MTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9XIG9wZXJhdGlv
biwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkKKyAgICB7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzKFRydXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTE+CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJn
dW1lbnRUeXBlMSBhcmcxKQogICAgIHsKQEAgLTE2NzIsNiArMTY3NywxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fVyBvcGVyYXRpb24sIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50cyhUcnVzdGVkSW1tUHRyKHdhdGNocG9pbnRTZXQpKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rp
b25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxPgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50
VHlwZTEgYXJnMSkKICAgICB7CkBAIC0xNzkzLDYgKzE4MDMsMTEgQEAgcHVibGljOgogICAgICAg
ICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICBy
ZXR1cm4gY2FsbDsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbChjb25z
dCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCisgICAgeworICAgICAgICBwcmVwYXJlRm9yRXh0ZXJu
YWxDYWxsKCk7CisgICAgICAgIHJldHVybiBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQxLCBHUFJS
ZWcgcmVzdWx0MikKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKQEAgLTIxOTMsNiArMjIwOCwzMiBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8
IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKGtp
bmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2UuaW5kZXgoKSwganVtcFRvRmFpbCwgcmVjb3Zlcnkp
OwogICAgIH0KKyAgICAvLyBVc2UgdGhpcyBsaWtlIHlvdSB3b3VsZCB1c2Ugc3BlY3VsYXRpb25D
aGVjaygpLCBleGNlcHQgdGhhdCB5b3UgZG9uJ3QgcGFzcyBpdCBhIGp1bXAKKyAgICAvLyAoYmVj
YXVzZSB5b3UgZG9uJ3QgaGF2ZSB0byBleGVjdXRlIGEgYnJhbmNoOyB0aGF0J3Mga2luZCBvZiB0
aGUgd2hvbGUgcG9pbnQpLCBhbmQgeW91CisgICAgLy8gbXVzdCByZWdpc3RlciB0aGUgcmV0dXJu
ZWQgV2F0Y2hwb2ludCB3aXRoIHNvbWV0aGluZyByZWxldmFudC4gSW4gZ2VuZXJhbCwgdGhpcyBz
aG91bGQKKyAgICAvLyBiZSB1c2VkIHdpdGggZXh0cmVtZSBjYXJlLiBVc2Ugc3BlY3VsYXRpb25D
aGVjaygpIHVubGVzcyB5b3UndmUgZ290IGFuIGFtYXppbmcgcmVhc29uCisgICAgLy8gbm90IHRv
LgorICAgIFdhdGNocG9pbnQqIHNwZWN1bGF0aW9uV2F0Y2hwb2ludChFeGl0S2luZCBraW5kLCBK
U1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgewor
ICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJn
dW1lbnRUeXBlcyk7CisgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdC5jb2RlQmxvY2soKS0+
b3NyRXhpdCgKKyAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0KAor
ICAgICAgICAgICAgICAgIE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZv
cihub2RlSW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAo
KSwgdGhpcykpKTsKKyAgICAgICAgZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9IG1faml0LmNvZGVC
bG9jaygpLT5hcHBlbmRXYXRjaHBvaW50KAorICAgICAgICAgICAgV2F0Y2hwb2ludChtX2ppdC53
YXRjaHBvaW50TGFiZWwoKSkpOworICAgICAgICByZXR1cm4gJm1faml0LmNvZGVCbG9jaygpLT53
YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpOworICAgIH0KKyAgICAvLyBUaGUgZGVm
YXVsdCBmb3Igc3BlY3VsYXRpb24gd2F0Y2hwb2ludHMgaXMgdGhhdCB0aGV5J3JlIHVuY291bnRl
ZCwgYmVjYXVzZSB0aGUKKyAgICAvLyBhY3Qgb2YgZmlyaW5nIGEgd2F0Y2hwb2ludCBpbnZhbGlk
YXRlcyBpdC4gU28sIGZ1dHVyZSByZWNvbXBpbGF0aW9ucyB3aWxsIG5vdAorICAgIC8vIGF0dGVt
cHQgdG8gc2V0IHRoaXMgd2F0Y2hwb2ludCBhZ2Fpbi4KKyAgICBXYXRjaHBvaW50KiBzcGVjdWxh
dGlvbldhdGNocG9pbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uV2F0Y2hw
b2ludChVbmNvdW50YWJsZVdhdGNocG9pbnQsIEpTVmFsdWVTb3VyY2UoKSwgTm9Ob2RlKTsKKyAg
ICB9CiAgICAgdm9pZCBmb3J3YXJkU3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1Zh
bHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHZhbHVlUmVjb3Zlcnkp
CiAgICAgewogICAgICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBt
X2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDYgKzI1OSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCiAgICAgICAg
IERFRklORV9PUChvcF9nZXRfYXJndW1lbnRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X2J5X3BuYW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hh
YmxlKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2dsb2JhbF92YXIpCiAgICAgICAgIERFRklO
RV9PUChvcF9nZXRfcG5hbWVzKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Njb3BlZF92YXIp
CkBAIC0zMjQsNiArMzI1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9nZXR0ZXJfc2V0dGVyKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dsb2JhbF92YXIpCisg
ICAgICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKICAgICAgICAgREVGSU5F
X09QKG9wX3B1dF9zY29wZWRfdmFyKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzb2x2ZSkKICAg
ICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfYmFzZSkKQEAgLTQ4MSw2ICs0ODMsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9i
eV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9yc2hpZnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEy
MDA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2Myw3ICs0NjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc01hcHBl
ZChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpOwogICAgICAgICBib29sIGdldE1hcHBlZFBheWxv
YWQoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEJiBwYXlsb2FkKTsKICAgICAg
ICAgYm9vbCBnZXRNYXBwZWRUYWcoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklE
JiB0YWcpOwotCisgICAgICAgIAogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgdGFn
KTsKIApAQCAtNTk5LDYgKzU5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfZ2xvYmFsX3ZhcihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2ds
b2JhbF92YXJfd2F0Y2hhYmxlKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikgeyBlbWl0X29wX2dl
dF9nbG9iYWxfdmFyKGluc3RydWN0aW9uKTsgfQogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Nj
b3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9y
ZWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX2hhc19pbnN0YW5j
ZShJbnN0cnVjdGlvbiopOwpAQCAtNjYyLDYgKzY2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jl
c29sdmUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfYmFzZShJ
bnN0cnVjdGlvbiopOwpAQCAtNzM5LDYgKzc0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX3ByZV9pbmMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X2lkKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2
b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92
YXJfY2hlY2soSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9yc2hpZnQoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJ
KHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTAsNiArMTA5MCwzNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiAgICAgbWFwKG1fYnl0ZWNv
ZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX3B1dF9nbG9iYWxfdmFyKSwgdmFsdWUsIHJlZ1Qx
LCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+KiByZWdpc3RlclBvaW50ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBv
aW50ZXI7CisgICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
KyAgICAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpOworICAgIAorICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOwor
ICAgIAorICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFic29sdXRlQWRkcmVz
cyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5wcmVkaWNhdGVQb2ludGVyKSkpOworICAgIAorICAg
IGlmIChIZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQoKSkgeworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgcmVnVDIpOworICAgICAgICBlbWl0V3JpdGVCYXJyaWVy
KGdsb2JhbE9iamVjdCwgcmVnVDEsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0
ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CisgICAgfQorICAgIAorICAgIHN0b3JlMzIocmVn
VDEsIHJlZ2lzdGVyUG9pbnRlci0+dGFnUG9pbnRlcigpKTsKKyAgICBzdG9yZTMyKHJlZ1QwLCBy
ZWdpc3RlclBvaW50ZXItPnBheWxvYWRQb2ludGVyKCkpOworICAgIHVubWFwKCk7Cit9CisKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
eworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICAKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2Fs
bCh0aGlzLCBjdGlfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KHJlZ1QxLCByZWdUMCk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZElt
bTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5jYWxs
KCk7Cit9CisKIHZvaWQgSklUOjpyZXNldFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVyJiByZXBh
dGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1
ZmZlci5yZWxpbmsoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9p
ZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAkocmV2aXNpb24gMTIwMDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjcsNiArMTAyNywyOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiAgICAgICAgIGVtaXRX
cml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0LCByZWdUMCwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVk
aWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIH0KIAordm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3sKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICAKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25a
ZXJvLCBBYnNvbHV0ZUFkZHJlc3MoY3VycmVudEluc3RydWN0aW9uWzNdLnUucHJlZGljYXRlUG9p
bnRlcikpKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgCisgICAgc3RvcmVQdHIocmVnVDAsIGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcik7CisgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJy
aWVyRW5hYmxlZCgpKQorICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGdsb2JhbE9iamVjdCwgcmVn
VDAsIHJlZ1QyLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJs
ZUFjY2Vzcyk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVj
ayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICAKKyAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOwor
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworICAgIHN0
dWJDYWxsLmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6OnJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hC
dWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKIHsKICAg
ICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBjdGlf
b3BfZ2V0X2J5X2lkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
CShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3Nyw2ICsyMzc3LDE1IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X2EKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoc3Rh
Y2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29u
c3RhbnRCdWZmZXIoc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCkpLCBzdGFja0ZyYW1lLmFyZ3Nb
MV0uaW50MzIoKSk7CiB9CiAKK0RFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9nbG9i
YWxfdmFyX2NoZWNrKQoreworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsK
KyAgICAKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBz
eW1ib2xUYWJsZVB1dChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBjYWxsRnJhbWUsIGNvZGVC
bG9jay0+aWRlbnRpZmllcihzdGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIoKSksIHN0YWNrRnJhbWUu
YXJnc1swXS5qc1ZhbHVlKCksIHRydWUpOworfQorCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNv
ZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZSkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3Rh
Y2tGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lv
biAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0NSw2ICs0NDUsNyBAQCBleHRlcm4gIkMiIHsKICAgICB2b2lkIEpJVF9T
VFVCIGN0aV9vcF9wdXRfYnlfaW5kZXgoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJO
QUw7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X3ZhbChTVFVCX0FSR1NfREVDTEFS
QVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfZ2V0dGVy
X3NldHRlcihTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKKyAgICB2b2lkIEpJ
VF9TVFVCIGN0aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04p
IFdURl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF90ZWFyX29mZl9hY3RpdmF0
aW9uKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQgSklUX1NU
VUIgY3RpX29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9J
TlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3Io
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDEyMDA5OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg1Niw2ICs4NTYsMTQgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3Jlc29sdmVfdwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2dsb2JhbF92YXJfY2hlY2spCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIHN5bWJv
bFRhYmxlUHV0KGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGV4ZWMsIGNvZGVCbG9jay0+aWRl
bnRpZmllcihwY1s0XS51Lm9wZXJhbmQpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgdHJ1ZSk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTQ3LDYgKzE0Nyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cmUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZW5zdXJlX3Byb3BlcnR5
X2V4aXN0cyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVf
d2l0aF9iYXNlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2
ZV93aXRoX3RoaXMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRf
Z2xvYmFsX3Zhcl9jaGVjayk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dldF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9h
cmd1bWVudHNfbGVuZ3RoKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjAwOTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQko
d29ya2luZyBjb3B5KQpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgX2xsaW50X29wX3B1dF9zY29wZWRf
dmFyOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorbWFj
cm8gZ2V0R2xvYmFsVmFyKHNpemUpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRwIDhb
UENdLCB0MAogICAgIGxvYWRpIDRbUENdLCB0MwpAQCAtMTA0Nyw5ICsxMDQ3LDE3IEBAIF9sbGlu
dF9vcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwXSwgdDEKICAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkaSAoc2l6
ZSAtIDEpICogNFtQQ10sIHQzCiAgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDMpCi0gICAgZGlz
cGF0Y2goNCkKKyAgICBkaXNwYXRjaChzaXplKQorZW5kCisKK19sbGludF9vcF9nZXRfZ2xvYmFs
X3ZhcjoKKyAgICBnZXRHbG9iYWxWYXIoNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXJf
d2F0Y2hhYmxlOgorICAgIGdldEdsb2JhbFZhcig1KQogCiAKIF9sbGludF9vcF9wdXRfZ2xvYmFs
X3ZhcjoKQEAgLTEwNjMsNiArMTA3MSwyMiBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CiAg
ICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwg
dDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBidGJueiBbdDJdLCAub3BQdXRHbG9iYWxWYXJD
aGVja1Nsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgd3Jp
dGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbdDBdCisgICAgZGlzcGF0Y2goNSkKKy5vcFB1dEdsb2JhbFZh
ckNoZWNrU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2xvYmFs
X3Zhcl9jaGVjaykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlf
aWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCShyZXZpc2lvbiAxMjAwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODkzLDE1ICs4OTMsMjMg
QEAgX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50
X29wX2dldF9nbG9iYWxfdmFyOgorbWFjcm8gZ2V0R2xvYmFsVmFyKHNpemUpCiAgICAgdHJhY2VF
eGVjdXRpb24oKQogICAgIGxvYWRwIDE2W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZGlzIDhbUEIs
IFBDLCA4XSwgdDMKICAgICBsb2FkcCBbdDBdLCB0MQogICAgIHN0b3JlcCB0MSwgW2NmciwgdDMs
IDhdCi0gICAgbG9hZHAgMjRbUEIsIFBDLCA4XSwgdDAKKyAgICBsb2FkcCAoc2l6ZSAtIDEpICog
OFtQQiwgUEMsIDhdLCB0MAogICAgIHZhbHVlUHJvZmlsZSh0MSwgdDApCi0gICAgZGlzcGF0Y2go
NCkKKyAgICBkaXNwYXRjaChzaXplKQorZW5kCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoK
KyAgICBnZXRHbG9iYWxWYXIoNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hh
YmxlOgorICAgIGdldEdsb2JhbFZhcig1KQogCiAKIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoK
QEAgLTkxNCw2ICs5MjIsMjEgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgogICAgIGRpc3Bh
dGNoKDMpCiAKIAorX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkcCAyNFtQQiwgUEMsIDhdLCB0MgorICAgIGxvYWRpcyAxNltQQiwg
UEMsIDhdLCB0MQorICAgIGxvYWRwIDhbUEIsIFBDLCA4XSwgdDAKKyAgICBidGJueiBbdDJdLCAu
b3BQdXRHbG9iYWxWYXJDaGVja1Nsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0
MikKKyAgICB3cml0ZUJhcnJpZXIodDIpCisgICAgc3RvcmVwIHQyLCBbdDBdCisgICAgZGlzcGF0
Y2goNSkKKy5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9s
bGludF9vcF9nZXRfYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgICMgV2Ugb25seSBk
byBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1v
ZGlmeSB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA0LDIyICs1MDQsMjUgQEAgdm9pZCBKU09i
amVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZQogICAgIHN0cnVjdHVyZSgpLT5zZXRTdGF0
aWNGdW5jdGlvbnNSZWlmaWVkKCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1
cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAg
ICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEs
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RG
b3VuZCkKLSAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICBp
ZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBw
dXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgIHJldHVybiB0cnVlOwogfQog
CiBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9w
ZXJ0eVNsb3QmIHNsb3QsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjAw
OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCB0cmFuc2l0aW9uVG8oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgdm9p
ZCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgYm9v
bCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsgLy8gUmV0dXJuIHRy
dWUgaWYgYW55dGhpbmcgaXMgcmVtb3ZlZC4KICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0
aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRpb24oKTsgfQogICAgICAgICBi
b29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEyMDA5
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3lt
Ym9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3lt
Ym9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0
LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAg
ICBpZiAoZW50cnkuaXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gb2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3lt
Ym9sVGFibGUuZmluZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBpZiAoaXRlciA9
PSBzeW1ib2xUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN5bWJvbFRh
YmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CisgICAgQVNTRVJUKCFlbnRyeS5p
c051bGwoKSk7CiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0
SW5kZXgoKSkuZ2V0KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODMsOSArODYsMTIgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3lt
Ym9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAg
ICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdl
dChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxsKCkpCisg
ICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpOworICAg
IFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBp
dGVyLT5zZWNvbmQ7CisgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgZGVzY3JpcHRv
ci5zZXREZXNjcmlwdG9yKAogICAgICAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5k
ZXgoKSkuZ2V0KCksIGVudHJ5LmdldEF0dHJpYnV0ZXMoKSB8IERvbnREZWxldGUpOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtOTYsOSArMTAyLDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0
KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsCiAgICAgYm9vbCYgc2xvdElzV3JpdGVhYmxlKQog
ewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5s
aW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwo
KSkKKyAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCk7
CisgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRy
eSA9IGl0ZXItPnNlY29uZDsKKyAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICBzbG90
LnNldFZhbHVlKG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CiAg
ICAgc2xvdElzV3JpdGVhYmxlID0gIWVudHJ5LmlzUmVhZE9ubHkoKTsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTExMiwxNSArMTIxLDIxIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBBU1NF
UlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAo
b2JqZWN0KSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVjdC0+c3lt
Ym9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Ci0gICAgaWYg
KGVudHJ5LmlzTnVsbCgpKQorICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IG9iamVjdC0+
c3ltYm9sVGFibGUoKTsKKyAgICBTeW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRh
YmxlLmZpbmQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgaWYgKGl0ZXIgPT0gc3lt
Ym9sVGFibGUuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZW50cnkuaXNS
ZWFkT25seSgpKSB7CisgICAgYm9vbCB3YXNGYXQ7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFz
dCBmYXN0RW50cnkgPSBpdGVyLT5zZWNvbmQuZ2V0RmFzdCh3YXNGYXQpOworICAgIEFTU0VSVCgh
ZmFzdEVudHJ5LmlzTnVsbCgpKTsKKyAgICBpZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHkoKSkgewog
ICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLnNl
dChnbG9iYWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkod2FzRmF0KSkK
KyAgICAgICAgaXRlci0+c2Vjb25kLm5vdGlmeVdyaXRlKCk7CisgICAgb2JqZWN0LT5yZWdpc3Rl
ckF0KGZhc3RFbnRyeS5nZXRJbmRleCgpKS5zZXQoZ2xvYmFsRGF0YSwgb2JqZWN0LCB2YWx1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzNiw2ICsxNTEsNyBAQCBpbmxpbmUgYm9vbCBz
eW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBT
eW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnNlY29uZDsKICAgICBBU1NFUlQoIWVudHJ5
LmlzTnVsbCgpKTsKKyAgICBlbnRyeS5ub3RpZnlXcml0ZSgpOwogICAgIGVudHJ5LnNldEF0dHJp
YnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4
KCkpLnNldChnbG9iYWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTeW1ib2xUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU3ltYm9sVGFibGVF
bnRyeSYgU3ltYm9sVGFibGVFbnRyeTo6Y29weVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYg
b3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyLmlzRmF0KCkpOworICAgIEZhdEVudHJ5KiBuZXdG
YXRFbnRyeSA9IG5ldyBGYXRFbnRyeSgqb3RoZXIuZmF0RW50cnkoKSk7CisgICAgZnJlZUZhdEVu
dHJ5KCk7CisgICAgbV9iaXRzID0gYml0d2lzZV9jYXN0PGludHB0cl90PihuZXdGYXRFbnRyeSkg
fCBGYXRGbGFnOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5
OjpmcmVlRmF0RW50cnlTbG93KCkKK3sKKyAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgZGVsZXRl
IGZhdEVudHJ5KCk7Cit9CisKK2Jvb2wgU3ltYm9sVGFibGVFbnRyeTo6Y291bGRCZVdhdGNoZWQo
KQoreworICAgIGlmICghaXNGYXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFdhdGNo
cG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsK
KyAgICBpZiAoIXdhdGNocG9pbnRzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHdhdGNocG9pbnRzLT5pc1N0aWxsVmFsaWQoKTsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5
OjphdHRlbXB0VG9XYXRjaCgpCit7CisgICAgRmF0RW50cnkqIGVudHJ5ID0gaW5mbGF0ZSgpOwor
ICAgIGlmICghZW50cnktPm1fd2F0Y2hwb2ludHMpCisgICAgICAgIGVudHJ5LT5tX3dhdGNocG9p
bnRzID0gYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoKSk7Cit9CisKK2Jvb2wqIFN5bWJvbFRh
YmxlRW50cnk6OmFkZHJlc3NPZklzV2F0Y2hlZCgpCit7CisgICAgQVNTRVJUKGNvdWxkQmVXYXRj
aGVkKCkpOworICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLT5hZGRyZXNzT2ZJ
c1dhdGNoZWQoKTsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5OjphZGRXYXRjaHBvaW50KFdh
dGNocG9pbnQqIHdhdGNocG9pbnQpCit7CisgICAgQVNTRVJUKGNvdWxkQmVXYXRjaGVkKCkpOwor
ICAgIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMtPmFkZCh3YXRjaHBvaW50KTsKK30KKwordm9p
ZCBTeW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZVNsb3coKQoreworICAgIFdhdGNocG9pbnRT
ZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICBp
ZiAoIXdhdGNocG9pbnRzKQorICAgICAgICByZXR1cm47CisgICAgd2F0Y2hwb2ludHMtPm5vdGlm
eVdyaXRlKCk7Cit9CisKK1N5bWJvbFRhYmxlRW50cnk6OkZhdEVudHJ5KiBTeW1ib2xUYWJsZUVu
dHJ5OjppbmZsYXRlU2xvdygpCit7CisgICAgRmF0RW50cnkqIGVudHJ5ID0gbmV3IEZhdEVudHJ5
KG1fYml0cyk7CisgICAgbV9iaXRzID0gYml0d2lzZV9jYXN0PGludHB0cl90PihlbnRyeSkgfCBG
YXRGbGFnOworICAgIHJldHVybiBlbnRyeTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNp
b24gMTIwMDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNTMgKzMxLDE2MyBAQAogCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2lu
dC5oIgogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIFdhdGNocG9pbnQ7CisgICAg
Y2xhc3MgV2F0Y2hwb2ludFNldDsKKwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGludCBtaXNz
aW5nU3ltYm9sTWFya2VyKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgo
KTsgfQogCiAgICAgLy8gVGhlIGJpdCB0d2lkZGxpbmcgaW4gdGhpcyBjbGFzcyBhc3N1bWVzIHRo
YXQgZXZlcnkgcmVnaXN0ZXIgaW5kZXggaXMgYQogICAgIC8vIHJlYXNvbmFibHkgc21hbGwgcG9z
aXRpdmUgb3IgbmVnYXRpdmUgbnVtYmVyLCBhbmQgdGhlcmVmb3JlIGhhcyBpdHMgaGlnaAogICAg
IC8vIGZvdXIgYml0cyBhbGwgc2V0IG9yIGFsbCB1bnNldC4KIAorICAgIC8vIEluIGFkZGl0aW9u
IHRvIGltcGxlbWVudGluZyBzZW1hbnRpY3MtbWFuZGF0ZWQgdmFyaWFibGUgYXR0cmlidXRlcyBh
bmQKKyAgICAvLyBpbXBsZW1lbnRhdGlvbi1tYW5kYXRlZCB2YXJpYWJsZSBpbmRleGluZywgdGhp
cyBjbGFzcyBhbHNvIGltcGxlbWVudHMKKyAgICAvLyB3YXRjaHBvaW50cyB0byBiZSB1c2VkIGZv
ciBKSVQgb3B0aW1pemF0aW9ucy4gQmVjYXVzZSB3YXRjaHBvaW50cyBhcmUKKyAgICAvLyBtZWFu
dCB0byBiZSByZWxhdGl2ZWx5IHJhcmUsIHRoaXMgY2xhc3Mgb3B0aW1pemVzIGhlYXZpbHkgZm9y
IHRoZSBjYXNlCisgICAgLy8gdGhhdCB0aGV5IGFyZSBub3QgYmVpbmcgdXNlZC4gVG8gdGhhdCBl
bmQsIHRoaXMgY2xhc3MgdXNlcyB0aGUgdGhpbi1mYXQKKyAgICAvLyBpZGlvbTogZWl0aGVyIGl0
IGlzIHRoaW4sIGluIHdoaWNoIGNhc2UgaXQgY29udGFpbnMgYW4gaW4tcGxhY2UgZW5jb2RlZAor
ICAgIC8vIHdvcmQgdGhhdCBjb25zaXN0cyBvZiBhdHRyaWJ1dGVzLCB0aGUgaW5kZXgsIGFuZCBh
IGJpdCBzYXlpbmcgdGhhdCBpdCBpcworICAgIC8vIHRoaW47IG9yIGl0IGlzIGZhdCwgaW4gd2hp
Y2ggY2FzZSBpdCBjb250YWlucyBhIHBvaW50ZXIgdG8gYSBtYWxsb2MnZAorICAgIC8vIGRhdGEg
c3RydWN0dXJlIGFuZCBhIGJpdCBzYXlpbmcgdGhhdCBpdCBpcyBmYXQuIFRoZSBtYWxsb2MnZCBk
YXRhCisgICAgLy8gc3RydWN0dXJlIHdpbGwgYmUgbWFsbG9jZWQgYSBzZWNvbmQgdGltZSB1cG9u
IGNvcHksIHRvIHByZXNlcnZlIHRoZQorICAgIC8vIHByb3BlcnR5IHRoYXQgaW4tcGxhY2UgZWRp
dHMgdG8gU3ltYm9sVGFibGVFbnRyeSBkbyBub3QgbWFuaWZlc3QgaW4gYW55CisgICAgLy8gY29w
aWVzLiBIb3dldmVyLCB0aGUgbWFsbG9jJ2QgRmF0RW50cnkgZGF0YSBzdHJ1Y3R1cmUgY29udGFp
bnMgYSByZWYtCisgICAgLy8gY291bnRlZCBwb2ludGVyIHRvIGEgc2hhcmVkIFdhdGNocG9pbnRT
ZXQuIFRodXMsIGluLXBsYWNlIGVkaXRzIG9mIHRoZQorICAgIC8vIFdhdGNocG9pbnRTZXQgd2ls
bCBtYW5pZmVzdCBpbiBhbGwgY29waWVzLiBIZXJlJ3MgYSBwaWN0dXJlOgorICAgIC8vCisgICAg
Ly8gU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAv
LworICAgIC8vIElmIHlvdSBtYWtlIGEgY29weSBvZiBhIFN5bWJvbFRhYmxlRW50cnksIHlvdSB3
aWxsIGhhdmU6CisgICAgLy8KKyAgICAvLyBvcmlnaW5hbDogU3ltYm9sVGFibGVFbnRyeSAtLT4g
RmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAvLyBjb3B5OiAgICAgU3ltYm9sVGFibGVF
bnRyeSAtLT4gRmF0RW50cnkgLS0tLS1eCisKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7
CisgICAgICAgIC8vIFVzZSB0aGUgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBjbGFzcywgZWl0aGVy
IHZpYSBpbXBsaWNpdCBjYXN0IG9yIGJ5IGNhbGxpbmcKKyAgICAgICAgLy8gZ2V0RmFzdCgpLCB3
aGVuIHlvdSAoMSkgb25seSBjYXJlIGFib3V0IGlzTnVsbCgpLCBnZXRJbmRleCgpLCBhbmQgaXNS
ZWFkT25seSgpLAorICAgICAgICAvLyBhbmQgKDIpIHlvdSBhcmUgaW4gYSBob3QgcGF0aCB3aGVy
ZSB5b3UgbmVlZCB0byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIHRpbWVzCisgICAgICAgIC8vIHRo
YXQgeW91IGJyYW5jaCBvbiBpc0ZhdCgpIHdoZW4gZ2V0dGluZyB0aGUgYml0cygpLgorICAgICAg
ICBjbGFzcyBGYXN0IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgRmFzdCgpCisgICAg
ICAgICAgICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0KGNvbnN0IFN5bWJvbFRh
YmxlRW50cnkmIGVudHJ5KQorICAgICAgICAgICAgICAgIDogbV9iaXRzKGVudHJ5LmJpdHMoKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29s
IGlzTnVsbCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFt
X2JpdHM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBnZXRJbmRleCgpIGNvbnN0
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
bV9iaXRzID4+IEZsYWdCaXRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAg
ICBib29sIGlzUmVhZE9ubHkoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBtX2JpdHMgJiBSZWFkT25seUZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOworICAgICAgICAg
ICAgICAgIGlmIChtX2JpdHMgJiBSZWFkT25seUZsYWcpCisgICAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZXMgfD0gUmVhZE9ubHk7CisgICAgICAgICAgICAgICAgaWYgKG1fYml0cyAmIERvbnRF
bnVtRmxhZykKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBEb250RW51bTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlczsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgYm9vbCBpc0ZhdCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRy
eTsKKyAgICAgICAgICAgIGludHB0cl90IG1fYml0czsKKyAgICAgICAgfTsKKwogICAgICAgICBT
eW1ib2xUYWJsZUVudHJ5KCkKICAgICAgICAgICAgIDogbV9iaXRzKDApCiAgICAgICAgIHsKICAg
ICAgICAgfQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4KQorICAgICAgICAg
ICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRl
eChpbmRleCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgZmFsc2UsIGZhbHNlKTsKICAgICAg
ICAgfQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4LCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgYXR0
cmlidXRlcyAmIFJlYWRPbmx5LCBhdHRyaWJ1dGVzICYgRG9udEVudW0pOwogICAgICAgICB9CiAg
ICAgICAgIAorICAgICAgICB+U3ltYm9sVGFibGVFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQorICAgICAgICAgICAgOiBt
X2JpdHMoMCkKKyAgICAgICAgeworICAgICAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgb3BlcmF0b3I9KGNvbnN0IFN5
bWJvbFRhYmxlRW50cnkmIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkob3RoZXIuaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHlTbG93KG90aGVy
KTsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICAgICAgbV9iaXRzID0gb3Ro
ZXIubV9iaXRzOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAg
IAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAhbV9iaXRzOworICAgICAgICAgICAgcmV0dXJuICFiaXRzKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBpbnQgZ2V0SW5kZXgoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbV9iaXRzID4+IEZsYWdCaXRzOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oYml0cygpID4+IEZsYWdCaXRzKTsKICAgICAgICAgfQotCisgICAgICAgIAorICAgICAgICBB
TFdBWVNfSU5MSU5FIEZhc3QgZ2V0RmFzdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBGYXN0KCp0aGlzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlT
X0lOTElORSBGYXN0IGdldEZhc3QoYm9vbCYgd2FzRmF0KSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICBGYXN0IHJlc3VsdDsKKyAgICAgICAgICAgIHdhc0ZhdCA9IGlzRmF0KCk7CisgICAg
ICAgICAgICBpZiAod2FzRmF0KQorICAgICAgICAgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBmYXRF
bnRyeSgpLT5tX2JpdHM7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0
Lm1fYml0cyA9IG1fYml0czsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KyAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdAogICAgICAg
ICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICAgICAgICAgIGlm
IChtX2JpdHMgJiBSZWFkT25seUZsYWcpCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBS
ZWFkT25seTsKLSAgICAgICAgICAgIGlmIChtX2JpdHMgJiBEb250RW51bUZsYWcpCi0gICAgICAg
ICAgICAgICAgYXR0cmlidXRlcyB8PSBEb250RW51bTsKLSAgICAgICAgICAgIHJldHVybiBhdHRy
aWJ1dGVzOworICAgICAgICAgICAgcmV0dXJuIGdldEZhc3QoKS5nZXRBdHRyaWJ1dGVzKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmlidXRl
cykKQEAgLTg3LDMwICsxOTcsMTI1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wg
aXNSZWFkT25seSgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2JpdHMg
JiBSZWFkT25seUZsYWc7CisgICAgICAgICAgICByZXR1cm4gYml0cygpICYgUmVhZE9ubHlGbGFn
OwogICAgICAgICB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgY291bGRCZVdhdGNoZWQoKTsK
KyAgICAgICAgCisgICAgICAgIC8vIE5vdGlmeSBhbiBvcHBvcnR1bml0eSB0byBjcmVhdGUgYSB3
YXRjaHBvaW50IGZvciBhIHZhcmlhYmxlLiBUaGlzIGlzCisgICAgICAgIC8vIGlkZW1wb3RlbnQg
YW5kIGZhaWwtc2lsZW50LiBJdCBpcyBpZGVtcG90ZW50IGluIHRoZSBzZW5zZSB0aGF0IGlmCisg
ICAgICAgIC8vIGEgd2F0Y2hwb2ludCBzZXQgaGFkIGFscmVhZHkgYmVlbiBjcmVhdGVkLCB0aGVu
IGFub3RoZXIgb25lIHdpbGwgbm90CisgICAgICAgIC8vIGJlIGNyZWF0ZWQuIEhlbmNlIHR3byBj
YWxscyB0byB0aGlzIG1ldGhvZCBoYXZlIHRoZSBzYW1lIGVmZmVjdCBhcworICAgICAgICAvLyBv
bmUgY2FsbC4gSXQgaXMgYWxzbyBmYWlsLXNpbGVudCwgaW4gdGhlIHNlbnNlIHRoYXQgaWYgYSB3
YXRjaHBvaW50CisgICAgICAgIC8vIHNldCBoYWQgYmVlbiBjcmVhdGVkIGFuZCBoYWQgYWxyZWFk
eSBiZWVuIGludmFsaWRhdGVkLCB0aGVuIHRoaXMgd2lsbAorICAgICAgICAvLyBqdXN0IHJldHVy
bi4gVGhpcyBtZWFucyB0aGF0IGNvdWxkQmVXYXRjaGVkKCkgbWF5IHJldHVybiBmYWxzZSBldmVu
CisgICAgICAgIC8vIGltbWVkaWF0ZWx5IGFmdGVyIGEgY2FsbCB0byBhdHRlbXB0VG9XYXRjaCgp
LgorICAgICAgICB2b2lkIGF0dGVtcHRUb1dhdGNoKCk7CisgICAgICAgIAorICAgICAgICBib29s
KiBhZGRyZXNzT2ZJc1dhdGNoZWQoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgYWRkV2F0Y2hw
b2ludChXYXRjaHBvaW50Kik7CisgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50U2V0KiB3YXRj
aHBvaW50U2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1f
d2F0Y2hwb2ludHMuZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBub3RpZnlXcml0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChMSUtF
TFkoIWlzRmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG5vdGlm
eVdyaXRlU2xvdygpOworICAgICAgICB9CisgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBSZWFkT25seUZsYWcgPSAweDE7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBEb250RW51bUZsYWcgPSAweDI7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBOb3ROdWxsRmxhZyA9IDB4NDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIEZsYWdCaXRzID0gMzsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IEZhdEZsYWcg
PSAweDE7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBSZWFkT25seUZsYWcgPSAweDI7
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBEb250RW51bUZsYWcgPSAweDQ7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBOb3ROdWxsRmxhZyA9IDB4ODsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludHB0cl90IEZsYWdCaXRzID0gNDsKKyAgICAgICAgCisgICAgICAgIGNsYXNz
IEZhdEVudHJ5IHsKKyAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgICAg
ICBwdWJsaWM6CisgICAgICAgICAgICBGYXRFbnRyeShpbnRwdHJfdCBiaXRzKQorICAgICAgICAg
ICAgICAgIDogbV9iaXRzKGJpdHMgfCBGYXRGbGFnKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpbnRwdHJfdCBtX2JpdHM7IC8vIGFsd2F5
cyBoYXMgRmF0RmxhZyBzZXQgYW5kIGV4YWN0bHkgbWF0Y2hlcyB3aGF0IHRoZSBiaXRzIHdvdWxk
IGhhdmUgYmVlbiBpZiB0aGlzIHdhc24ndCBmYXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAg
IFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3dhdGNocG9pbnRzOworICAgICAgICB9OworICAgICAg
ICAKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgY29weVNsb3coY29uc3QgU3ltYm9sVGFibGVF
bnRyeSYpOworICAgICAgICB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOworICAgICAgICAKKyAgICAg
ICAgYm9vbCBpc0ZhdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2Jp
dHMgJiBGYXRGbGFnOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBGYXRFbnRy
eSogZmF0RW50cnkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQo
KSk7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IEZhdEVudHJ5Kj4obV9i
aXRzICYgfkZhdEZsYWcpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSog
ZmF0RW50cnkoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAg
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZhdEVudHJ5Kj4obV9iaXRzICYgfkZhdEZsYWcp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogaW5mbGF0ZSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoaXNGYXQoKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhdEVudHJ5KCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbGF0ZVNsb3coKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgRmF0RW50cnkqIGluZmxhdGVTbG93KCk7CisgICAg
ICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90IGJpdHMoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoaXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmF0
RW50cnkoKS0+bV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIG1fYml0czsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBpbnRwdHJfdCYgYml0cygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYXRF
bnRyeSgpLT5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB2b2lkIGZyZWVGYXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGZyZWVGYXRFbnRyeVNsb3coKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dm9pZCBmcmVlRmF0RW50cnlTbG93KCk7CiAKICAgICAgICAgdm9pZCBwYWNrKGludCBpbmRleCwg
Ym9vbCByZWFkT25seSwgYm9vbCBkb250RW51bSkKICAgICAgICAgewotICAgICAgICAgICAgbV9i
aXRzID0gKGluZGV4IDw8IEZsYWdCaXRzKSB8IE5vdE51bGxGbGFnOworICAgICAgICAgICAgaW50
cHRyX3QmIGJpdHNSZWYgPSBiaXRzKCk7CisgICAgICAgICAgICBiaXRzUmVmID0gKHN0YXRpY19j
YXN0PGludHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpIHwgTm90TnVsbEZsYWc7CiAgICAgICAg
ICAgICBpZiAocmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgbV9iaXRzIHw9IFJlYWRPbmx5Rmxh
ZzsKKyAgICAgICAgICAgICAgICBiaXRzUmVmIHw9IFJlYWRPbmx5RmxhZzsKICAgICAgICAgICAg
IGlmIChkb250RW51bSkKLSAgICAgICAgICAgICAgICBtX2JpdHMgfD0gRG9udEVudW1GbGFnOwor
ICAgICAgICAgICAgICAgIGJpdHNSZWYgfD0gRG9udEVudW1GbGFnOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBib29sIGlzVmFsaWRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAoKGluZGV4IDw8IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gaW5k
ZXg7CisgICAgICAgICAgICByZXR1cm4gKChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8
IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KTsK
ICAgICAgICAgfQogCi0gICAgICAgIGludCBtX2JpdHM7CisgICAgICAgIGludHB0cl90IG1fYml0
czsKICAgICB9OwogCiAgICAgc3RydWN0IFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzIDogSGFz
aFRyYWl0czxTeW1ib2xUYWJsZUVudHJ5PiB7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMDk5KQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAx
Mi0wNi0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBz
aG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IGFiaWxpdHkgdG8gc2V0IHRoZSBpbmxpbmUgY2FwYWNpdHkgb2Ygc2VnbWVudGVkIHZlY3RvcnMu
CisKKyAgICAgICAgKiB3dGYvU2VnbWVudGVkVmVjdG9yLmg6CisgICAgICAgIChXVEYpOgorICAg
ICAgICAoU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpTZWdtZW50ZWRW
ZWN0b3JJdGVyYXRvcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6U2VnbWVudGVkVmVjdG9y
SXRlcmF0b3I6OlNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKToKKyAgICAgICAgKFNlZ21lbnRlZFZl
Y3Rvcik6CisKIDIwMTItMDYtMTEgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRl
QG5va2lhLmNvbT4KIAogICAgICAgICBVc2luZyBleHRyZXJuYWwgSUNVIGxpYnJhcnkgb24gY2Fz
ZSB1bnNlbnNpdGl2ZSBkcml2ZXMgd2lsbCBub3Qgd29yawpJbmRleDogU291cmNlL1dURi93dGYv
U2VnbWVudGVkVmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2VnbWVudGVk
VmVjdG9yLmgJKHJldmlzaW9uIDEyMDA5OSkKKysrIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZl
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTIgQEAKIG5hbWVzcGFjZSBXVEYg
ewogCiAgICAgLy8gQW4gaXRlcmF0b3IgZm9yIFNlZ21lbnRlZFZlY3Rvci4gSXQgc3VwcG9ydHMg
b25seSB0aGUgcHJlICsrIG9wZXJhdG9yCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVf
dCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVjdG9yOwotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBULCBzaXplX3QgU2VnbWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9y
IHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplID0gOCwgc2l6
ZV90IElubGluZUNhcGFjaXR5ID0gMzI+IGNsYXNzIFNlZ21lbnRlZFZlY3RvcjsKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplID0gOCwgc2l6ZV90IElubGluZUNh
cGFjaXR5ID0gMzI+IGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yIHsKICAgICBwcml2YXRl
OgotICAgICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPjsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5s
aW5lQ2FwYWNpdHk+OwogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0
b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4gSXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgU2Vn
bWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiBJdGVy
YXRvcjsKIAogICAgICAgICB+U2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoKSB7IH0KIApAQCAtNzUs
NyArNzUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ICE9
IG90aGVyLm1faW5kZXggfHwgbV9zZWdtZW50ICE9IG90aGVyLm1fc2VnbWVudCB8fCAmbV92ZWN0
b3IgIT0gJm90aGVyLm1fdmVjdG9yOwogICAgICAgICB9CiAKLSAgICAgICAgU2VnbWVudGVkVmVj
dG9ySXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBT
ZWdtZW50U2l6ZT4mIG90aGVyKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvciYgb3Bl
cmF0b3I9KGNvbnN0IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxp
bmVDYXBhY2l0eT4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3ZlY3RvciA9IG90
aGVyLm1fdmVjdG9yOwogICAgICAgICAgICAgbV9zZWdtZW50ID0gb3RoZXIubV9zZWdtZW50OwpA
QCAtODQsMjUgKzg0LDI4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcihTZWdtZW50ZWRWZWN0b3I8VCwg
U2VnbWVudFNpemU+JiB2ZWN0b3IsIHNpemVfdCBzZWdtZW50LCBzaXplX3QgaW5kZXgpCisgICAg
ICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6
ZSwgSW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IsIHNpemVfdCBzZWdtZW50LCBzaXplX3QgaW5kZXgp
CiAgICAgICAgICAgICA6IG1fdmVjdG9yKHZlY3RvcikKICAgICAgICAgICAgICwgbV9zZWdtZW50
KHNlZ21lbnQpCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZT4mIG1fdmVjdG9y
OworICAgICAgICBTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5
PiYgbV92ZWN0b3I7CiAgICAgICAgIHNpemVfdCBtX3NlZ21lbnQ7CiAgICAgICAgIHNpemVfdCBt
X2luZGV4OwogICAgIH07CiAKICAgICAvLyBTZWdtZW50ZWRWZWN0b3IgaXMganVzdCBsaWtlIFZl
Y3RvciwgYnV0IGl0IGRvZXNuJ3QgbW92ZSB0aGUgdmFsdWVzCiAgICAgLy8gc3RvcmVkIGluIGl0
cyBidWZmZXIgd2hlbiBpdCBncm93cy4gVGhlcmVmb3JlLCBpdCBpcyBzYWZlIHRvIGtlZXAKLSAg
ICAvLyBwb2ludGVycyBpbnRvIGEgU2VnbWVudGVkVmVjdG9yLgotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBULCBzaXplX3QgU2VnbWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT47
CisgICAgLy8gcG9pbnRlcnMgaW50byBhIFNlZ21lbnRlZFZlY3Rvci4gVGhlIGRlZmF1bHQgdHVu
aW5nIHZhbHVlcyBhcmUKKyAgICAvLyBvcHRpbWl6ZWQgZm9yIHNlZ21lbnRlZCB2ZWN0b3JzIHRo
YXQgZ2V0IGxhcmdlOyB5b3UgbWF5IHdhbnQgdG8gdXNlCisgICAgLy8gU2VnbWVudGVkVmVjdG9y
PHRoaW5neSwgMSwgMD4gaWYgeW91IGRvbid0IGV4cGVjdCBhIGxvdCBvZiBlbnRyaWVzLgorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUsIHNpemVfdCBJbmxpbmVD
YXBhY2l0eT4KKyAgICBjbGFzcyBTZWdtZW50ZWRWZWN0b3IgeworICAgICAgICBmcmllbmQgY2xh
c3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5
PjsKICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8
VCwgU2VnbWVudFNpemU+IEl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3Rv
ckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4gSXRlcmF0b3I7CiAKICAg
ICAgICAgU2VnbWVudGVkVmVjdG9yKCkKICAgICAgICAgICAgIDogbV9zaXplKDApCkBAIC0yNTAs
NyArMjUzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKICAg
ICAgICAgU2VnbWVudCBtX2lubGluZVNlZ21lbnQ7Ci0gICAgICAgIFZlY3RvcjxTZWdtZW50Kiwg
MzI+IG1fc2VnbWVudHM7CisgICAgICAgIFZlY3RvcjxTZWdtZW50KiwgSW5saW5lQ2FwYWNpdHk+
IG1fc2VnbWVudHM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>
<flag name="commit-queue"
          id="154612"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147193</attachid>
            <date>2012-06-12 16:52:36 -0700</date>
            <delta_ts>2012-06-12 18:27:47 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>globalwatch_patch_12.diff</filename>
            <type>text/plain</type>
            <size>132978</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NyBA
QAorMjAxMi0wNi0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaW1wbGVtZW50cyBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgZm9sZGluZyBieSBhbGxv
d2luZyB0aGUgb3B0aW1pemluZworICAgICAgICBjb21waWxlciB0byBzZXQgYSAid2F0Y2hwb2lu
dCIgb24gZ2xvYmFscyB0aGF0IGl0IHdpc2hlcyB0byBjb25zdGFudCBmb2xkLgorICAgICAgICBJ
ZiB0aGUgd2F0Y2hwb2ludCBmaXJlcywgdGhlbiBhbiBPU1IgZXhpdCBpcyBmb3JjZWQgYnkgb3Zl
cndyaXRpbmcgdGhlCisgICAgICAgIG1hY2hpbmUgY29kZSB0aGF0IHRoZSBvcHRpbWl6aW5nIGNv
bXBpbGVyIGdlbmVyYXRlZCB3aXRoIGEganVtcC4KKyAgICAgICAgCisgICAgICAgIEFzIHN1Y2gs
IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHF1aXRlIGEgYml0IG9mIHN0dWZmOgorICAgICAgICAKKyAg
ICAgICAgLSBKdW1wIHJlcGxhY2VtZW50IG9uIHRob3NlIGhhcmR3YXJlIHRhcmdldHMgc3VwcG9y
dGVkIGJ5IHRoZSBvcHRpbWl6aW5nCisgICAgICAgICAgSklULiBJdCBpcyBub3cgcG9zc2libGUg
dG8gcGF0Y2ggaW4gYSBqdW1wIGluc3RydWN0aW9uIG92ZXIgYW55IHJlY29yZGVkCisgICAgICAg
ICAgd2F0Y2hwb2ludCBsYWJlbC4gVGhlIGp1bXAgbXVzdCBiZSAibG9jYWwiIGluIHRoZSBzZW5z
ZSB0aGF0IGl0IG11c3QgYmUKKyAgICAgICAgICB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBsYXJn
ZXN0IGp1bXAgZGlzdGFuY2Ugc3VwcG9ydGVkIGJ5IGEgb25lCisgICAgICAgICAgaW5zdHJ1Y3Rp
b24ganVtcC4KKyAgICAgICAgICAKKyAgICAgICAgLSBXYXRjaHBvaW50U2V0cyBhbmQgV2F0Y2hw
b2ludHMuIEEgV2F0Y2hwb2ludCBpcyBhIGRvdWJseS1saW5rZWQgbGlzdCBub2RlCisgICAgICAg
ICAgdGhhdCByZWNvcmRzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIGp1bXAgbXVzdCBiZSBpbnNlcnRl
ZCBhbmQgdGhlCisgICAgICAgICAgZGVzdGluYXRpb24gdG8gd2hpY2ggaXQgc2hvdWxkIGp1bXAu
IFdhdGNocG9pbnRzIGNhbiBiZSBhZGRlZCB0byBhCisgICAgICAgICAgV2F0Y2hwb2ludFNldC4g
VGhlIFdhdGNocG9pbnRTZXQgY2FuIGJlIGZpcmVkIGFsbCBhdCBvbmNlLCB3aGljaCBwbGFudHMK
KyAgICAgICAgICBhbGwganVtcHMuIFdhdGNocG9pbnRTZXQgYWxzbyByZW1lbWJlcnMgaWYgaXQg
aGFkIGV2ZXIgYmVlbiBpbnZhbGlkYXRlZCwKKyAgICAgICAgICB3aGljaCBhbGxvd3MgZm9yIG1v
bm90b25pY2l0eTogd2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8gb3B0aW1pemUgdXNpbmcKKyAg
ICAgICAgICB3YXRjaHBvaW50cyBvbiBzb21ldGhpbmcgZm9yIHdoaWNoIHdhdGNocG9pbnRzIGhh
ZCBwcmV2aW91c2x5IGZpcmVkLiBUaGUKKyAgICAgICAgICBhY3Qgb2Ygbm90aWZ5aW5nIGEgV2F0
Y2hwb2ludFNldCBoYXMgYSB0cml2aWFsIGZhc3QgcGF0aCBpbiBjYXNlIG5vCisgICAgICAgICAg
V2F0Y2hwb2ludHMgYXJlIHJlZ2lzdGVyZWQgKG9uZS1ieXRlIGxvYWQrYnJhbmNoKS4KKyAgICAg
ICAgCisgICAgICAgIC0gU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLiBJ
dCdzIGxpa2Ugc3BlY3VsYXRpb25DaGVjaygpLAorICAgICAgICAgIGV4Y2VwdCB0aGF0IHlvdSBk
b24ndCBoYXZlIHRvIGVtaXQgYnJhbmNoZXMuIEJ1dCwgeW91IG5lZWQgdG8ga25vdyB3aGF0Cisg
ICAgICAgICAgV2F0Y2hwb2ludFNldCB0byBhZGQgdGhlIHJlc3VsdGluZyBXYXRjaHBvaW50IHRv
LiBOb3QgZXZlcnl0aGluZyB0aGF0CisgICAgICAgICAgeW91IGNvdWxkIHdyaXRlIGEgc3BlY3Vs
YXRpb25DaGVjaygpIGZvciB3aWxsIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRoYXQKKyAgICAgICAg
ICB3b3VsZCBnZXQgbm90aWZpZWQgaWYgdGhlIGNvbmRpdGlvbiB5b3Ugd2VyZSBzcGVjdWxhdGlu
ZyBhZ2FpbnN0IGJlY2FtZQorICAgICAgICAgIGludmFsaWQuCisgICAgICAgICAgCisgICAgICAg
IC0gU3ltYm9sVGFibGVFbnRyeSBub3cgaGFzIHRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgV2F0
Y2hwb2ludFNldC4gSXQgY2FuCisgICAgICAgICAgZG8gc28gd2l0aG91dCBpbmN1cnJpbmcgYW55
IHNwYWNlIG92ZXJoZWFkIGZvciB0aG9zZSBlbnRyaWVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICBo
YXZlIFdhdGNocG9pbnRTZXRzLgorICAgICAgICAgIAorICAgICAgICAtIFRoZSBieXRlY29kZSBn
ZW5lcmF0b3IgaW5mZXJzIGFsbCBnbG9iYWwgZnVuY3Rpb24gdmFyaWFibGVzIHRvIGJlCisgICAg
ICAgICAgd2F0Y2hhYmxlLCBhbmQgbWFrZXMgYWxsIHN0b3JlcyBwZXJmb3JtIHRoZSBXYXRjaHBv
aW50U2V0J3Mgd3JpdGUgY2hlY2ssCisgICAgICAgICAgYW5kIG1hcmtzIGFsbCBsb2FkcyBhcyBi
ZWluZyBwb3RlbnRpYWxseSB3YXRjaGFibGUgKGkuZS4geW91IGNhbiBjb21waWxlCisgICAgICAg
ICAgdGhlbSB0byBhIHdhdGNocG9pbnQgYW5kIGEgY29uc3RhbnQpLgorICAgICAgICAKKyAgICAg
ICAgUHV0IHRvZ2V0aGVyLCB0aGlzIGFsbG93cyBmb3IgZnVsbHkgc2xlYXp5IGlubGluaW5nIG9m
IGNhbGxzIHRvIGdsb2JhbGx5CisgICAgICAgIGRlY2xhcmVkIGZ1bmN0aW9ucy4gVGhlIGlubGlu
ZSBwcm9sb2d1ZSB3aWxsIG5vIGxvbmdlciBjb250YWluIHRoZSBsb2FkIG9mCisgICAgICAgIHRo
ZSBmdW5jdGlvbiwgb3IgYW55IGNoZWNrcyBvZiB0aGUgZnVuY3Rpb24geW91J3JlIGNhbGxpbmcu
IEkuZS4gaXQncworICAgICAgICBwcmV0dHkgbXVjaCBsaWtlIHRoZSBraW5kIG9mIGlubGluaW5n
IHlvdSB3b3VsZCBzZWUgaW4gSmF2YSBvciBDKysuCisgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUg
d2F0Y2hwb2ludGluZyBmdW5jdGlvbmFsaXR5IGlzIGJ1aWx0IHRvIGJlIGZhaXJseSBnZW5lcmFs
LAorICAgICAgICBhbmQgc2hvdWxkIGFsbG93IHNldHRpbmcgd2F0Y2hwb2ludHMgb24gYWxsIHNv
cnRzIG9mIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHNsZWF6eSBpbmxpbmluZyBtZWFucyB0aGF0IHdlIHdpbGwgbm93IHNv
bWV0aW1lcyBpbmxpbmUgaW4gY29kZSBwYXRocworICAgICAgICB0aGF0IGhhdmUgbmV2ZXIgZXhl
Y3V0ZWQuIFByZXZpb3VzbHksIHRvIGlubGluZSB3ZSB3b3VsZCBoYXZlIGVpdGhlciBoYWQKKyAg
ICAgICAgdG8gaGF2ZSBleGVjdXRlZCB0aGUgY2FsbCAodG8gcmVhZCB0aGUgY2FsbCdzIGlubGlu
ZSBjYWNoZSkgb3IgaGF2ZQorICAgICAgICBleGVjdXRlZCB0aGUgbWV0aG9kIGNoZWNrICh0byBy
ZWFkIHRoZSBtZXRob2QgY2hlY2sncyBpbmxpbmUgY2FjaGUpLiBOb3csCisgICAgICAgIHdlIG1p
Z2h0IGlubGluZSB3aGVuIHRoZSBjYWxsZWUgaXMgYSB3YXRjaGVkIGdsb2JhbCB2YXJpYWJsZS4g
VGhpcworICAgICAgICByZXZlYWxlZCBzb21lIGh1bW9yb3VzIGJ1Z3MuIEZpcnN0LCBjb25zdGFu
dCBmb2xkaW5nIGRpc2FncmVlZCB3aXRoIENGQQorICAgICAgICBvdmVyIHdoYXQga2luZHMgb2Yg
b3BlcmF0aW9ucyBjYW4gY2xvYmJlciAoZXhhbXBsZTogY29kZSBwYXRoIEEgaXMgZGVhZAorICAg
ICAgICBidXQgc3RvcmVzIGEgU3RyaW5nIGludG8gdmFyaWFibGUgWCwgYWxsIG90aGVyIGNvZGUg
cGF0aHMgc3RvcmUgMCBpbnRvCisgICAgICAgIFgsIGFuZCB0aGVuIHlvdSBkbyBDb21wYXJlRXEo
WCwgMCkgLSBDRkEgd2lsbCBzYXkgdGhhdCB0aGlzIGlzIGEgbm9uLQorICAgICAgICBjbG9iYmVy
aW5nIGNvbnN0YW50LCBidXQgY29uc3RhbnQgZm9sZGluZyB0aG91Z2h0IGl0IHdhcyBjbG9iYmVy
aW5nCisgICAgICAgIGJlY2F1c2UgaXQgc2F3IHRoZSBTdHJpbmcgcHJlZGljdGlvbikuIFNlY29u
ZCwgaW5saW5pbmcgd291bGQgY3Jhc2ggaWYKKyAgICAgICAgdGhlIGlubGluZSBjYWxsZWUgaGFk
IG5vdCBiZWVuIGNvbXBpbGVkLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggYnVncywKKyAgICAgICAg
c2luY2Ugb3RoZXJ3aXNlIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyB3b3VsZCByZXBvcnQgcmVn
cmVzc2lvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJsZXIpOgor
ICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNdjdBc3NlbWJsZXIpOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6
QVJNdjdBc3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjptYXhKdW1wUmVw
bGFjZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgor
ICAgICAgICAoTGFiZWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjp3
YXRjaHBvaW50TGFiZWwpOgorICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2Vt
YmxlckFSTSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpyZXBsYWNlV2l0aEp1bXApOgorICAg
ICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTXY3OjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWFr
ZUJyYW5jaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAg
IChNYWNyb0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlclNINC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODYpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoVGVzdDgpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAqIGFzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZBc3NlbWJs
ZXIpOgorICAgICAgICAoWDg2QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
OjpjbXBiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp0ZXN0Yl9pbSk6CisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpsYWJlbCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZv
cm1hdHRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kT1NSRXhpdCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeSk6CisgICAgICAg
IChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZFdhdGNocG9pbnQp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mV2F0Y2hwb2ludHMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OndhdGNocG9pbnQpOgorICAgICAgICAoREZHRGF0YSk6CisgICAg
ICAgICogYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpleGl0
S2luZFRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpleGl0S2luZElzQ291bnRhYmxlKToK
KyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSW5zdHJ1Y3Rpb24p
OgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5
dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cGFkT3Bjb2Rl
TmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdp
dGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0
aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1Zh
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6UHJlZml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNz
aWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5v
ZGU6OmVtaXRDb2RlU2luZ2xlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6Y2xvYmJlclN0cnVjdHVyZXMpOgorICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpkaWRDbG9iYmVyKToKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxs
SGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50
cyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
U0VQaGFzZTo6Z2xvYmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKToKKyAgICAgICAgKENTRVBo
YXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyU3RvcmVFbGltaW5h
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAg
ICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29t
cGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAg
KiBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDb3Jy
ZWN0YWJsZUp1bXBQb2ludDo6aXNTZXQpOgorICAgICAgICAoQ29ycmVjdGFibGVKdW1wUG9pbnQp
OgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGls
ZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKToKKyAgICAgICAgKE5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzUmVnaXN0ZXJQb2ludGVyKToKKyAgICAgICAgKiBkZmcvREZH
Tm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Lmg6CisgICAgICAgIChPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBy
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxs
T3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2Fs
bCk6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGpp
dC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRI
X0RFQ0wpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
Lmg6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChK
U09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQp
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAg
KiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3ltYm9s
VGFibGVFbnRyeSk6CisgICAgICAgIChGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6RmFzdDo6RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6
OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmdldEluZGV4
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNSZWFkT25seSk6Cisg
ICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmdldEF0dHJpYnV0ZXMpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc0ZhdCk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6OlN5bWJvbFRhYmxlRW50cnkpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5Ojp+U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRh
YmxlRW50cnk6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Omlz
TnVsbCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmdldEluZGV4KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVu
dHJ5Ojppc1JlYWRPbmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6d2F0Y2hw
b2ludFNldCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlKToK
KyAgICAgICAgKEZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmF0
RW50cnk6OkZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNGYXQp
OgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpmYXRFbnRyeSk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6OmluZmxhdGUpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJs
ZUVudHJ5OjpiaXRzKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVu
dHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6cGFjayk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzVmFsaWRJbmRleCk6CisKIDIwMTItMDYtMTIgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgc2hvdWxkIG5vdCBBU1NF
UlQgaWYgeW91IGhhdmUgYSBkb3VibGUgdXNlIG9mIGEgdmFyaWFibGUgdGhhdCBpcyBub3QgcmV2
ZWFsZWQgdG8gYmUgYSBkb3VibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVf
U09VUkNFUwogICAgIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiAgICAgYnl0ZWNvZGUvU2Ft
cGxpbmdUb29sLmNwcAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorICAgIGJ5
dGVjb2RlL1dhdGNocG9pbnQuY3BwCiAKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTIzMSw2ICsyMzIs
NyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3RyaW5nUmVjdXJz
aW9uQ2hlY2tlci5jcHAKICAgICBydW50aW1lL1N0cnVjdHVyZS5jcHAKICAgICBydW50aW1lL1N0
cnVjdHVyZUNoYWluLmNwcAorICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVudGlt
ZS9UaW1lb3V0Q2hlY2tlci5jcHAKICAgICBydW50aW1lL1VTdHJpbmcuY3BwCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjAxMzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtMTMzLDYgKzEzMyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9XYXRjaHBvaW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTGFiZWwuaCBcCkBAIC02MDMsNiArNjA1LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Rlcm1pbmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGlt
ZW91dENoZWNrZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lv
biAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBj
b3B5KQpAQCAtNjIsMTAgKzYyLDExIEBAIFNPVVJDRVMgKz0gXAogICAgIGJ5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9PcGNvZGUuY3BwIFwK
ICAgICBieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBcCi0gICAgYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwIFwKICAgICBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBcCiAg
ICAgYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcCBcCisgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwIFwKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgXAorICAgIGJ5dGVj
b2RlL1dhdGNocG9pbnQuY3BwIFwKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIFwKICAgICBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBcCiAgICAgaGVhcC9Db3Bp
ZWRTcGFjZS5jcHAgXApAQCAtMjM2LDYgKzIzNyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRp
bWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgXAogICAgIHJ1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uY3BwIFwKICAgICBydW50aW1lL1N0cnVjdHVyZS5jcHAgXAorICAgIHJ1bnRpbWUvU3ltYm9s
VGFibGUuY3BwIFwKICAgICBydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCiAgICAgcnVudGlt
ZS9VU3RyaW5nLmNwcCBcCiAgICAgdG9vbHMvQ29kZVByb2ZpbGUuY3BwIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
CShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTI1NCw2ICsxMjU0LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuY3BwIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFN5
bWJvbFRhYmxlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMTY4MSw2ICsxNjg1LDE0IEBACiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxWYWx1ZVByb2ZpbGUuaCIKIAkJCQk+CiAJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcV2F0
Y2hwb2ludC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXGJ5dGVjb2RlXFdhdGNocG9pbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CiAJCTwv
RmlsdGVyPgogCQk8RmlsdGVyCiAJCQlOYW1lPSJkZWJ1Z2dlciIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTM5LDYgKzEzOSw5IEBACiAJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5
bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTE5
RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDBFMTU3RjMz
MjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCAqLzsgfTsKIAkJMEY5
MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDBGMTU3RjMz
MjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlEMjUxNTg1M0NFMDAwNEE0
RTdEIC8qIFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICov
OyB9OworCQkwRjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMjMxNTg1M0NERTAw
NEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlE
MjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLzsgfTsKIAkJMEY5MzMyOUQx
NENBN0RDMzAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBD
YWxsTGlua1N0YXR1cy5jcHAgKi87IH07CiAJCTBGOTMzMjlFMTRDQTdEQzUwMDg1RjNDNiAvKiBD
YWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5MzMyOUYxNENB
N0RDQTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5
SWRTdGF0dXMuY3BwICovOyB9OwpAQCAtMzcwLDEwICszNzMsMTAgQEAKIAkJN0U0RUU3MEYwRUJC
N0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1
Y3R1cmVDaGFpbi5jcHAgKi87IH07CiAJCTdFRkYwMDY0MEVDMDVBOUEwMEFBN0M5MyAvKiBOb2Rl
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VG
RjAwNjMwRUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggKi87IH07CiAJCTg0MDQ4MDEzMTAy
MUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwODk0RDYwRkFGQkEyRDAwMDAxODY1IC8qIEpT
QVBJVmFsdWVXcmFwcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi87IH07
Ci0JCTg2MDE2MUU0MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTAwRjNBODND
MTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi87IH07Ci0JCTg2MDE2MUU1MEYzQTgz
QzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2XzY0LmggKi87IH07Ci0JCTg2MDE2MUU2MEYzQTgzQzEwMEY4NDcxMCAv
KiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTIwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmggKi87IH07CisJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg2MDE2MUU0MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTAwRjNBODNDMTAw
Rjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYwMTYxRTUwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3Jv
QXNzZW1ibGVyWDg2XzY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjAx
NjFFNjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDRGNTA1MTQzQ0UxQzIwMEIyOTVGNSAv
KiBKU0dsb2JhbFRoaXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2MDRGNTAzMTQzQ0UxQzEwMEIyOTVGNSAvKiBKU0dsb2JhbFRoaXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjBCRDgwMTE0OEVB
NkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYxMkU0
Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0
Y2hSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDAxLDExICs0MDQsMTEgQEAKIAkJODY5RDA0QUYxMTkzQjU0RDAwODAzNDc1IC8qIENh
Y2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUQwNEFFMTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFu
c2NlbmRlbnRhbEZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY5RUJDQjcwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUVCQ0I2MEU4
QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBOTBFRDAwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFy
aXRobWV0aWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZBOTBFQ0YwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMuY3BwICovOyB9Owot
CQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyB9OwotCQk4NkFERDE0NjBGRERFQTk4MDAwNkVF
QzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1i
bGVyQVJNdjcuaCAqLzsgfTsKKwkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkFERDE0NjBGRERFQTk4MDAw
NkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNz
ZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkFFNjRBODEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTUx
MzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmNwcCAqLzsgfTsKLQkJODZBRTY0
QTkxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFFNjRBNjEzNUU1RTFDMDA5NjMwMTIg
LyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLzsgfTsKLQkJODZBRTY0QUExMzVFNUUxQzAwOTYzMDEy
IC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZBRTY0QTcxMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oICovOyB9
OworCQk4NkFFNjRBOTEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE2MTM1RTVF
MUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBT
SDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFFNkM0RDEzNkExMUU0
MDA5NjMwMTIgLyogREZHRlBSSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZBRTZDNEIxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCAq
LzsgfTsKIAkJODZBRTZDNEUxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2QzRDMTM2QTExRTQw
MDk2MzAxMiAvKiBERkdHUFJJbmZvLmggKi87IH07CiAJCTg2QjU4MjY3MTREMjc5NkMwMEE5QzMw
NiAvKiBDb2RlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkI1ODIyRTE0RDIzNzNCMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwICov
OyB9OwpAQCAtNDE0LDggKzQxNyw4IEBACiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBE
RkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9OwogCQk4NkMz
NkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAv
KiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFS
TS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1
NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwotCQk4
NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAw
N0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07Ci0JCTg2QzU2OEUyMTFBMjEzRUUw
MDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxl
ci5oICovOyB9OworCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJN
SVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1
NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZDNTY4RTIxMUEyMTNFRTAw
MDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZD
QTAzMkUxMDM4RTg0NDAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQTAzMkQxMDM4RTg0NDAwMjhBNjA5IC8q
IEV4ZWN1dGFibGUuY3BwICovOyB9OwogCQk4NkNBRkVFMzEwMzVEREU2MDAyOEE2MDkgLyogRXhl
Y3V0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZDQUZFRTIxMDM1RERFNjAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2
ODIgLyogSklUSW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZDQzg1QTAwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZU1ldGhv
ZHMuaCAqLzsgfTsKQEAgLTQyMywxMyArNDI2LDEzIEBACiAJCTg2Q0M4NUM0MEVFN0E4OTQwMDI4
ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVDMzBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVy
dHlBY2Nlc3MuY3BwICovOyB9OwogCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQ0VG
REQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJN
QXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2RDNCMkJGMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwICovOyB9Owot
CQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMDEwMTU2QkRFMDAyODY1
RTcgLyogQVJNQXNzZW1ibGVyLmggKi87IH07Ci0JCTg2RDNCMkM1MTAxNTZCREUwMDI4NjVFNyAv
KiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyogQXNz
ZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oICovOyB9OwotCQk4NkQzQjJDNjEwMTU2QkRF
MDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMyMTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fz
c2VtYmxlckFSTS5oICovOyB9OwotCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZE
M0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLzsgfTsKLQkJODZEM0IzQzQx
MDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCM0MyMTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBh
dGNoQnVmZmVyLmggKi87IH07CisJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
RDNCMkMwMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkQzQjJDNTEwMTU2QkRFMDAyODY1
RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8q
IEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkQzQjJDNjEwMTU2QkRFMDAyODY1RTcgLyog
TWFjcm9Bc3NlbWJsZXJBUk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2RDNCMkMyMTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2RDNC
M0MzMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjNDMTEwMTU5RDdGMDAyODY1RTcgLyogTGlu
a0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTg2RDNCM0M0MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjNDMjEwMTU5RDdGMDAy
ODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2REI2NDY0MEY5NUM2RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxl
QWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZEQjY0NjMwRjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxv
Y2F0b3JGaXhlZFZNUG9vbC5jcHAgKi87IH07Ci0JCTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAv
KiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCAqLzsgfTsK
KwkJODZFMTE2QjEwRkU3NUFDODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFMTE2QjAwRkU3NUFDODAwQjUx
MkJDIC8qIENvZGVMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2RTg1NTM5MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTg1
NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLzsgfTsKIAkJODZFQkYy
RkYxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVCRjJGOTE1NjBGMDM2MDA4RTkyMjIg
LyogTmFtZUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJODZFQkYzMDAxNTYwRjA2QTAwOEU5MjIy
IC8qIE5hbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZFQkYyRkExNTYwRjAzNjAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5o
ICovOyB9OwpAQCAtNDc1LDggKzQ3OCw4IEBACiAJCTk1RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAv
KiBKU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NTk4OEJBOTBFNDc3QkVDMDBEMjhENEQgLyogSlNQcm9maWxlclByaXZh
dGUuY3BwICovOyB9OwogCQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTYwMDk3QTUw
RUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCAqLzsgfTsKIAkJOTYwNjI2OTYwRkI4RUMw
MjAwOTc5OEFCIC8qIEpJVFN0dWJDYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NjA2MjY5NTBGQjhFQzAyMDA5Nzk4QUIgLyogSklUU3R1YkNhbGwu
aCAqLzsgfTsKLQkJOTY4OENCMTUwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTMw
RUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5oICovOyB9OwotCQk5Njg4Q0IxNjBF
RDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNz
ZW1ibGVyLmggKi87IH07CisJCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJC
dWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2
ODhDQjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5Njg4Q0IxNjBFRDEyQjRFMDAx
RDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTY5QTA3
MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyMTBFRDFDRTMzMDBGMUY2ODEg
LyogQnl0ZWNvZGVHZW5lcmF0b3IuaCAqLzsgfTsKIAkJOTY5QTA3MkEwRUQxQ0U2OTAwRjFGNjgx
IC8qIExhYmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NjlBMDcyNzBFRDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCAqLzsgfTsKIAkJOTY5QTA3MkIw
RUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzI4MEVEMUNFNjkwMEYxRjY4MSAvKiBSZWdpc3Rl
cklELmggKi87IH07CkBAIC04MzYsNiArODM5LDkgQEAKIAkJMEY5MTlEMEExNTdFRTA5RDAwNEE0
RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEYxNTdG
MzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQyMjE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hw
b2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXRjaHBvaW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMjMxNTg1M0NERTAwNEE0
RTdEIC8qIFdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0
Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQyNzE1ODU2Nzcw
MDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3ltYm9sVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbExpbmtTdGF0dXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtT
dGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbExpbmtTdGF0dXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2
IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2V0QnlJZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ1
LDYgKzIwNTEsNyBAQAogCQkJCTdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVD
aGFpbi5jcHAgKi8sCiAJCQkJN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNo
YWluLmggKi8sCiAJCQkJQkM5MDQxNDcwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZS5oICovLAorCQkJCTBGOTE5RDI3MTU4NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xU
YWJsZS5jcHAgKi8sCiAJCQkJMTRBMzk2QTYwQ0QyOTMzMTAwQjVCNEZGIC8qIFN5bWJvbFRhYmxl
LmggKi8sCiAJCQkJOTdGNjkwM0ExMTY5REY3RjAwQTZCQjQ2IC8qIFRlcm1pbmF0b3IuaCAqLywK
IAkJCQkxNEE0MkUzRDBGNEY2MEVFMDA1OTkwOTkgLyogVGltZW91dENoZWNrZXIuY3BwICovLApA
QCAtMjI5Niw2ICsyMzAzLDggQEAKIAkJCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFs
dWVQcm9maWxlLmggKi8sCiAJCQkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVj
b3ZlcnkuaCAqLywKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lz
dGVyLmggKi8sCisJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3Bw
ICovLAorCQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTI2NzEsNiArMjY4MCw3IEBACiAJCQkJMEYxNjAxNUUxNTYxOThDOTAwQzI1ODdDIC8qIERGR0Fy
Z3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBE
MTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjkxOUQxMTE1N0YzMzJDMDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNo
cG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzI0NSw2ICszMjU1LDggQEAKIAkJCQlDMjVGOEJD
RDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOTE5RDBDMTU3RUUwOUYwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOTE5RDI1MTU4NTND
RTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOTE5RDI4
MTU4NTY3NzMwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJ
KHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
djdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDYgKzQ4MywxMiBAQCBwdWJsaWM6
CiAgICAgICAgIEp1bXBMaW5rVHlwZSBtX2xpbmtUeXBlIDogODsKICAgICAgICAgQ29uZGl0aW9u
IG1fY29uZGl0aW9uIDogMTY7CiAgICAgfTsKKyAgICAKKyAgICBBUk12N0Fzc2VtYmxlcigpOgor
ICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAgICAgICwgbV9p
bmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICB7CisgICAgfQogCiBwcml2
YXRlOgogCkBAIC0xODIwLDEwICsxODI2LDI1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZVdvcmRPcDhJbW04KE9QX05PUF9UMSwgMCk7CiAgICAgfQorICAgIAorICAg
IEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgeworICAgICAgICBBc3Nl
bWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50
KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9pbmRleE9mTGFzdFdh
dGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RX
YXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVs
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBB
c3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICB3aGls
ZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9m
VGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdu
bWVudCkKQEAgLTIwNjcsNiArMjA4OCwyOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7CiAgICAgfQorICAg
IAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0
LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAxKSk7CisgICAgICAgIEFTU0VSVCghKHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4odG8pICYgMSkpOworICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpICsgMjsKKyAgICAgICAgCisgICAg
ICAgIC8vIEVuc3VyZSB0aGF0IHdlJ3JlIG5vdCBpbiBvbmUgb2YgdGhvc2UgZXJyYXRhLXRyaWdn
ZXJpbmcgdGhpbmdpZXMuIElmIHdlIGFyZSwgdGhlbgorICAgICAgICAvLyBwcmVwZW5kIGEgbm9w
LgorICAgICAgICBib29sIHNwYW5zVHdvNEsgPSAoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KHB0cikgJiAweGZmZikgPT0gMHgwMDIpOworICAgICAgICAKKyAgICAgICAgaWYgKHNwYW5zVHdv
NEspIHsKKyAgICAgICAgICAgIHB0clstMl0gPSBPUF9OT1BfVDE7CisgICAgICAgICAgICBwdHIr
KzsKKyAgICAgICAgfQorCisgICAgICAgIGxpbmtKdW1wVDQocHRyLCB0byk7CisgICAgfQorICAg
IAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gNjsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsg
cmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KIApAQCAtMjYwNCw2ICsyNjQ4LDgg
QEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxMaW5rUmVjb3JkPiBtX2p1bXBzVG9MaW5rOwogICAg
IFZlY3RvcjxpbnQzMl90PiBtX29mZnNldHM7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBv
aW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMDEzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBM
aW5rQnVmZmVyOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKK2NsYXNzIFdhdGNocG9pbnQ7CiBuYW1l
c3BhY2UgREZHIHsKIGNsYXNzIENvcnJlY3RhYmxlSnVtcFBvaW50OwogfQpAQCAtNzAsNyArNzEs
NiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgdXNlZCBhcyBvcGVy
YW5kcyB0byBNYWNyb0Fzc2VtYmxlciBvcGVyYXRpb25zLAogICAgIC8vIGRlc2NyaWJpbmcgaW1t
ZWRpYXRlICBhbmQgbWVtb3J5IG9wZXJhbmRzIHRvIHRoZSBpbnN0cnVjdGlvbnMgdG8gYmUgcGxh
bnRlZC4KIAotCiAgICAgZW51bSBTY2FsZSB7CiAgICAgICAgIFRpbWVzT25lLAogICAgICAgICBU
aW1lc1R3bywKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKdW1wOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogICAg
ICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFdhdGNo
cG9pbnQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIExhYmVsKCkKQEAgLTU1OSw2ICs1NjAsMTMg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAgfQogICAgIAorICAg
IExhYmVsIHdhdGNocG9pbnRMYWJlbCgpCisgICAgeworICAgICAgICBMYWJlbCByZXN1bHQ7Cisg
ICAgICAgIHJlc3VsdC5tX2xhYmVsID0gbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRjaHBvaW50KCk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIExhYmVsIGFsaWduKCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFsaWduKDE2KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAkocmV2aXNpb24g
MTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZm
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBFTkFCTEUoQVNTRU1C
TEVSKQogCisjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkpJVENv
bXBpbGF0aW9uRWZmb3J0LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAi
c3RkaW50LmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8aml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAko
cmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEwLDYgKzEwMTAsMTcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCop
KCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByb3RlY3RlZDoK
ICAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29y
a2luZyBjb3B5KQpAQCAtNTQ1LDYgKzU0NSwxNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwg
aW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0
cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEFybUFkZHJlc3MgYWRkcmVzcykKICAgICB7CkBA
IC0xMTg2LDYgKzExOTcsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
bm9wKCk7CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2Rl
TG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5h
dGlvbikKKyAgICB7CisgICAgICAgIEFSTXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5z
dHJ1Y3Rpb25TdGFydC5kYXRhQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5kYXRhQWRkcmVzcygpKTsK
KyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKTsKKyAgICB9CiAKICAgICAvLyBGb3J3YXJkcyAvIGV4dGVybmFsIGNvbnRyb2wgZmxv
dyBvcGVyYXRpb25zOgogICAgIC8vCkBAIC0xNjc5LDEyICsxNzAwLDE0IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBBTFdBWVNfSU5MSU5FIEp1bXAganVtcCgpCiAgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sYWJlbCgpOyAvLyBGb3JjZSBub3AtcGFkZGluZyBpZiB3ZSdyZSBpbiB0aGUg
bWlkZGxlIG9mIGEgd2F0Y2hwb2ludC4KICAgICAgICAgbW92ZUZpeGVkV2lkdGhFbmNvZGluZyhU
cnVzdGVkSW1tMzIoMCksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKSwgbV9tYWtlSnVtcFBhdGNoYWJsZSA/IEFS
TXY3QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb25GaXhlZFNpemUgOiBBUk12N0Fzc2VtYmxlcjo6
SnVtcE5vQ29uZGl0aW9uKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEp1bXAgbWFrZUJy
YW5jaChBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQpCiAgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sYWJlbCgpOyAvLyBGb3JjZSBub3AtcGFkZGluZyBpZiB3ZSdyZSBpbiB0aGUgbWlk
ZGxlIG9mIGEgd2F0Y2hwb2ludC4KICAgICAgICAgbV9hc3NlbWJsZXIuaXQoY29uZCwgdHJ1ZSwg
dHJ1ZSk7CiAgICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMyKDApLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuYngoZGF0
YVRlbXBSZWdpc3RlciksIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBBUk12N0Fzc2VtYmxlcjo6SnVt
cENvbmRpdGlvbkZpeGVkU2l6ZSA6IEFSTXY3QXNzZW1ibGVyOjpKdW1wQ29uZGl0aW9uLCBjb25k
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlck1JUFMuaAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2
OCw2ICsxODY4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihNSVBTQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxs
LmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKwogcHJpdmF0ZToKICAgICAvLyBJZiBtX2ZpeGVkV2lkdGggaXMgdHJ1ZSwgd2Ugd2ls
bCBnZW5lcmF0ZSBhIGZpeGVkIG51bWJlciBvZiBpbnN0cnVjdGlvbnMuCiAgICAgLy8gT3RoZXJ3
aXNlLCB3ZSBjYW4gZW1pdCBhbnkgbnVtYmVyIG9mIGluc3RydWN0aW9ucy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJ
KHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJTSDQuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3MSw2ICsxOTcxLDE3IEBAIHZv
aWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHMKICAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihTSDRBc3NlbWJsZXI6OnJlYWRD
YWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENv
ZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxh
Y2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU0g0QXNzZW1ibGVyOjpDb25k
aXRpb24gU0g0Q29uZGl0aW9uKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Ni5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRG91YmxlOwog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZURvdWJsZTsKICAgICB1c2lu
ZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydEludDMyVG9Eb3VibGU7CisgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4OwogCiAgICAgdm9pZCBhZGQz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKQEAgLTE2NSw2ICsxNjYsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Zs
X2kzMnIoaW5pdGlhbFZhbHVlLmFzSW50cHRyKCksIGRlc3QpOwogICAgICAgICByZXR1cm4gRGF0
YUxhYmVsUHRyKHRoaXMpOwogICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1h
c2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1hc2subV92YWx1
ZSA+PSAtMTI4ICYmIG1hc2subV92YWx1ZSA8PSAyNTUpOworICAgICAgICBpZiAobWFzay5tX3Zh
bHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wYl9pbSgwLCBhZGRyZXNzLm1f
cHRyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaW0obWFz
ay5tX3ZhbHVlLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KIAogICAgIEp1bXAgYnJhbmNoUHRy
V2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRh
TGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRy
dXN0ZWRJbW1QdHIoMCkpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24g
MTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDA4LDYgKzE0MDgsMTYgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxv
Y2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3Rp
bmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4
NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KKwogcHJvdGVjdGVk
OgogICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTIwMTM2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01MTMsNiArNTEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246Om1vdmUoYWRkciwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBCYXNlSW5k
ZXgoc2NyYXRjaFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIFRpbWVzT25lKSwgbWFzayk7CiAgICAg
fQorICAgIAorICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29s
dXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkp
CisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJl
Z2lzdGVyKSwgbWFzayk7CisgICAgfQogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGlu
Z1BvaW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIC8vIFNlZSBjb21tZW50IG9uIE1hY3JvQXNz
ZW1ibGVyQVJNdjc6OnN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24g
MTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjQ3LDYgKzI0Nyw4IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAKICAg
ICBYODZBc3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9N
SU4pCisgICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAg
ICB7CiAgICAgfQogCkBAIC03OTgsNiArODAwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQ01QLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
ICAgICB9CisgICAgCisjaWYgQ1BVKFg4NikKKyAgICB2b2lkIGNtcGJfaW0oaW50IGltbSwgY29u
c3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisjZW5kaWYKIAogICAgIHZvaWQgY21wbF9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKICAgICB7CkBAIC05NDgsNiArOTU4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KIAorI2lmIENQVShYODYpCisgICAgdm9pZCB0ZXN0
Yl9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYkliLCBHUk9VUDNfT1BfVEVTVCwgYWRkcik7CisgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZv
aWQgdGVzdGxfaTMybShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKQEAgLTE3MDIsMTAgKzE3MjAsMjUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fZm9ybWF0dGVyLmNvZGVTaXplKCk7CiAgICAgfQorICAgIAorICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgeworICAgICAgICBBc3NlbWJsZXJMYWJl
bCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KQorICAgICAg
ICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQg
PSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50
ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBBc3NlbWJsZXJM
YWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICB3aGlsZSAoVU5MSUtF
TFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFz
dFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQpAQCAtMTc4
Nyw2ICsxODIwLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPih3aGVyZSlbLTFdOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIGlu
dDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsK
KyAgICAgICAgaW50OF90KiBkc3RQdHIgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KHRvKTsK
KyAgICAgICAgaW50cHRyX3QgZGlzdGFuY2UgPSAoaW50cHRyX3QpKGRzdFB0ciAtIChwdHIgKyA1
KSk7CisgICAgICAgIHB0clswXSA9IE9QX0pNUF9yZWwzMjsKKyAgICAgICAgKnJlaW50ZXJwcmV0
X2Nhc3Q8aW50MzJfdCo+KHB0ciArIDEpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGlzdGFuY2Up
OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNp
emUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDU7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB1
bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVsIGNhbGwpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY2FsbC5pc1NldCgpKTsKQEAgLTIzMzksNiArMjM4Niw4IEBAIHByaXZh
dGU6CiAKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVyOwogICAgIH0gbV9mb3JtYXR0
ZXI7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZU
YWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEy
MDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MjgsMTIgKzkyOCwyOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6IHsK
KyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytpdCktPnUucmVnaXN0ZXJQ
b2ludGVyOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2dsb2JhbF92YXJfd2F0Y2hh
YmxlXHQgJXMsIGclZCglcClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciks
IHJlZ2lzdGVyUG9pbnRlcik7CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgaXQrKzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2Jh
bF92YXI6IHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2lu
dGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dsb2JhbF92
YXJcdCBnJWQoJXApLCAlc1xuIiwgbG9jYXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0
ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6IHsKKyAgICAgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsK
KyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gcHV0X2dsb2JhbF92YXJfY2hlY2tcdCBnJWQoJXApLCAlc1xuIiwgbG9jYXRp
b24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCBy
ZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGl0Kys7CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2U6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpAQCAtMTMwNiw3ICsxMzIyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRl
KiBleGVjLCBjbwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIG9wX2NhbGxfcHV0X3Jlc3VsdFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBj
YWxsX3B1dF9yZXN1bHRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCkpOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShy
ZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJVU3RyaW5n
LmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFsaXplci5oIgogI2luY2x1ZGUgIlZhbHVl
UHJvZmlsZS5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgpAQCAtMjczLDEwICsyNzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2
b2lkIGFwcGVuZE9TUkV4aXQoY29uc3QgREZHOjpPU1JFeGl0JiBvc3JFeGl0KQorICAgICAgICB1
bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkKICAgICAg
ICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAgICAg
ICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPm9zckV4aXQuc2l6ZSgpOwogICAgICAgICAg
ICAgbV9kZmdEYXRhLT5vc3JFeGl0LmFwcGVuZChvc3JFeGl0KTsKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERGRzo6T1NSRXhpdCYgbGFz
dE9TUkV4aXQoKQpAQCAtMjg0LDEwICsyODcsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gbV9kZmdEYXRhLT5vc3JFeGl0Lmxhc3QoKTsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgdm9pZCBhcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KGNvbnN0IERGRzo6U3Bl
Y3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgICAgIHVuc2lnbmVkIGFwcGVuZFNwZWN1
bGF0aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNvdmVyeSkK
ICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAg
ICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVjb3Zlcnku
c2l6ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LmFwcGVu
ZChyZWNvdmVyeSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB1bnNpZ25lZCBhcHBlbmRXYXRjaHBvaW50KGNvbnN0IFdhdGNocG9pbnQm
IHdhdGNocG9pbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vz
c2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT53YXRjaHBv
aW50cy5zaXplKCk7CisgICAgICAgICAgICBtX2RmZ0RhdGEtPndhdGNocG9pbnRzLmFwcGVuZCh3
YXRjaHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAtMzA0LDYgKzMxNywx
MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPnNwZWN1
bGF0aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZldhdGNocG9pbnRzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFt
X2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
bV9kZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIERGRzo6T1NSRXhpdCYgb3NyRXhpdCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdFtpbmRleF07CkBAIC0zMTQsNiArMzM0
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+c3Bl
Y3VsYXRpb25SZWNvdmVyeVtpbmRleF07CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIFdh
dGNocG9pbnQmIHdhdGNocG9pbnQodW5zaWduZWQgaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRzW2luZGV4XTsKKyAgICAgICAgfQorICAg
ICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNlKEpTQ2VsbCogdGFyZ2V0KQog
ICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTEy
MzgsNiArMTI2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgVmVjdG9yPERGRzo6
T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKICAgICAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6
Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgICAgICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlv
blJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OworICAgICAgICAgICAgU2VnbWVudGVkVmVj
dG9yPFdhdGNocG9pbnQsIDEsIDA+IHdhdGNocG9pbnRzOwogICAgICAgICAgICAgVmVjdG9yPFdl
YWtSZWZlcmVuY2VUcmFuc2l0aW9uPiB0cmFuc2l0aW9uczsKICAgICAgICAgICAgIFZlY3RvcjxX
cml0ZUJhcnJpZXI8SlNDZWxsPiA+IHdlYWtSZWZlcmVuY2VzOwogICAgICAgICAgICAgYm9vbCBt
YXlCZUV4ZWN1dGluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdF
eGl0UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsNyBAQCBlbnVtIEV4aXRLaW5kIHsKICAgICBJbmFkZXF1YXRlQ292ZXJhZ2UsIC8vIFdlIGV4
aXRlZCBiZWNhdXNlIHdlIGVuZGVkIHVwIGluIGNvZGUgdGhhdCBkaWRuJ3QgaGF2ZSBwcm9maWxp
bmcgY292ZXJhZ2UuCiAgICAgQXJndW1lbnRzRXNjYXBlZCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ug
YXJndW1lbnRzIGVzY2FwZWQgYnV0IHdlIGRpZG4ndCBleHBlY3QgdGhlbSB0by4KICAgICBVbmNv
dW50YWJsZSwgLy8gV2UgZXhpdGVkIGZvciBub25lIG9mIHRoZSBhYm92ZSByZWFzb25zLCBhbmQg
d2Ugc2hvdWxkIG5vdCBjb3VudCBpdC4gTW9zdCB1c2VzIG9mIHRoaXMgc2hvdWxkIGJlIHZpZXdl
ZCBhcyBhIEZJWE1FLgorICAgIFVuY291bnRhYmxlV2F0Y2hwb2ludCAvLyBXZSBleGl0ZWQgYmVj
YXVzZSBvZiBhIHdhdGNocG9pbnQsIHdoaWNoIGlzbid0IGNvdW50ZWQgYmVjYXVzZSB3YXRjaHBv
aW50cyBkbyB0cmFja2luZyB0aGVtc2VsdmVzLgogfTsKIAogaW5saW5lIGNvbnN0IGNoYXIqIGV4
aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2luZCkKQEAgLTU4LDYgKzU5LDEyIEBAIGlubGluZSBj
b25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXQKICAgICAgICAgcmV0dXJuICJOZWdhdGl2
ZVplcm8iOwogICAgIGNhc2UgSW5hZGVxdWF0ZUNvdmVyYWdlOgogICAgICAgICByZXR1cm4gIklu
YWRlcXVhdGVDb3ZlcmFnZSI7CisgICAgY2FzZSBBcmd1bWVudHNFc2NhcGVkOgorICAgICAgICBy
ZXR1cm4gIkFyZ3VtZW50c0VzY2FwZWQiOworICAgIGNhc2UgVW5jb3VudGFibGU6CisgICAgICAg
IHJldHVybiAiVW5jb3VudGFibGUiOworICAgIGNhc2UgVW5jb3VudGFibGVXYXRjaHBvaW50Ogor
ICAgICAgICByZXR1cm4gIlVuY291bnRhYmxlV2F0Y2hwb2ludCI7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuICJVbmtub3duIjsKICAgICB9CkBAIC03MCw2ICs3Nyw3IEBAIGlubGluZSBi
b29sIGV4aXRLaW5kSXNDb3VudGFibGUoRXhpdEtpbmQKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgY2FzZSBCYWRUeXBlOgogICAgIGNhc2UgVW5jb3VudGFibGU6CisgICAgY2Fz
ZSBVbmNvdW50YWJsZVdhdGNocG9pbnQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTkz
LDYgKzE5Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogICAgICAgICAKICAgICAg
ICAgSW5zdHJ1Y3Rpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpIHsg
dS5yZWdpc3RlclBvaW50ZXIgPSByZWdpc3RlclBvaW50ZXI7IH0KKyAgICAgICAgCisgICAgICAg
IEluc3RydWN0aW9uKGJvb2wqIHByZWRpY2F0ZVBvaW50ZXIpIHsgdS5wcmVkaWNhdGVQb2ludGVy
ID0gcHJlZGljYXRlUG9pbnRlcjsgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIE9w
Y29kZSBvcGNvZGU7CkBAIC0yMDUsNiArMjA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvOwogICAgICAgICAgICAgVmFsdWVQ
cm9maWxlKiBwcm9maWxlOwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKKyAgICAgICAgICAg
IGJvb2wqIHByZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlz
aW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBtYWNybyhvcF9nZXRfc2NvcGVkX3ZhciwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBc
CiAgICAgICAgIG1hY3JvKG9wX3B1dF9zY29wZWRfdmFyLCA0KSBcCiAgICAgICAgIG1hY3JvKG9w
X2dldF9nbG9iYWxfdmFyLCA0KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAg
bWFjcm8ob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmls
aW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2dsb2JhbF92YXIsIDMpIFwKKyAgICAgICAg
bWFjcm8ob3BfcHV0X2dsb2JhbF92YXJfY2hlY2ssIDUpIFwKICAgICAgICAgbWFjcm8ob3BfcmVz
b2x2ZV9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8o
b3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cywgMykgXAogICAgICAgICBtYWNybyhvcF9yZXNvbHZl
X3dpdGhfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw2ICsx
NDgsNyBAQCB2b2lkIFJlc29sdmVSZXN1bHQ6OmNoZWNrVmFsaWRpdHkoKQogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBJbmRleGVkR2xvYmFsOgogICAgIGNhc2UgUmVhZE9ubHlJbmRleGVkR2xv
YmFsOgorICAgIGNhc2UgV2F0Y2hlZEluZGV4ZWRHbG9iYWw6CiAgICAgY2FzZSBEeW5hbWljSW5k
ZXhlZEdsb2JhbDoKICAgICBjYXNlIER5bmFtaWNSZWFkT25seUluZGV4ZWRHbG9iYWw6CiAgICAg
ICAgIEFTU0VSVChtX2luZGV4ICE9IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSk7CkBAIC0yMTYsMTMg
KzIxNywxOSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoY29uc3QgSWRlCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQpCitpbnQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZEdsb2JhbFZhcigKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQ29uc3Rh
bnRNb2RlIGNvbnN0YW50TW9kZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZnVuY3Rpb25Nb2RlKTsKICAgICBpbnQgaW5kZXggPSBzeW1ib2xUYWJsZSgp
LnNpemUoKTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0YW50
ID8gUmVhZE9ubHkgOiAwKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCAo
Y29uc3RhbnRNb2RlID09IElzQ29uc3RhbnQpID8gUmVhZE9ubHkgOiAwKTsKKyAgICBpZiAoZnVu
Y3Rpb25Nb2RlID09IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUpCisgICAgICAgIG5ld0VudHJ5LmF0
dGVtcHRUb1dhdGNoKCk7CiAgICAgU3ltYm9sVGFibGU6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1i
b2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKICAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQogICAgICAgICBpbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldElu
ZGV4KCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5ub3RpZnlX
cml0ZSgpOwogICAgIHJldHVybiBpbmRleDsKIH0KIApAQCAtMjg5LDE3ICsyOTYsMjMgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFBybwogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmdW5jdGlvblN0YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEZ1bmN0aW9u
Qm9keU5vZGUqIGZ1bmN0aW9uID0gZnVuY3Rpb25TdGFja1tpXTsKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24tPmlkZW50KCkpOyAvLyBO
ZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4aXN0aW5nIHByb3BlcnRpZXMuCi0K
KyAgICAgICAgYm9vbCBwcm9wZXJ0eURpZEV4aXN0ID0gCisgICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPnJlbW92ZURpcmVjdCgqbV9nbG9iYWxEYXRhLCBmdW5jdGlvbi0+aWRlbnQoKSk7IC8vIE5l
d2x5IGRlY2xhcmVkIGZ1bmN0aW9ucyBvdmVyd3JpdGUgZXhpc3RpbmcgcHJvcGVydGllcy4KKyAg
ICAgICAgCiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywg
bWFrZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uKSwgc2NvcGVDaGFpbik7Ci0gICAgICAgIGludCBp
bmRleCA9IGFkZEdsb2JhbFZhcihmdW5jdGlvbi0+aWRlbnQoKSwgZmFsc2UpOworICAgICAgICBp
bnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoCisgICAgICAgICAgICBmdW5jdGlvbi0+aWRlbnQoKSwg
SXNWYXJpYWJsZSwKKyAgICAgICAgICAgICFwcm9wZXJ0eURpZEV4aXN0ID8gSXNGdW5jdGlvblRv
U3BlY2lhbGl6ZSA6IE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlKTsKICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5yZWdpc3RlckF0KGluZGV4KS5zZXQoKm1fZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YXJTdGFj
ay5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5oYXNQcm9wZXJ0eShl
eGVjLCAqdmFyU3RhY2tbaV0uZmlyc3QpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGFkZEdsb2JhbFZhcigqdmFyU3RhY2tbaV0uZmlyc3QsIHZhclN0YWNrW2ldLnNlY29uZCAmIERl
Y2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KTsKKyAgICAgICAgYWRkR2xvYmFsVmFyKAorICAg
ICAgICAgICAgKnZhclN0YWNrW2ldLmZpcnN0LAorICAgICAgICAgICAgKHZhclN0YWNrW2ldLnNl
Y29uZCAmIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KSA/IElzQ29uc3RhbnQgOiBJc1Zh
cmlhYmxlLAorICAgICAgICAgICAgTm90RnVuY3Rpb25Pck5vdFNwZWNpYWxpemFibGUpOwogICAg
IH0KIH0KIApAQCAtMTIwMiw3ICsxMjE1LDkgQEAgUmVzb2x2ZVJlc3VsdCBCeXRlY29kZUdlbmVy
YXRvcjo6cmVzb2x2ZQogICAgICAgICAgICAgaWYgKCsraXRlciA9PSBlbmQpIHsKICAgICAgICAg
ICAgICAgICBpZiAoZmxhZ3MgJiBSZXNvbHZlUmVzdWx0OjpEeW5hbWljRmxhZykKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmR5bmFtaWNJbmRleGVkR2xvYmFsUmVz
b2x2ZShlbnRyeS5nZXRJbmRleCgpLCBkZXB0aCwgY3VycmVudFNjb3BlLCBmbGFncyk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmluZGV4ZWRHbG9iYWxSZXNvbHZlKGVu
dHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29wZSwgZmxhZ3MpOworICAgICAgICAgICAgICAgIHJl
dHVybiBSZXNvbHZlUmVzdWx0OjppbmRleGVkR2xvYmFsUmVzb2x2ZSgKKyAgICAgICAgICAgICAg
ICAgICAgZW50cnkuZ2V0SW5kZXgoKSwgY3VycmVudFNjb3BlLAorICAgICAgICAgICAgICAgICAg
ICBmbGFncyB8IChlbnRyeS5jb3VsZEJlV2F0Y2hlZCgpID8gUmVzb2x2ZVJlc3VsdDo6V2F0Y2hl
ZEZsYWcgOiAwKSk7CiAgICAgICAgICAgICB9CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAg
ICAgICAgaWYgKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNBY3Rp
dmF0aW9uKj4oY3VycmVudFZhcmlhYmxlT2JqZWN0KSkKQEAgLTEyOTYsNyArMTMxMSw3IEBAIGJv
b2wgQnl0ZWNvZGVHZW5lcmF0b3I6OnNob3VsZEF2b2lkUmVzb2wKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVS
ZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewogICAg
IGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpCi0gICAgICAgIHJldHVybiBlbWl0R2V0U3Rh
dGljVmFyKGRzdCwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIHJldHVybiBlbWl0R2V0U3RhdGlj
VmFyKGRzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgIAogICAgIGlmIChyZXNvbHZl
UmVzdWx0LmlzR2xvYmFsKCkgJiYgIXNob3VsZEF2b2lkUmVzb2x2ZUdsb2JhbCgpKSB7CiAjaWYg
RU5BQkxFKEpJVCkKQEAgLTEzNzksNyArMTM5NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UmVzb2wKIAogICAgICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygp
KSB7CiAgICAgICAgICAgICAvLyBEaXJlY3RseSBpbmRleCB0aGUgcHJvcGVydHkgbG9va3VwIGFj
cm9zcyBtdWx0aXBsZSBzY29wZXMuCi0gICAgICAgICAgICBlbWl0R2V0U3RhdGljVmFyKHByb3BE
c3QsIHJlc29sdmVSZXN1bHQpOworICAgICAgICAgICAgZW1pdEdldFN0YXRpY1Zhcihwcm9wRHN0
LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICByZXR1cm4gYmFzZURzdDsK
ICAgICAgICAgfQogCkBAIC0xNDE4LDcgKzE0MzMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sCiB7CiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkg
ewogICAgICAgICBlbWl0TG9hZChiYXNlRHN0LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZW1p
dEdldFN0YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgZW1pdEdldFN0
YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiAgICAgICAgIHJldHVy
biBiYXNlRHN0OwogICAgIH0KIApAQCAtMTQzNiw3ICsxNDUxLDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIHJldHVybiBlbWl0UmVzb2x2ZShwcm9wRHN0
LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJl
c3VsdCYgcmVzb2x2ZVJlc3VsdCkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2
ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSAwOwogCkBAIC0xNDcyLDEzICsxNDg3LDI0IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0U3QKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHByb2ZpbGUpOwogICAgICAgICByZXR1cm4gZHN0OwogCisgICAgY2FzZSBSZXNvbHZlUmVzdWx0
OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAgLy8gU2tpcCB0aGUgcGVlcGhvbGUgZm9y
IG5vdy4gSXQncyBub3QgY2xlYXIgdGhhdCBpdCdzIHByb2ZpdGFibGUgZ2l2ZW4KKyAgICAgICAg
Ly8gdGhlIERGRydzIGNhcGFiaWxpdGllcywgYW5kIHRoZSBmYWN0IHRoYXQgaWYgaXQncyB3YXRj
aGFibGUgdGhlbiB3ZQorICAgICAgICAvLyBkb24ndCBleHBlY3QgdG8gc2VlIGFueSBwdXRfZ2xv
YmFsX3ZhcidzIGFueXdheS4KKyAgICAgICAgcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShv
cF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVS
ZXN1bHQucmVnaXN0ZXJQb2ludGVyKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOyAvLyBGb3IgdGhlIGJlbmVmaXQgb2YgdGhlIERGRy4K
KyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOworICAgICAgICByZXR1cm4g
ZHN0OworCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgUmVn
aXN0ZXJJRCogdmFsdWUpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFN0
YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyLCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKHJlc29s
dmVSZXN1bHQudHlwZSgpKSB7CiAgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpSZWdpc3RlcjoKQEAg
LTE0OTksNiArMTUyNSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dFN0CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVy
UG9pbnRlcigpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgp
KTsKICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAKKyAgICBjYXNlIFJlc29sdmVSZXN1
bHQ6OldhdGNoZWRJbmRleGVkR2xvYmFsOgorICAgICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9nbG9i
YWxfdmFyX2NoZWNrKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVSZXN1
bHQucmVnaXN0ZXJQb2ludGVyKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFs
dWUtPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoanNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4ocmVzb2x2ZVJlc3VsdC5nbG9iYWxPYmplY3QoKSktPnN5bWJvbFRhYmxlKCku
Z2V0KGlkZW50aWZpZXIuaW1wbCgpKS5hZGRyZXNzT2ZJc1dhdGNoZWQoKSk7CisgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChpZGVudGlmaWVyKSk7CisgICAgICAgIHJl
dHVybiB2YWx1ZTsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsNyArMTExLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAvLyBUaGUgcmVz
b2x2ZWQgYmluZGluZyBpcyBpbW11dGFibGUuCiAgICAgICAgICAgICBSZWFkT25seUZsYWcgPSAw
eDIwLAogICAgICAgICAgICAgLy8gVGhlIGJhc2Ugb2JqZWN0IGlzIHRoZSBnbG9iYWwgb2JqZWN0
LgotICAgICAgICAgICAgR2xvYmFsRmxhZyA9IDB4NDAKKyAgICAgICAgICAgIEdsb2JhbEZsYWcg
PSAweDQwLAorICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5IGlzIGJlaW5nIHdhdGNoZWQsIHNv
IHdyaXRlcyBzaG91bGQgYmUgc3BlY2lhbC4KKyAgICAgICAgICAgIFdhdGNoZWRGbGFnID0gMHg4
MAogICAgICAgICB9OwogICAgICAgICBlbnVtIFR5cGUgewogICAgICAgICAgICAgLy8gVGhlIHBy
b3BlcnR5IGlzIGxvY2FsLCBhbmQgc3RvcmVkIGluIGEgcmVnaXN0ZXIuCkBAIC0xMzEsNiArMTMz
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAvLyBiaW5kaW5nIGNyZWF0ZWQgd2l0
aCAidmFyIiBhdCB0aGUgdG9wIGxldmVsLiBBdCBydW50aW1lIHdlJ2xsCiAgICAgICAgICAgICAv
LyBqdXN0IGluZGV4IGludG8gdGhlIGdsb2JhbCBvYmplY3QuCiAgICAgICAgICAgICBJbmRleGVk
R2xvYmFsID0gSW5kZXhlZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZywKKyAgICAgICAg
ICAgIC8vIExpa2UgSW5kZXhlZEdsb2JhbCwgYnV0IHRoZSBwcm9wZXJ0eSBpcyBiZWluZyB3YXRj
aGVkLgorICAgICAgICAgICAgV2F0Y2hlZEluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxhZyB8IEds
b2JhbEZsYWcgfCBTdGF0aWNGbGFnIHwgV2F0Y2hlZEZsYWcsCiAgICAgICAgICAgICAvLyBMaWtl
IEluZGV4ZWRHbG9iYWwsIGJ1dCB0aGUgcHJvcGVydHkgaXMgYWxzbyByZWFkLW9ubHksIGxpa2Ug
TmFOLAogICAgICAgICAgICAgLy8gSW5maW5pdHksIG9yIHVuZGVmaW5lZC4KICAgICAgICAgICAg
IFJlYWRPbmx5SW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgUmVhZE9ubHlGbGFnIHwgR2xv
YmFsRmxhZyB8IFN0YXRpY0ZsYWcsCkBAIC00NDEsOCArNDQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUeXBlT2YoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzcmMpIHsgcmV0dXJuIGVtaXRVbmFyeU9wKG9wX3R5cGVvZiwgZHN0LCBzcmMpOyB9CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiBiYXNlKSB7IHJldHVybiBlbWl0QmluYXJ5T3Aob3BfaW4sIGRz
dCwgcHJvcGVydHksIGJhc2UsIE9wZXJhbmRUeXBlcygpKTsgfQogCi0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRHZXRTdGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0
Jik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJl
c3VsdCYsIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFN0
YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVu
dGlmaWVyJik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVz
b2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImLCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNv
bHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0UmVzb2x2ZUJhc2UoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0
JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwpAQCAtNTc0LDcgKzU3OCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgLy8gUmV0dXJucyB0aGUgaW5kZXggb2Yg
dGhlIGFkZGVkIHZhci4KLSAgICAgICAgaW50IGFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVy
JiwgYm9vbCBpc0NvbnN0YW50KTsKKyAgICAgICAgZW51bSBDb25zdGFudE1vZGUgeyBJc0NvbnN0
YW50LCBJc1ZhcmlhYmxlIH07CisgICAgICAgIGVudW0gRnVuY3Rpb25Nb2RlIHsgSXNGdW5jdGlv
blRvU3BlY2lhbGl6ZSwgTm90RnVuY3Rpb25Pck5vdFNwZWNpYWxpemFibGUgfTsKKyAgICAgICAg
aW50IGFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RhbnRNb2RlIGNvbnN0YW50
TW9kZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSk7CiAKICAgICAgICAgdm9pZCBhZGRQYXJh
bWV0ZXIoY29uc3QgSWRlbnRpZmllciYsIGludCBwYXJhbWV0ZXJJbmRleCk7CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzAsNyArNDMw
LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaQogICAgIGlmIChy
ZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1
bmMgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
U3RhdGljVmFyKGZ1bmMuZ2V0KCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpz
VW5kZWZpbmVkKCkpOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0KCks
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKICAg
ICB9CkBAIC02MTgsNyArNjE4LDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeFJlc29sdmVOb2RlOjpl
bWl0Qnl0ZQogICAgIH0KIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkgJiYgIXJl
c29sdmVSZXN1bHQuaXNSZWFkT25seSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmVzb2x2
ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlOwogICAgICAg
ICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgICAgIG9s
ZFZhbHVlID0gMDsKQEAgLTYyNiw3ICs2MjYsNyBAQCBSZWdpc3RlcklEKiBQb3N0Zml4UmVzb2x2
ZU5vZGU6OmVtaXRCeXRlCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBvbGRWYWx1ZSA9
IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgICAgIH0KLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgdmFsdWUuZ2V0KCkpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1
ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKICAgICB9CiAgICAgCkBAIC04MDMs
OSArODAzLDkgQEAgUmVnaXN0ZXJJRCogUHJlZml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlYwogICAg
IH0KIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkgJiYgIXJlc29sdmVSZXN1bHQu
aXNSZWFkT25seSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wRHN0ID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBy
ZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5l
cmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJl
c29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBlbWl0UHJlSW5jT3JEZWMoZ2VuZXJhdG9y
LCBwcm9wRHN0LmdldCgpLCBtX29wZXJhdG9yKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRT
dGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgcHJvcERzdC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIG1faWRlbnQsIHByb3BEc3QuZ2V0KCkp
OwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0
LCBwcm9wRHN0LmdldCgpKTsKICAgICB9CiAKQEAgLTEyMjYsOSArMTIyNiw5IEBAIFJlZ2lzdGVy
SUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIKICAgICB9CiAKICAgICBpZiAocmVzb2x2
ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFy
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5n
ZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25v
d25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCByZXN1bHQpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCByZXN1bHQpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTI1Niw3ICsxMjU2LDcgQEAgUmVn
aXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlYwogICAgICAgICBpZiAoZHN0ID09
IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgICAgICBkc3QgPSAwOwogICAgICAg
ICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCB2YWx1ZSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIG1faWRl
bnQsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIApAQCAtMTM2MSw3ICsx
MzYxLDcgQEAgUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6ZW1pdENvZGVTaW5nbAogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG1faW5pdCA/IGdlbmVyYXRvci5lbWl0Tm9kZShtX2lu
aXQpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgaWYgKHJl
c29sdmVSZXN1bHQuaXNTdGF0aWMoKSkKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0
U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHZhbHVlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIG1faWRlbnQsIHZhbHVlLmdl
dCgpKTsKICAgICAKICAgICBpZiAoZ2VuZXJhdG9yLmNvZGVUeXBlKCkgIT0gRXZhbENvZGUpCiAg
ICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE5LDcgKzIxOSw5IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBp
bmQKIHsKICAgICBBU1NFUlQobV9ibG9jayk7CiAgICAgQVNTRVJUKG1faXNWYWxpZCk7Ci0gICAg
ICAgIAorICAgIAorICAgIG1fZGlkQ2xvYmJlciA9IGZhbHNlOworICAgIAogICAgIE5vZGVJbmRl
eCBub2RlSW5kZXggPSBtX2Jsb2NrLT5hdChpbmRleEluQmxvY2spOwogICAgIE5vZGUmIG5vZGUg
PSBtX2dyYXBoW25vZGVJbmRleF07CiAgICAgICAgIApAQCAtMjM3LDggKzIzOSwxMiBAQCBib29s
IEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgICAgICAKICAgICBj
YXNlIEdldExvY2FsOiB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nl
c3NEYXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgaWYgKHZhcmlhYmxl
QWNjZXNzRGF0YS0+cHJlZGljdGlvbigpID09IFNwZWNOb25lKSB7CisgICAgICAgICAgICBtX2lz
VmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGJvb2wgY2FuRXhpdCA9IGZhbHNlOwot
ICAgICAgICBjYW5FeGl0IHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdGlvbigpID09IFNw
ZWNOb25lOwogICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlID0gbV92YXJpYWJsZXMub3BlcmFu
ZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkpOwogICAgICAgICBpZiAoIXZhcmlhYmxlQWNj
ZXNzRGF0YS0+aXNDYXB0dXJlZCgpKSB7CiAgICAgICAgICAgICBpZiAodmFsdWUuaXNDbGVhcigp
KQpAQCAtMTQ3Niw3ICsxNDgyLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2ln
bmVkIGluZAogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjRnVuY3Rp
b24pOwogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUgdG8gcHJvcGFnYXRlIHRoZSBm
YWN0IHRoYXQgd2Uga25vdyB3aGF0IHRoZSBmdW5jdGlvbiBpcy4KICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAKKyAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJ
ZERpcmVjdDoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOwpAQCAtMTQ4OCw4ICsxNDk0
LDEzIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAg
bm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VU
b3AoKTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hw
b2ludDoKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgIGNhc2UgUHV0R2xvYmFsVmFy
Q2hlY2s6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgCkBAIC0xNTc4LDYgKzE1ODksNyBAQCBpbmxpbmUgdm9pZCBBYnN0cmFjdFN0
YXRlOjpjbG9iYmVyU3RydWN0CiAgICAgZm9yIChzaXplX3QgaSA9IG1fdmFyaWFibGVzLm51bWJl
ck9mTG9jYWxzKCk7IGktLTspCiAgICAgICAgIG1fdmFyaWFibGVzLmxvY2FsKGkpLmNsb2JiZXJT
dHJ1Y3R1cmVzKCk7CiAgICAgbV9oYXZlU3RydWN0dXJlcyA9IGZhbHNlOworICAgIG1fZGlkQ2xv
YmJlciA9IHRydWU7CiB9CiAKIGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVB
dFRhaWwoQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24sIEFic3RyYWN0VmFsdWUmIGluVmFyaWFi
bGUsIE5vZGVJbmRleCBub2RlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2
ICsxOTMsOSBAQCBwdWJsaWM6CiAgICAgLy8gb2YgVGhyb3cuCiAgICAgYm9vbCBleGVjdXRlKHVu
c2lnbmVkKTsKICAgICAKKyAgICAvLyBEaWQgdGhlIGxhc3QgZXhlY3V0ZWQgbm9kZSBjbG9iYmVy
IHRoZSB3b3JsZD8KKyAgICBib29sIGRpZENsb2JiZXIoKSBjb25zdCB7IHJldHVybiBtX2RpZENs
b2JiZXI7IH0KKyAgICAKICAgICAvLyBJcyB0aGUgZXhlY3V0aW9uIHN0YXRlIHN0aWxsIHZhbGlk
PyBUaGlzIHdpbGwgYmUgZmFsc2UgaWYgZXhlY3V0ZSgpIGhhcwogICAgIC8vIHJldHVybmVkIGZh
bHNlIHByZXZpb3VzbHkuCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Zh
bGlkOyB9CkBAIC0yNzQsNiArMjc3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZm91bmRDb25z
dGFudHM7CiAgICAgCiAgICAgYm9vbCBtX2lzVmFsaWQ7CisgICAgYm9vbCBtX2RpZENsb2JiZXI7
CiAgICAgCiAgICAgQnJhbmNoRGlyZWN0aW9uIG1fYnJhbmNoRGlyZWN0aW9uOyAvLyBUaGlzIGlz
IG9ubHkgc2V0IGZvciBibG9ja3MgdGhhdCBlbmQgaW4gQnJhbmNoIGFuZCB0aGF0IGV4ZWN1dGUg
dG8gY29tcGxldGlvbiAoaS5lLiBtX2lzVmFsaWQgPT0gdHJ1ZSkuCiB9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM0LDYgKzEyMzQsOSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgLy8gRG9lcyB0aGUgY29kZSBibG9jaydzIHNp
emUgbWF0Y2ggdGhlIGhldXJpc3RpY3MvcmVxdWlyZW1lbnRzIGZvciBiZWluZwogICAgIC8vIGFu
IGlubGluZSBjYW5kaWRhdGU/CiAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrID0gZXhlY3V0
YWJsZS0+cHJvZmlsZWRDb2RlQmxvY2tGb3Ioa2luZCk7CisgICAgaWYgKCFwcm9maWxlZEJsb2Nr
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgaWYgKCFtaWdodElubGluZUZ1bmN0
aW9uRm9yKHByb2ZpbGVkQmxvY2ssIGtpbmQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
CkBAIC0yMjUxLDEzICsyMjU0LDYxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKICAgICAgICAgICAg
IAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKwogICAgICAgICAgICAgTm9kZUlu
ZGV4IGdldEdsb2JhbFZhciA9IGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgR2V0R2xvYmFs
VmFyLAotICAgICAgICAgICAgICAgIE9wSW5mbyhtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCktPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudElu
c3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAgICAgICAgICAgT3BJbmZv
KGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpKSwKICAgICAgICAgICAgICAgICBPcEluZm8ocHJl
ZGljdGlvbikpOwogICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQsIGdldEdsb2JhbFZhcik7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZ2xvYmFs
X3Zhcik7CiAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGNhc2Ugb3Bf
Z2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07CisgICAgICAgICAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKTsKKyAg
ICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxPYmplY3QtPnN5bWJvbFRh
YmxlKCkuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICAgICAgICAgIGlmICghZW50cnkuY291
bGRCZVdhdGNoZWQoKSkgeworICAgICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRHbG9iYWxWYXIg
PSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBHZXRHbG9iYWxWYXIsCisgICAgICAg
ICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJblRoaXNP
YmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAg
ICAgICAgICAgICAgIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAgc2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdldEdsb2JhbFZhcik7CisgICAgICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGhlIHdhdGNocG9pbnQgaXMgc3Rp
bGwgaW50YWN0ISBUaGlzIG1lYW5zIHRoYXQgd2Ugd2lsbCBnZXQgbm90aWZpZWQgaWYgdGhlCisg
ICAgICAgICAgICAvLyBjdXJyZW50IHZhbHVlIGluIHRoZSBnbG9iYWwgdmFyaWFibGUgY2hhbmdl
cy4gU28sIHdlIGNhbiBpbmxpbmUgdGhhdCB2YWx1ZS4KKyAgICAgICAgICAgIC8vIE1vcmVvdmVy
LCBjdXJyZW50bHkgd2UgY2FuIGFzc3VtZSB0aGF0IHRoaXMgdmFsdWUgaXMgYSBKU0Z1bmN0aW9u
Kiwgd2hpY2gKKyAgICAgICAgICAgIC8vIGltcGxpZXMgdGhhdCBpdCdzIGEgY2VsbC4gVGhpcyBz
aW1wbGlmaWVzIHRoaW5ncywgc2luY2UgaW4gZ2VuZXJhbCB3ZSdkIGhhdmUKKyAgICAgICAgICAg
IC8vIHRvIHVzZSBhIEpTQ29uc3RhbnQgZm9yIG5vbi1jZWxscyBhbmQgYSBXZWFrSlNDb25zdGFu
dCBmb3IgY2VsbHMuIFNvIGluc3RlYWQKKyAgICAgICAgICAgIC8vIG9mIGhhdmluZyBib3RoIGNh
c2VzIHdlIGp1c3QgYXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGEgY2VsbC4KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gTkIuIElmIGl0IHdhc24ndCBmb3IgQ1NFLCBHbG9iYWxWYXJXYXRj
aHBvaW50IHdvdWxkIGhhdmUgbm8gbmVlZCBmb3IgdGhlCisgICAgICAgICAgICAvLyByZWdpc3Rl
ciBwb2ludGVyLiBCdXQgQ1NFIHRyYWNrcyBlZmZlY3RzIG9uIGdsb2JhbCB2YXJpYWJsZXMgYnkg
Y29tcGFyaW5nCisgICAgICAgICAgICAvLyByZWdpc3RlciBwb2ludGVycy4gQmVjYXVzZSBDU0Ug
ZXhlY3V0ZXMgbXVsdGlwbGUgdGltZXMgd2hpbGUgdGhlIGJhY2tlbmQKKyAgICAgICAgICAgIC8v
IGV4ZWN1dGVzIG9uY2UsIHdlIHVzZSB0aGUgZm9sbG93aW5nIHBlcmZvcm1hbmNlIHRyYWRlLW9m
ZjoKKyAgICAgICAgICAgIC8vIC0gVGhlIG5vZGUgcmVmZXJzIGRpcmVjdGx5IHRvIHRoZSByZWdp
c3RlciBwb2ludGVyIHRvIG1ha2UgQ1NFIHN1cGVyIGNoZWFwLgorICAgICAgICAgICAgLy8gLSBU
byBwZXJmb3JtIGJhY2tlbmQgY29kZSBnZW5lcmF0aW9uLCB0aGUgbm9kZSBvbmx5IGNvbnRhaW5z
IHRoZSBpZGVudGlmaWVyCisgICAgICAgICAgICAvLyAgIG51bWJlciwgZnJvbSB3aGljaCBpdCBp
cyBwb3NzaWJsZSB0byBnZXQgKHZpYSBhIGZldyBhdmVyYWdlLXRpbWUgTygxKQorICAgICAgICAg
ICAgLy8gICBsb29rdXBzKSB0byB0aGUgV2F0Y2hwb2ludFNldC4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICBHbG9iYWxWYXJXYXRjaHBvaW50
LAorICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJ
blRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCisg
ICAgICAgICAgICAgICAgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT5yZWdpc3Rl
ckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpOworICAgICAgICAgICAgQVNTRVJUKHNwZWNpZmlj
VmFsdWUuaXNDZWxsKCkpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQsCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChXZWFrSlNDb25zdGFudCwgT3BJ
bmZvKHNwZWNpZmljVmFsdWUuYXNDZWxsKCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSk7CisgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXgg
dmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC0yMjY4LDYg
KzIzMTksMjggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2dsb2JhbF92YXIpOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazogeworICAgICAgICAgICAgTm9kZUlu
ZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
azsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvbls0
XS51Lm9wZXJhbmRdOworICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gbV9jb2Rl
QmxvY2stPmlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlm
aWVyLmltcGwoKSk7CisgICAgICAgICAgICBpZiAoIWVudHJ5LmNvdWxkQmVXYXRjaGVkKCkpIHsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBQdXRHbG9i
YWxWYXIsCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJl
Z2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2lu
dGVyKSksCisgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgIFB1dEdsb2JhbFZhckNoZWNrLAorICAg
ICAgICAgICAgICAgIE9wSW5mbyhjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hc3NlcnRSZWdp
c3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRl
cikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwKKyAgICAgICAg
ICAgICAgICB2YWx1ZSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjayk7CisgICAgICAgIH0KKwogICAgICAgICAvLyA9PT0gQmxvY2sgdGVybWluYXRvcnMu
ID09PQogCiAgICAgICAgIGNhc2Ugb3Bfam1wOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0
LDYgKzk0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwogICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwor
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgp
CiAgICAgewpAQCAtNDMzLDYgKzQzOSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzZXR1
cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
PihhcmcxLCBhcmcyKTsKICAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzKFRydXN0ZWRJbW1QdHIgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYg
KzIxNywyOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgIH0KICAgICAK
KyAgICBib29sIGdsb2JhbFZhcldhdGNocG9pbnRFbGltaW5hdGlvbihXcml0ZUJhcnJpZXI8VW5r
bm93bj4qIHJlZ2lzdGVyUG9pbnRlcikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CisgICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBt
X2N1cnJlbnRCbG9jay0+YXQoaSk7CisgICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtp
bmRleF07CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAgICAgICAgICAgY2Fz
ZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAgICAgICAgICAgICAgIGlmIChub2RlLnJlZ2lzdGVy
UG9pbnRlcigpID09IHJlZ2lzdGVyUG9pbnRlcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFB1dEdsb2Jh
bFZhcjoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdp
c3RlclBvaW50ZXIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9ncmFwaC5jbG9iYmVyc1dvcmxk
KGluZGV4KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAogICAgIE5vZGVJbmRleCBnbG9iYWxWYXJTdG9yZUVsaW1p
bmF0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKQogICAgIHsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKQEAgLTIyNiw2
ICsyNDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgor
ICAgICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTk4NSw3ICsx
MDA5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChnbG9iYWxWYXJM
b2FkRWxpbWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAg
ICAgICAgICAgaWYgKGdsb2JhbFZhcldhdGNocG9pbnRFbGltaW5hdGlvbihub2RlLnJlZ2lzdGVy
UG9pbnRlcigpKSkKKyAgICAgICAgICAgICAgICBlbGltaW5hdGUoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAgICBj
YXNlIFB1dEdsb2JhbFZhckNoZWNrOgogICAgICAgICAgICAgaWYgKG1fZml4cG9pbnRTdGF0ZSA9
PSBGaXhwb2ludE5vdENvbnZlcmdlZCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGVsaW1pbmF0ZShnbG9iYWxWYXJTdG9yZUVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2lu
dGVyKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw5IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZSgKICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgorICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92
YXJfd2F0Y2hhYmxlOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CisgICAgY2FzZSBvcF9w
dXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBjYXNlIG9wX2ptcDoKICAgICBjYXNlIG9wX2xvb3A6
CiAgICAgY2FzZSBvcF9qdHJ1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxMjAxMzYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICBpZiAoIWJsb2NrLT5jZmFGb3VuZENvbnN0YW50cykKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCisgICAgICAgICAgICBkYXRhTG9nKCJDb25zdGFudCBmb2xkaW5nIGNvbnNpZGVy
aW5nIEJsb2NrICMldS5cbiIsIGJsb2NrSW5kZXgpOworI2VuZGlmCiAgICAgICAgICAgICBzdGF0
ZS5iZWdpbkJhc2ljQmxvY2soYmxvY2spOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRl
eEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9j
aykgewogICAgICAgICAgICAgICAgIGlmICghc3RhdGUuaXNWYWxpZCgpKQpAQCAtOTAsNyArOTMs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RhdGUuZXhl
Y3V0ZShpbmRleEluQmxvY2spOwogICAgICAgICAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5l
cmF0ZSgpCi0gICAgICAgICAgICAgICAgICAgIHx8IG1fZ3JhcGguY2xvYmJlcnNXb3JsZChub2Rl
KQorICAgICAgICAgICAgICAgICAgICB8fCBzdGF0ZS5kaWRDbG9iYmVyKCkKICAgICAgICAgICAg
ICAgICAgICAgfHwgbm9kZS5oYXNDb25zdGFudCgpKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUuZm9yTm9kZShub2Rl
SW5kZXgpLnZhbHVlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJl
Y3RhYmxlSnVtcFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDYgKzY2LDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KICAgICAKKyAgICBi
b29sIGlzU2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvZGVPZmZzZXQgIT0gc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOworICAgIH0KKyAgICAKICAgICB2b2lkIHN3
aXRjaFRvTGF0ZUp1bXAoTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgY2hlY2spCiAgICAg
ewogI2lmbmRlZiBOREVCVUcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsMTEg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKIHsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMoKTsgKytpKSB7CiAgICAg
ICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhpdChpKTsKLSAgICAgICAgZXhp
dC5tX2NoZWNrLmluaXRpYWxKdW1wKCkubGluayh0aGlzKTsKKyAgICAgICAgQVNTRVJUKCFleGl0
Lm1fY2hlY2suaXNTZXQoKSA9PSAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICAgICAgaWYgKGV4aXQubV93YXRjaHBv
aW50SW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgICAg
ICAgICAgZXhpdC5tX2NoZWNrLmluaXRpYWxKdW1wKCkubGluayh0aGlzKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhpdC5tX3dhdGNocG9pbnRJ
bmRleCkuc2V0RGVzdGluYXRpb24obGFiZWwoKSk7CiAgICAgICAgIGppdEFzc2VydEhhc1ZhbGlk
Q2FsbEZyYW1lKCk7CiAgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGkpLCAmZ2xvYmFsRGF0
YSgpLT5vc3JFeGl0SW5kZXgpOwogICAgICAgICBleGl0Lm1fY2hlY2suc3dpdGNoVG9MYXRlSnVt
cChwYXRjaGFibGVKdW1wKCkpOwpAQCAtMTkwLDYgKzE5NCw4IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9j
aygpLT5vc3JFeGl0KGkpOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZXhpdC5tX2NoZWNrLmxh
dGVKdW1wKCksIHRhcmdldCk7CiAgICAgICAgIGV4aXQubV9jaGVjay5jb3JyZWN0TGF0ZUp1bXAo
bGlua0J1ZmZlcik7CisgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ICE9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIGNvZGVCbG9jaygp
LT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLmNvcnJlY3RMYWJlbHMobGlua0J1
ZmZlcik7CiAgICAgfQogICAgIAogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2RlQmxv
Y2s6OkxhdGVTaHJpbmspOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJl
dmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MzAsOSArNDMwLDIwIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAg
cmV0dXJuIG1fb3BJbmZvOwogICAgIH0KICAgICAKKyAgICBib29sIGhhc0lkZW50aWZpZXJOdW1i
ZXJGb3JDaGVjaygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBHbG9iYWxWYXJXYXRj
aHBvaW50IHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyQ2hlY2s7CisgICAgfQorICAgIAorICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpCisgICAgeworICAgICAgICBBU1NFUlQo
aGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8y
OworICAgIH0KKyAgICAKICAgICBib29sIGhhc1JlZ2lzdGVyUG9pbnRlcigpCiAgICAgewotICAg
ICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXI7
CisgICAgICAgIHJldHVybiBvcCgpID09IEdldEdsb2JhbFZhciB8fCBvcCgpID09IFB1dEdsb2Jh
bFZhciB8fCBvcCgpID09IEdsb2JhbFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBQdXRHbG9iYWxW
YXJDaGVjazsKICAgICB9CiAgICAgCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3Rl
clBvaW50ZXIoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
cmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dFNjb3BlZFZhciwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oR2V0R2xvYmFsVmFyLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2xvYmFsVmFyV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKFB1dEdsb2JhbFZhckNoZWNrLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAg
ICAvKiBPcHRpbWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9cCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDEyMDEzNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDYgKzUxLDcgQEAgT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlUwog
ICAgICwgbV9jb2RlT3JpZ2luKGppdC0+bV9jb2RlT3JpZ2luRm9yT1NSKQogICAgICwgbV9jb2Rl
T3JpZ2luRm9yRXhpdFByb2ZpbGUobV9jb2RlT3JpZ2luKQogICAgICwgbV9yZWNvdmVyeUluZGV4
KHJlY292ZXJ5SW5kZXgpCisgICAgLCBtX3dhdGNocG9pbnRJbmRleChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgLCBtX2tpbmQoa2luZCkKICAgICAsIG1fY291bnQo
MCkKICAgICAsIG1fYXJndW1lbnRzKGppdC0+bV9hcmd1bWVudHMuc2l6ZSgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHJldmlzaW9uIDEyMDEzNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
Niw2ICs5Niw3IEBAIHN0cnVjdCBPU1JFeGl0IHsKICAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdp
bkZvckV4aXRQcm9maWxlOwogICAgIAogICAgIHVuc2lnbmVkIG1fcmVjb3ZlcnlJbmRleDsKKyAg
ICB1bnNpZ25lZCBtX3dhdGNocG9pbnRJbmRleDsKICAgICAKICAgICBFeGl0S2luZCBtX2tpbmQ7
CiAgICAgdWludDMyX3QgbV9jb3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI0LDYgKzky
NCwxMSBAQCB2b2lkKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDb25zCiAgICAgcmV0
dXJuIHZpcnR1YWxGb3IoZXhlY0NhbGxlZSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKK3ZvaWQg
REZHX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZShXYXRjaHBvaW50U2V0
KiB3YXRjaHBvaW50U2V0KQoreworICAgIHdhdGNocG9pbnRTZXQtPm5vdGlmeVdyaXRlKCk7Cit9
CisKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZShFeGVjU3Rh
dGUqIGV4ZWMsIElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAs
NiArMTAwLDcgQEAgdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdAogdHlw
ZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FSkpKKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVk
ZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpQUCkoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB2b2lkKik7CiB0eXBlZGVmIHZvaWQgREZH
X09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQz
Ml90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZH
T3BlcmF0aW9uX1cpKFdhdGNocG9pbnRTZXQqKTsKIHR5cGVkZWYgdm9pZCogREZHX09QRVJBVElP
TiAoKlBfREZHT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogCiAvLyBUaGVzZSByb3V0aW5lcyBh
cmUgcHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0
aW9ucyB0b28gY29tcGxleCB0byBKSVQuCkBAIC0xMTYsNiArMTE3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElk
ZW50aWZpZXIqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNhbGxDdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiwgSlNDZWxsKiwgUHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmMsIElkZW50aWZpZXIqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxHZXR0ZXIoRXhlY1N0YXRlKiwgSlNDZWxsKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwordm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5vdGlm
eUdsb2JhbFZhcldyaXRlKFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZShFeGVjU3Rh
dGUqLCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBvcGVyYXRpb25SZXNvbHZlQmFzZShFeGVjU3RhdGUqLCBJZGVudGlmaWVyKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlQmFz
ZVN0cmljdFB1dChFeGVjU3RhdGUqLCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OTEsNyArNDkxLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6IHsKKyAgICAg
ICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6IHsK
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdz
KE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjY5
LDYgKzY3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50czoKICAg
ICAgICAgY2FzZSBDaGVja051bWJlcjoKICAgICAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENy
ZWF0ZWQ6CisgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTk2LDYgKzM1OTYsNjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNo
ZWNrOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OworICAgICAgICAKKyAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCA9CisgICAg
ICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFi
bGUoKS5nZXQoCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1i
ZXJGb3JDaGVjaygpKS0+aW1wbCgpKS53YXRjaHBvaW50U2V0KCk7CisgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9u
WmVybywKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyh3
YXRjaHBvaW50U2V0LT5hZGRyZXNzT2ZJc1dhdGNoZWQoKSkpLAorICAgICAgICAgICAgICAgIHRo
aXMsIG9wZXJhdGlvbk5vdGlmeUdsb2JhbFZhcldyaXRlLCBOb1Jlc3VsdCwgd2F0Y2hwb2ludFNl
dCkpOworICAgICAgICAKKyAgICAgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgp
KSB7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAg
IEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgd3JpdGVCYXJyaWVyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4p
LCB2YWx1ZS50YWdHUFIoKSwgbm9kZS5jaGlsZDEoKSwgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVB
Y2Nlc3MsIHNjcmF0Y2hSZWcpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IGlmIHdl
IGhhcHBlbiB0byBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIgLSBhbmQgX09OTFlfIGlmIHdlIGhhcHBl
biB0byBoYXZlCisgICAgICAgIC8vIGEgc3BhcmUgcmVnaXN0ZXIgLSBhIGdvb2Qgb3B0aW1pemF0
aW9uIHdvdWxkIGJlIHRvIHB1dCB0aGUgcmVnaXN0ZXIgcG9pbnRlciBpbnRvCisgICAgICAgIC8v
IGEgcmVnaXN0ZXIgYW5kIHRoZW4gZG8gYSB6ZXJvIG9mZnNldCBzdG9yZSBmb2xsb3dlZCBieSBh
IGZvdXItb2Zmc2V0IHN0b3JlIChvcgorICAgICAgICAvLyB2aWNlLXZlcnNhIGRlcGVuZGluZyBv
biBlbmRpYW5uZXNzKS4KKyAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS50YWdHUFIoKSwgbm9k
ZS5yZWdpc3RlclBvaW50ZXIoKS0+dGFnUG9pbnRlcigpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUz
Mih2YWx1ZS5wYXlsb2FkR1BSKCksIG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnBheWxvYWRQb2lu
dGVyKCkpOworCisgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKKyAg
ICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxl
KCkuZ2V0KAorICAgICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JD
aGVjaygpKS0+aW1wbCgpKS5hZGRXYXRjaHBvaW50KAorICAgICAgICAgICAgICAgIHNwZWN1bGF0
aW9uV2F0Y2hwb2ludCgpKTsKKyAgICAgICAgCisjaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQor
ICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgICAgICBtX2ppdC5sb2FkMzIobm9kZS5yZWdpc3Rl
clBvaW50ZXIoKS0+dGFnUG9pbnRlcigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgbm90T0sgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihub2RlLnJl
Z2lzdGVyUG9pbnRlcigpLT5nZXQoKS50YWcoKSkpOworICAgICAgICBtX2ppdC5sb2FkMzIobm9k
ZS5yZWdpc3RlclBvaW50ZXIoKS0+cGF5bG9hZFBvaW50ZXIoKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBK
SVRDb21waWxlcjo6RXF1YWwsIHNjcmF0Y2hHUFIsCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIo
bm9kZS5yZWdpc3RlclBvaW50ZXIoKS0+Z2V0KCkucGF5bG9hZCgpKSk7CisgICAgICAgIG5vdE9L
LmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAgICAgICBvay5s
aW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIG5vUmVzdWx0KG1fY29tcGls
ZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDaGVja0hhc0luc3Rh
bmNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGls
ZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MTUsNiArMzYxNSw1MiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50
U2V0KiB3YXRjaHBvaW50U2V0ID0KKyAgICAgICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihu
b2RlLmNvZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpLmdldCgKKyAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpLT5pbXBsKCkpLndhdGNocG9p
bnRTZXQoKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICBzbG93
UGF0aENhbGwoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLAorICAgICAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKHdhdGNocG9pbnRTZXQtPmFkZHJlc3NPZklzV2F0Y2hl
ZCgpKSksCisgICAgICAgICAgICAgICAgdGhpcywgb3BlcmF0aW9uTm90aWZ5R2xvYmFsVmFyV3Jp
dGUsIE5vUmVzdWx0LCB3YXRjaHBvaW50U2V0KSk7CisgICAgICAgIAorICAgICAgICBpZiAoSGVh
cDo6aXNXcml0ZUJhcnJpZXJFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdw
cigpOworICAgICAgICAgICAgCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiksIHZhbHVlLmdwcigpLCBub2RlLmNoaWxkMSgpLCBX
cml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcywgc2NyYXRjaFJlZyk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIG1faml0LnN0b3JlUHRyKHZhbHVlLmdwcigpLCBub2RlLnJlZ2lzdGVy
UG9pbnRlcigpKTsKKworICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OiB7
CisgICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5zeW1ib2xU
YWJsZSgpLmdldCgKKyAgICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVy
Rm9yQ2hlY2soKSktPmltcGwoKSkuYWRkV2F0Y2hwb2ludCgKKyAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbldhdGNocG9pbnQoKSk7CisgICAgICAgIAorI2lmIERGR19FTkFCTEUoSklUX0FTU0VS
VCkKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihub2RlLnJl
Z2lzdGVyUG9pbnRlcigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
b2sgPSBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHNj
cmF0Y2hHUFIsCisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
SlNWYWx1ZTo6ZW5jb2RlKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPmdldCgpKSkpKTsKKyAgICAg
ICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAgICAgICBvay5saW5rKCZtX2ppdCk7CisjZW5kaWYK
KyAgICAgICAgCisgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOiB7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
MTQsNiArMTQxNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJnMikpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX1cgb3BlcmF0aW9uLCBXYXRj
aHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHMoVHJ1c3RlZEltbVB0cih3YXRjaHBvaW50U2V0KSk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9u
VHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMT4KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5
cGUxIGFyZzEpCiAgICAgewpAQCAtMTY3Miw2ICsxNjc3LDExIEBAIHB1YmxpYzoKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRf
RFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9XIG9wZXJhdGlvbiwgV2F0Y2hwb2lu
dFNldCogd2F0Y2hwb2ludFNldCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
KFRydXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOworICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUs
IHR5cGVuYW1lIEFyZ3VtZW50VHlwZTE+CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBh
cmcxKQogICAgIHsKQEAgLTE3OTMsNiArMTgwMywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0
Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBj
YWxsOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsKGNvbnN0IEZ1bmN0
aW9uUHRyJiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwo
KTsKKyAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOworICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdDEsIEdQUlJlZyByZXN1
bHQyKQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwpAQCAtMjE5Myw2ICsyMjA4LDMyIEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0No
ZWNraW5nQXJndW1lbnRUeXBlcyk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soa2luZCwganNW
YWx1ZVNvdXJjZSwgbm9kZVVzZS5pbmRleCgpLCBqdW1wVG9GYWlsLCByZWNvdmVyeSk7CiAgICAg
fQorICAgIC8vIFVzZSB0aGlzIGxpa2UgeW91IHdvdWxkIHVzZSBzcGVjdWxhdGlvbkNoZWNrKCks
IGV4Y2VwdCB0aGF0IHlvdSBkb24ndCBwYXNzIGl0IGEganVtcAorICAgIC8vIChiZWNhdXNlIHlv
dSBkb24ndCBoYXZlIHRvIGV4ZWN1dGUgYSBicmFuY2g7IHRoYXQncyBraW5kIG9mIHRoZSB3aG9s
ZSBwb2ludCksIGFuZCB5b3UKKyAgICAvLyBtdXN0IHJlZ2lzdGVyIHRoZSByZXR1cm5lZCBXYXRj
aHBvaW50IHdpdGggc29tZXRoaW5nIHJlbGV2YW50LiBJbiBnZW5lcmFsLCB0aGlzIHNob3VsZAor
ICAgIC8vIGJlIHVzZWQgd2l0aCBleHRyZW1lIGNhcmUuIFVzZSBzcGVjdWxhdGlvbkNoZWNrKCkg
dW5sZXNzIHlvdSd2ZSBnb3QgYW4gYW1hemluZyByZWFzb24KKyAgICAvLyBub3QgdG8uCisgICAg
V2F0Y2hwb2ludCogc3BlY3VsYXRpb25XYXRjaHBvaW50KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVT
b3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAg
IGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBBU1NF
UlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5
cGVzKTsKKyAgICAgICAgT1NSRXhpdCYgZXhpdCA9IG1faml0LmNvZGVCbG9jaygpLT5vc3JFeGl0
KAorICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoCisgICAgICAg
ICAgICAgICAgT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJ
bmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCgpLCB0aGlz
KSkpOworICAgICAgICBleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID0gbV9qaXQuY29kZUJsb2NrKCkt
PmFwcGVuZFdhdGNocG9pbnQoCisgICAgICAgICAgICBXYXRjaHBvaW50KG1faml0LndhdGNocG9p
bnRMYWJlbCgpKSk7CisgICAgICAgIHJldHVybiAmbV9qaXQuY29kZUJsb2NrKCktPndhdGNocG9p
bnQoZXhpdC5tX3dhdGNocG9pbnRJbmRleCk7CisgICAgfQorICAgIC8vIFRoZSBkZWZhdWx0IGZv
ciBzcGVjdWxhdGlvbiB3YXRjaHBvaW50cyBpcyB0aGF0IHRoZXkncmUgdW5jb3VudGVkLCBiZWNh
dXNlIHRoZQorICAgIC8vIGFjdCBvZiBmaXJpbmcgYSB3YXRjaHBvaW50IGludmFsaWRhdGVzIGl0
LiBTbywgZnV0dXJlIHJlY29tcGlsYXRpb25zIHdpbGwgbm90CisgICAgLy8gYXR0ZW1wdCB0byBz
ZXQgdGhpcyB3YXRjaHBvaW50IGFnYWluLgorICAgIFdhdGNocG9pbnQqIHNwZWN1bGF0aW9uV2F0
Y2hwb2ludCgpCisgICAgeworICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25XYXRjaHBvaW50KFVu
Y291bnRhYmxlV2F0Y2hwb2ludCwgSlNWYWx1ZVNvdXJjZSgpLCBOb05vZGUpOworICAgIH0KICAg
ICB2b2lkIGZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3Vy
Y2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAganVtcFRvRmFpbCwgY29uc3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVSZWNvdmVyeSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVj
a2luZ0FyZ3VtZW50VHlwZXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2
aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTksNiArMjU5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKICAgICAgICAgREVGSU5F
X09QKG9wX2dldF9hcmd1bWVudF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlf
cG5hbWUpCisgICAgICAgIERFRklORV9PUChvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpCiAg
ICAgICAgIERFRklORV9PUChvcF9nZXRfZ2xvYmFsX3ZhcikKICAgICAgICAgREVGSU5FX09QKG9w
X2dldF9wbmFtZXMpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfc2NvcGVkX3ZhcikKQEAgLTMy
NCw2ICszMjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IERFRklORV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRl
cl9zZXR0ZXIpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3ZhcikKKyAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X3Njb3BlZF92YXIpCiAgICAgICAgIERFRklORV9PUChvcF9yZXNvbHZlKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcmVzb2x2ZV9iYXNlKQpAQCAtNDgxLDYgKzQ4Myw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3JzaGlmdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTIwMTM2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYz
LDcgKzQ2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzTWFwcGVkKGludCB2
aXJ0dWFsUmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIGJvb2wgZ2V0TWFwcGVkUGF5bG9hZChpbnQg
dmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQmIHBheWxvYWQpOwogICAgICAgICBib29s
IGdldE1hcHBlZFRhZyhpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQmIHRhZyk7
Ci0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGlu
dCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCB0YWcpOwogCkBA
IC01OTksNiArNTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfYXJndW1lbnRfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9nbG9i
YWxfdmFyKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZ2xvYmFsX3Zh
cl93YXRjaGFibGUoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKSB7IGVtaXRfb3BfZ2V0X2dsb2Jh
bF92YXIoaW5zdHJ1Y3Rpb24pOyB9CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfc2NvcGVkX3Zh
cihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5pdF9sYXp5X3JlZyhJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKEluc3Ry
dWN0aW9uKik7CkBAIC02NjIsNiArNjYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9wdXRfZ2V0dGVyX3NldHRlcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2dsb2JhbF92YXIoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9n
bG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRf
c2NvcGVkX3ZhcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZShJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV9iYXNlKEluc3RydWN0
aW9uKik7CkBAIC03MzksNiArNzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfcHJlX2luYyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVj
ayhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9yZXNv
bHZlX2dsb2JhbF9keW5hbWljKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3JzaGlmdChJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNp
b24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5MCw2ICsxMDkwLDM3IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWMKICAgICBtYXAobV9ieXRlY29kZU9mZnNl
dCArIE9QQ09ERV9MRU5HVEgob3BfcHV0X2dsb2JhbF92YXIpLCB2YWx1ZSwgcmVnVDEsIHJlZ1Qw
KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJl
Z2lzdGVyUG9pbnRlciA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcjsK
KyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIAor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgCisgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CisgICAgCisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNzKGN1cnJl
bnRJbnN0cnVjdGlvblszXS51LnByZWRpY2F0ZVBvaW50ZXIpKSk7CisgICAgCisgICAgaWYgKEhl
YXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihnbG9iYWxPYmplY3QpLCByZWdUMik7CisgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFs
T2JqZWN0LCByZWdUMSwgcmVnVDMsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmll
ckZvclZhcmlhYmxlQWNjZXNzKTsKKyAgICB9CisgICAgCisgICAgc3RvcmUzMihyZWdUMSwgcmVn
aXN0ZXJQb2ludGVyLT50YWdQb2ludGVyKCkpOworICAgIHN0b3JlMzIocmVnVDAsIHJlZ2lzdGVy
UG9pbnRlci0+cGF5bG9hZFBvaW50ZXIoKSk7CisgICAgdW5tYXAoKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIAorICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMs
IGN0aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
cmVnVDEsIHJlZ1QwKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3Vy
cmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNhbGwoKTsKK30K
Kwogdm9pZCBKSVQ6OnJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZm
ZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJl
bGluayhzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNyw2ICsxMDI3LDI5IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWMKICAgICAgICAgZW1pdFdyaXRlQmFy
cmllcihnbG9iYWxPYmplY3QsIHJlZ1QwLCByZWdUMiwgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywg
V3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCwgcmVnVDApOworICAgIAorICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFi
c29sdXRlQWRkcmVzcyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5wcmVkaWNhdGVQb2ludGVyKSkp
OworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKTsKKyAgICAKKyAgICBzdG9yZVB0cihyZWdUMCwgY3VycmVudEluc3RydWN0aW9u
WzFdLnUucmVnaXN0ZXJQb2ludGVyKTsKKyAgICBpZiAoSGVhcDo6aXNXcml0ZUJhcnJpZXJFbmFi
bGVkKCkpCisgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0LCByZWdUMCwgcmVn
VDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNz
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIAorICAgIEpJVFN0dWJD
YWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0
ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwu
Y2FsbCgpOworfQorCiB2b2lkIEpJVDo6cmVzZXRQYXRjaEdldEJ5SWQoUmVwYXRjaEJ1ZmZlciYg
cmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewogICAgIHJlcGF0
Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGN0aV9vcF9nZXRf
YnlfaWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlz
aW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzc3LDYgKzIzNzcsMTUgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
SlNPYmplY3QqLCBvcF9uZXdfYQogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShzdGFja0ZyYW1l
LmNhbGxGcmFtZSwgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1
ZmZlcihzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKSksIHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQz
MigpKTsKIH0KIAorREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2dsb2JhbF92YXJf
Y2hlY2spCit7CisgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOworICAgIAor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIHN5bWJvbFRh
YmxlUHV0KGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGNhbGxGcmFtZSwgY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpKSwgc3RhY2tGcmFtZS5hcmdzWzBd
LmpzVmFsdWUoKSwgdHJ1ZSk7Cit9CisKIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1Zh
bHVlLCBvcF9yZXNvbHZlKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1l
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDEyMDEz
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQ1LDYgKzQ0NSw3IEBAIGV4dGVybiAiQyIgewogICAgIHZvaWQgSklUX1NUVUIgY3Rp
X29wX3B1dF9ieV9pbmRleChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAg
ICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfYnlfdmFsKFNUVUJfQVJHU19ERUNMQVJBVElPTikg
V1RGX0lOVEVSTkFMOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1dF9nZXR0ZXJfc2V0dGVy
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOworICAgIHZvaWQgSklUX1NUVUIg
Y3RpX29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lO
VEVSTkFMOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3RlYXJfb2ZmX2FjdGl2YXRpb24oU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlf
b3BfdGVhcl9vZmZfYXJndW1lbnRzKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFM
OwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcihTVFVCX0FS
R1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTIwMTM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODU2LDYgKzg1NiwxNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVz
b2x2ZV93CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgc3ltYm9sVGFibGVQ
dXQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVy
KHBjWzRdLnUub3BlcmFuZCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCB0cnVlKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9p
ZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcs
NiArMTQ3LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZQogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lbnN1cmVfcHJvcGVydHlfZXhpc3Rz
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX2Jh
c2UpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3dpdGhf
dGhpcyk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9nbG9iYWxf
dmFyX2NoZWNrKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5
X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50
c19sZW5ndGgpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDM5LDcgKzEwMzksNyBAQCBfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CiAg
ICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CittYWNybyBnZXRH
bG9iYWxWYXIoc2l6ZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgOFtQQ10sIHQw
CiAgICAgbG9hZGkgNFtQQ10sIHQzCkBAIC0xMDQ3LDkgKzEwNDcsMTcgQEAgX2xsaW50X29wX2dl
dF9nbG9iYWxfdmFyOgogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDBdLCB0MQogICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdCi0gICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRpIChzaXplIC0gMSkg
KiA0W1BDXSwgdDMKICAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKLSAgICBkaXNwYXRjaCg0
KQorICAgIGRpc3BhdGNoKHNpemUpCitlbmQKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgor
ICAgIGdldEdsb2JhbFZhcig0KQorCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFi
bGU6CisgICAgZ2V0R2xvYmFsVmFyKDUpCiAKIAogX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgpA
QCAtMTA2Myw2ICsxMDcxLDIyIEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBkaXNw
YXRjaCgzKQogCiAKK19sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZHAgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGJ0Ym56IFt0Ml0sIC5vcFB1dEdsb2JhbFZhckNoZWNrU2xv
dworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICB3cml0ZUJhcnJp
ZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwXQorICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFt0MF0KKyAgICBkaXNwYXRjaCg1KQorLm9wUHV0R2xvYmFsVmFyQ2hlY2tT
bG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKQorICAgIGRpc3BhdGNoKDUpCisKKwogX2xsaW50X29wX2dldF9ieV9pZDoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNo
aW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJl
dmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04OTMsMTUgKzg5MywyMyBAQCBfbGxp
bnRfb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfZ2V0
X2dsb2JhbF92YXI6CittYWNybyBnZXRHbG9iYWxWYXIoc2l6ZSkKICAgICB0cmFjZUV4ZWN1dGlv
bigpCiAgICAgbG9hZHAgMTZbUEIsIFBDLCA4XSwgdDAKICAgICBsb2FkaXMgOFtQQiwgUEMsIDhd
LCB0MwogICAgIGxvYWRwIFt0MF0sIHQxCiAgICAgc3RvcmVwIHQxLCBbY2ZyLCB0MywgOF0KLSAg
ICBsb2FkcCAyNFtQQiwgUEMsIDhdLCB0MAorICAgIGxvYWRwIChzaXplIC0gMSkgKiA4W1BCLCBQ
QywgOF0sIHQwCiAgICAgdmFsdWVQcm9maWxlKHQxLCB0MCkKLSAgICBkaXNwYXRjaCg0KQorICAg
IGRpc3BhdGNoKHNpemUpCitlbmQKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIGdl
dEdsb2JhbFZhcig0KQorCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6Cisg
ICAgZ2V0R2xvYmFsVmFyKDUpCiAKIAogX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgpAQCAtOTE0
LDYgKzkyMiwyMSBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgZGlzcGF0Y2goMykK
IAogCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIDI0W1BCLCBQQywgOF0sIHQyCisgICAgbG9hZGlzIDE2W1BCLCBQQywgOF0s
IHQxCisgICAgbG9hZHAgOFtQQiwgUEMsIDhdLCB0MAorICAgIGJ0Ym56IFt0Ml0sIC5vcFB1dEds
b2JhbFZhckNoZWNrU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyKQorICAg
IHdyaXRlQmFycmllcih0MikKKyAgICBzdG9yZXAgdDIsIFt0MF0KKyAgICBkaXNwYXRjaCg1KQor
Lm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQorICAgIGRpc3BhdGNoKDUpCisKKwogX2xsaW50X29w
X2dldF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgIyBXZSBvbmx5IGRvIG1vbm9t
b3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRo
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2
aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsMjIgKzUwNCwyNSBAQCB2b2lkIEpTT2JqZWN0Ojpy
ZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgc3RydWN0dXJlKCktPnNldFN0YXRpY0Z1bmN0
aW9uc1JlaWZpZWQoKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmpl
Y3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgICAgIHB1
dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCksIHBy
b3BlcnR5TmFtZSwgb2Zmc2V0KSk7Ci0gICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQot
ICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZz
ZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHB1dFVuZGVm
aW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIE5FVkVS
X0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xv
dCYgc2xvdCwgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEyMDEzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3Niw3ICsxNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRyYW5z
aXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92
ZURpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBib29sIHJlbW92
ZURpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOyAvLyBSZXR1cm4gdHJ1ZSBpZiBh
bnl0aGluZyBpcyByZW1vdmVkLgogICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7
IHJldHVybiBzdHJ1Y3R1cmUoKS0+ZGlkVHJhbnNpdGlvbigpOyB9CiAgICAgICAgIGJvb2wgaGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkocmV2aXNpb24gMTIwMTM2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Miw5ICs3MiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJs
ZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAgICBTeW1ib2xUYWJs
ZU9iamVjdFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJv
bFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChl
bnRyeS5pc051bGwoKSkKKyAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBvYmplY3QtPnN5
bWJvbFRhYmxlKCk7CisgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJs
ZS5maW5kKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIGlmIChpdGVyID09IHN5bWJv
bFRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgU3ltYm9sVGFibGVFbnRy
eTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNlY29uZDsKKyAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgp
KTsKICAgICBzbG90LnNldFZhbHVlKG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgp
KS5nZXQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04Myw5ICs4NiwxMiBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJs
ZUdldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAgICBTeW1i
b2xUYWJsZSYgc3ltYm9sVGFibGUgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCk7CisgICAgU3ltYm9s
VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOworICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNl
Y29uZDsKKyAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICBkZXNjcmlwdG9yLnNldERl
c2NyaXB0b3IoCiAgICAgICAgIG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5n
ZXQoKSwgZW50cnkuZ2V0QXR0cmlidXRlcygpIHwgRG9udERlbGV0ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC05Niw5ICsxMDIsMTIgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAg
U3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCwKICAgICBib29sJiBzbG90SXNXcml0ZWFibGUpCiB7Ci0gICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQo
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQorICAg
IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAgICBT
eW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRl
ci0+c2Vjb25kOworICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgIHNsb3Quc2V0VmFs
dWUob2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpKTsKICAgICBzbG90
SXNXcml0ZWFibGUgPSAhZW50cnkuaXNSZWFkT25seSgpOwogICAgIHJldHVybiB0cnVlOwpAQCAt
MTEyLDE1ICsxMjEsMjEgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIEFTU0VSVCghSGVh
cDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3Qp
KTsKICAgICAKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJs
ZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnku
aXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xU
YWJsZSgpOworICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmlu
ZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJs
ZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5
KCkpIHsKKyAgICBib29sIHdhc0ZhdDsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGZhc3RF
bnRyeSA9IGl0ZXItPnNlY29uZC5nZXRGYXN0KHdhc0ZhdCk7CisgICAgQVNTRVJUKCFmYXN0RW50
cnkuaXNOdWxsKCkpOworICAgIGlmIChmYXN0RW50cnkuaXNSZWFkT25seSgpKSB7CiAgICAgICAg
IGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KLSAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0KGdsb2Jh
bERhdGEsIG9iamVjdCwgdmFsdWUpOworICAgIGlmIChVTkxJS0VMWSh3YXNGYXQpKQorICAgICAg
ICBpdGVyLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsKKyAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZmFz
dEVudHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTM2LDYgKzE1MSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRh
YmxlUHV0V2l0aEF0dHJpYnV0ZXMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRh
YmxlRW50cnkmIGVudHJ5ID0gaXRlci0+c2Vjb25kOwogICAgIEFTU0VSVCghZW50cnkuaXNOdWxs
KCkpOworICAgIGVudHJ5Lm5vdGlmeVdyaXRlKCk7CiAgICAgZW50cnkuc2V0QXR0cmlidXRlcyhh
dHRyaWJ1dGVzKTsKICAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0
KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxMjAx
MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw1MyArMzEsMTYzIEBACiAKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAj
aW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgV2F0Y2hwb2ludDsKKyAgICBjbGFzcyBX
YXRjaHBvaW50U2V0OworCiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgaW50IG1pc3NpbmdTeW1i
b2xNYXJrZXIoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOyB9CiAK
ICAgICAvLyBUaGUgYml0IHR3aWRkbGluZyBpbiB0aGlzIGNsYXNzIGFzc3VtZXMgdGhhdCBldmVy
eSByZWdpc3RlciBpbmRleCBpcyBhCiAgICAgLy8gcmVhc29uYWJseSBzbWFsbCBwb3NpdGl2ZSBv
ciBuZWdhdGl2ZSBudW1iZXIsIGFuZCB0aGVyZWZvcmUgaGFzIGl0cyBoaWdoCiAgICAgLy8gZm91
ciBiaXRzIGFsbCBzZXQgb3IgYWxsIHVuc2V0LgogCisgICAgLy8gSW4gYWRkaXRpb24gdG8gaW1w
bGVtZW50aW5nIHNlbWFudGljcy1tYW5kYXRlZCB2YXJpYWJsZSBhdHRyaWJ1dGVzIGFuZAorICAg
IC8vIGltcGxlbWVudGF0aW9uLW1hbmRhdGVkIHZhcmlhYmxlIGluZGV4aW5nLCB0aGlzIGNsYXNz
IGFsc28gaW1wbGVtZW50cworICAgIC8vIHdhdGNocG9pbnRzIHRvIGJlIHVzZWQgZm9yIEpJVCBv
cHRpbWl6YXRpb25zLiBCZWNhdXNlIHdhdGNocG9pbnRzIGFyZQorICAgIC8vIG1lYW50IHRvIGJl
IHJlbGF0aXZlbHkgcmFyZSwgdGhpcyBjbGFzcyBvcHRpbWl6ZXMgaGVhdmlseSBmb3IgdGhlIGNh
c2UKKyAgICAvLyB0aGF0IHRoZXkgYXJlIG5vdCBiZWluZyB1c2VkLiBUbyB0aGF0IGVuZCwgdGhp
cyBjbGFzcyB1c2VzIHRoZSB0aGluLWZhdAorICAgIC8vIGlkaW9tOiBlaXRoZXIgaXQgaXMgdGhp
biwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyBhbiBpbi1wbGFjZSBlbmNvZGVkCisgICAgLy8g
d29yZCB0aGF0IGNvbnNpc3RzIG9mIGF0dHJpYnV0ZXMsIHRoZSBpbmRleCwgYW5kIGEgYml0IHNh
eWluZyB0aGF0IGl0IGlzCisgICAgLy8gdGhpbjsgb3IgaXQgaXMgZmF0LCBpbiB3aGljaCBjYXNl
IGl0IGNvbnRhaW5zIGEgcG9pbnRlciB0byBhIG1hbGxvYydkCisgICAgLy8gZGF0YSBzdHJ1Y3R1
cmUgYW5kIGEgYml0IHNheWluZyB0aGF0IGl0IGlzIGZhdC4gVGhlIG1hbGxvYydkIGRhdGEKKyAg
ICAvLyBzdHJ1Y3R1cmUgd2lsbCBiZSBtYWxsb2NlZCBhIHNlY29uZCB0aW1lIHVwb24gY29weSwg
dG8gcHJlc2VydmUgdGhlCisgICAgLy8gcHJvcGVydHkgdGhhdCBpbi1wbGFjZSBlZGl0cyB0byBT
eW1ib2xUYWJsZUVudHJ5IGRvIG5vdCBtYW5pZmVzdCBpbiBhbnkKKyAgICAvLyBjb3BpZXMuIEhv
d2V2ZXIsIHRoZSBtYWxsb2MnZCBGYXRFbnRyeSBkYXRhIHN0cnVjdHVyZSBjb250YWlucyBhIHJl
Zi0KKyAgICAvLyBjb3VudGVkIHBvaW50ZXIgdG8gYSBzaGFyZWQgV2F0Y2hwb2ludFNldC4gVGh1
cywgaW4tcGxhY2UgZWRpdHMgb2YgdGhlCisgICAgLy8gV2F0Y2hwb2ludFNldCB3aWxsIG1hbmlm
ZXN0IGluIGFsbCBjb3BpZXMuIEhlcmUncyBhIHBpY3R1cmU6CisgICAgLy8KKyAgICAvLyBTeW1i
b2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hwb2ludFNldAorICAgIC8vCisgICAg
Ly8gSWYgeW91IG1ha2UgYSBjb3B5IG9mIGEgU3ltYm9sVGFibGVFbnRyeSwgeW91IHdpbGwgaGF2
ZToKKyAgICAvLworICAgIC8vIG9yaWdpbmFsOiBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRy
eSAtLT4gV2F0Y2hwb2ludFNldAorICAgIC8vIGNvcHk6ICAgICBTeW1ib2xUYWJsZUVudHJ5IC0t
PiBGYXRFbnRyeSAtLS0tLV4KKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5IHsKKyAgICAg
ICAgLy8gVXNlIHRoZSBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGNsYXNzLCBlaXRoZXIgdmlhIGlt
cGxpY2l0IGNhc3Qgb3IgYnkgY2FsbGluZworICAgICAgICAvLyBnZXRGYXN0KCksIHdoZW4geW91
ICgxKSBvbmx5IGNhcmUgYWJvdXQgaXNOdWxsKCksIGdldEluZGV4KCksIGFuZCBpc1JlYWRPbmx5
KCksCisgICAgICAgIC8vIGFuZCAoMikgeW91IGFyZSBpbiBhIGhvdCBwYXRoIHdoZXJlIHlvdSBu
ZWVkIHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2YgdGltZXMKKyAgICAgICAgLy8gdGhhdCB5b3Ug
YnJhbmNoIG9uIGlzRmF0KCkgd2hlbiBnZXR0aW5nIHRoZSBiaXRzKCkuCisgICAgICAgIGNsYXNz
IEZhc3QgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBGYXN0KCkKKyAgICAgICAgICAg
ICAgICA6IG1fYml0cygwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QoY29uc3QgU3ltYm9sVGFibGVFbnRy
eSYgZW50cnkpCisgICAgICAgICAgICAgICAgOiBtX2JpdHMoZW50cnkuYml0cygpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIW1fYml0czsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IGdldEluZGV4KCkgY29uc3QKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2JpdHMg
Pj4gRmxhZ0JpdHMpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGJvb2wg
aXNSZWFkT25seSgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgdW5zaWduZWQgZ2V0QXR0cmlidXRlcygpIGNvbnN0CisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7CisgICAgICAgICAgICAgICAg
aWYgKG1fYml0cyAmIFJlYWRPbmx5RmxhZykKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
cyB8PSBSZWFkT25seTsKKyAgICAgICAgICAgICAgICBpZiAobV9iaXRzICYgRG9udEVudW1GbGFn
KQorICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IERvbnRFbnVtOworICAgICAgICAg
ICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBi
b29sIGlzRmF0KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bV9iaXRzICYgRmF0RmxhZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBw
cml2YXRlOgorICAgICAgICAgICAgZnJpZW5kIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5OworICAg
ICAgICAgICAgaW50cHRyX3QgbV9iaXRzOworICAgICAgICB9OworCiAgICAgICAgIFN5bWJvbFRh
YmxlRW50cnkoKQogICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICB9
CiAKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeShpbnQgaW5kZXgpCisgICAgICAgICAgICA6IG1f
Yml0cygwKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZEluZGV4KGluZGV4
KSk7CiAgICAgICAgICAgICBwYWNrKGluZGV4LCBmYWxzZSwgZmFsc2UpOwogICAgICAgICB9CiAK
ICAgICAgICAgU3ltYm9sVGFibGVFbnRyeShpbnQgaW5kZXgsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
CisgICAgICAgICAgICA6IG1fYml0cygwKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
aXNWYWxpZEluZGV4KGluZGV4KSk7CiAgICAgICAgICAgICBwYWNrKGluZGV4LCBhdHRyaWJ1dGVz
ICYgUmVhZE9ubHksIGF0dHJpYnV0ZXMgJiBEb250RW51bSk7CiAgICAgICAgIH0KICAgICAgICAg
CisgICAgICAgIH5TeW1ib2xUYWJsZUVudHJ5KCkKKyAgICAgICAgeworICAgICAgICAgICAgZnJl
ZUZhdEVudHJ5KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN5bWJvbFRhYmxlRW50
cnkoY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgb3RoZXIpCisgICAgICAgICAgICA6IG1fYml0cygw
KQorICAgICAgICB7CisgICAgICAgICAgICAqdGhpcyA9IG90aGVyOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBvcGVyYXRvcj0oY29uc3QgU3ltYm9sVGFi
bGVFbnRyeSYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShvdGhl
ci5pc0ZhdCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29weVNsb3cob3RoZXIpOworICAg
ICAgICAgICAgZnJlZUZhdEVudHJ5KCk7CisgICAgICAgICAgICBtX2JpdHMgPSBvdGhlci5tX2Jp
dHM7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFt
X2JpdHM7CisgICAgICAgICAgICByZXR1cm4gIWJpdHMoKTsKICAgICAgICAgfQogCiAgICAgICAg
IGludCBnZXRJbmRleCgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2Jp
dHMgPj4gRmxhZ0JpdHM7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihiaXRz
KCkgPj4gRmxhZ0JpdHMpOwogICAgICAgICB9Ci0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19J
TkxJTkUgRmFzdCBnZXRGYXN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IEZhc3QoKnRoaXMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5F
IEZhc3QgZ2V0RmFzdChib29sJiB3YXNGYXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IEZhc3QgcmVzdWx0OworICAgICAgICAgICAgd2FzRmF0ID0gaXNGYXQoKTsKKyAgICAgICAgICAg
IGlmICh3YXNGYXQpCisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fYml0cyA9IGZhdEVudHJ5KCkt
Pm1fYml0czsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQubV9iaXRz
ID0gbV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAg
ICAKICAgICAgICAgdW5zaWduZWQgZ2V0QXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwotICAgICAgICAgICAgaWYgKG1fYml0
cyAmIFJlYWRPbmx5RmxhZykKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IFJlYWRPbmx5
OwotICAgICAgICAgICAgaWYgKG1fYml0cyAmIERvbnRFbnVtRmxhZykKLSAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGVzIHw9IERvbnRFbnVtOwotICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7
CisgICAgICAgICAgICByZXR1cm4gZ2V0RmFzdCgpLmdldEF0dHJpYnV0ZXMoKTsKICAgICAgICAg
fQogCiAgICAgICAgIHZvaWQgc2V0QXR0cmlidXRlcyh1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAt
ODcsMzAgKzE5NywxMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc1JlYWRP
bmx5KCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFJlYWRP
bmx5RmxhZzsKKyAgICAgICAgICAgIHJldHVybiBiaXRzKCkgJiBSZWFkT25seUZsYWc7CiAgICAg
ICAgIH0KLQorICAgICAgICAKKyAgICAgICAgYm9vbCBjb3VsZEJlV2F0Y2hlZCgpOworICAgICAg
ICAKKyAgICAgICAgLy8gTm90aWZ5IGFuIG9wcG9ydHVuaXR5IHRvIGNyZWF0ZSBhIHdhdGNocG9p
bnQgZm9yIGEgdmFyaWFibGUuIFRoaXMgaXMKKyAgICAgICAgLy8gaWRlbXBvdGVudCBhbmQgZmFp
bC1zaWxlbnQuIEl0IGlzIGlkZW1wb3RlbnQgaW4gdGhlIHNlbnNlIHRoYXQgaWYKKyAgICAgICAg
Ly8gYSB3YXRjaHBvaW50IHNldCBoYWQgYWxyZWFkeSBiZWVuIGNyZWF0ZWQsIHRoZW4gYW5vdGhl
ciBvbmUgd2lsbCBub3QKKyAgICAgICAgLy8gYmUgY3JlYXRlZC4gSGVuY2UgdHdvIGNhbGxzIHRv
IHRoaXMgbWV0aG9kIGhhdmUgdGhlIHNhbWUgZWZmZWN0IGFzCisgICAgICAgIC8vIG9uZSBjYWxs
LiBJdCBpcyBhbHNvIGZhaWwtc2lsZW50LCBpbiB0aGUgc2Vuc2UgdGhhdCBpZiBhIHdhdGNocG9p
bnQKKyAgICAgICAgLy8gc2V0IGhhZCBiZWVuIGNyZWF0ZWQgYW5kIGhhZCBhbHJlYWR5IGJlZW4g
aW52YWxpZGF0ZWQsIHRoZW4gdGhpcyB3aWxsCisgICAgICAgIC8vIGp1c3QgcmV0dXJuLiBUaGlz
IG1lYW5zIHRoYXQgY291bGRCZVdhdGNoZWQoKSBtYXkgcmV0dXJuIGZhbHNlIGV2ZW4KKyAgICAg
ICAgLy8gaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYWxsIHRvIGF0dGVtcHRUb1dhdGNoKCkuCisgICAg
ICAgIHZvaWQgYXR0ZW1wdFRvV2F0Y2goKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wqIGFkZHJl
c3NPZklzV2F0Y2hlZCgpOworICAgICAgICAKKyAgICAgICAgdm9pZCBhZGRXYXRjaHBvaW50KFdh
dGNocG9pbnQqKTsKKyAgICAgICAgCisgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRT
ZXQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV93YXRjaHBv
aW50cy5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSB2
b2lkIG5vdGlmeVdyaXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKExJS0VMWSghaXNG
YXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbm90aWZ5V3JpdGVT
bG93KCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFJlYWRPbmx5RmxhZyA9IDB4MTsKLSAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4MjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIE5vdE51bGxGbGFnID0gMHg0OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRmxh
Z0JpdHMgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgRmF0RmxhZyA9IDB4MTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IFJlYWRPbmx5RmxhZyA9IDB4MjsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludHB0cl90IERvbnRFbnVtRmxhZyA9IDB4NDsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludHB0cl90IE5vdE51bGxGbGFnID0gMHg4OworICAgICAgICBzdGF0aWMgY29u
c3QgaW50cHRyX3QgRmxhZ0JpdHMgPSA0OworICAgICAgICAKKyAgICAgICAgY2xhc3MgRmF0RW50
cnkgeworICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIHB1Ymxp
YzoKKyAgICAgICAgICAgIEZhdEVudHJ5KGludHB0cl90IGJpdHMpCisgICAgICAgICAgICAgICAg
OiBtX2JpdHMoYml0cyB8IEZhdEZsYWcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGludHB0cl90IG1fYml0czsgLy8gYWx3YXlzIGhhcyBG
YXRGbGFnIHNldCBhbmQgZXhhY3RseSBtYXRjaGVzIHdoYXQgdGhlIGJpdHMgd291bGQgaGF2ZSBi
ZWVuIGlmIHRoaXMgd2Fzbid0IGZhdC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVmUHRy
PFdhdGNocG9pbnRTZXQ+IG1fd2F0Y2hwb2ludHM7CisgICAgICAgIH07CisgICAgICAgIAorICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5JiBjb3B5U2xvdyhjb25zdCBTeW1ib2xUYWJsZUVudHJ5Jik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7CisgICAg
ICAgIAorICAgICAgICBib29sIGlzRmF0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNv
bnN0IEZhdEVudHJ5KiBmYXRFbnRyeSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChpc0ZhdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgRmF0
RW50cnkqPihtX2JpdHMgJiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IEZhdEVudHJ5KiBmYXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0Zh
dCgpKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RmF0RW50cnkqPihtX2JpdHMg
JiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBpbmZs
YXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKExJS0VMWShpc0ZhdCgpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZsYXRl
U2xvdygpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogaW5mbGF0ZVNs
b3coKTsKKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgaW50cHRyX3QgYml0cygpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYXRFbnRyeSgpLT5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90JiBiaXRz
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRmF0KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHM7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgZnJlZUZhdEVudHJ5KCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKExJS0VMWSghaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgZnJlZUZhdEVudHJ5U2xvdygpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB2b2lkIGZyZWVGYXRFbnRyeVNsb3coKTsKIAogICAgICAgICB2b2lkIHBhY2so
aW50IGluZGV4LCBib29sIHJlYWRPbmx5LCBib29sIGRvbnRFbnVtKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBtX2JpdHMgPSAoaW5kZXggPDwgRmxhZ0JpdHMpIHwgTm90TnVsbEZsYWc7CisgICAg
ICAgICAgICBpbnRwdHJfdCYgYml0c1JlZiA9IGJpdHMoKTsKKyAgICAgICAgICAgIGJpdHNSZWYg
PSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBGbGFnQml0cykgfCBOb3ROdWxsRmxh
ZzsKICAgICAgICAgICAgIGlmIChyZWFkT25seSkKLSAgICAgICAgICAgICAgICBtX2JpdHMgfD0g
UmVhZE9ubHlGbGFnOworICAgICAgICAgICAgICAgIGJpdHNSZWYgfD0gUmVhZE9ubHlGbGFnOwog
ICAgICAgICAgICAgaWYgKGRvbnRFbnVtKQotICAgICAgICAgICAgICAgIG1fYml0cyB8PSBEb250
RW51bUZsYWc7CisgICAgICAgICAgICAgICAgYml0c1JlZiB8PSBEb250RW51bUZsYWc7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNWYWxpZEluZGV4KGludCBpbmRleCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgoaW5kZXggPDwgRmxhZ0JpdHMpID4+IEZsYWdC
aXRzKSA9PSBpbmRleDsKKyAgICAgICAgICAgIHJldHVybiAoKHN0YXRpY19jYXN0PGludHB0cl90
PihpbmRleCkgPDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRzKSA9PSBzdGF0aWNfY2FzdDxpbnRwdHJf
dD4oaW5kZXgpOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IG1fYml0czsKKyAgICAgICAgaW50
cHRyX3QgbV9iaXRzOwogICAgIH07CiAKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVJbmRleEhhc2hU
cmFpdHMgOiBIYXNoVHJhaXRzPFN5bWJvbFRhYmxlRW50cnk+IHsKSW5kZXg6IFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MjAxMzYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE5IEBACisyMDEyLTA2LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIHNldCB3YXRjaHBvaW50cyBvbiBnbG9iYWwgdmFy
aWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICAKKyAg
ICAgICAgQWRkZWQgYWJpbGl0eSB0byBzZXQgdGhlIGlubGluZSBjYXBhY2l0eSBvZiBzZWdtZW50
ZWQgdmVjdG9ycy4KKworICAgICAgICAqIHd0Zi9TZWdtZW50ZWRWZWN0b3IuaDoKKyAgICAgICAg
KFdURik6CisgICAgICAgIChTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcik6CisgICAgICAgIChXVEY6
OlNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpTZWdt
ZW50ZWRWZWN0b3JJdGVyYXRvcjo6U2VnbWVudGVkVmVjdG9ySXRlcmF0b3IpOgorICAgICAgICAo
U2VnbWVudGVkVmVjdG9yKToKKwogMjAxMi0wNi0xMSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2Vs
eW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFVzaW5nIGV4dHJlcm5hbCBJQ1UgbGli
cmFyeSBvbiBjYXNlIHVuc2Vuc2l0aXZlIGRyaXZlcyB3aWxsIG5vdCB3b3JrCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9TZWdtZW50ZWRWZWN0b3IuaAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL1dURi93dGYv
U2VnbWVudGVkVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQAogbmFt
ZXNwYWNlIFdURiB7CiAKICAgICAvLyBBbiBpdGVyYXRvciBmb3IgU2VnbWVudGVkVmVjdG9yLiBJ
dCBzdXBwb3J0cyBvbmx5IHRoZSBwcmUgKysgb3BlcmF0b3IKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplPiBjbGFzcyBTZWdtZW50ZWRWZWN0b3I7Ci0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVj
dG9ySXRlcmF0b3IgeworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNp
emUgPSA4LCBzaXplX3QgSW5saW5lQ2FwYWNpdHkgPSAzMj4gY2xhc3MgU2VnbWVudGVkVmVjdG9y
OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXpl
X3QgSW5saW5lQ2FwYWNpdHkgPSAzMj4gY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3Igewog
ICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3I8VCwgU2Vn
bWVudFNpemU+OworICAgICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21l
bnRTaXplLCBJbmxpbmVDYXBhY2l0eT47CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIFNl
Z21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiBJdGVyYXRvcjsKKyAgICAgICAg
dHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2Fw
YWNpdHk+IEl0ZXJhdG9yOwogCiAgICAgICAgIH5TZWdtZW50ZWRWZWN0b3JJdGVyYXRvcigpIHsg
fQogCkBAIC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgcmV0dXJu
IG1faW5kZXggIT0gb3RoZXIubV9pbmRleCB8fCBtX3NlZ21lbnQgIT0gb3RoZXIubV9zZWdtZW50
IHx8ICZtX3ZlY3RvciAhPSAmb3RoZXIubV92ZWN0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBT
ZWdtZW50ZWRWZWN0b3JJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IFNlZ21lbnRlZFZlY3Rvckl0
ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiYgb3RoZXIpCisgICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0
ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVu
dFNpemUsIElubGluZUNhcGFjaXR5PiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1f
dmVjdG9yID0gb3RoZXIubV92ZWN0b3I7CiAgICAgICAgICAgICBtX3NlZ21lbnQgPSBvdGhlci5t
X3NlZ21lbnQ7CkBAIC04NCwyNSArODQsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKFNlZ21lbnRl
ZFZlY3RvcjxULCBTZWdtZW50U2l6ZT4mIHZlY3Rvciwgc2l6ZV90IHNlZ21lbnQsIHNpemVfdCBp
bmRleCkKKyAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoU2VnbWVudGVkVmVjdG9yPFQs
IFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4mIHZlY3Rvciwgc2l6ZV90IHNlZ21lbnQsIHNp
emVfdCBpbmRleCkKICAgICAgICAgICAgIDogbV92ZWN0b3IodmVjdG9yKQogICAgICAgICAgICAg
LCBtX3NlZ21lbnQoc2VnbWVudCkKICAgICAgICAgICAgICwgbV9pbmRleChpbmRleCkKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXpl
PiYgbV92ZWN0b3I7CisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5s
aW5lQ2FwYWNpdHk+JiBtX3ZlY3RvcjsKICAgICAgICAgc2l6ZV90IG1fc2VnbWVudDsKICAgICAg
ICAgc2l6ZV90IG1faW5kZXg7CiAgICAgfTsKIAogICAgIC8vIFNlZ21lbnRlZFZlY3RvciBpcyBq
dXN0IGxpa2UgVmVjdG9yLCBidXQgaXQgZG9lc24ndCBtb3ZlIHRoZSB2YWx1ZXMKICAgICAvLyBz
dG9yZWQgaW4gaXRzIGJ1ZmZlciB3aGVuIGl0IGdyb3dzLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUg
dG8ga2VlcAotICAgIC8vIHBvaW50ZXJzIGludG8gYSBTZWdtZW50ZWRWZWN0b3IuCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVj
dG9yIHsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNl
Z21lbnRTaXplPjsKKyAgICAvLyBwb2ludGVycyBpbnRvIGEgU2VnbWVudGVkVmVjdG9yLiBUaGUg
ZGVmYXVsdCB0dW5pbmcgdmFsdWVzIGFyZQorICAgIC8vIG9wdGltaXplZCBmb3Igc2VnbWVudGVk
IHZlY3RvcnMgdGhhdCBnZXQgbGFyZ2U7IHlvdSBtYXkgd2FudCB0byB1c2UKKyAgICAvLyBTZWdt
ZW50ZWRWZWN0b3I8dGhpbmd5LCAxLCAwPiBpZiB5b3UgZG9uJ3QgZXhwZWN0IGEgbG90IG9mIGVu
dHJpZXMuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZSwgc2l6
ZV90IElubGluZUNhcGFjaXR5PgorICAgIGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7CisgICAgICAg
IGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5s
aW5lQ2FwYWNpdHk+OwogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0
b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4gSXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgU2Vn
bWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiBJdGVy
YXRvcjsKIAogICAgICAgICBTZWdtZW50ZWRWZWN0b3IoKQogICAgICAgICAgICAgOiBtX3NpemUo
MCkKQEAgLTI1MCw3ICsyNTMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBzaXplX3Qg
bV9zaXplOwogICAgICAgICBTZWdtZW50IG1faW5saW5lU2VnbWVudDsKLSAgICAgICAgVmVjdG9y
PFNlZ21lbnQqLCAzMj4gbV9zZWdtZW50czsKKyAgICAgICAgVmVjdG9yPFNlZ21lbnQqLCBJbmxp
bmVDYXBhY2l0eT4gbV9zZWdtZW50czsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>
<flag name="commit-queue"
          id="154659"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147207</attachid>
            <date>2012-06-12 18:27:47 -0700</date>
            <delta_ts>2012-06-12 22:41:14 -0700</delta_ts>
            <desc>backup</desc>
            <filename>globalwatch_patch_13.diff</filename>
            <type>text/plain</type>
            <size>137407</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NyBA
QAorMjAxMi0wNi0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaW1wbGVtZW50cyBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgZm9sZGluZyBieSBhbGxv
d2luZyB0aGUgb3B0aW1pemluZworICAgICAgICBjb21waWxlciB0byBzZXQgYSAid2F0Y2hwb2lu
dCIgb24gZ2xvYmFscyB0aGF0IGl0IHdpc2hlcyB0byBjb25zdGFudCBmb2xkLgorICAgICAgICBJ
ZiB0aGUgd2F0Y2hwb2ludCBmaXJlcywgdGhlbiBhbiBPU1IgZXhpdCBpcyBmb3JjZWQgYnkgb3Zl
cndyaXRpbmcgdGhlCisgICAgICAgIG1hY2hpbmUgY29kZSB0aGF0IHRoZSBvcHRpbWl6aW5nIGNv
bXBpbGVyIGdlbmVyYXRlZCB3aXRoIGEganVtcC4KKyAgICAgICAgCisgICAgICAgIEFzIHN1Y2gs
IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHF1aXRlIGEgYml0IG9mIHN0dWZmOgorICAgICAgICAKKyAg
ICAgICAgLSBKdW1wIHJlcGxhY2VtZW50IG9uIHRob3NlIGhhcmR3YXJlIHRhcmdldHMgc3VwcG9y
dGVkIGJ5IHRoZSBvcHRpbWl6aW5nCisgICAgICAgICAgSklULiBJdCBpcyBub3cgcG9zc2libGUg
dG8gcGF0Y2ggaW4gYSBqdW1wIGluc3RydWN0aW9uIG92ZXIgYW55IHJlY29yZGVkCisgICAgICAg
ICAgd2F0Y2hwb2ludCBsYWJlbC4gVGhlIGp1bXAgbXVzdCBiZSAibG9jYWwiIGluIHRoZSBzZW5z
ZSB0aGF0IGl0IG11c3QgYmUKKyAgICAgICAgICB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBsYXJn
ZXN0IGp1bXAgZGlzdGFuY2Ugc3VwcG9ydGVkIGJ5IGEgb25lCisgICAgICAgICAgaW5zdHJ1Y3Rp
b24ganVtcC4KKyAgICAgICAgICAKKyAgICAgICAgLSBXYXRjaHBvaW50U2V0cyBhbmQgV2F0Y2hw
b2ludHMuIEEgV2F0Y2hwb2ludCBpcyBhIGRvdWJseS1saW5rZWQgbGlzdCBub2RlCisgICAgICAg
ICAgdGhhdCByZWNvcmRzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIGp1bXAgbXVzdCBiZSBpbnNlcnRl
ZCBhbmQgdGhlCisgICAgICAgICAgZGVzdGluYXRpb24gdG8gd2hpY2ggaXQgc2hvdWxkIGp1bXAu
IFdhdGNocG9pbnRzIGNhbiBiZSBhZGRlZCB0byBhCisgICAgICAgICAgV2F0Y2hwb2ludFNldC4g
VGhlIFdhdGNocG9pbnRTZXQgY2FuIGJlIGZpcmVkIGFsbCBhdCBvbmNlLCB3aGljaCBwbGFudHMK
KyAgICAgICAgICBhbGwganVtcHMuIFdhdGNocG9pbnRTZXQgYWxzbyByZW1lbWJlcnMgaWYgaXQg
aGFkIGV2ZXIgYmVlbiBpbnZhbGlkYXRlZCwKKyAgICAgICAgICB3aGljaCBhbGxvd3MgZm9yIG1v
bm90b25pY2l0eTogd2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8gb3B0aW1pemUgdXNpbmcKKyAg
ICAgICAgICB3YXRjaHBvaW50cyBvbiBzb21ldGhpbmcgZm9yIHdoaWNoIHdhdGNocG9pbnRzIGhh
ZCBwcmV2aW91c2x5IGZpcmVkLiBUaGUKKyAgICAgICAgICBhY3Qgb2Ygbm90aWZ5aW5nIGEgV2F0
Y2hwb2ludFNldCBoYXMgYSB0cml2aWFsIGZhc3QgcGF0aCBpbiBjYXNlIG5vCisgICAgICAgICAg
V2F0Y2hwb2ludHMgYXJlIHJlZ2lzdGVyZWQgKG9uZS1ieXRlIGxvYWQrYnJhbmNoKS4KKyAgICAg
ICAgCisgICAgICAgIC0gU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLiBJ
dCdzIGxpa2Ugc3BlY3VsYXRpb25DaGVjaygpLAorICAgICAgICAgIGV4Y2VwdCB0aGF0IHlvdSBk
b24ndCBoYXZlIHRvIGVtaXQgYnJhbmNoZXMuIEJ1dCwgeW91IG5lZWQgdG8ga25vdyB3aGF0Cisg
ICAgICAgICAgV2F0Y2hwb2ludFNldCB0byBhZGQgdGhlIHJlc3VsdGluZyBXYXRjaHBvaW50IHRv
LiBOb3QgZXZlcnl0aGluZyB0aGF0CisgICAgICAgICAgeW91IGNvdWxkIHdyaXRlIGEgc3BlY3Vs
YXRpb25DaGVjaygpIGZvciB3aWxsIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRoYXQKKyAgICAgICAg
ICB3b3VsZCBnZXQgbm90aWZpZWQgaWYgdGhlIGNvbmRpdGlvbiB5b3Ugd2VyZSBzcGVjdWxhdGlu
ZyBhZ2FpbnN0IGJlY2FtZQorICAgICAgICAgIGludmFsaWQuCisgICAgICAgICAgCisgICAgICAg
IC0gU3ltYm9sVGFibGVFbnRyeSBub3cgaGFzIHRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgV2F0
Y2hwb2ludFNldC4gSXQgY2FuCisgICAgICAgICAgZG8gc28gd2l0aG91dCBpbmN1cnJpbmcgYW55
IHNwYWNlIG92ZXJoZWFkIGZvciB0aG9zZSBlbnRyaWVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICBo
YXZlIFdhdGNocG9pbnRTZXRzLgorICAgICAgICAgIAorICAgICAgICAtIFRoZSBieXRlY29kZSBn
ZW5lcmF0b3IgaW5mZXJzIGFsbCBnbG9iYWwgZnVuY3Rpb24gdmFyaWFibGVzIHRvIGJlCisgICAg
ICAgICAgd2F0Y2hhYmxlLCBhbmQgbWFrZXMgYWxsIHN0b3JlcyBwZXJmb3JtIHRoZSBXYXRjaHBv
aW50U2V0J3Mgd3JpdGUgY2hlY2ssCisgICAgICAgICAgYW5kIG1hcmtzIGFsbCBsb2FkcyBhcyBi
ZWluZyBwb3RlbnRpYWxseSB3YXRjaGFibGUgKGkuZS4geW91IGNhbiBjb21waWxlCisgICAgICAg
ICAgdGhlbSB0byBhIHdhdGNocG9pbnQgYW5kIGEgY29uc3RhbnQpLgorICAgICAgICAKKyAgICAg
ICAgUHV0IHRvZ2V0aGVyLCB0aGlzIGFsbG93cyBmb3IgZnVsbHkgc2xlYXp5IGlubGluaW5nIG9m
IGNhbGxzIHRvIGdsb2JhbGx5CisgICAgICAgIGRlY2xhcmVkIGZ1bmN0aW9ucy4gVGhlIGlubGlu
ZSBwcm9sb2d1ZSB3aWxsIG5vIGxvbmdlciBjb250YWluIHRoZSBsb2FkIG9mCisgICAgICAgIHRo
ZSBmdW5jdGlvbiwgb3IgYW55IGNoZWNrcyBvZiB0aGUgZnVuY3Rpb24geW91J3JlIGNhbGxpbmcu
IEkuZS4gaXQncworICAgICAgICBwcmV0dHkgbXVjaCBsaWtlIHRoZSBraW5kIG9mIGlubGluaW5n
IHlvdSB3b3VsZCBzZWUgaW4gSmF2YSBvciBDKysuCisgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUg
d2F0Y2hwb2ludGluZyBmdW5jdGlvbmFsaXR5IGlzIGJ1aWx0IHRvIGJlIGZhaXJseSBnZW5lcmFs
LAorICAgICAgICBhbmQgc2hvdWxkIGFsbG93IHNldHRpbmcgd2F0Y2hwb2ludHMgb24gYWxsIHNv
cnRzIG9mIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHNsZWF6eSBpbmxpbmluZyBtZWFucyB0aGF0IHdlIHdpbGwgbm93IHNv
bWV0aW1lcyBpbmxpbmUgaW4gY29kZSBwYXRocworICAgICAgICB0aGF0IGhhdmUgbmV2ZXIgZXhl
Y3V0ZWQuIFByZXZpb3VzbHksIHRvIGlubGluZSB3ZSB3b3VsZCBoYXZlIGVpdGhlciBoYWQKKyAg
ICAgICAgdG8gaGF2ZSBleGVjdXRlZCB0aGUgY2FsbCAodG8gcmVhZCB0aGUgY2FsbCdzIGlubGlu
ZSBjYWNoZSkgb3IgaGF2ZQorICAgICAgICBleGVjdXRlZCB0aGUgbWV0aG9kIGNoZWNrICh0byBy
ZWFkIHRoZSBtZXRob2QgY2hlY2sncyBpbmxpbmUgY2FjaGUpLiBOb3csCisgICAgICAgIHdlIG1p
Z2h0IGlubGluZSB3aGVuIHRoZSBjYWxsZWUgaXMgYSB3YXRjaGVkIGdsb2JhbCB2YXJpYWJsZS4g
VGhpcworICAgICAgICByZXZlYWxlZCBzb21lIGh1bW9yb3VzIGJ1Z3MuIEZpcnN0LCBjb25zdGFu
dCBmb2xkaW5nIGRpc2FncmVlZCB3aXRoIENGQQorICAgICAgICBvdmVyIHdoYXQga2luZHMgb2Yg
b3BlcmF0aW9ucyBjYW4gY2xvYmJlciAoZXhhbXBsZTogY29kZSBwYXRoIEEgaXMgZGVhZAorICAg
ICAgICBidXQgc3RvcmVzIGEgU3RyaW5nIGludG8gdmFyaWFibGUgWCwgYWxsIG90aGVyIGNvZGUg
cGF0aHMgc3RvcmUgMCBpbnRvCisgICAgICAgIFgsIGFuZCB0aGVuIHlvdSBkbyBDb21wYXJlRXEo
WCwgMCkgLSBDRkEgd2lsbCBzYXkgdGhhdCB0aGlzIGlzIGEgbm9uLQorICAgICAgICBjbG9iYmVy
aW5nIGNvbnN0YW50LCBidXQgY29uc3RhbnQgZm9sZGluZyB0aG91Z2h0IGl0IHdhcyBjbG9iYmVy
aW5nCisgICAgICAgIGJlY2F1c2UgaXQgc2F3IHRoZSBTdHJpbmcgcHJlZGljdGlvbikuIFNlY29u
ZCwgaW5saW5pbmcgd291bGQgY3Jhc2ggaWYKKyAgICAgICAgdGhlIGlubGluZSBjYWxsZWUgaGFk
IG5vdCBiZWVuIGNvbXBpbGVkLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggYnVncywKKyAgICAgICAg
c2luY2Ugb3RoZXJ3aXNlIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyB3b3VsZCByZXBvcnQgcmVn
cmVzc2lvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJsZXIpOgor
ICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNdjdBc3NlbWJsZXIpOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6
QVJNdjdBc3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjptYXhKdW1wUmVw
bGFjZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgor
ICAgICAgICAoTGFiZWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjp3
YXRjaHBvaW50TGFiZWwpOgorICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2Vt
YmxlckFSTSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpyZXBsYWNlV2l0aEp1bXApOgorICAg
ICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTXY3OjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWFr
ZUJyYW5jaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAg
IChNYWNyb0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlclNINC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyU0g0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJTSDQ6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODYpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoVGVzdDgpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAqIGFzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZBc3NlbWJs
ZXIpOgorICAgICAgICAoWDg2QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
OjpjbXBiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp0ZXN0Yl9pbSk6CisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpsYWJlbCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZv
cm1hdHRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kT1NSRXhpdCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeSk6CisgICAgICAg
IChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZFdhdGNocG9pbnQp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mV2F0Y2hwb2ludHMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OndhdGNocG9pbnQpOgorICAgICAgICAoREZHRGF0YSk6CisgICAg
ICAgICogYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpleGl0
S2luZFRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpleGl0S2luZElzQ291bnRhYmxlKToK
KyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSW5zdHJ1Y3Rpb24p
OgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5
dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cGFkT3Bjb2Rl
TmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdp
dGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0
aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1Zh
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6UHJlZml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNz
aWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5v
ZGU6OmVtaXRDb2RlU2luZ2xlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6Y2xvYmJlclN0cnVjdHVyZXMpOgorICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpkaWRDbG9iYmVyKToKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxs
SGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50
cyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
U0VQaGFzZTo6Z2xvYmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKToKKyAgICAgICAgKENTRVBo
YXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyU3RvcmVFbGltaW5h
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAg
ICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29t
cGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAg
KiBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDb3Jy
ZWN0YWJsZUp1bXBQb2ludDo6aXNTZXQpOgorICAgICAgICAoQ29ycmVjdGFibGVKdW1wUG9pbnQp
OgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGls
ZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKToKKyAgICAgICAgKE5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzUmVnaXN0ZXJQb2ludGVyKToKKyAgICAgICAgKiBkZmcvREZH
Tm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6Ok9TUkV4aXQpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Lmg6CisgICAgICAgIChPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBy
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxs
T3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2Fs
bCk6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGpp
dC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRI
X0RFQ0wpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
Lmg6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChK
U09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQp
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAg
KiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3ltYm9s
VGFibGVFbnRyeSk6CisgICAgICAgIChGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6RmFzdDo6RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6
OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmdldEluZGV4
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNSZWFkT25seSk6Cisg
ICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmdldEF0dHJpYnV0ZXMpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc0ZhdCk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlRW50cnk6OlN5bWJvbFRhYmxlRW50cnkpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5Ojp+U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRh
YmxlRW50cnk6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Omlz
TnVsbCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmdldEluZGV4KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVu
dHJ5Ojppc1JlYWRPbmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6d2F0Y2hw
b2ludFNldCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlKToK
KyAgICAgICAgKEZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmF0
RW50cnk6OkZhdEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNGYXQp
OgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpmYXRFbnRyeSk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6OmluZmxhdGUpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJs
ZUVudHJ5OjpiaXRzKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVu
dHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6cGFjayk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzVmFsaWRJbmRleCk6CisKIDIwMTItMDYtMTIgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgc2hvdWxkIG5vdCBBU1NF
UlQgaWYgeW91IGhhdmUgYSBkb3VibGUgdXNlIG9mIGEgdmFyaWFibGUgdGhhdCBpcyBub3QgcmV2
ZWFsZWQgdG8gYmUgYSBkb3VibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVf
U09VUkNFUwogICAgIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiAgICAgYnl0ZWNvZGUvU2Ft
cGxpbmdUb29sLmNwcAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorICAgIGJ5
dGVjb2RlL1dhdGNocG9pbnQuY3BwCiAKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTIzMSw2ICsyMzIs
NyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3RyaW5nUmVjdXJz
aW9uQ2hlY2tlci5jcHAKICAgICBydW50aW1lL1N0cnVjdHVyZS5jcHAKICAgICBydW50aW1lL1N0
cnVjdHVyZUNoYWluLmNwcAorICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVudGlt
ZS9UaW1lb3V0Q2hlY2tlci5jcHAKICAgICBydW50aW1lL1VTdHJpbmcuY3BwCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjAxMzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtMTMzLDYgKzEzMyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9XYXRjaHBvaW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTGFiZWwuaCBcCkBAIC02MDMsNiArNjA1LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Rlcm1pbmF0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGlt
ZW91dENoZWNrZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lv
biAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBj
b3B5KQpAQCAtNjIsMTAgKzYyLDExIEBAIFNPVVJDRVMgKz0gXAogICAgIGJ5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9PcGNvZGUuY3BwIFwK
ICAgICBieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBcCi0gICAgYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwIFwKICAgICBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBcCiAg
ICAgYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcCBcCisgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwIFwKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgXAorICAgIGJ5dGVj
b2RlL1dhdGNocG9pbnQuY3BwIFwKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIFwKICAgICBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBcCiAgICAgaGVhcC9Db3Bp
ZWRTcGFjZS5jcHAgXApAQCAtMjM2LDYgKzIzNyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRp
bWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgXAogICAgIHJ1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uY3BwIFwKICAgICBydW50aW1lL1N0cnVjdHVyZS5jcHAgXAorICAgIHJ1bnRpbWUvU3ltYm9s
VGFibGUuY3BwIFwKICAgICBydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCiAgICAgcnVudGlt
ZS9VU3RyaW5nLmNwcCBcCiAgICAgdG9vbHMvQ29kZVByb2ZpbGUuY3BwIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
CShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTI1NCw2ICsxMjU0LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuY3BwIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFN5
bWJvbFRhYmxlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMTY4MSw2ICsxNjg1LDE0IEBACiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxWYWx1ZVByb2ZpbGUuaCIKIAkJCQk+CiAJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcV2F0
Y2hwb2ludC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXGJ5dGVjb2RlXFdhdGNocG9pbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CiAJCTwv
RmlsdGVyPgogCQk8RmlsdGVyCiAJCQlOYW1lPSJkZWJ1Z2dlciIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTM5LDYgKzEzOSw5IEBACiAJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5
bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTE5
RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDBFMTU3RjMz
MjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCAqLzsgfTsKIAkJMEY5
MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDBGMTU3RjMz
MjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlEMjUxNTg1M0NFMDAwNEE0
RTdEIC8qIFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICov
OyB9OworCQkwRjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMjMxNTg1M0NERTAw
NEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlE
MjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLzsgfTsKIAkJMEY5MzMyOUQx
NENBN0RDMzAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBD
YWxsTGlua1N0YXR1cy5jcHAgKi87IH07CiAJCTBGOTMzMjlFMTRDQTdEQzUwMDg1RjNDNiAvKiBD
YWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5MzMyOUYxNENB
N0RDQTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5
SWRTdGF0dXMuY3BwICovOyB9OwpAQCAtMzcwLDEwICszNzMsMTAgQEAKIAkJN0U0RUU3MEYwRUJC
N0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1
Y3R1cmVDaGFpbi5jcHAgKi87IH07CiAJCTdFRkYwMDY0MEVDMDVBOUEwMEFBN0M5MyAvKiBOb2Rl
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VG
RjAwNjMwRUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggKi87IH07CiAJCTg0MDQ4MDEzMTAy
MUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwODk0RDYwRkFGQkEyRDAwMDAxODY1IC8qIEpT
QVBJVmFsdWVXcmFwcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi87IH07
Ci0JCTg2MDE2MUU0MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTAwRjNBODND
MTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi87IH07Ci0JCTg2MDE2MUU1MEYzQTgz
QzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2XzY0LmggKi87IH07Ci0JCTg2MDE2MUU2MEYzQTgzQzEwMEY4NDcxMCAv
KiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTIwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmggKi87IH07CisJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg2MDE2MUU0MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTAwRjNBODNDMTAw
Rjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYwMTYxRTUwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3Jv
QXNzZW1ibGVyWDg2XzY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjAx
NjFFNjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDRGNTA1MTQzQ0UxQzIwMEIyOTVGNSAv
KiBKU0dsb2JhbFRoaXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2MDRGNTAzMTQzQ0UxQzEwMEIyOTVGNSAvKiBKU0dsb2JhbFRoaXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjBCRDgwMTE0OEVB
NkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYxMkU0
Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0
Y2hSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDAxLDExICs0MDQsMTEgQEAKIAkJODY5RDA0QUYxMTkzQjU0RDAwODAzNDc1IC8qIENh
Y2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUQwNEFFMTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFu
c2NlbmRlbnRhbEZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY5RUJDQjcwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUVCQ0I2MEU4
QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBOTBFRDAwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFy
aXRobWV0aWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZBOTBFQ0YwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMuY3BwICovOyB9Owot
CQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2
RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyB9OwotCQk4NkFERDE0NjBGRERFQTk4MDAwNkVF
QzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1i
bGVyQVJNdjcuaCAqLzsgfTsKKwkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkFERDE0NjBGRERFQTk4MDAw
NkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNz
ZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkFFNjRBODEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTUx
MzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmNwcCAqLzsgfTsKLQkJODZBRTY0
QTkxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFFNjRBNjEzNUU1RTFDMDA5NjMwMTIg
LyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLzsgfTsKLQkJODZBRTY0QUExMzVFNUUxQzAwOTYzMDEy
IC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZBRTY0QTcxMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oICovOyB9
OworCQk4NkFFNjRBOTEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE2MTM1RTVF
MUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBT
SDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFFNkM0RDEzNkExMUU0
MDA5NjMwMTIgLyogREZHRlBSSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZBRTZDNEIxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCAq
LzsgfTsKIAkJODZBRTZDNEUxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2QzRDMTM2QTExRTQw
MDk2MzAxMiAvKiBERkdHUFJJbmZvLmggKi87IH07CiAJCTg2QjU4MjY3MTREMjc5NkMwMEE5QzMw
NiAvKiBDb2RlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkI1ODIyRTE0RDIzNzNCMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwICov
OyB9OwpAQCAtNDE0LDggKzQxNyw4IEBACiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBE
RkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9OwogCQk4NkMz
NkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAv
KiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFS
TS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1
NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwotCQk4
NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAw
N0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07Ci0JCTg2QzU2OEUyMTFBMjEzRUUw
MDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxl
ci5oICovOyB9OworCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJN
SVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1
NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZDNTY4RTIxMUEyMTNFRTAw
MDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZD
QTAzMkUxMDM4RTg0NDAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQTAzMkQxMDM4RTg0NDAwMjhBNjA5IC8q
IEV4ZWN1dGFibGUuY3BwICovOyB9OwogCQk4NkNBRkVFMzEwMzVEREU2MDAyOEE2MDkgLyogRXhl
Y3V0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZDQUZFRTIxMDM1RERFNjAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2
ODIgLyogSklUSW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZDQzg1QTAwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZU1ldGhv
ZHMuaCAqLzsgfTsKQEAgLTQyMywxMyArNDI2LDEzIEBACiAJCTg2Q0M4NUM0MEVFN0E4OTQwMDI4
ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVDMzBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVy
dHlBY2Nlc3MuY3BwICovOyB9OwogCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQ0VG
REQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJN
QXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2RDNCMkJGMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwICovOyB9Owot
CQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMDEwMTU2QkRFMDAyODY1
RTcgLyogQVJNQXNzZW1ibGVyLmggKi87IH07Ci0JCTg2RDNCMkM1MTAxNTZCREUwMDI4NjVFNyAv
KiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyogQXNz
ZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oICovOyB9OwotCQk4NkQzQjJDNjEwMTU2QkRF
MDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMyMTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fz
c2VtYmxlckFSTS5oICovOyB9OwotCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZE
M0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLzsgfTsKLQkJODZEM0IzQzQx
MDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCM0MyMTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBh
dGNoQnVmZmVyLmggKi87IH07CisJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
RDNCMkMwMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkQzQjJDNTEwMTU2QkRFMDAyODY1
RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8q
IEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkQzQjJDNjEwMTU2QkRFMDAyODY1RTcgLyog
TWFjcm9Bc3NlbWJsZXJBUk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2RDNCMkMyMTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2RDNC
M0MzMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjNDMTEwMTU5RDdGMDAyODY1RTcgLyogTGlu
a0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTg2RDNCM0M0MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjNDMjEwMTU5RDdGMDAy
ODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2REI2NDY0MEY5NUM2RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxl
QWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZEQjY0NjMwRjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxv
Y2F0b3JGaXhlZFZNUG9vbC5jcHAgKi87IH07Ci0JCTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAv
KiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCAqLzsgfTsK
KwkJODZFMTE2QjEwRkU3NUFDODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFMTE2QjAwRkU3NUFDODAwQjUx
MkJDIC8qIENvZGVMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2RTg1NTM5MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTg1
NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLzsgfTsKIAkJODZFQkYy
RkYxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVCRjJGOTE1NjBGMDM2MDA4RTkyMjIg
LyogTmFtZUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJODZFQkYzMDAxNTYwRjA2QTAwOEU5MjIy
IC8qIE5hbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZFQkYyRkExNTYwRjAzNjAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5o
ICovOyB9OwpAQCAtNDc1LDggKzQ3OCw4IEBACiAJCTk1RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAv
KiBKU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NTk4OEJBOTBFNDc3QkVDMDBEMjhENEQgLyogSlNQcm9maWxlclByaXZh
dGUuY3BwICovOyB9OwogCQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTYwMDk3QTUw
RUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCAqLzsgfTsKIAkJOTYwNjI2OTYwRkI4RUMw
MjAwOTc5OEFCIC8qIEpJVFN0dWJDYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NjA2MjY5NTBGQjhFQzAyMDA5Nzk4QUIgLyogSklUU3R1YkNhbGwu
aCAqLzsgfTsKLQkJOTY4OENCMTUwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTMw
RUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5oICovOyB9OwotCQk5Njg4Q0IxNjBF
RDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNz
ZW1ibGVyLmggKi87IH07CisJCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJC
dWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2
ODhDQjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5Njg4Q0IxNjBFRDEyQjRFMDAx
RDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTY5QTA3
MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyMTBFRDFDRTMzMDBGMUY2ODEg
LyogQnl0ZWNvZGVHZW5lcmF0b3IuaCAqLzsgfTsKIAkJOTY5QTA3MkEwRUQxQ0U2OTAwRjFGNjgx
IC8qIExhYmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NjlBMDcyNzBFRDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCAqLzsgfTsKIAkJOTY5QTA3MkIw
RUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzI4MEVEMUNFNjkwMEYxRjY4MSAvKiBSZWdpc3Rl
cklELmggKi87IH07CkBAIC04MzYsNiArODM5LDkgQEAKIAkJMEY5MTlEMEExNTdFRTA5RDAwNEE0
RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEYxNTdG
MzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQyMjE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hw
b2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXRjaHBvaW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMjMxNTg1M0NERTAwNEE0
RTdEIC8qIFdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0
Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQyNzE1ODU2Nzcw
MDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3ltYm9sVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbExpbmtTdGF0dXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtT
dGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbExpbmtTdGF0dXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2
IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2V0QnlJZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ1
LDYgKzIwNTEsNyBAQAogCQkJCTdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVD
aGFpbi5jcHAgKi8sCiAJCQkJN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNo
YWluLmggKi8sCiAJCQkJQkM5MDQxNDcwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZS5oICovLAorCQkJCTBGOTE5RDI3MTU4NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xU
YWJsZS5jcHAgKi8sCiAJCQkJMTRBMzk2QTYwQ0QyOTMzMTAwQjVCNEZGIC8qIFN5bWJvbFRhYmxl
LmggKi8sCiAJCQkJOTdGNjkwM0ExMTY5REY3RjAwQTZCQjQ2IC8qIFRlcm1pbmF0b3IuaCAqLywK
IAkJCQkxNEE0MkUzRDBGNEY2MEVFMDA1OTkwOTkgLyogVGltZW91dENoZWNrZXIuY3BwICovLApA
QCAtMjI5Niw2ICsyMzAzLDggQEAKIAkJCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFs
dWVQcm9maWxlLmggKi8sCiAJCQkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVj
b3ZlcnkuaCAqLywKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lz
dGVyLmggKi8sCisJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3Bw
ICovLAorCQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTI2NzEsNiArMjY4MCw3IEBACiAJCQkJMEYxNjAxNUUxNTYxOThDOTAwQzI1ODdDIC8qIERGR0Fy
Z3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBE
MTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjkxOUQxMTE1N0YzMzJDMDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNo
cG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzI0NSw2ICszMjU1LDggQEAKIAkJCQlDMjVGOEJD
RDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOTE5RDBDMTU3RUUwOUYwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOTE5RDI1MTU4NTND
RTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOTE5RDI4
MTU4NTY3NzMwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJ
KHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
djdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgzLDYgKzQ4MywxMiBAQCBwdWJsaWM6
CiAgICAgICAgIEp1bXBMaW5rVHlwZSBtX2xpbmtUeXBlIDogODsKICAgICAgICAgQ29uZGl0aW9u
IG1fY29uZGl0aW9uIDogMTY7CiAgICAgfTsKKyAgICAKKyAgICBBUk12N0Fzc2VtYmxlcigpOgor
ICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAgICAgICwgbV9p
bmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICB7CisgICAgfQogCiBwcml2
YXRlOgogCkBAIC0xODIwLDEwICsxODI2LDI1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZVdvcmRPcDhJbW04KE9QX05PUF9UMSwgMCk7CiAgICAgfQorICAgIAorICAg
IEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgeworICAgICAgICBBc3Nl
bWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50
KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9pbmRleE9mTGFzdFdh
dGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RX
YXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVs
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBB
c3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICB3aGls
ZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9m
VGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdu
bWVudCkKQEAgLTIwNjcsNiArMjA4OCwyOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7CiAgICAgfQorICAg
IAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0
LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAxKSk7CisgICAgICAgIEFTU0VSVCghKHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4odG8pICYgMSkpOworICAgICAgICB1aW50MTZfdCogcHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpICsgMjsKKyAgICAgICAgCisgICAg
ICAgIC8vIEVuc3VyZSB0aGF0IHdlJ3JlIG5vdCBpbiBvbmUgb2YgdGhvc2UgZXJyYXRhLXRyaWdn
ZXJpbmcgdGhpbmdpZXMuIElmIHdlIGFyZSwgdGhlbgorICAgICAgICAvLyBwcmVwZW5kIGEgbm9w
LgorICAgICAgICBib29sIHNwYW5zVHdvNEsgPSAoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KHB0cikgJiAweGZmZikgPT0gMHgwMDIpOworICAgICAgICAKKyAgICAgICAgaWYgKHNwYW5zVHdv
NEspIHsKKyAgICAgICAgICAgIHB0clstMl0gPSBPUF9OT1BfVDE7CisgICAgICAgICAgICBwdHIr
KzsKKyAgICAgICAgfQorCisgICAgICAgIGxpbmtKdW1wVDQocHRyLCB0byk7CisgICAgfQorICAg
IAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gNjsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsg
cmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KIApAQCAtMjYwNCw2ICsyNjQ4LDgg
QEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxMaW5rUmVjb3JkPiBtX2p1bXBzVG9MaW5rOwogICAg
IFZlY3RvcjxpbnQzMl90PiBtX29mZnNldHM7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBv
aW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMDEzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBM
aW5rQnVmZmVyOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKK2NsYXNzIFdhdGNocG9pbnQ7CiBuYW1l
c3BhY2UgREZHIHsKIGNsYXNzIENvcnJlY3RhYmxlSnVtcFBvaW50OwogfQpAQCAtNzAsNyArNzEs
NiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgdXNlZCBhcyBvcGVy
YW5kcyB0byBNYWNyb0Fzc2VtYmxlciBvcGVyYXRpb25zLAogICAgIC8vIGRlc2NyaWJpbmcgaW1t
ZWRpYXRlICBhbmQgbWVtb3J5IG9wZXJhbmRzIHRvIHRoZSBpbnN0cnVjdGlvbnMgdG8gYmUgcGxh
bnRlZC4KIAotCiAgICAgZW51bSBTY2FsZSB7CiAgICAgICAgIFRpbWVzT25lLAogICAgICAgICBU
aW1lc1R3bywKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKdW1wOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogICAg
ICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFdhdGNo
cG9pbnQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIExhYmVsKCkKQEAgLTU1OSw2ICs1NjAsMTMg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAgfQogICAgIAorICAg
IExhYmVsIHdhdGNocG9pbnRMYWJlbCgpCisgICAgeworICAgICAgICBMYWJlbCByZXN1bHQ7Cisg
ICAgICAgIHJlc3VsdC5tX2xhYmVsID0gbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRjaHBvaW50KCk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIExhYmVsIGFsaWduKCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFsaWduKDE2KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAkocmV2aXNpb24g
MTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZm
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBFTkFCTEUoQVNTRU1C
TEVSKQogCisjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkpJVENv
bXBpbGF0aW9uRWZmb3J0LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAi
c3RkaW50LmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8aml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAko
cmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEwLDYgKzEwMTAsMTcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCop
KCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByb3RlY3RlZDoK
ICAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29y
a2luZyBjb3B5KQpAQCAtNTQ1LDYgKzU0NSwxNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwg
aW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0
cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEFybUFkZHJlc3MgYWRkcmVzcykKICAgICB7CkBA
IC0xMTg2LDYgKzExOTcsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
bm9wKCk7CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2Rl
TG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5h
dGlvbikKKyAgICB7CisgICAgICAgIEFSTXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5z
dHJ1Y3Rpb25TdGFydC5kYXRhQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5kYXRhQWRkcmVzcygpKTsK
KyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKTsKKyAgICB9CiAKICAgICAvLyBGb3J3YXJkcyAvIGV4dGVybmFsIGNvbnRyb2wgZmxv
dyBvcGVyYXRpb25zOgogICAgIC8vCkBAIC0xNjc5LDEyICsxNzAwLDE0IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBBTFdBWVNfSU5MSU5FIEp1bXAganVtcCgpCiAgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sYWJlbCgpOyAvLyBGb3JjZSBub3AtcGFkZGluZyBpZiB3ZSdyZSBpbiB0aGUg
bWlkZGxlIG9mIGEgd2F0Y2hwb2ludC4KICAgICAgICAgbW92ZUZpeGVkV2lkdGhFbmNvZGluZyhU
cnVzdGVkSW1tMzIoMCksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKSwgbV9tYWtlSnVtcFBhdGNoYWJsZSA/IEFS
TXY3QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb25GaXhlZFNpemUgOiBBUk12N0Fzc2VtYmxlcjo6
SnVtcE5vQ29uZGl0aW9uKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEp1bXAgbWFrZUJy
YW5jaChBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQpCiAgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sYWJlbCgpOyAvLyBGb3JjZSBub3AtcGFkZGluZyBpZiB3ZSdyZSBpbiB0aGUgbWlk
ZGxlIG9mIGEgd2F0Y2hwb2ludC4KICAgICAgICAgbV9hc3NlbWJsZXIuaXQoY29uZCwgdHJ1ZSwg
dHJ1ZSk7CiAgICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMyKDApLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuYngoZGF0
YVRlbXBSZWdpc3RlciksIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBBUk12N0Fzc2VtYmxlcjo6SnVt
cENvbmRpdGlvbkZpeGVkU2l6ZSA6IEFSTXY3QXNzZW1ibGVyOjpKdW1wQ29uZGl0aW9uLCBjb25k
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlck1JUFMuaAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2
OCw2ICsxODY4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihNSVBTQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxs
LmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKwogcHJpdmF0ZToKICAgICAvLyBJZiBtX2ZpeGVkV2lkdGggaXMgdHJ1ZSwgd2Ugd2ls
bCBnZW5lcmF0ZSBhIGZpeGVkIG51bWJlciBvZiBpbnN0cnVjdGlvbnMuCiAgICAgLy8gT3RoZXJ3
aXNlLCB3ZSBjYW4gZW1pdCBhbnkgbnVtYmVyIG9mIGluc3RydWN0aW9ucy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJ
KHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJTSDQuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3MSw2ICsxOTcxLDE3IEBAIHZv
aWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHMKICAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihTSDRBc3NlbWJsZXI6OnJlYWRD
YWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENv
ZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxh
Y2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU0g0QXNzZW1ibGVyOjpDb25k
aXRpb24gU0g0Q29uZGl0aW9uKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Ni5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRG91YmxlOwog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZURvdWJsZTsKICAgICB1c2lu
ZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydEludDMyVG9Eb3VibGU7CisgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4OwogCiAgICAgdm9pZCBhZGQz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKQEAgLTE2NSw2ICsxNjYsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Zs
X2kzMnIoaW5pdGlhbFZhbHVlLmFzSW50cHRyKCksIGRlc3QpOwogICAgICAgICByZXR1cm4gRGF0
YUxhYmVsUHRyKHRoaXMpOwogICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1h
c2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1hc2subV92YWx1
ZSA+PSAtMTI4ICYmIG1hc2subV92YWx1ZSA8PSAyNTUpOworICAgICAgICBpZiAobWFzay5tX3Zh
bHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wYl9pbSgwLCBhZGRyZXNzLm1f
cHRyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaW0obWFz
ay5tX3ZhbHVlLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KIAogICAgIEp1bXAgYnJhbmNoUHRy
V2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRh
TGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRy
dXN0ZWRJbW1QdHIoMCkpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24g
MTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDA4LDYgKzE0MDgsMTYgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxv
Y2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3Rp
bmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4
NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KKwogcHJvdGVjdGVk
OgogICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTIwMTM2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01MTMsNiArNTEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246Om1vdmUoYWRkciwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBCYXNlSW5k
ZXgoc2NyYXRjaFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIFRpbWVzT25lKSwgbWFzayk7CiAgICAg
fQorICAgIAorICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29s
dXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkp
CisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJl
Z2lzdGVyKSwgbWFzayk7CisgICAgfQogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGlu
Z1BvaW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIC8vIFNlZSBjb21tZW50IG9uIE1hY3JvQXNz
ZW1ibGVyQVJNdjc6OnN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24g
MTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjQ3LDYgKzI0Nyw4IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAKICAg
ICBYODZBc3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9N
SU4pCisgICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAg
ICB7CiAgICAgfQogCkBAIC03OTgsNiArODAwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQ01QLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
ICAgICB9CisgICAgCisjaWYgQ1BVKFg4NikKKyAgICB2b2lkIGNtcGJfaW0oaW50IGltbSwgY29u
c3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisjZW5kaWYKIAogICAgIHZvaWQgY21wbF9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKICAgICB7CkBAIC05NDgsNiArOTU4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KIAorI2lmIENQVShYODYpCisgICAgdm9pZCB0ZXN0
Yl9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYkliLCBHUk9VUDNfT1BfVEVTVCwgYWRkcik7CisgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZv
aWQgdGVzdGxfaTMybShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKQEAgLTE3MDIsMTAgKzE3MjAsMjUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fZm9ybWF0dGVyLmNvZGVTaXplKCk7CiAgICAgfQorICAgIAorICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgeworICAgICAgICBBc3NlbWJsZXJMYWJl
bCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KQorICAgICAg
ICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQg
PSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50
ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBBc3NlbWJsZXJM
YWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICB3aGlsZSAoVU5MSUtF
TFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFz
dFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQpAQCAtMTc4
Nyw2ICsxODIwLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPih3aGVyZSlbLTFdOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIGlu
dDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsK
KyAgICAgICAgaW50OF90KiBkc3RQdHIgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KHRvKTsK
KyAgICAgICAgaW50cHRyX3QgZGlzdGFuY2UgPSAoaW50cHRyX3QpKGRzdFB0ciAtIChwdHIgKyA1
KSk7CisgICAgICAgIHB0clswXSA9IE9QX0pNUF9yZWwzMjsKKyAgICAgICAgKnJlaW50ZXJwcmV0
X2Nhc3Q8aW50MzJfdCo+KHB0ciArIDEpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGlzdGFuY2Up
OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNp
emUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDU7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB1
bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVsIGNhbGwpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY2FsbC5pc1NldCgpKTsKQEAgLTIzMzksNiArMjM4Niw4IEBAIHByaXZh
dGU6CiAKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVyOwogICAgIH0gbV9mb3JtYXR0
ZXI7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZU
YWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEy
MDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MjgsMTIgKzkyOCwyOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6IHsK
KyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytpdCktPnUucmVnaXN0ZXJQ
b2ludGVyOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2dsb2JhbF92YXJfd2F0Y2hh
YmxlXHQgJXMsIGclZCglcClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciks
IHJlZ2lzdGVyUG9pbnRlcik7CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgaXQrKzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2Jh
bF92YXI6IHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2lu
dGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dsb2JhbF92
YXJcdCBnJWQoJXApLCAlc1xuIiwgbG9jYXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0
ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShl
eGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6IHsKKyAgICAgICAgICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsK
KyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgZGF0
YUxvZygiWyU0ZF0gcHV0X2dsb2JhbF92YXJfY2hlY2tcdCBnJWQoJXApLCAlc1xuIiwgbG9jYXRp
b24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCBy
ZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGl0Kys7CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2U6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpAQCAtMTMwNiw3ICsxMzIyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRl
KiBleGVjLCBjbwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9wdXRfcmVzdWx0OiB7
CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRh
dGFMb2coIlslNGRdIG9wX2NhbGxfcHV0X3Jlc3VsdFx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBj
YWxsX3B1dF9yZXN1bHRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCkpOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShy
ZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJVU3RyaW5n
LmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFsaXplci5oIgogI2luY2x1ZGUgIlZhbHVl
UHJvZmlsZS5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgpAQCAtMjczLDEwICsyNzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2
b2lkIGFwcGVuZE9TUkV4aXQoY29uc3QgREZHOjpPU1JFeGl0JiBvc3JFeGl0KQorICAgICAgICB1
bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkKICAgICAg
ICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAgICAg
ICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPm9zckV4aXQuc2l6ZSgpOwogICAgICAgICAg
ICAgbV9kZmdEYXRhLT5vc3JFeGl0LmFwcGVuZChvc3JFeGl0KTsKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERGRzo6T1NSRXhpdCYgbGFz
dE9TUkV4aXQoKQpAQCAtMjg0LDEwICsyODcsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gbV9kZmdEYXRhLT5vc3JFeGl0Lmxhc3QoKTsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgdm9pZCBhcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KGNvbnN0IERGRzo6U3Bl
Y3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgICAgIHVuc2lnbmVkIGFwcGVuZFNwZWN1
bGF0aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNvdmVyeSkK
ICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAg
ICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVjb3Zlcnku
c2l6ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LmFwcGVu
ZChyZWNvdmVyeSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB1bnNpZ25lZCBhcHBlbmRXYXRjaHBvaW50KGNvbnN0IFdhdGNocG9pbnQm
IHdhdGNocG9pbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vz
c2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT53YXRjaHBv
aW50cy5zaXplKCk7CisgICAgICAgICAgICBtX2RmZ0RhdGEtPndhdGNocG9pbnRzLmFwcGVuZCh3
YXRjaHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpAQCAtMzA0LDYgKzMxNywx
MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPnNwZWN1
bGF0aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZldhdGNocG9pbnRzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFt
X2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
bV9kZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIERGRzo6T1NSRXhpdCYgb3NyRXhpdCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdFtpbmRleF07CkBAIC0zMTQsNiArMzM0
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+c3Bl
Y3VsYXRpb25SZWNvdmVyeVtpbmRleF07CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIFdh
dGNocG9pbnQmIHdhdGNocG9pbnQodW5zaWduZWQgaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRzW2luZGV4XTsKKyAgICAgICAgfQorICAg
ICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNlKEpTQ2VsbCogdGFyZ2V0KQog
ICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTEy
MzgsNiArMTI2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgVmVjdG9yPERGRzo6
T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKICAgICAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6
Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgICAgICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlv
blJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OworICAgICAgICAgICAgU2VnbWVudGVkVmVj
dG9yPFdhdGNocG9pbnQsIDEsIDA+IHdhdGNocG9pbnRzOwogICAgICAgICAgICAgVmVjdG9yPFdl
YWtSZWZlcmVuY2VUcmFuc2l0aW9uPiB0cmFuc2l0aW9uczsKICAgICAgICAgICAgIFZlY3RvcjxX
cml0ZUJhcnJpZXI8SlNDZWxsPiA+IHdlYWtSZWZlcmVuY2VzOwogICAgICAgICAgICAgYm9vbCBt
YXlCZUV4ZWN1dGluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdF
eGl0UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsNyBAQCBlbnVtIEV4aXRLaW5kIHsKICAgICBJbmFkZXF1YXRlQ292ZXJhZ2UsIC8vIFdlIGV4
aXRlZCBiZWNhdXNlIHdlIGVuZGVkIHVwIGluIGNvZGUgdGhhdCBkaWRuJ3QgaGF2ZSBwcm9maWxp
bmcgY292ZXJhZ2UuCiAgICAgQXJndW1lbnRzRXNjYXBlZCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ug
YXJndW1lbnRzIGVzY2FwZWQgYnV0IHdlIGRpZG4ndCBleHBlY3QgdGhlbSB0by4KICAgICBVbmNv
dW50YWJsZSwgLy8gV2UgZXhpdGVkIGZvciBub25lIG9mIHRoZSBhYm92ZSByZWFzb25zLCBhbmQg
d2Ugc2hvdWxkIG5vdCBjb3VudCBpdC4gTW9zdCB1c2VzIG9mIHRoaXMgc2hvdWxkIGJlIHZpZXdl
ZCBhcyBhIEZJWE1FLgorICAgIFVuY291bnRhYmxlV2F0Y2hwb2ludCAvLyBXZSBleGl0ZWQgYmVj
YXVzZSBvZiBhIHdhdGNocG9pbnQsIHdoaWNoIGlzbid0IGNvdW50ZWQgYmVjYXVzZSB3YXRjaHBv
aW50cyBkbyB0cmFja2luZyB0aGVtc2VsdmVzLgogfTsKIAogaW5saW5lIGNvbnN0IGNoYXIqIGV4
aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2luZCkKQEAgLTU4LDYgKzU5LDEyIEBAIGlubGluZSBj
b25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXQKICAgICAgICAgcmV0dXJuICJOZWdhdGl2
ZVplcm8iOwogICAgIGNhc2UgSW5hZGVxdWF0ZUNvdmVyYWdlOgogICAgICAgICByZXR1cm4gIklu
YWRlcXVhdGVDb3ZlcmFnZSI7CisgICAgY2FzZSBBcmd1bWVudHNFc2NhcGVkOgorICAgICAgICBy
ZXR1cm4gIkFyZ3VtZW50c0VzY2FwZWQiOworICAgIGNhc2UgVW5jb3VudGFibGU6CisgICAgICAg
IHJldHVybiAiVW5jb3VudGFibGUiOworICAgIGNhc2UgVW5jb3VudGFibGVXYXRjaHBvaW50Ogor
ICAgICAgICByZXR1cm4gIlVuY291bnRhYmxlV2F0Y2hwb2ludCI7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuICJVbmtub3duIjsKICAgICB9CkBAIC03MCw2ICs3Nyw3IEBAIGlubGluZSBi
b29sIGV4aXRLaW5kSXNDb3VudGFibGUoRXhpdEtpbmQKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgY2FzZSBCYWRUeXBlOgogICAgIGNhc2UgVW5jb3VudGFibGU6CisgICAgY2Fz
ZSBVbmNvdW50YWJsZVdhdGNocG9pbnQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTkz
LDYgKzE5Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogICAgICAgICAKICAgICAg
ICAgSW5zdHJ1Y3Rpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpIHsg
dS5yZWdpc3RlclBvaW50ZXIgPSByZWdpc3RlclBvaW50ZXI7IH0KKyAgICAgICAgCisgICAgICAg
IEluc3RydWN0aW9uKGJvb2wqIHByZWRpY2F0ZVBvaW50ZXIpIHsgdS5wcmVkaWNhdGVQb2ludGVy
ID0gcHJlZGljYXRlUG9pbnRlcjsgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIE9w
Y29kZSBvcGNvZGU7CkBAIC0yMDUsNiArMjA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvOwogICAgICAgICAgICAgVmFsdWVQ
cm9maWxlKiBwcm9maWxlOwogICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKKyAgICAgICAgICAg
IGJvb2wqIHByZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlz
aW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBtYWNybyhvcF9nZXRfc2NvcGVkX3ZhciwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBc
CiAgICAgICAgIG1hY3JvKG9wX3B1dF9zY29wZWRfdmFyLCA0KSBcCiAgICAgICAgIG1hY3JvKG9w
X2dldF9nbG9iYWxfdmFyLCA0KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKKyAgICAgICAg
bWFjcm8ob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmls
aW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2dsb2JhbF92YXIsIDMpIFwKKyAgICAgICAg
bWFjcm8ob3BfcHV0X2dsb2JhbF92YXJfY2hlY2ssIDUpIFwKICAgICAgICAgbWFjcm8ob3BfcmVz
b2x2ZV9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8o
b3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cywgMykgXAogICAgICAgICBtYWNybyhvcF9yZXNvbHZl
X3dpdGhfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw2ICsx
NDgsNyBAQCB2b2lkIFJlc29sdmVSZXN1bHQ6OmNoZWNrVmFsaWRpdHkoKQogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBJbmRleGVkR2xvYmFsOgogICAgIGNhc2UgUmVhZE9ubHlJbmRleGVkR2xv
YmFsOgorICAgIGNhc2UgV2F0Y2hlZEluZGV4ZWRHbG9iYWw6CiAgICAgY2FzZSBEeW5hbWljSW5k
ZXhlZEdsb2JhbDoKICAgICBjYXNlIER5bmFtaWNSZWFkT25seUluZGV4ZWRHbG9iYWw6CiAgICAg
ICAgIEFTU0VSVChtX2luZGV4ICE9IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSk7CkBAIC0yMTYsMTMg
KzIxNywxOSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoY29uc3QgSWRlCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQpCitpbnQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZEdsb2JhbFZhcigKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQ29uc3Rh
bnRNb2RlIGNvbnN0YW50TW9kZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oZnVuY3Rpb25Nb2RlKTsKICAgICBpbnQgaW5kZXggPSBzeW1ib2xUYWJsZSgp
LnNpemUoKTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0YW50
ID8gUmVhZE9ubHkgOiAwKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCAo
Y29uc3RhbnRNb2RlID09IElzQ29uc3RhbnQpID8gUmVhZE9ubHkgOiAwKTsKKyAgICBpZiAoZnVu
Y3Rpb25Nb2RlID09IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUpCisgICAgICAgIG5ld0VudHJ5LmF0
dGVtcHRUb1dhdGNoKCk7CiAgICAgU3ltYm9sVGFibGU6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1i
b2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKLSAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsKICAgICAgICAgaW5kZXggPSByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpOworICAgIH0KICAgICByZXR1cm4gaW5kZXg7CiB9
CiAKQEAgLTI4OSwxNyArMjk2LDIzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihQcm8KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXpl
KCk7ICsraSkgewogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9u
U3RhY2tbaV07Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERh
dGEsIGZ1bmN0aW9uLT5pZGVudCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3
cml0ZSBleGlzdGluZyBwcm9wZXJ0aWVzLgotCisgICAgICAgIGJvb2wgcHJvcGVydHlEaWRFeGlz
dCA9IAorICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0
YSwgZnVuY3Rpb24tPmlkZW50KCkpOyAvLyBOZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3Zlcndy
aXRlIGV4aXN0aW5nIHByb3BlcnRpZXMuCisgICAgICAgIAogICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIG1ha2VGdW5jdGlvbihleGVjLCBmdW5jdGlvbiks
IHNjb3BlQ2hhaW4pOwotICAgICAgICBpbnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoZnVuY3Rpb24t
PmlkZW50KCksIGZhbHNlKTsKKyAgICAgICAgaW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKAorICAg
ICAgICAgICAgZnVuY3Rpb24tPmlkZW50KCksIElzVmFyaWFibGUsCisgICAgICAgICAgICAhcHJv
cGVydHlEaWRFeGlzdCA/IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUgOiBOb3RGdW5jdGlvbk9yTm90
U3BlY2lhbGl6YWJsZSk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChpbmRleCku
c2V0KCptX2dsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIH0KIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFyU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYg
KGdsb2JhbE9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgKnZhclN0YWNrW2ldLmZpcnN0KSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhZGRHbG9iYWxWYXIoKnZhclN0YWNrW2ldLmZp
cnN0LCB2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCk7
CisgICAgICAgIGFkZEdsb2JhbFZhcigKKyAgICAgICAgICAgICp2YXJTdGFja1tpXS5maXJzdCwK
KyAgICAgICAgICAgICh2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXND
b25zdGFudCkgPyBJc0NvbnN0YW50IDogSXNWYXJpYWJsZSwKKyAgICAgICAgICAgIE5vdEZ1bmN0
aW9uT3JOb3RTcGVjaWFsaXphYmxlKTsKICAgICB9CiB9CiAKQEAgLTEyMDIsNyArMTIxNSw5IEBA
IFJlc29sdmVSZXN1bHQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmUKICAgICAgICAgICAgIGlm
ICgrK2l0ZXIgPT0gZW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgUmVzb2x2ZVJl
c3VsdDo6RHluYW1pY0ZsYWcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVz
dWx0OjpkeW5hbWljSW5kZXhlZEdsb2JhbFJlc29sdmUoZW50cnkuZ2V0SW5kZXgoKSwgZGVwdGgs
IGN1cnJlbnRTY29wZSwgZmxhZ3MpOwotICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVz
dWx0OjppbmRleGVkR2xvYmFsUmVzb2x2ZShlbnRyeS5nZXRJbmRleCgpLCBjdXJyZW50U2NvcGUs
IGZsYWdzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6aW5kZXhlZEds
b2JhbFJlc29sdmUoCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmdldEluZGV4KCksIGN1cnJl
bnRTY29wZSwKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfCAoZW50cnkuY291bGRCZVdhdGNo
ZWQoKSA/IFJlc29sdmVSZXN1bHQ6OldhdGNoZWRGbGFnIDogMCkpOwogICAgICAgICAgICAgfQog
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChKU0FjdGl2YXRpb24qIGFjdGl2
YXRpb24gPSBqc0R5bmFtaWNDYXN0PEpTQWN0aXZhdGlvbio+KGN1cnJlbnRWYXJpYWJsZU9iamVj
dCkpCkBAIC0xMjk2LDcgKzEzMTEsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpzaG91bGRB
dm9pZFJlc29sCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUoUmVn
aXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygp
KQotICAgICAgICByZXR1cm4gZW1pdEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQpOwor
ICAgICAgICByZXR1cm4gZW1pdEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQsIHByb3Bl
cnR5KTsKICAgICAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc0dsb2JhbCgpICYmICFzaG91bGRB
dm9pZFJlc29sdmVHbG9iYWwoKSkgewogI2lmIEVOQUJMRShKSVQpCkBAIC0xMzc5LDcgKzEzOTQs
NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAKICAgICAgICAg
aWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkgewogICAgICAgICAgICAgLy8gRGlyZWN0bHkg
aW5kZXggdGhlIHByb3BlcnR5IGxvb2t1cCBhY3Jvc3MgbXVsdGlwbGUgc2NvcGVzLgotICAgICAg
ICAgICAgZW1pdEdldFN0YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAg
ICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwog
ICAgICAgICAgICAgcmV0dXJuIGJhc2VEc3Q7CiAgICAgICAgIH0KIApAQCAtMTQxOCw3ICsxNDMz
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogewogICAgIGlm
IChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpIHsKICAgICAgICAgZW1pdExvYWQoYmFzZURzdCwg
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2
ZVJlc3VsdCk7CisgICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3Vs
dCwgcHJvcGVydHkpOwogICAgICAgICByZXR1cm4gYmFzZURzdDsKICAgICB9CiAKQEAgLTE0MzYs
NyArMTQ1MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAg
ICByZXR1cm4gZW1pdFJlc29sdmUocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdp
c3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQpCitSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3Qs
IGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpCiB7CiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gMDsKIApAQCAtMTQ3Miwx
MyArMTQ4NywyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0CiAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICAgICAgcmV0dXJuIGRz
dDsKIAorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6CisgICAg
ICAgIC8vIFNraXAgdGhlIHBlZXBob2xlIGZvciBub3cuIEl0J3Mgbm90IGNsZWFyIHRoYXQgaXQn
cyBwcm9maXRhYmxlIGdpdmVuCisgICAgICAgIC8vIHRoZSBERkcncyBjYXBhYmlsaXRpZXMsIGFu
ZCB0aGUgZmFjdCB0aGF0IGlmIGl0J3Mgd2F0Y2hhYmxlIHRoZW4gd2UKKyAgICAgICAgLy8gZG9u
J3QgZXhwZWN0IHRvIHNlZSBhbnkgcHV0X2dsb2JhbF92YXIncyBhbnl3YXkuCisgICAgICAgIHBy
b2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsK
KyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsgLy8g
Rm9yIHRoZSBiZW5lZml0IG9mIHRoZSBERkcuCisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChwcm9maWxlKTsKKyAgICAgICAgcmV0dXJuIGRzdDsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLVJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29s
dmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIFJlZ2lzdGVySUQqIHZhbHVlKQorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYg
cmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUmVnaXN0ZXJJRCog
dmFsdWUpCiB7CiAgICAgc3dpdGNoIChyZXNvbHZlUmVzdWx0LnR5cGUoKSkgewogICAgIGNhc2Ug
UmVzb2x2ZVJlc3VsdDo6UmVnaXN0ZXI6CkBAIC0xNDk5LDYgKzE1MjUsMTQgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTdAogICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQocmVzb2x2ZVJlc3VsdC5yZWdpc3RlclBvaW50ZXIoKSk7CiAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICAgICAgCisgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAg
ICAgICAgZW1pdE9wY29kZShvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHJlc29sdmVSZXN1bHQuZ2xv
YmFsT2JqZWN0KCkpLT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSkuYWRkcmVz
c09mSXNXYXRjaGVkKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3Rh
bnQoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgLy8gVGhlIHJlc29sdmVkIGJpbmRpbmcgaXMgaW1tdXRhYmxlLgog
ICAgICAgICAgICAgUmVhZE9ubHlGbGFnID0gMHgyMCwKICAgICAgICAgICAgIC8vIFRoZSBiYXNl
IG9iamVjdCBpcyB0aGUgZ2xvYmFsIG9iamVjdC4KLSAgICAgICAgICAgIEdsb2JhbEZsYWcgPSAw
eDQwCisgICAgICAgICAgICBHbG9iYWxGbGFnID0gMHg0MCwKKyAgICAgICAgICAgIC8vIFRoZSBw
cm9wZXJ0eSBpcyBiZWluZyB3YXRjaGVkLCBzbyB3cml0ZXMgc2hvdWxkIGJlIHNwZWNpYWwuCisg
ICAgICAgICAgICBXYXRjaGVkRmxhZyA9IDB4ODAKICAgICAgICAgfTsKICAgICAgICAgZW51bSBU
eXBlIHsKICAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBp
biBhIHJlZ2lzdGVyLgpAQCAtMTMxLDYgKzEzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgLy8gYmluZGluZyBjcmVhdGVkIHdpdGggInZhciIgYXQgdGhlIHRvcCBsZXZlbC4gQXQg
cnVudGltZSB3ZSdsbAogICAgICAgICAgICAgLy8ganVzdCBpbmRleCBpbnRvIHRoZSBnbG9iYWwg
b2JqZWN0LgogICAgICAgICAgICAgSW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFs
RmxhZyB8IFN0YXRpY0ZsYWcsCisgICAgICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWwsIGJ1
dCB0aGUgcHJvcGVydHkgaXMgYmVpbmcgd2F0Y2hlZC4KKyAgICAgICAgICAgIFdhdGNoZWRJbmRl
eGVkR2xvYmFsID0gSW5kZXhlZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZyB8IFdhdGNo
ZWRGbGFnLAogICAgICAgICAgICAgLy8gTGlrZSBJbmRleGVkR2xvYmFsLCBidXQgdGhlIHByb3Bl
cnR5IGlzIGFsc28gcmVhZC1vbmx5LCBsaWtlIE5hTiwKICAgICAgICAgICAgIC8vIEluZmluaXR5
LCBvciB1bmRlZmluZWQuCiAgICAgICAgICAgICBSZWFkT25seUluZGV4ZWRHbG9iYWwgPSBJbmRl
eGVkRmxhZyB8IFJlYWRPbmx5RmxhZyB8IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnLApAQCAtNDQx
LDggKzQ0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHlw
ZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlP
cChvcF90eXBlb2YsIGRzdCwgc3JjKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW4oUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSkgeyBy
ZXR1cm4gZW1pdEJpbmFyeU9wKG9wX2luLCBkc3QsIHByb3BlcnR5LCBiYXNlLCBPcGVyYW5kVHlw
ZXMoKSk7IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVy
SUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmLCBSZWdpc3RlcklEKiB2YWx1ZSk7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRTdGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25z
dCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVy
JiwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZl
KFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVy
SUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
KTsKQEAgLTU3NCw3ICs1NzgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBhZGRlZCB2YXIuCi0gICAgICAgIGludCBh
ZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYsIGJvb2wgaXNDb25zdGFudCk7CisgICAgICAg
IGVudW0gQ29uc3RhbnRNb2RlIHsgSXNDb25zdGFudCwgSXNWYXJpYWJsZSB9OworICAgICAgICBl
bnVtIEZ1bmN0aW9uTW9kZSB7IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUsIE5vdEZ1bmN0aW9uT3JO
b3RTcGVjaWFsaXphYmxlIH07CisgICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRp
ZmllciYsIENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1v
ZGUpOwogCiAgICAgICAgIHZvaWQgYWRkUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXImLCBpbnQg
cGFyYW1ldGVySW5kZXgpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDEyMDEzNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMwLDcgKzQzMCw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2Fs
bFJlc29sdmVOb2RlOjplbWkKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CiAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZl
UmVzdWx0KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZnVuYy5nZXQoKSwg
cmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChk
c3QsIGZ1bmMuZ2V0KCkpLCBmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFy
dE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CiAgICAgfQpAQCAtNjE4LDcgKzYxOCw3IEBAIFJlZ2lz
dGVySUQqIFBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGUKICAgICB9CiAKICAgICBpZiAocmVz
b2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRp
Y1ZhcihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHJlc29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBS
ZWdpc3RlcklEKiBvbGRWYWx1ZTsKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3Jl
ZFJlc3VsdCgpKSB7CiAgICAgICAgICAgICBvbGRWYWx1ZSA9IDA7CkBAIC02MjYsNyArNjI2LDcg
QEAgUmVnaXN0ZXJJRCogUG9zdGZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZQogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwg
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3Ip
OwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVS
ZXN1bHQsIHZhbHVlLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIo
cmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgdmFsdWUuZ2V0KCkpOwogICAgICAgICByZXR1cm4gb2xk
VmFsdWU7CiAgICAgfQogICAgIApAQCAtODAzLDkgKzgwMyw5IEBAIFJlZ2lzdGVySUQqIFByZWZp
eFJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICB9CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5p
c1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcm9wRHN0ID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICAg
ICAgZW1pdFByZUluY09yRGVjKGdlbmVyYXRvciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHByb3BE
c3QuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVz
dWx0LCBtX2lkZW50LCBwcm9wRHN0LmdldCgpKTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5t
b3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiAgICAgfQogCkBA
IC0xMjI2LDkgKzEyMjYsOSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVt
aXRCCiAgICAgfQogCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2
ZVJlc3VsdC5pc1JlYWRPbmx5KCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEg
PSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdl
bmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwg
cmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVt
aXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9w
ZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNj
cmlwdG9yKCkpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJl
c3VsdCwgcmVzdWx0KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2
ZVJlc3VsdCwgbV9pZGVudCwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKQEAgLTEyNTYsNyArMTI1Niw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWMKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQog
ICAgICAgICAgICAgZHN0ID0gMDsKICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0
b3IuZW1pdE5vZGUoZHN0LCBtX3JpZ2h0KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0
aWNWYXIocmVzb2x2ZVJlc3VsdCwgdmFsdWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0
YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB2
YWx1ZTsKICAgICB9CiAKQEAgLTEzNjEsNyArMTM2MSw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVj
bE5vZGU6OmVtaXRDb2RlU2luZ2wKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBtX2lu
aXQgPyBnZW5lcmF0b3IuZW1pdE5vZGUobV9pbml0KSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBq
c1VuZGVmaW5lZCgpKTsKIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpCi0gICAg
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCB2YWx1
ZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNv
bHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1ZS5nZXQoKSk7CiAgICAgCiAgICAgaWYgKGdlbmVyYXRv
ci5jb2RlVHlwZSgpICE9IEV2YWxDb2RlKQogICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJ
KHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksOSBAQCBib29sIEFic3Ry
YWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiB7CiAgICAgQVNTRVJUKG1fYmxvY2spOwog
ICAgIEFTU0VSVChtX2lzVmFsaWQpOwotICAgICAgICAKKyAgICAKKyAgICBtX2RpZENsb2JiZXIg
PSBmYWxzZTsKKyAgICAKICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gbV9ibG9jay0+YXQoaW5k
ZXhJbkJsb2NrKTsKICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwogICAgICAg
ICAKQEAgLTIzNyw4ICsyMzksMTIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2ln
bmVkIGluZAogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NE
YXRhKCk7CisgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKSA9PSBT
cGVjTm9uZSkgeworICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICBu
b2RlLnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAg
ICAgICBib29sIGNhbkV4aXQgPSBmYWxzZTsKLSAgICAgICAgY2FuRXhpdCB8PSB2YXJpYWJsZUFj
Y2Vzc0RhdGEtPnByZWRpY3Rpb24oKSA9PSBTcGVjTm9uZTsKICAgICAgICAgQWJzdHJhY3RWYWx1
ZSB2YWx1ZSA9IG1fdmFyaWFibGVzLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgp
KTsKICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkgewogICAg
ICAgICAgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkKQEAgLTE0NzYsNyArMTQ4Miw3IEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0aGUgZmFjdCB0aGF0IHdlIGtub3cgd2hhdCB0aGUgZnVu
Y3Rpb24gaXMuCiAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisgICAgICAgIAogICAgIGNh
c2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIG5vZGUuc2V0Q2Fu
RXhpdCh0cnVlKTsKQEAgLTE0ODgsOCArMTQ5NCwxMyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4
ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAgICAgIGJyZWFrOworICAgICAg
ICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAgIG5vZGUuc2V0Q2FuRXhp
dCh0cnVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dEdsb2Jh
bFZhcjoKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOgogICAgICAgICBub2RlLnNldENhbkV4
aXQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTU3OCw2ICsxNTg5
LDcgQEAgaW5saW5lIHZvaWQgQWJzdHJhY3RTdGF0ZTo6Y2xvYmJlclN0cnVjdAogICAgIGZvciAo
c2l6ZV90IGkgPSBtX3ZhcmlhYmxlcy5udW1iZXJPZkxvY2FscygpOyBpLS07KQogICAgICAgICBt
X3ZhcmlhYmxlcy5sb2NhbChpKS5jbG9iYmVyU3RydWN0dXJlcygpOwogICAgIG1faGF2ZVN0cnVj
dHVyZXMgPSBmYWxzZTsKKyAgICBtX2RpZENsb2JiZXIgPSB0cnVlOwogfQogCiBpbmxpbmUgYm9v
bCBBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0
aW9uLCBBYnN0cmFjdFZhbHVlJiBpblZhcmlhYmxlLCBOb2RlSW5kZXggbm9kZUluZGV4KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlz
aW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDkgQEAgcHVibGljOgogICAgIC8vIG9m
IFRocm93LgogICAgIGJvb2wgZXhlY3V0ZSh1bnNpZ25lZCk7CiAgICAgCisgICAgLy8gRGlkIHRo
ZSBsYXN0IGV4ZWN1dGVkIG5vZGUgY2xvYmJlciB0aGUgd29ybGQ/CisgICAgYm9vbCBkaWRDbG9i
YmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaWRDbG9iYmVyOyB9CisgICAgCiAgICAgLy8gSXMgdGhl
IGV4ZWN1dGlvbiBzdGF0ZSBzdGlsbCB2YWxpZD8gVGhpcyB3aWxsIGJlIGZhbHNlIGlmIGV4ZWN1
dGUoKSBoYXMKICAgICAvLyByZXR1cm5lZCBmYWxzZSBwcmV2aW91c2x5LgogICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQpAQCAtMjc0LDYgKzI3Nyw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2ZvdW5kQ29uc3RhbnRzOwogICAgIAogICAgIGJvb2wgbV9pc1Zh
bGlkOworICAgIGJvb2wgbV9kaWRDbG9iYmVyOwogICAgIAogICAgIEJyYW5jaERpcmVjdGlvbiBt
X2JyYW5jaERpcmVjdGlvbjsgLy8gVGhpcyBpcyBvbmx5IHNldCBmb3IgYmxvY2tzIHRoYXQgZW5k
IGluIEJyYW5jaCBhbmQgdGhhdCBleGVjdXRlIHRvIGNvbXBsZXRpb24gKGkuZS4gbV9pc1ZhbGlk
ID09IHRydWUpLgogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzNCw2
ICsxMjM0LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAg
IC8vIERvZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVp
cmVtZW50cyBmb3IgYmVpbmcKICAgICAvLyBhbiBpbmxpbmUgY2FuZGlkYXRlPwogICAgIENvZGVC
bG9jayogcHJvZmlsZWRCbG9jayA9IGV4ZWN1dGFibGUtPnByb2ZpbGVkQ29kZUJsb2NrRm9yKGtp
bmQpOworICAgIGlmICghcHJvZmlsZWRCbG9jaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAogICAgIGlmICghbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihwcm9maWxlZEJsb2NrLCBraW5kKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMjI1MSwxMyArMjI1NCw2MSBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZ2V0
X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBn
ZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCk7CisKICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRHbG9iYWxWYXIgPSBhZGRUb0dyYXBo
KAogICAgICAgICAgICAgICAgIEdldEdsb2JhbFZhciwKLSAgICAgICAgICAgICAgICBPcEluZm8o
bV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hc3NlcnRSZWdp
c3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRl
cikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVy
SXNJblRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSks
CiAgICAgICAgICAgICAgICAgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgICAgIHNldChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfZ2V0X2dsb2JhbF92YXIpOwogICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZTogewor
ICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRd
OworICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gbV9jb2RlQmxvY2stPmlkZW50
aWZpZXIoaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVu
dHJ5ID0gZ2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSk7
CisgICAgICAgICAgICBpZiAoIWVudHJ5LmNvdWxkQmVXYXRjaGVkKCkpIHsKKyAgICAgICAgICAg
ICAgICBOb2RlSW5kZXggZ2V0R2xvYmFsVmFyID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAg
ICAgICAgR2V0R2xvYmFsVmFyLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2Jq
ZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8ocHJlZGljdGlv
bikpOworICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCBnZXRHbG9iYWxWYXIpOworICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9nbG9i
YWxfdmFyX3dhdGNoYWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIFRoZSB3YXRjaHBvaW50IGlzIHN0aWxsIGludGFjdCEgVGhpcyBtZWFucyB0aGF0IHdl
IHdpbGwgZ2V0IG5vdGlmaWVkIGlmIHRoZQorICAgICAgICAgICAgLy8gY3VycmVudCB2YWx1ZSBp
biB0aGUgZ2xvYmFsIHZhcmlhYmxlIGNoYW5nZXMuIFNvLCB3ZSBjYW4gaW5saW5lIHRoYXQgdmFs
dWUuCisgICAgICAgICAgICAvLyBNb3Jlb3ZlciwgY3VycmVudGx5IHdlIGNhbiBhc3N1bWUgdGhh
dCB0aGlzIHZhbHVlIGlzIGEgSlNGdW5jdGlvbiosIHdoaWNoCisgICAgICAgICAgICAvLyBpbXBs
aWVzIHRoYXQgaXQncyBhIGNlbGwuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MsIHNpbmNlIGluIGdl
bmVyYWwgd2UnZCBoYXZlCisgICAgICAgICAgICAvLyB0byB1c2UgYSBKU0NvbnN0YW50IGZvciBu
b24tY2VsbHMgYW5kIGEgV2Vha0pTQ29uc3RhbnQgZm9yIGNlbGxzLiBTbyBpbnN0ZWFkCisgICAg
ICAgICAgICAvLyBvZiBoYXZpbmcgYm90aCBjYXNlcyB3ZSBqdXN0IGFzc2VydCB0aGF0IHRoZSB2
YWx1ZSBpcyBhIGNlbGwuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE5CLiBJZiBpdCB3
YXNuJ3QgZm9yIENTRSwgR2xvYmFsVmFyV2F0Y2hwb2ludCB3b3VsZCBoYXZlIG5vIG5lZWQgZm9y
IHRoZQorICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcG9pbnRlci4gQnV0IENTRSB0cmFja3MgZWZm
ZWN0cyBvbiBnbG9iYWwgdmFyaWFibGVzIGJ5IGNvbXBhcmluZworICAgICAgICAgICAgLy8gcmVn
aXN0ZXIgcG9pbnRlcnMuIEJlY2F1c2UgQ1NFIGV4ZWN1dGVzIG11bHRpcGxlIHRpbWVzIHdoaWxl
IHRoZSBiYWNrZW5kCisgICAgICAgICAgICAvLyBleGVjdXRlcyBvbmNlLCB3ZSB1c2UgdGhlIGZv
bGxvd2luZyBwZXJmb3JtYW5jZSB0cmFkZS1vZmY6CisgICAgICAgICAgICAvLyAtIFRoZSBub2Rl
IHJlZmVycyBkaXJlY3RseSB0byB0aGUgcmVnaXN0ZXIgcG9pbnRlciB0byBtYWtlIENTRSBzdXBl
ciBjaGVhcC4KKyAgICAgICAgICAgIC8vIC0gVG8gcGVyZm9ybSBiYWNrZW5kIGNvZGUgZ2VuZXJh
dGlvbiwgdGhlIG5vZGUgb25seSBjb250YWlucyB0aGUgaWRlbnRpZmllcgorICAgICAgICAgICAg
Ly8gICBudW1iZXIsIGZyb20gd2hpY2ggaXQgaXMgcG9zc2libGUgdG8gZ2V0ICh2aWEgYSBmZXcg
YXZlcmFnZS10aW1lIE8oMSkKKyAgICAgICAgICAgIC8vICAgbG9va3VwcykgdG8gdGhlIFdhdGNo
cG9pbnRTZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAg
ICAgICAgICAgR2xvYmFsVmFyV2F0Y2hwb2ludCwKKyAgICAgICAgICAgICAgICBPcEluZm8oZ2xv
YmFsT2JqZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhpZGVudGlm
aWVyTnVtYmVyKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNW
YWx1ZSA9IGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKTsK
KyAgICAgICAgICAgIEFTU0VSVChzcGVjaWZpY1ZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAgICAg
IHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhzcGVjaWZpY1ZhbHVlLmFzQ2VsbCgpKSkp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZ2xvYmFsX3Zh
cl93YXRjaGFibGUpOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3Zh
cjogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOwpAQCAtMjI2OCw2ICsyMzE5LDI4IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9n
bG9iYWxfdmFyKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJf
Y2hlY2s6IHsKKyAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZp
ZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGlkZW50aWZpZXJO
dW1iZXIpOworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVj
dC0+c3ltYm9sVGFibGUoKS5nZXQoaWRlbnRpZmllci5pbXBsKCkpOworICAgICAgICAgICAgaWYg
KCFlbnRyeS5jb3VsZEJlV2F0Y2hlZCgpKSB7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgK
KyAgICAgICAgICAgICAgICAgICAgUHV0R2xvYmFsVmFyLAorICAgICAgICAgICAgICAgICAgICBP
cEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgICAgICB2
YWx1ZSk7CisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2dsb2JhbF92YXJfY2hl
Y2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAg
ICAgICBQdXRHbG9iYWxWYXJDaGVjaywKKyAgICAgICAgICAgICAgICBPcEluZm8oY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKS0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICBPcEluZm8o
aWRlbnRpZmllck51bWJlciksCisgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgICAgICB9CisKICAgICAg
ICAgLy8gPT09IEJsb2NrIHRlcm1pbmF0b3JzLiA9PT0KIAogICAgICAgICBjYXNlIG9wX2ptcDog
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShy
ZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVs
cGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwog
ICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3Rl
ZEltbVB0ciBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQogICAgIHsKQEAgLTQzMyw2ICs0MzksMTEgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMT4oYXJnMSwgYXJnMik7CiAgICAgfQorICAgIAor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyIGFyZzEp
CisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4OCw3ICsyODgsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoY2hpbGQub3AoKSAh
PSBHZXRMb2NhbCkKICAgICAgICAgICAgIHJldHVybjsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BS
T1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2coIiAgICBDb25zaWRlcmluZyBHZXRM
b2NhbCBhdCBAJXUuXG4iLCBlZGdlLmluZGV4KCkpOworICAgICAgICBkYXRhTG9nKCIgICAgQ29u
c2lkZXJpbmcgR2V0TG9jYWwgYXQgQCV1LCBsb2NhbCByJWQuXG4iLCBlZGdlLmluZGV4KCksIGNo
aWxkLmxvY2FsKCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChjaGlsZC52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+aXNDYXB0dXJlZCgpKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQpAQCAtMzAyLDYgKzMwMiwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgIEFT
U0VSVChvcmlnaW5hbE5vZGVJbmRleCAhPSBOb05vZGUpOwogICAgICAgICBOb2RlKiBvcmlnaW5h
bE5vZGUgPSAmbV9ncmFwaFtvcmlnaW5hbE5vZGVJbmRleF07CisjaWYgREZHX0VOQUJMRShERUJV
R19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICBkYXRhTG9nKCIgICAgICAgIE9yaWdpbmFs
IGhhcyBsb2NhbCByJWQuXG4iLCBvcmlnaW5hbE5vZGUtPmxvY2FsKCkpOworI2VuZGlmCisgICAg
ICAgIEFTU0VSVChjaGlsZC5sb2NhbCgpID09IG9yaWdpbmFsTm9kZS0+bG9jYWwoKSk7CiAgICAg
ICAgIGlmIChjaGFuZ2VSZWYpCiAgICAgICAgICAgICBBU1NFUlQob3JpZ2luYWxOb2RlLT5zaG91
bGRHZW5lcmF0ZSgpKTsKICAgICAgICAgLy8gUG9zc2liaWxpdGllczoKQEAgLTYwMCw2ICs2MDQs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IHNlY29uZEJs
b2NrLT5hdChpKTsKICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW25vZGVJbmRleF07
CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgY2hpbGRyZW5BbHJlYWR5Rml4ZWQgPSBm
YWxzZTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAg
ICAgICAgICAgIGNhc2UgUGhhbnRvbTogewogICAgICAgICAgICAgICAgIGlmICghbm9kZS5jaGls
ZDEoKSkKQEAgLTYxMSw4ICs2MTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
Tm9kZUluZGV4IHNldExvY2FsSW5kZXggPQogICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RC
bG9jay0+dmFyaWFibGVzQXRUYWlsLm9wZXJhbmQocG9zc2libGVMb2NhbE9wLmxvY2FsKCkpOwog
ICAgICAgICAgICAgICAgICAgICBOb2RlJiBzZXRMb2NhbCA9IG1fZ3JhcGhbc2V0TG9jYWxJbmRl
eF07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzZXRMb2NhbC5vcCgpID09IFNldExvY2FsKQor
ICAgICAgICAgICAgICAgICAgICBpZiAoc2V0TG9jYWwub3AoKSA9PSBTZXRMb2NhbCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jaGFuZ2VFZGdlKG5vZGUuY2hpbGRyZW4uY2hp
bGQxKCksIHNldExvY2FsLmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VCghbm9kZS5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW5vZGUu
Y2hpbGQzKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5BbHJlYWR5Rml4ZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNjMyLDYgKzY0Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IGF0Rmlyc3RJ
bmRleCA9IGZpcnN0QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5vcGVyYW5kKG5vZGUubG9jYWwoKSk7
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jaGFuZ2VFZGdlKG5vZGUuY2hpbGRyZW4uY2hpbGQx
KCksIEVkZ2Uoc2tpcEdldExvY2FsKGF0Rmlyc3RJbmRleCkpLCBub2RlLnNob3VsZEdlbmVyYXRl
KCkpOworICAgICAgICAgICAgICAgIGNoaWxkcmVuQWxyZWFkeUZpeGVkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobm9kZS5vcCgpICE9IEdldExvY2FsKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTY1MSwyMCArNjYyLDIyIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGJvb2wgY2hhbmdlUmVmID0gbm9kZS5zaG91bGRHZW5lcmF0ZSgpOworICAgICAg
ICAgICAgaWYgKCFjaGlsZHJlbkFscmVhZHlGaXhlZCkgeworICAgICAgICAgICAgICAgIGJvb2wg
Y2hhbmdlUmVmID0gbm9kZS5zaG91bGRHZW5lcmF0ZSgpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICAvLyBJZiB0aGUgY2hpbGQgaXMgYSBHZXRMb2NhbCwgdGhlbiB3ZSBtaWdodCBsaWtlIHRv
IGZpeCBpdC4KLSAgICAgICAgICAgIGlmIChub2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykg
ewotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2RlLmZpcnN0Q2hp
bGQoKTsKLSAgICAgICAgICAgICAgICAgICAgIGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkg
KyBub2RlLm51bUNoaWxkcmVuKCk7Ci0gICAgICAgICAgICAgICAgICAgICArK2NoaWxkSWR4KQot
ICAgICAgICAgICAgICAgICAgICBmaXhQb3NzaWJsZUdldExvY2FsKGZpcnN0QmxvY2ssIG1fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0sIGNoYW5nZVJlZik7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKCEhbm9kZS5jaGlsZDEoKSkgewotICAgICAgICAgICAgICAgIGZpeFBvc3NpYmxl
R2V0TG9jYWwoZmlyc3RCbG9jaywgbm9kZS5jaGlsZHJlbi5jaGlsZDEoKSwgY2hhbmdlUmVmKTsK
LSAgICAgICAgICAgICAgICBpZiAoISFub2RlLmNoaWxkMigpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGZpeFBvc3NpYmxlR2V0TG9jYWwoZmlyc3RCbG9jaywgbm9kZS5jaGlsZHJlbi5jaGlsZDIo
KSwgY2hhbmdlUmVmKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDMoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZpeFBvc3NpYmxlR2V0TG9jYWwoZmlyc3RCbG9jaywg
bm9kZS5jaGlsZHJlbi5jaGlsZDMoKSwgY2hhbmdlUmVmKTsKKyAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGUgY2hpbGQgaXMgYSBHZXRMb2NhbCwgdGhlbiB3ZSBtaWdodCBsaWtlIHRvIGZpeCBpdC4K
KyAgICAgICAgICAgICAgICBpZiAobm9kZS5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGls
ZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxk
KCkgKyBub2RlLm51bUNoaWxkcmVuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgKytjaGls
ZElkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpeFBvc3NpYmxlR2V0TG9jYWwoZmlyc3RC
bG9jaywgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XSwgY2hhbmdlUmVmKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEhbm9kZS5jaGlsZDEoKSkgeworICAgICAgICAgICAg
ICAgICAgICBmaXhQb3NzaWJsZUdldExvY2FsKGZpcnN0QmxvY2ssIG5vZGUuY2hpbGRyZW4uY2hp
bGQxKCksIGNoYW5nZVJlZik7CisgICAgICAgICAgICAgICAgICAgIGlmICghIW5vZGUuY2hpbGQy
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpeFBvc3NpYmxlR2V0TG9jYWwoZmlyc3RC
bG9jaywgbm9kZS5jaGlsZHJlbi5jaGlsZDIoKSwgY2hhbmdlUmVmKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghIW5vZGUuY2hpbGQzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZml4UG9zc2libGVHZXRMb2NhbChmaXJzdEJsb2NrLCBub2RlLmNoaWxkcmVuLmNoaWxkMygp
LCBjaGFuZ2VSZWYpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMjkgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9CiAgICAgCisgICAgYm9vbCBnbG9iYWxW
YXJXYXRjaHBvaW50RWxpbWluYXRpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBv
aW50ZXIpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsg
aS0tOykgeworICAgICAgICAgICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJyZW50QmxvY2stPmF0
KGkpOworICAgICAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOworICAgICAgICAg
ICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hw
b2ludDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdp
c3RlclBvaW50ZXIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2xvYmJlcnNXb3JsZChpbmRleCkpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAKICAgICBOb2RlSW5kZXggZ2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcikKICAgICB7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CkBAIC0yMjYsNiArMjQ5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5v
cCgpKSB7CiAgICAgICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAgICAgICAgIGNhc2Ug
UHV0R2xvYmFsVmFyQ2hlY2s6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2lu
dGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5k
ZXg7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05ODUsNyArMTAwOSwxMyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoZ2xvYmFsVmFyTG9hZEVsaW1pbmF0aW9uKG5v
ZGUucmVnaXN0ZXJQb2ludGVyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAgIGlmIChnbG9i
YWxWYXJXYXRjaHBvaW50RWxpbWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkpCisgICAg
ICAgICAgICAgICAgZWxpbWluYXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAogICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXJD
aGVjazoKICAgICAgICAgICAgIGlmIChtX2ZpeHBvaW50U3RhdGUgPT0gRml4cG9pbnROb3RDb252
ZXJnZWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBlbGltaW5hdGUoZ2xv
YmFsVmFyU3RvcmVFbGltaW5hdGlvbihub2RlLnJlZ2lzdGVyUG9pbnRlcigpKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEy
MDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGVPcGNvZGUoCiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9n
ZXRfZ2xvYmFsX3ZhcjoKKyAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKICAg
ICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgorICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hl
Y2s6CiAgICAgY2FzZSBvcF9qbXA6CiAgICAgY2FzZSBvcF9sb29wOgogICAgIGNhc2Ugb3BfanRy
dWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDYgKzU2LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKCFibG9jay0+Y2ZhRm91bmRDb25zdGFudHMpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAg
ICAgICAgZGF0YUxvZygiQ29uc3RhbnQgZm9sZGluZyBjb25zaWRlcmluZyBCbG9jayAjJXUuXG4i
LCBibG9ja0luZGV4KTsKKyNlbmRpZgogICAgICAgICAgICAgc3RhdGUuYmVnaW5CYXNpY0Jsb2Nr
KGJsb2NrKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJsb2NrID0gMDsgaW5k
ZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKICAgICAgICAgICAg
ICAgICBpZiAoIXN0YXRlLmlzVmFsaWQoKSkKQEAgLTkwLDcgKzkzLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0YXRlLmV4ZWN1dGUoaW5kZXhJbkJsb2Nr
KTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKQotICAgICAgICAg
ICAgICAgICAgICB8fCBtX2dyYXBoLmNsb2JiZXJzV29ybGQobm9kZSkKKyAgICAgICAgICAgICAg
ICAgICAgfHwgc3RhdGUuZGlkQ2xvYmJlcigpCiAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUu
aGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLmZvck5vZGUobm9kZUluZGV4KS52YWx1ZSgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuaAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niwx
MSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgYm9vbCBpc1NldCgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9jb2RlT2Zmc2V0ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzd2l0Y2hUb0xhdGVKdW1wKE1h
Y3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGNoZWNrKQogICAgIHsKICNpZm5kZWYgTkRFQlVH
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAko
cmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDExIEBAIHZvaWQgSklUQ29tcGls
ZXI6OmxpbmtPU1JFeGl0cygpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVC
bG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7ICsraSkgewogICAgICAgICBPU1JFeGl0JiBleGl0
ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7Ci0gICAgICAgIGV4aXQubV9jaGVjay5pbml0aWFs
SnVtcCgpLmxpbmsodGhpcyk7CisgICAgICAgIEFTU0VSVCghZXhpdC5tX2NoZWNrLmlzU2V0KCkg
PT0gKGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKSk7CisgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIGV4aXQubV9jaGVj
ay5pbml0aWFsSnVtcCgpLmxpbmsodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
ZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLnNldERlc3RpbmF0
aW9uKGxhYmVsKCkpOwogICAgICAgICBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwogICAg
ICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpKSwgJmdsb2JhbERhdGEoKS0+b3NyRXhpdEluZGV4
KTsKICAgICAgICAgZXhpdC5tX2NoZWNrLnN3aXRjaFRvTGF0ZUp1bXAocGF0Y2hhYmxlSnVtcCgp
KTsKQEAgLTE5MCw2ICsxOTQsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXIm
IGxpbmtCCiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhpdChpKTsK
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKGV4aXQubV9jaGVjay5sYXRlSnVtcCgpLCB0YXJnZXQp
OwogICAgICAgICBleGl0Lm1fY2hlY2suY29ycmVjdExhdGVKdW1wKGxpbmtCdWZmZXIpOworICAg
ICAgICBpZiAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpCisgICAgICAgICAgICBjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0
Lm1fd2F0Y2hwb2ludEluZGV4KS5jb3JyZWN0TGFiZWxzKGxpbmtCdWZmZXIpOwogICAgIH0KICAg
ICAKICAgICBjb2RlQmxvY2soKS0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMjAxMzYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDMwLDkgKzQzMCwyMCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsK
ICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNJZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hwb2ludCB8fCBvcCgpID09
IFB1dEdsb2JhbFZhckNoZWNrOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyRm9yQ2hlY2soKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0lkZW50aWZpZXJOdW1i
ZXJGb3JDaGVjaygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMjsKKyAgICB9CisgICAgCiAg
ICAgYm9vbCBoYXNSZWdpc3RlclBvaW50ZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkg
PT0gR2V0R2xvYmFsVmFyIHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyOworICAgICAgICByZXR1cm4g
b3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBH
bG9iYWxWYXJXYXRjaHBvaW50IHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyQ2hlY2s7CiAgICAgfQog
ICAgIAogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEyMDEzNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQxLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhQdXRTY29wZWRWYXIsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3Js
ZCkgXAogICAgIG1hY3JvKEdldEdsb2JhbFZhciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKFB1dEdsb2JhbFZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKEdsb2JhbFZhcldhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhQdXRHbG9iYWxWYXJDaGVjaywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNr
RnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCiAgICAgLyogT3B0aW1pemF0aW9u
cyBmb3IgYXJyYXkgbXV0YXRpb24uICovXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIE9T
UkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVMKICAgICAsIG1fY29kZU9yaWdp
bihqaXQtPm1fY29kZU9yaWdpbkZvck9TUikKICAgICAsIG1fY29kZU9yaWdpbkZvckV4aXRQcm9m
aWxlKG1fY29kZU9yaWdpbikKICAgICAsIG1fcmVjb3ZlcnlJbmRleChyZWNvdmVyeUluZGV4KQor
ICAgICwgbV93YXRjaHBvaW50SW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICwgbV9raW5kKGtpbmQpCiAgICAgLCBtX2NvdW50KDApCiAgICAgLCBtX2FyZ3Vt
ZW50cyhqaXQtPm1fYXJndW1lbnRzLnNpemUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBzdHJ1
Y3QgT1NSRXhpdCB7CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsK
ICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWduZWQgbV93YXRj
aHBvaW50SW5kZXg7CiAgICAgCiAgICAgRXhpdEtpbmQgbV9raW5kOwogICAgIHVpbnQzMl90IG1f
Y291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNCw2ICs5MjQsMTEgQEAgdm9pZCogREZH
X09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29ucwogICAgIHJldHVybiB2aXJ0dWFsRm9yKGV4
ZWNDYWxsZWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCit2b2lkIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uTm90aWZ5R2xvYmFsVmFyV3JpdGUoV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkK
K3sKKyAgICB3YXRjaHBvaW50U2V0LT5ub3RpZnlXcml0ZSgpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlm
aWVyKiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4
ZWMtPmdsb2JhbERhdGEoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIHR5cGVk
ZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXQKIHR5cGVkZWYgdm9pZCBERkdfT1BF
UkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJB
VElPTiAoKlZfREZHT3BlcmF0aW9uX0VKUFApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgdm9pZCopOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RG
R09wZXJhdGlvbl9FUFpKKShFeGVjU3RhdGUqLCB2b2lkKiwgaW50MzJfdCwgRW5jb2RlZEpTVmFs
dWUpOwordHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9XKShXYXRj
aHBvaW50U2V0Kik7CiB0eXBlZGVmIHZvaWQqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhdGlv
bl9FKShFeGVjU3RhdGUqKTsKIAogLy8gVGhlc2Ugcm91dGluZXMgYXJlIHByb3ZpZGUgY2FsbGJh
Y2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRpb25zIG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXgg
dG8gSklULgpAQCAtMTE2LDYgKzExNyw3IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uR2UKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQ3VzdG9t
R2V0dGVyKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jLCBJ
ZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBv
cGVyYXRpb25DYWxsR2V0dGVyKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZShX
YXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmUoRXhlY1N0YXRlKiwgSWRlbnRpZmllciop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVz
b2x2ZUJhc2UoRXhlY1N0YXRlKiwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZUJhc2VTdHJpY3RQdXQoRXhlY1N0
YXRlKiwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkxLDcgKzQ5
MSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOiB7CisgICAgICAgIGNhc2UgUHV0R2xvYmFs
VmFyOgorICAgICAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOiB7CiAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY2OSw2ICs2NzAsNyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIFRlYXJPZmZBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ2hlY2tO
dW1iZXI6CiAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgICAgICBj
YXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVm
YXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5Niw2ICszNTk2
LDYyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazogeworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgCisgICAg
ICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQgPQorICAgICAgICAgICAgbV9qaXQuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCkuZ2V0KAorICAgICAg
ICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKSktPmlt
cGwoKSkud2F0Y2hwb2ludFNldCgpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0
OCgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCisgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3Mod2F0Y2hwb2ludFNldC0+YWRk
cmVzc09mSXNXYXRjaGVkKCkpKSwKKyAgICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25Ob3Rp
ZnlHbG9iYWxWYXJXcml0ZSwgTm9SZXN1bHQsIHdhdGNocG9pbnRTZXQpKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQoKSkgeworICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFJl
ZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdyaXRlQmFycmll
cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKSwgdmFsdWUudGFnR1BSKCks
IG5vZGUuY2hpbGQxKCksIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzLCBzY3JhdGNoUmVn
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBpZiB3ZSBoYXBwZW4gdG8gaGF2ZSBh
IHNwYXJlIHJlZ2lzdGVyIC0gYW5kIF9PTkxZXyBpZiB3ZSBoYXBwZW4gdG8gaGF2ZQorICAgICAg
ICAvLyBhIHNwYXJlIHJlZ2lzdGVyIC0gYSBnb29kIG9wdGltaXphdGlvbiB3b3VsZCBiZSB0byBw
dXQgdGhlIHJlZ2lzdGVyIHBvaW50ZXIgaW50bworICAgICAgICAvLyBhIHJlZ2lzdGVyIGFuZCB0
aGVuIGRvIGEgemVybyBvZmZzZXQgc3RvcmUgZm9sbG93ZWQgYnkgYSBmb3VyLW9mZnNldCBzdG9y
ZSAob3IKKyAgICAgICAgLy8gdmljZS12ZXJzYSBkZXBlbmRpbmcgb24gZW5kaWFubmVzcykuCisg
ICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUudGFnR1BSKCksIG5vZGUucmVnaXN0ZXJQb2ludGVy
KCktPnRhZ1BvaW50ZXIoKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUucGF5bG9hZEdQ
UigpLCBub2RlLnJlZ2lzdGVyUG9pbnRlcigpLT5wYXlsb2FkUG9pbnRlcigpKTsKKworICAgICAg
ICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAg
ICAgCisgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OiB7CisgICAgICAgIG1faml0Lmdsb2Jh
bE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpLmdldCgKKyAgICAgICAg
ICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKSktPmltcGwoKSku
YWRkV2F0Y2hwb2ludCgKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7
CisgICAgICAgIAorI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnRhZ1Bv
aW50ZXIoKSwgc2NyYXRjaEdQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE9LID0g
bV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHNjcmF0
Y2hHUFIsCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIobm9kZS5yZWdpc3RlclBvaW50ZXIoKS0+
Z2V0KCkudGFnKCkpKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKG5vZGUucmVnaXN0ZXJQb2ludGVy
KCktPnBheWxvYWRQb2ludGVyKCksIHNjcmF0Y2hHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBvayA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFs
LCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKG5vZGUucmVnaXN0ZXJQb2lu
dGVyKCktPmdldCgpLnBheWxvYWQoKSkpOworICAgICAgICBub3RPSy5saW5rKCZtX2ppdCk7Cisg
ICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgb2subGluaygmbV9qaXQpOworI2Vu
ZGlmCisgICAgICAgIAorICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZTogewogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBH
UFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjAxMzYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjE1LDYgKzM2MTUsNTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dEds
b2JhbFZhckNoZWNrOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOworICAgICAgICAKKyAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNl
dCA9CisgICAgICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+
c3ltYm9sVGFibGUoKS5nZXQoCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50
aWZpZXJOdW1iZXJGb3JDaGVjaygpKS0+aW1wbCgpKS53YXRjaHBvaW50U2V0KCk7CisgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRl
QWRkcmVzcyh3YXRjaHBvaW50U2V0LT5hZGRyZXNzT2ZJc1dhdGNoZWQoKSkpLAorICAgICAgICAg
ICAgICAgIHRoaXMsIG9wZXJhdGlvbk5vdGlmeUdsb2JhbFZhcldyaXRlLCBOb1Jlc3VsdCwgd2F0
Y2hwb2ludFNldCkpOworICAgICAgICAKKyAgICAgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVy
RW5hYmxlZCgpKSB7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNv
ZGVPcmlnaW4pLCB2YWx1ZS5ncHIoKSwgbm9kZS5jaGlsZDEoKSwgV3JpdGVCYXJyaWVyRm9yVmFy
aWFibGVBY2Nlc3MsIHNjcmF0Y2hSZWcpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBt
X2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIoKSwgbm9kZS5yZWdpc3RlclBvaW50ZXIoKSk7CisKKyAg
ICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgICAgIAorICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDogeworICAgICAgICBtX2ppdC5n
bG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQoCisgICAg
ICAgICAgICBpZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpLT5pbXBs
KCkpLmFkZFdhdGNocG9pbnQoCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50
KCkpOworICAgICAgICAKKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAgICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CisgICAgICAgIG1faml0LmxvYWRQdHIobm9kZS5yZWdpc3RlclBvaW50ZXIoKSwg
c2NyYXRjaEdQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNo
UHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAg
ICAgICAgVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KEpTVmFsdWU6OmVuY29kZShu
b2RlLnJlZ2lzdGVyUG9pbnRlcigpLT5nZXQoKSkpKSk7CisgICAgICAgIG1faml0LmJyZWFrcG9p
bnQoKTsKKyAgICAgICAgb2subGluaygmbV9qaXQpOworI2VuZGlmCisgICAgICAgIAorICAgICAg
ICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAg
IGNhc2UgQ2hlY2tIYXNJbnN0YW5jZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJl
KHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDE0LDYgKzE0MTQsMTEgQEAg
cHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
VHJ1c3RlZEltbTMyKGFyZzIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0RGR09wZXJhdGlvbl9XIG9wZXJhdGlvbiwgV2F0Y2hwb2ludFNldCogd2F0Y2hw
b2ludFNldCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKFRydXN0ZWRJbW1Q
dHIod2F0Y2hwb2ludFNldCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OworICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFy
Z3VtZW50VHlwZTE+CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlv
blR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBhcmcxKQogICAgIHsK
QEAgLTE2NzIsNiArMTY3NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5
bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oVl9ERkdPcGVyYXRpb25fVyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRT
ZXQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyKHdh
dGNocG9pbnRTZXQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAg
ICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVu
dFR5cGUxPgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rpb25UeXBl
IG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJnMSkKICAgICB7CkBAIC0x
NzkzLDYgKzE4MDMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CisgICAg
SklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24p
CisgICAgeworICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVy
biBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0
ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQxLCBHUFJSZWcgcmVzdWx0MikKICAgICB7CiAgICAg
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KGZ1bmN0aW9uKTsKQEAgLTIxOTMsNiArMjIwOCwzMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlw
ZXMpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVV
c2UuaW5kZXgoKSwganVtcFRvRmFpbCwgcmVjb3ZlcnkpOwogICAgIH0KKyAgICAvLyBVc2UgdGhp
cyBsaWtlIHlvdSB3b3VsZCB1c2Ugc3BlY3VsYXRpb25DaGVjaygpLCBleGNlcHQgdGhhdCB5b3Ug
ZG9uJ3QgcGFzcyBpdCBhIGp1bXAKKyAgICAvLyAoYmVjYXVzZSB5b3UgZG9uJ3QgaGF2ZSB0byBl
eGVjdXRlIGEgYnJhbmNoOyB0aGF0J3Mga2luZCBvZiB0aGUgd2hvbGUgcG9pbnQpLCBhbmQgeW91
CisgICAgLy8gbXVzdCByZWdpc3RlciB0aGUgcmV0dXJuZWQgV2F0Y2hwb2ludCB3aXRoIHNvbWV0
aGluZyByZWxldmFudC4gSW4gZ2VuZXJhbCwgdGhpcyBzaG91bGQKKyAgICAvLyBiZSB1c2VkIHdp
dGggZXh0cmVtZSBjYXJlLiBVc2Ugc3BlY3VsYXRpb25DaGVjaygpIHVubGVzcyB5b3UndmUgZ290
IGFuIGFtYXppbmcgcmVhc29uCisgICAgLy8gbm90IHRvLgorICAgIFdhdGNocG9pbnQqIHNwZWN1
bGF0aW9uV2F0Y2hwb2ludChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3Vy
Y2UsIE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgeworICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUlu
ZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CisgICAgICAgIE9T
UkV4aXQmIGV4aXQgPSBtX2ppdC5jb2RlQmxvY2soKS0+b3NyRXhpdCgKKyAgICAgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0KAorICAgICAgICAgICAgICAgIE9TUkV4aXQo
a2luZCwganNWYWx1ZVNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBo
KCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAoKSwgdGhpcykpKTsKKyAgICAgICAgZXhp
dC5tX3dhdGNocG9pbnRJbmRleCA9IG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRXYXRjaHBvaW50
KAorICAgICAgICAgICAgV2F0Y2hwb2ludChtX2ppdC53YXRjaHBvaW50TGFiZWwoKSkpOworICAg
ICAgICByZXR1cm4gJm1faml0LmNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBv
aW50SW5kZXgpOworICAgIH0KKyAgICAvLyBUaGUgZGVmYXVsdCBmb3Igc3BlY3VsYXRpb24gd2F0
Y2hwb2ludHMgaXMgdGhhdCB0aGV5J3JlIHVuY291bnRlZCwgYmVjYXVzZSB0aGUKKyAgICAvLyBh
Y3Qgb2YgZmlyaW5nIGEgd2F0Y2hwb2ludCBpbnZhbGlkYXRlcyBpdC4gU28sIGZ1dHVyZSByZWNv
bXBpbGF0aW9ucyB3aWxsIG5vdAorICAgIC8vIGF0dGVtcHQgdG8gc2V0IHRoaXMgd2F0Y2hwb2lu
dCBhZ2Fpbi4KKyAgICBXYXRjaHBvaW50KiBzcGVjdWxhdGlvbldhdGNocG9pbnQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uV2F0Y2hwb2ludChVbmNvdW50YWJsZVdhdGNocG9p
bnQsIEpTVmFsdWVTb3VyY2UoKSwgTm9Ob2RlKTsKKyAgICB9CiAgICAgdm9pZCBmb3J3YXJkU3Bl
Y3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2Us
IE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNv
bnN0IFZhbHVlUmVjb3ZlcnkmIHZhbHVlUmVjb3ZlcnkpCiAgICAgewogICAgICAgICBBU1NFUlQo
YXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVz
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEyMDEzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5
LDYgKzI1OSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX2dldF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYXJndW1l
bnRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3BuYW1lKQorICAgICAgICBE
RUZJTkVfT1Aob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZ2V0X2dsb2JhbF92YXIpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcG5hbWVzKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZ2V0X3Njb3BlZF92YXIpCkBAIC0zMjQsNiArMzI1LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2dsb2JhbF92YXIpCisgICAgICAgIERFRklORV9PUChvcF9wdXRf
Z2xvYmFsX3Zhcl9jaGVjaykKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zY29wZWRfdmFyKQog
ICAgICAgICBERUZJTkVfT1Aob3BfcmVzb2x2ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29s
dmVfYmFzZSkKQEAgLTQ4MSw2ICs0ODMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
dXRfZ2xvYmFsX3Zhcl9jaGVjayk7CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNv
bHZlX2dsb2JhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yc2hpZnQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw3ICs0NjMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc01hcHBlZChpbnQgdmlydHVhbFJlZ2lzdGVySW5k
ZXgpOwogICAgICAgICBib29sIGdldE1hcHBlZFBheWxvYWQoaW50IHZpcnR1YWxSZWdpc3Rlcklu
ZGV4LCBSZWdpc3RlcklEJiBwYXlsb2FkKTsKICAgICAgICAgYm9vbCBnZXRNYXBwZWRUYWcoaW50
IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEJiB0YWcpOwotCisgICAgICAgIAogICAg
ICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVy
SW5kZXgpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmly
dHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgdGFnKTsKIApAQCAtNTk5LDYgKzU5OSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3Zh
bChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZ2xvYmFsX3ZhcihJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbikgeyBlbWl0X29wX2dldF9nbG9iYWxfdmFyKGluc3RydWN0aW9u
KTsgfQogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiopOwpAQCAtNjYy
LDYgKzY2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5
X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0
ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nbG9iYWxfdmFyKElu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmUoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfYmFzZShJbnN0cnVjdGlvbiopOwpAQCAtNzM5LDYg
Kzc0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3ByZV9p
bmMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92
YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9yc2hpZnQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMDEzNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwOTAsNiArMTA5MCwzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xv
YmFsX3ZhcihJbnN0cnVjCiAgICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RI
KG9wX3B1dF9nbG9iYWxfdmFyKSwgdmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBvaW50ZXI7CisgICAgaW50IHZhbHVlID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIAorICAg
IGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOworICAgIAorICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFRlc3Q4KE5vblplcm8sIEFic29sdXRlQWRkcmVzcyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5wcmVkaWNhdGVQb2ludGVyKSkpOworICAgIAorICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmll
ckVuYWJsZWQoKSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwg
cmVnVDIpOworICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGdsb2JhbE9iamVjdCwgcmVnVDEsIHJl
Z1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vz
cyk7CisgICAgfQorICAgIAorICAgIHN0b3JlMzIocmVnVDEsIHJlZ2lzdGVyUG9pbnRlci0+dGFn
UG9pbnRlcigpKTsKKyAgICBzdG9yZTMyKHJlZ1QwLCByZWdpc3RlclBvaW50ZXItPnBheWxvYWRQ
b2ludGVyKCkpOworICAgIHVubWFwKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
Z2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKKyAgICAKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxLCByZWdUMCk7Cisg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0
XS51Lm9wZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjpyZXNl
dFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8tPmNh
bGxSZXR1cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9pZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTIwMTM2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMjcsNiArMTAyNywyOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
Z2xvYmFsX3ZhcihJbnN0cnVjCiAgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0
LCByZWdUMCwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZh
cmlhYmxlQWNjZXNzKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXJfY2hl
Y2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICAK
KyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3MoY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUucHJlZGljYXRlUG9pbnRlcikpKTsKKworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAg
CisgICAgc3RvcmVQdHIocmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9p
bnRlcik7CisgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKQorICAgICAgICBl
bWl0V3JpdGVCYXJyaWVyKGdsb2JhbE9iamVjdCwgcmVnVDAsIHJlZ1QyLCBTaG91bGRGaWx0ZXJJ
bW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7Cit9CisKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICAKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlz
LCBjdGlfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KHJlZ1QwKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudElu
c3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNhbGwoKTsKK30KKwogdm9p
ZCBKSVQ6OnJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhz
dHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMjAxMzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjM3Nyw2ICsyMzc3LDE1IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3
X2EKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNr
RnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIoc3RhY2tGcmFtZS5h
cmdzWzBdLmludDMyKCkpLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIoKSk7CiB9CiAKK0RFRklO
RV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQoreworICAgIFNU
VUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKyAgICAKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBzeW1ib2xUYWJsZVB1dChjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLCBjYWxsRnJhbWUsIGNvZGVCbG9jay0+aWRlbnRpZmllcihzdGFja0Zy
YW1lLmFyZ3NbMV0uaW50MzIoKSksIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCksIHRydWUp
OworfQorCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZSkK
IHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSw2ICs0NDUs
NyBAQCBleHRlcm4gIkMiIHsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfYnlfaW5kZXgo
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9pZCBKSVRfU1RVQiBj
dGlfb3BfcHV0X2J5X3ZhbChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAg
ICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfZ2V0dGVyX3NldHRlcihTVFVCX0FSR1NfREVDTEFS
QVRJT04pIFdURl9JTlRFUk5BTDsKKyAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfZ2xvYmFs
X3Zhcl9jaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lk
IEpJVF9TVFVCIGN0aV9vcF90ZWFyX29mZl9hY3RpdmF0aW9uKFNUVUJfQVJHU19ERUNMQVJBVElP
TikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3RlYXJfb2ZmX2FyZ3Vt
ZW50cyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9T
VFVCIGN0aV9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3IoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBX
VEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1Niw2ICs4NTYs
MTQgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfdwogICAgIExMSU5U
X0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2dsb2JhbF92
YXJfY2hlY2spCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIHN5bWJvbFRhYmxlUHV0KGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCksIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1s0XS51Lm9wZXJhbmQp
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgdHJ1ZSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiB7CiAgICAgTExJTlRf
QkVHSU4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBAIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmUKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF9iYXNlKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTAzOSw3
ICsxMDM5LDcgQEAgX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgogICAgIGRpc3BhdGNoKDQpCiAK
IAotX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorbWFjcm8gZ2V0R2xvYmFsVmFyKHNpemUpCiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRwIDhbUENdLCB0MAogICAgIGxvYWRpIDRbUENd
LCB0MwpAQCAtMTA0Nyw5ICsxMDQ3LDE3IEBAIF9sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKICAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwXSwgdDEKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQzLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAg
IGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQzCiAgICAg
dmFsdWVQcm9maWxlKHQyLCB0MSwgdDMpCi0gICAgZGlzcGF0Y2goNCkKKyAgICBkaXNwYXRjaChz
aXplKQorZW5kCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICBnZXRHbG9iYWxWYXIo
NCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOgorICAgIGdldEdsb2Jh
bFZhcig1KQogCiAKIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKQEAgLTEwNjMsNiArMTA3MSwy
MiBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxp
bnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRwIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBidGJueiBbdDJdLCAub3BQdXRHbG9iYWxWYXJDaGVja1Nsb3cKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFt0MF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDBd
CisgICAgZGlzcGF0Y2goNSkKKy5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdzoKKyAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKKyAgICBkaXNwYXRj
aCg1KQorCisKIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
ICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQg
d2UgZG8gbm90IG1vZGlmeSB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxMjAxMzYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
d29ya2luZyBjb3B5KQpAQCAtODkzLDE1ICs4OTMsMjMgQEAgX2xsaW50X29wX3B1dF9zY29wZWRf
dmFyOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorbWFj
cm8gZ2V0R2xvYmFsVmFyKHNpemUpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRwIDE2
W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBsb2FkcCBb
dDBdLCB0MQogICAgIHN0b3JlcCB0MSwgW2NmciwgdDMsIDhdCi0gICAgbG9hZHAgMjRbUEIsIFBD
LCA4XSwgdDAKKyAgICBsb2FkcCAoc2l6ZSAtIDEpICogOFtQQiwgUEMsIDhdLCB0MAogICAgIHZh
bHVlUHJvZmlsZSh0MSwgdDApCi0gICAgZGlzcGF0Y2goNCkKKyAgICBkaXNwYXRjaChzaXplKQor
ZW5kCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICBnZXRHbG9iYWxWYXIoNCkKKwor
CitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOgorICAgIGdldEdsb2JhbFZhcig1
KQogCiAKIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKQEAgLTkxNCw2ICs5MjIsMjEgQEAgX2xs
aW50X29wX3B1dF9nbG9iYWxfdmFyOgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCAyNFtQ
QiwgUEMsIDhdLCB0MgorICAgIGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MQorICAgIGxvYWRwIDhb
UEIsIFBDLCA4XSwgdDAKKyAgICBidGJueiBbdDJdLCAub3BQdXRHbG9iYWxWYXJDaGVja1Nsb3cK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDIp
CisgICAgc3RvcmVwIHQyLCBbdDBdCisgICAgZGlzcGF0Y2goNSkKKy5vcFB1dEdsb2JhbFZhckNo
ZWNrU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjaykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQg
Y2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyMDEzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTA0LDIyICs1MDQsMjUgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlv
bnNGb3JEZQogICAgIHN0cnVjdHVyZSgpLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7CiB9
CiAKLXZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3Qo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gV1RG
Ojpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBzaXplX3Qgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAo
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVj
dE9mZnNldChvZmZzZXQpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChvZmZzZXQgPT0g
V1RGOjpub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcHV0VW5k
ZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNl
dCkpOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcHV0VW5kZWZp
bmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91
bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNl
dChvZmZzZXQpOworICAgIHJldHVybiB0cnVlOwogfQogCiBORVZFUl9JTkxJTkUgdm9pZCBKU09i
amVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmIHNsb3QsIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjAxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgdm9pZCByZW1vdmVEaXJlY3QoSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgYm9vbCByZW1vdmVEaXJlY3QoSlNHbG9iYWxE
YXRhJiwgUHJvcGVydHlOYW1lKTsgLy8gUmV0dXJuIHRydWUgaWYgYW55dGhpbmcgaXMgcmVtb3Zl
ZC4KICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJl
KCktPmRpZFRyYW5zaXRpb24oKTsgfQogICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygp
OyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzIs
OSArNzIsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5s
aW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAg
ICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdl
dChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxsKCkpCisg
ICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpOworICAg
IFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBp
dGVyLT5zZWNvbmQ7CisgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgc2xvdC5zZXRW
YWx1ZShvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtODMsOSArODYsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9s
VGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9s
VGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5
ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRh
YmxlID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBp
dGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBp
ZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CisgICAgQVNTRVJU
KCFlbnRyeS5pc051bGwoKSk7CiAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKAogICAgICAg
ICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCksIGVudHJ5LmdldEF0
dHJpYnV0ZXMoKSB8IERvbnREZWxldGUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtOTYsOSArMTAy
LDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0
VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QsCiAgICAgYm9vbCYgc2xvdElzV3JpdGVhYmxlKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkg
ZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAgICBTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCk7CisgICAgU3ltYm9sVGFibGU6Oml0ZXJh
dG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwor
ICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNlY29uZDsKKyAgICBB
U1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICBzbG90LnNldFZhbHVlKG9iamVjdC0+cmVnaXN0
ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CiAgICAgc2xvdElzV3JpdGVhYmxlID0gIWVu
dHJ5LmlzUmVhZE9ubHkoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMiwxNSArMTIxLDIxIEBA
IGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8
IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAob2JqZWN0KSk7CiAgICAgCi0gICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJv
cGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQorICAgIFN5
bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAgICBTeW1i
b2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CisgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CisgICAgYm9vbCB3
YXNGYXQ7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBmYXN0RW50cnkgPSBpdGVyLT5zZWNv
bmQuZ2V0RmFzdCh3YXNGYXQpOworICAgIEFTU0VSVCghZmFzdEVudHJ5LmlzTnVsbCgpKTsKKyAg
ICBpZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHkoKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cp
CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgb2JqZWN0
LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCBvYmplY3QsIHZh
bHVlKTsKKyAgICBpZiAoVU5MSUtFTFkod2FzRmF0KSkKKyAgICAgICAgaXRlci0+c2Vjb25kLm5v
dGlmeVdyaXRlKCk7CisgICAgb2JqZWN0LT5yZWdpc3RlckF0KGZhc3RFbnRyeS5nZXRJbmRleCgp
KS5zZXQoZ2xvYmFsRGF0YSwgb2JqZWN0LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTEzNiw2ICsxNTEsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1
dGVzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9
IGl0ZXItPnNlY29uZDsKICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICBlbnRyeS5u
b3RpZnlXcml0ZSgpOwogICAgIGVudHJ5LnNldEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAg
b2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCBvYmpl
Y3QsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzEsNTMgKzMxLDE2MyBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJVU3RyaW5nLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9BbHdh
eXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIAorICAgIGNsYXNzIFdhdGNocG9pbnQ7CisgICAgY2xhc3MgV2F0Y2hwb2ludFNldDsKKwog
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGludCBtaXNzaW5nU3ltYm9sTWFya2VyKCkgeyByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsgfQogCiAgICAgLy8gVGhlIGJpdCB0
d2lkZGxpbmcgaW4gdGhpcyBjbGFzcyBhc3N1bWVzIHRoYXQgZXZlcnkgcmVnaXN0ZXIgaW5kZXgg
aXMgYQogICAgIC8vIHJlYXNvbmFibHkgc21hbGwgcG9zaXRpdmUgb3IgbmVnYXRpdmUgbnVtYmVy
LCBhbmQgdGhlcmVmb3JlIGhhcyBpdHMgaGlnaAogICAgIC8vIGZvdXIgYml0cyBhbGwgc2V0IG9y
IGFsbCB1bnNldC4KIAorICAgIC8vIEluIGFkZGl0aW9uIHRvIGltcGxlbWVudGluZyBzZW1hbnRp
Y3MtbWFuZGF0ZWQgdmFyaWFibGUgYXR0cmlidXRlcyBhbmQKKyAgICAvLyBpbXBsZW1lbnRhdGlv
bi1tYW5kYXRlZCB2YXJpYWJsZSBpbmRleGluZywgdGhpcyBjbGFzcyBhbHNvIGltcGxlbWVudHMK
KyAgICAvLyB3YXRjaHBvaW50cyB0byBiZSB1c2VkIGZvciBKSVQgb3B0aW1pemF0aW9ucy4gQmVj
YXVzZSB3YXRjaHBvaW50cyBhcmUKKyAgICAvLyBtZWFudCB0byBiZSByZWxhdGl2ZWx5IHJhcmUs
IHRoaXMgY2xhc3Mgb3B0aW1pemVzIGhlYXZpbHkgZm9yIHRoZSBjYXNlCisgICAgLy8gdGhhdCB0
aGV5IGFyZSBub3QgYmVpbmcgdXNlZC4gVG8gdGhhdCBlbmQsIHRoaXMgY2xhc3MgdXNlcyB0aGUg
dGhpbi1mYXQKKyAgICAvLyBpZGlvbTogZWl0aGVyIGl0IGlzIHRoaW4sIGluIHdoaWNoIGNhc2Ug
aXQgY29udGFpbnMgYW4gaW4tcGxhY2UgZW5jb2RlZAorICAgIC8vIHdvcmQgdGhhdCBjb25zaXN0
cyBvZiBhdHRyaWJ1dGVzLCB0aGUgaW5kZXgsIGFuZCBhIGJpdCBzYXlpbmcgdGhhdCBpdCBpcwor
ICAgIC8vIHRoaW47IG9yIGl0IGlzIGZhdCwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyBhIHBv
aW50ZXIgdG8gYSBtYWxsb2MnZAorICAgIC8vIGRhdGEgc3RydWN0dXJlIGFuZCBhIGJpdCBzYXlp
bmcgdGhhdCBpdCBpcyBmYXQuIFRoZSBtYWxsb2MnZCBkYXRhCisgICAgLy8gc3RydWN0dXJlIHdp
bGwgYmUgbWFsbG9jZWQgYSBzZWNvbmQgdGltZSB1cG9uIGNvcHksIHRvIHByZXNlcnZlIHRoZQor
ICAgIC8vIHByb3BlcnR5IHRoYXQgaW4tcGxhY2UgZWRpdHMgdG8gU3ltYm9sVGFibGVFbnRyeSBk
byBub3QgbWFuaWZlc3QgaW4gYW55CisgICAgLy8gY29waWVzLiBIb3dldmVyLCB0aGUgbWFsbG9j
J2QgRmF0RW50cnkgZGF0YSBzdHJ1Y3R1cmUgY29udGFpbnMgYSByZWYtCisgICAgLy8gY291bnRl
ZCBwb2ludGVyIHRvIGEgc2hhcmVkIFdhdGNocG9pbnRTZXQuIFRodXMsIGluLXBsYWNlIGVkaXRz
IG9mIHRoZQorICAgIC8vIFdhdGNocG9pbnRTZXQgd2lsbCBtYW5pZmVzdCBpbiBhbGwgY29waWVz
LiBIZXJlJ3MgYSBwaWN0dXJlOgorICAgIC8vCisgICAgLy8gU3ltYm9sVGFibGVFbnRyeSAtLT4g
RmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAvLworICAgIC8vIElmIHlvdSBtYWtlIGEg
Y29weSBvZiBhIFN5bWJvbFRhYmxlRW50cnksIHlvdSB3aWxsIGhhdmU6CisgICAgLy8KKyAgICAv
LyBvcmlnaW5hbDogU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRT
ZXQKKyAgICAvLyBjb3B5OiAgICAgU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0tLS1e
CisKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7CisgICAgICAgIC8vIFVzZSB0aGUgU3lt
Ym9sVGFibGVFbnRyeTo6RmFzdCBjbGFzcywgZWl0aGVyIHZpYSBpbXBsaWNpdCBjYXN0IG9yIGJ5
IGNhbGxpbmcKKyAgICAgICAgLy8gZ2V0RmFzdCgpLCB3aGVuIHlvdSAoMSkgb25seSBjYXJlIGFi
b3V0IGlzTnVsbCgpLCBnZXRJbmRleCgpLCBhbmQgaXNSZWFkT25seSgpLAorICAgICAgICAvLyBh
bmQgKDIpIHlvdSBhcmUgaW4gYSBob3QgcGF0aCB3aGVyZSB5b3UgbmVlZCB0byBtaW5pbWl6ZSB0
aGUgbnVtYmVyIG9mIHRpbWVzCisgICAgICAgIC8vIHRoYXQgeW91IGJyYW5jaCBvbiBpc0ZhdCgp
IHdoZW4gZ2V0dGluZyB0aGUgYml0cygpLgorICAgICAgICBjbGFzcyBGYXN0IHsKKyAgICAgICAg
cHVibGljOgorICAgICAgICAgICAgRmFzdCgpCisgICAgICAgICAgICAgICAgOiBtX2JpdHMoMCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
QUxXQVlTX0lOTElORSBGYXN0KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5KQorICAgICAg
ICAgICAgICAgIDogbV9iaXRzKGVudHJ5LmJpdHMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0CisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFtX2JpdHM7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGludCBnZXRJbmRleCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9iaXRzID4+IEZsYWdCaXRzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25z
dAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBSZWFkT25s
eUZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVk
IGdldEF0dHJpYnV0ZXMoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXMgPSAwOworICAgICAgICAgICAgICAgIGlmIChtX2JpdHMgJiBSZWFk
T25seUZsYWcpCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUmVhZE9ubHk7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fYml0cyAmIERvbnRFbnVtRmxhZykKKyAgICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlcyB8PSBEb250RW51bTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXR0
cmlidXRlczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBpc0ZhdCgpIGNvbnN0
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAg
ICAgIGZyaWVuZCBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeTsKKyAgICAgICAgICAgIGludHB0cl90
IG1fYml0czsKKyAgICAgICAgfTsKKwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KCkKICAgICAg
ICAgICAgIDogbV9iaXRzKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIFN5bWJv
bFRhYmxlRW50cnkoaW50IGluZGV4KQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAg
cGFjayhpbmRleCwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIFN5bWJvbFRh
YmxlRW50cnkoaW50IGluZGV4LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgOiBt
X2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChpbmRl
eCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgYXR0cmlidXRlcyAmIFJlYWRPbmx5LCBhdHRy
aWJ1dGVzICYgRG9udEVudW0pOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB+U3ltYm9s
VGFibGVFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGNvbnN0IFN5bWJvbFRh
YmxlRW50cnkmIG90aGVyKQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3lt
Ym9sVGFibGVFbnRyeSYgb3BlcmF0b3I9KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkob3RoZXIuaXNGYXQoKSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvcHlTbG93KG90aGVyKTsKKyAgICAgICAgICAgIGZyZWVGYXRF
bnRyeSgpOworICAgICAgICAgICAgbV9iaXRzID0gb3RoZXIubV9iaXRzOworICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBib29sIGlzTnVsbCgp
IGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhbV9iaXRzOworICAgICAgICAg
ICAgcmV0dXJuICFiaXRzKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgZ2V0SW5kZXgoKSBj
b25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9iaXRzID4+IEZsYWdCaXRzOwor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYml0cygpID4+IEZsYWdCaXRzKTsK
ICAgICAgICAgfQotCisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QgZ2V0RmFz
dCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBGYXN0KCp0aGlzKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0IGdldEZhc3QoYm9v
bCYgd2FzRmF0KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBGYXN0IHJlc3VsdDsKKyAg
ICAgICAgICAgIHdhc0ZhdCA9IGlzRmF0KCk7CisgICAgICAgICAgICBpZiAod2FzRmF0KQorICAg
ICAgICAgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBmYXRFbnRyeSgpLT5tX2JpdHM7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0czsKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHVuc2ln
bmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBhdHRyaWJ1dGVzID0gMDsKLSAgICAgICAgICAgIGlmIChtX2JpdHMgJiBSZWFkT25seUZsYWcp
Ci0gICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBSZWFkT25seTsKLSAgICAgICAgICAgIGlm
IChtX2JpdHMgJiBEb250RW51bUZsYWcpCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBE
b250RW51bTsKLSAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgICAgICAgICAgcmV0
dXJuIGdldEZhc3QoKS5nZXRBdHRyaWJ1dGVzKCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lk
IHNldEF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmlidXRlcykKQEAgLTg3LDMwICsxOTcsMTI1IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBSZWFkT25seUZsYWc7CisgICAgICAg
ICAgICByZXR1cm4gYml0cygpICYgUmVhZE9ubHlGbGFnOwogICAgICAgICB9Ci0KKyAgICAgICAg
CisgICAgICAgIGJvb2wgY291bGRCZVdhdGNoZWQoKTsKKyAgICAgICAgCisgICAgICAgIC8vIE5v
dGlmeSBhbiBvcHBvcnR1bml0eSB0byBjcmVhdGUgYSB3YXRjaHBvaW50IGZvciBhIHZhcmlhYmxl
LiBUaGlzIGlzCisgICAgICAgIC8vIGlkZW1wb3RlbnQgYW5kIGZhaWwtc2lsZW50LiBJdCBpcyBp
ZGVtcG90ZW50IGluIHRoZSBzZW5zZSB0aGF0IGlmCisgICAgICAgIC8vIGEgd2F0Y2hwb2ludCBz
ZXQgaGFkIGFscmVhZHkgYmVlbiBjcmVhdGVkLCB0aGVuIGFub3RoZXIgb25lIHdpbGwgbm90Cisg
ICAgICAgIC8vIGJlIGNyZWF0ZWQuIEhlbmNlIHR3byBjYWxscyB0byB0aGlzIG1ldGhvZCBoYXZl
IHRoZSBzYW1lIGVmZmVjdCBhcworICAgICAgICAvLyBvbmUgY2FsbC4gSXQgaXMgYWxzbyBmYWls
LXNpbGVudCwgaW4gdGhlIHNlbnNlIHRoYXQgaWYgYSB3YXRjaHBvaW50CisgICAgICAgIC8vIHNl
dCBoYWQgYmVlbiBjcmVhdGVkIGFuZCBoYWQgYWxyZWFkeSBiZWVuIGludmFsaWRhdGVkLCB0aGVu
IHRoaXMgd2lsbAorICAgICAgICAvLyBqdXN0IHJldHVybi4gVGhpcyBtZWFucyB0aGF0IGNvdWxk
QmVXYXRjaGVkKCkgbWF5IHJldHVybiBmYWxzZSBldmVuCisgICAgICAgIC8vIGltbWVkaWF0ZWx5
IGFmdGVyIGEgY2FsbCB0byBhdHRlbXB0VG9XYXRjaCgpLgorICAgICAgICB2b2lkIGF0dGVtcHRU
b1dhdGNoKCk7CisgICAgICAgIAorICAgICAgICBib29sKiBhZGRyZXNzT2ZJc1dhdGNoZWQoKTsK
KyAgICAgICAgCisgICAgICAgIHZvaWQgYWRkV2F0Y2hwb2ludChXYXRjaHBvaW50Kik7CisgICAg
ICAgIAorICAgICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlXcml0ZSgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG5vdGlmeVdyaXRlU2xvdygpOworICAgICAgICB9
CisgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBS
ZWFkT25seUZsYWcgPSAweDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEb250RW51
bUZsYWcgPSAweDI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb3ROdWxsRmxhZyA9
IDB4NDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEZsYWdCaXRzID0gMzsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludHB0cl90IEZhdEZsYWcgPSAweDE7CisgICAgICAgIHN0YXRpYyBj
b25zdCBpbnRwdHJfdCBSZWFkT25seUZsYWcgPSAweDI7CisgICAgICAgIHN0YXRpYyBjb25zdCBp
bnRwdHJfdCBEb250RW51bUZsYWcgPSAweDQ7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJf
dCBOb3ROdWxsRmxhZyA9IDB4ODsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IEZsYWdC
aXRzID0gNDsKKyAgICAgICAgCisgICAgICAgIGNsYXNzIEZhdEVudHJ5IHsKKyAgICAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBG
YXRFbnRyeShpbnRwdHJfdCBiaXRzKQorICAgICAgICAgICAgICAgIDogbV9iaXRzKGJpdHMgfCBG
YXRGbGFnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBpbnRwdHJfdCBtX2JpdHM7IC8vIGFsd2F5cyBoYXMgRmF0RmxhZyBzZXQgYW5kIGV4
YWN0bHkgbWF0Y2hlcyB3aGF0IHRoZSBiaXRzIHdvdWxkIGhhdmUgYmVlbiBpZiB0aGlzIHdhc24n
dCBmYXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBt
X3dhdGNocG9pbnRzOworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGVF
bnRyeSYgY29weVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOworICAgICAgICAKKyAgICAgICAgYm9v
bCBpc0ZhdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBG
YXRGbGFnOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBGYXRFbnRyeSogZmF0
RW50cnkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IEZhdEVudHJ5Kj4obV9iaXRzICYg
fkZhdEZsYWcpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogZmF0RW50
cnkoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PEZhdEVudHJ5Kj4obV9iaXRzICYgfkZhdEZsYWcpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogaW5mbGF0ZSgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChMSUtFTFkoaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhdEVudHJ5KCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbGF0ZVNsb3coKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgRmF0RW50cnkqIGluZmxhdGVTbG93KCk7CisgICAgICAgIAor
ICAgICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90IGJpdHMoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoaXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmF0RW50cnko
KS0+bV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIG1fYml0czsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBpbnRwdHJfdCYgYml0cygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYXRFbnRyeSgp
LT5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB2b2lkIGZyZWVGYXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChMSUtFTFkoIWlzRmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGZyZWVGYXRFbnRyeVNsb3coKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBm
cmVlRmF0RW50cnlTbG93KCk7CiAKICAgICAgICAgdm9pZCBwYWNrKGludCBpbmRleCwgYm9vbCBy
ZWFkT25seSwgYm9vbCBkb250RW51bSkKICAgICAgICAgewotICAgICAgICAgICAgbV9iaXRzID0g
KGluZGV4IDw8IEZsYWdCaXRzKSB8IE5vdE51bGxGbGFnOworICAgICAgICAgICAgaW50cHRyX3Qm
IGJpdHNSZWYgPSBiaXRzKCk7CisgICAgICAgICAgICBiaXRzUmVmID0gKHN0YXRpY19jYXN0PGlu
dHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpIHwgTm90TnVsbEZsYWc7CiAgICAgICAgICAgICBp
ZiAocmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgbV9iaXRzIHw9IFJlYWRPbmx5RmxhZzsKKyAg
ICAgICAgICAgICAgICBiaXRzUmVmIHw9IFJlYWRPbmx5RmxhZzsKICAgICAgICAgICAgIGlmIChk
b250RW51bSkKLSAgICAgICAgICAgICAgICBtX2JpdHMgfD0gRG9udEVudW1GbGFnOworICAgICAg
ICAgICAgICAgIGJpdHNSZWYgfD0gRG9udEVudW1GbGFnOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBib29sIGlzVmFsaWRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAoKGluZGV4IDw8IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gaW5kZXg7Cisg
ICAgICAgICAgICByZXR1cm4gKChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IEZsYWdC
aXRzKSA+PiBGbGFnQml0cykgPT0gc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KTsKICAgICAg
ICAgfQogCi0gICAgICAgIGludCBtX2JpdHM7CisgICAgICAgIGludHB0cl90IG1fYml0czsKICAg
ICB9OwogCiAgICAgc3RydWN0IFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzIDogSGFzaFRyYWl0
czxTeW1ib2xUYWJsZUVudHJ5PiB7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTM2KQorKysgU291cmNl
L1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNi0x
MCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBzaG91bGQg
YmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGFiaWxp
dHkgdG8gc2V0IHRoZSBpbmxpbmUgY2FwYWNpdHkgb2Ygc2VnbWVudGVkIHZlY3RvcnMuCisKKyAg
ICAgICAgKiB3dGYvU2VnbWVudGVkVmVjdG9yLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAo
U2VnbWVudGVkVmVjdG9ySXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpTZWdtZW50ZWRWZWN0b3JJ
dGVyYXRvcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6U2VnbWVudGVkVmVjdG9ySXRlcmF0
b3I6OlNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKToKKyAgICAgICAgKFNlZ21lbnRlZFZlY3Rvcik6
CisKIDIwMTItMDYtMTEgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lh
LmNvbT4KIAogICAgICAgICBVc2luZyBleHRyZXJuYWwgSUNVIGxpYnJhcnkgb24gY2FzZSB1bnNl
bnNpdGl2ZSBkcml2ZXMgd2lsbCBub3Qgd29yawpJbmRleDogU291cmNlL1dURi93dGYvU2VnbWVu
dGVkVmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9y
LmgJKHJldmlzaW9uIDEyMDEzNikKKysrIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTIgQEAKIG5hbWVzcGFjZSBXVEYgewogCiAg
ICAgLy8gQW4gaXRlcmF0b3IgZm9yIFNlZ21lbnRlZFZlY3Rvci4gSXQgc3VwcG9ydHMgb25seSB0
aGUgcHJlICsrIG9wZXJhdG9yCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdt
ZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVjdG9yOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgU2VnbWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yIHsKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplID0gOCwgc2l6ZV90IElu
bGluZUNhcGFjaXR5ID0gMzI+IGNsYXNzIFNlZ21lbnRlZFZlY3RvcjsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplID0gOCwgc2l6ZV90IElubGluZUNhcGFjaXR5
ID0gMzI+IGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yIHsKICAgICBwcml2YXRlOgotICAg
ICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPjsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2Fw
YWNpdHk+OwogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVy
YXRvcjxULCBTZWdtZW50U2l6ZT4gSXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgU2VnbWVudGVk
VmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiBJdGVyYXRvcjsK
IAogICAgICAgICB+U2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoKSB7IH0KIApAQCAtNzUsNyArNzUs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ICE9IG90aGVy
Lm1faW5kZXggfHwgbV9zZWdtZW50ICE9IG90aGVyLm1fc2VnbWVudCB8fCAmbV92ZWN0b3IgIT0g
Jm90aGVyLm1fdmVjdG9yOwogICAgICAgICB9CiAKLSAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRl
cmF0b3ImIG9wZXJhdG9yPShjb25zdCBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50
U2l6ZT4mIG90aGVyKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvciYgb3BlcmF0b3I9
KGNvbnN0IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBh
Y2l0eT4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3ZlY3RvciA9IG90aGVyLm1f
dmVjdG9yOwogICAgICAgICAgICAgbV9zZWdtZW50ID0gb3RoZXIubV9zZWdtZW50OwpAQCAtODQs
MjUgKzg0LDI4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcihTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVu
dFNpemU+JiB2ZWN0b3IsIHNpemVfdCBzZWdtZW50LCBzaXplX3QgaW5kZXgpCisgICAgICAgIFNl
Z21lbnRlZFZlY3Rvckl0ZXJhdG9yKFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5s
aW5lQ2FwYWNpdHk+JiB2ZWN0b3IsIHNpemVfdCBzZWdtZW50LCBzaXplX3QgaW5kZXgpCiAgICAg
ICAgICAgICA6IG1fdmVjdG9yKHZlY3RvcikKICAgICAgICAgICAgICwgbV9zZWdtZW50KHNlZ21l
bnQpCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZT4mIG1fdmVjdG9yOworICAg
ICAgICBTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiYgbV92
ZWN0b3I7CiAgICAgICAgIHNpemVfdCBtX3NlZ21lbnQ7CiAgICAgICAgIHNpemVfdCBtX2luZGV4
OwogICAgIH07CiAKICAgICAvLyBTZWdtZW50ZWRWZWN0b3IgaXMganVzdCBsaWtlIFZlY3Rvciwg
YnV0IGl0IGRvZXNuJ3QgbW92ZSB0aGUgdmFsdWVzCiAgICAgLy8gc3RvcmVkIGluIGl0cyBidWZm
ZXIgd2hlbiBpdCBncm93cy4gVGhlcmVmb3JlLCBpdCBpcyBzYWZlIHRvIGtlZXAKLSAgICAvLyBw
b2ludGVycyBpbnRvIGEgU2VnbWVudGVkVmVjdG9yLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzaXplX3QgU2VnbWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7Ci0gICAgICAgIGZy
aWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT47CisgICAg
Ly8gcG9pbnRlcnMgaW50byBhIFNlZ21lbnRlZFZlY3Rvci4gVGhlIGRlZmF1bHQgdHVuaW5nIHZh
bHVlcyBhcmUKKyAgICAvLyBvcHRpbWl6ZWQgZm9yIHNlZ21lbnRlZCB2ZWN0b3JzIHRoYXQgZ2V0
IGxhcmdlOyB5b3UgbWF5IHdhbnQgdG8gdXNlCisgICAgLy8gU2VnbWVudGVkVmVjdG9yPHRoaW5n
eSwgMSwgMD4gaWYgeW91IGRvbid0IGV4cGVjdCBhIGxvdCBvZiBlbnRyaWVzLgorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUsIHNpemVfdCBJbmxpbmVDYXBhY2l0
eT4KKyAgICBjbGFzcyBTZWdtZW50ZWRWZWN0b3IgeworICAgICAgICBmcmllbmQgY2xhc3MgU2Vn
bWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PjsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2Vn
bWVudFNpemU+IEl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3Rvckl0ZXJh
dG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4gSXRlcmF0b3I7CiAKICAgICAgICAg
U2VnbWVudGVkVmVjdG9yKCkKICAgICAgICAgICAgIDogbV9zaXplKDApCkBAIC0yNTAsNyArMjUz
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKICAgICAgICAg
U2VnbWVudCBtX2lubGluZVNlZ21lbnQ7Ci0gICAgICAgIFZlY3RvcjxTZWdtZW50KiwgMzI+IG1f
c2VnbWVudHM7CisgICAgICAgIFZlY3RvcjxTZWdtZW50KiwgSW5saW5lQ2FwYWNpdHk+IG1fc2Vn
bWVudHM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147235</attachid>
            <date>2012-06-12 22:41:14 -0700</date>
            <delta_ts>2012-06-12 22:49:24 -0700</delta_ts>
            <desc>real patch</desc>
            <filename>globalwatch_patch_14.diff</filename>
            <type>text/plain</type>
            <size>149492</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMCBA
QAorMjAxMi0wNi0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaW1wbGVtZW50cyBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgZm9sZGluZyBieSBhbGxv
d2luZyB0aGUgb3B0aW1pemluZworICAgICAgICBjb21waWxlciB0byBzZXQgYSAid2F0Y2hwb2lu
dCIgb24gZ2xvYmFscyB0aGF0IGl0IHdpc2hlcyB0byBjb25zdGFudCBmb2xkLgorICAgICAgICBJ
ZiB0aGUgd2F0Y2hwb2ludCBmaXJlcywgdGhlbiBhbiBPU1IgZXhpdCBpcyBmb3JjZWQgYnkgb3Zl
cndyaXRpbmcgdGhlCisgICAgICAgIG1hY2hpbmUgY29kZSB0aGF0IHRoZSBvcHRpbWl6aW5nIGNv
bXBpbGVyIGdlbmVyYXRlZCB3aXRoIGEganVtcC4KKyAgICAgICAgCisgICAgICAgIEFzIHN1Y2gs
IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHF1aXRlIGEgYml0IG9mIHN0dWZmOgorICAgICAgICAKKyAg
ICAgICAgLSBKdW1wIHJlcGxhY2VtZW50IG9uIHRob3NlIGhhcmR3YXJlIHRhcmdldHMgc3VwcG9y
dGVkIGJ5IHRoZSBvcHRpbWl6aW5nCisgICAgICAgICAgSklULiBJdCBpcyBub3cgcG9zc2libGUg
dG8gcGF0Y2ggaW4gYSBqdW1wIGluc3RydWN0aW9uIG92ZXIgYW55IHJlY29yZGVkCisgICAgICAg
ICAgd2F0Y2hwb2ludCBsYWJlbC4gVGhlIGp1bXAgbXVzdCBiZSAibG9jYWwiIGluIHRoZSBzZW5z
ZSB0aGF0IGl0IG11c3QgYmUKKyAgICAgICAgICB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBsYXJn
ZXN0IGp1bXAgZGlzdGFuY2Ugc3VwcG9ydGVkIGJ5IGEgb25lCisgICAgICAgICAgaW5zdHJ1Y3Rp
b24ganVtcC4KKyAgICAgICAgICAKKyAgICAgICAgLSBXYXRjaHBvaW50U2V0cyBhbmQgV2F0Y2hw
b2ludHMuIEEgV2F0Y2hwb2ludCBpcyBhIGRvdWJseS1saW5rZWQgbGlzdCBub2RlCisgICAgICAg
ICAgdGhhdCByZWNvcmRzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIGp1bXAgbXVzdCBiZSBpbnNlcnRl
ZCBhbmQgdGhlCisgICAgICAgICAgZGVzdGluYXRpb24gdG8gd2hpY2ggaXQgc2hvdWxkIGp1bXAu
IFdhdGNocG9pbnRzIGNhbiBiZSBhZGRlZCB0byBhCisgICAgICAgICAgV2F0Y2hwb2ludFNldC4g
VGhlIFdhdGNocG9pbnRTZXQgY2FuIGJlIGZpcmVkIGFsbCBhdCBvbmNlLCB3aGljaCBwbGFudHMK
KyAgICAgICAgICBhbGwganVtcHMuIFdhdGNocG9pbnRTZXQgYWxzbyByZW1lbWJlcnMgaWYgaXQg
aGFkIGV2ZXIgYmVlbiBpbnZhbGlkYXRlZCwKKyAgICAgICAgICB3aGljaCBhbGxvd3MgZm9yIG1v
bm90b25pY2l0eTogd2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8gb3B0aW1pemUgdXNpbmcKKyAg
ICAgICAgICB3YXRjaHBvaW50cyBvbiBzb21ldGhpbmcgZm9yIHdoaWNoIHdhdGNocG9pbnRzIGhh
ZCBwcmV2aW91c2x5IGZpcmVkLiBUaGUKKyAgICAgICAgICBhY3Qgb2Ygbm90aWZ5aW5nIGEgV2F0
Y2hwb2ludFNldCBoYXMgYSB0cml2aWFsIGZhc3QgcGF0aCBpbiBjYXNlIG5vCisgICAgICAgICAg
V2F0Y2hwb2ludHMgYXJlIHJlZ2lzdGVyZWQgKG9uZS1ieXRlIGxvYWQrYnJhbmNoKS4KKyAgICAg
ICAgCisgICAgICAgIC0gU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLiBJ
dCdzIGxpa2Ugc3BlY3VsYXRpb25DaGVjaygpLAorICAgICAgICAgIGV4Y2VwdCB0aGF0IHlvdSBk
b24ndCBoYXZlIHRvIGVtaXQgYnJhbmNoZXMuIEJ1dCwgeW91IG5lZWQgdG8ga25vdyB3aGF0Cisg
ICAgICAgICAgV2F0Y2hwb2ludFNldCB0byBhZGQgdGhlIHJlc3VsdGluZyBXYXRjaHBvaW50IHRv
LiBOb3QgZXZlcnl0aGluZyB0aGF0CisgICAgICAgICAgeW91IGNvdWxkIHdyaXRlIGEgc3BlY3Vs
YXRpb25DaGVjaygpIGZvciB3aWxsIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRoYXQKKyAgICAgICAg
ICB3b3VsZCBnZXQgbm90aWZpZWQgaWYgdGhlIGNvbmRpdGlvbiB5b3Ugd2VyZSBzcGVjdWxhdGlu
ZyBhZ2FpbnN0IGJlY2FtZQorICAgICAgICAgIGludmFsaWQuCisgICAgICAgICAgCisgICAgICAg
IC0gU3ltYm9sVGFibGVFbnRyeSBub3cgaGFzIHRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgV2F0
Y2hwb2ludFNldC4gSXQgY2FuCisgICAgICAgICAgZG8gc28gd2l0aG91dCBpbmN1cnJpbmcgYW55
IHNwYWNlIG92ZXJoZWFkIGZvciB0aG9zZSBlbnRyaWVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICBo
YXZlIFdhdGNocG9pbnRTZXRzLgorICAgICAgICAgIAorICAgICAgICAtIFRoZSBieXRlY29kZSBn
ZW5lcmF0b3IgaW5mZXJzIGFsbCBnbG9iYWwgZnVuY3Rpb24gdmFyaWFibGVzIHRvIGJlCisgICAg
ICAgICAgd2F0Y2hhYmxlLCBhbmQgbWFrZXMgYWxsIHN0b3JlcyBwZXJmb3JtIHRoZSBXYXRjaHBv
aW50U2V0J3Mgd3JpdGUgY2hlY2ssCisgICAgICAgICAgYW5kIG1hcmtzIGFsbCBsb2FkcyBhcyBi
ZWluZyBwb3RlbnRpYWxseSB3YXRjaGFibGUgKGkuZS4geW91IGNhbiBjb21waWxlCisgICAgICAg
ICAgdGhlbSB0byBhIHdhdGNocG9pbnQgYW5kIGEgY29uc3RhbnQpLgorICAgICAgICAKKyAgICAg
ICAgUHV0IHRvZ2V0aGVyLCB0aGlzIGFsbG93cyBmb3IgZnVsbHkgc2xlYXp5IGlubGluaW5nIG9m
IGNhbGxzIHRvIGdsb2JhbGx5CisgICAgICAgIGRlY2xhcmVkIGZ1bmN0aW9ucy4gVGhlIGlubGlu
ZSBwcm9sb2d1ZSB3aWxsIG5vIGxvbmdlciBjb250YWluIHRoZSBsb2FkIG9mCisgICAgICAgIHRo
ZSBmdW5jdGlvbiwgb3IgYW55IGNoZWNrcyBvZiB0aGUgZnVuY3Rpb24geW91J3JlIGNhbGxpbmcu
IEkuZS4gaXQncworICAgICAgICBwcmV0dHkgbXVjaCBsaWtlIHRoZSBraW5kIG9mIGlubGluaW5n
IHlvdSB3b3VsZCBzZWUgaW4gSmF2YSBvciBDKysuCisgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUg
d2F0Y2hwb2ludGluZyBmdW5jdGlvbmFsaXR5IGlzIGJ1aWx0IHRvIGJlIGZhaXJseSBnZW5lcmFs
LAorICAgICAgICBhbmQgc2hvdWxkIGFsbG93IHNldHRpbmcgd2F0Y2hwb2ludHMgb24gYWxsIHNv
cnRzIG9mIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHNsZWF6eSBpbmxpbmluZyBtZWFucyB0aGF0IHdlIHdpbGwgbm93IHNv
bWV0aW1lcyBpbmxpbmUgaW4gY29kZSBwYXRocworICAgICAgICB0aGF0IGhhdmUgbmV2ZXIgZXhl
Y3V0ZWQuIFByZXZpb3VzbHksIHRvIGlubGluZSB3ZSB3b3VsZCBoYXZlIGVpdGhlciBoYWQKKyAg
ICAgICAgdG8gaGF2ZSBleGVjdXRlZCB0aGUgY2FsbCAodG8gcmVhZCB0aGUgY2FsbCdzIGlubGlu
ZSBjYWNoZSkgb3IgaGF2ZQorICAgICAgICBleGVjdXRlZCB0aGUgbWV0aG9kIGNoZWNrICh0byBy
ZWFkIHRoZSBtZXRob2QgY2hlY2sncyBpbmxpbmUgY2FjaGUpLiBOb3csCisgICAgICAgIHdlIG1p
Z2h0IGlubGluZSB3aGVuIHRoZSBjYWxsZWUgaXMgYSB3YXRjaGVkIGdsb2JhbCB2YXJpYWJsZS4g
VGhpcworICAgICAgICByZXZlYWxlZCBzb21lIGh1bW9yb3VzIGJ1Z3MuIEZpcnN0LCBjb25zdGFu
dCBmb2xkaW5nIGRpc2FncmVlZCB3aXRoIENGQQorICAgICAgICBvdmVyIHdoYXQga2luZHMgb2Yg
b3BlcmF0aW9ucyBjYW4gY2xvYmJlciAoZXhhbXBsZTogY29kZSBwYXRoIEEgaXMgZGVhZAorICAg
ICAgICBidXQgc3RvcmVzIGEgU3RyaW5nIGludG8gdmFyaWFibGUgWCwgYWxsIG90aGVyIGNvZGUg
cGF0aHMgc3RvcmUgMCBpbnRvCisgICAgICAgIFgsIGFuZCB0aGVuIHlvdSBkbyBDb21wYXJlRXEo
WCwgMCkgLSBDRkEgd2lsbCBzYXkgdGhhdCB0aGlzIGlzIGEgbm9uLQorICAgICAgICBjbG9iYmVy
aW5nIGNvbnN0YW50LCBidXQgY29uc3RhbnQgZm9sZGluZyB0aG91Z2h0IGl0IHdhcyBjbG9iYmVy
aW5nCisgICAgICAgIGJlY2F1c2UgaXQgc2F3IHRoZSBTdHJpbmcgcHJlZGljdGlvbikuIFNlY29u
ZCwgaW5saW5pbmcgd291bGQgY3Jhc2ggaWYKKyAgICAgICAgdGhlIGlubGluZSBjYWxsZWUgaGFk
IG5vdCBiZWVuIGNvbXBpbGVkLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggYnVncywKKyAgICAgICAg
c2luY2Ugb3RoZXJ3aXNlIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyB3b3VsZCByZXBvcnQgcmVn
cmVzc2lvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJsZXIpOgor
ICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNdjdBc3NlbWJsZXIpOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6
QVJNdjdBc3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjptYXhKdW1wUmVw
bGFjZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgor
ICAgICAgICAoTGFiZWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjp3
YXRjaHBvaW50TGFiZWwpOgorICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2Vt
YmxlckFSTSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgor
ICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTXY3OjpicmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6Omp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjptYWtlQnJhbmNo
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3Jv
QXNzZW1ibGVyTUlQUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpyZXBsYWNlV2l0aEp1bXApOgor
ICAgICAgICAoTWFjcm9Bc3NlbWJsZXJTSDQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clNINDo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2XzY0OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcGJf
aW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnRlc3RiX2ltKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpsYWJlbEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0
aEp1bXApOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNp
emUpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVy
OjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRPU1JFeGl0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KToKKyAgICAgICAgKENvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kV2F0Y2hwb2ludCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZXYXRjaHBvaW50cyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6d2F0Y2hwb2ludCk6CisgICAgICAgIChERkdEYXRhKToKKyAgICAgICAgKiBi
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kVG9T
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kSXNDb3VudGFibGUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChJbnN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUv
T3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwYWRPcGNvZGVOYW1lKToK
KyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojp+V2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6
OldhdGNocG9pbnQ6OmNvcnJlY3RMYWJlbHMpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojpm
aXJlKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OldhdGNocG9pbnRTZXQ6On5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6
V2F0Y2hwb2ludFNldDo6YWRkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6bm90aWZ5
V3JpdGVTbG93KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbFdhdGNocG9p
bnRzKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50OjpX
YXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6c2V0RGVzdGluYXRpb24pOgor
ICAgICAgICAoV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Omlz
U3RpbGxWYWxpZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Omhhc0JlZW5JbnZhbGlk
YXRlZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OnN0YXJ0V2F0Y2hpbmcpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZSk6CisgICAgICAgIChKU0M6Oldh
dGNocG9pbnRTZXQ6OmFkZHJlc3NPZklzV2F0Y2hlZCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6Y2hl
Y2tWYWxpZGl0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxW
YXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1Zhcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhSZXNvbHZl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4UmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKToKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RT
dGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6Y2xvYmJl
clN0cnVjdHVyZXMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAg
IChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpkaWRD
bG9iYmVyKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDQ2Fs
bEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyV2F0Y2hwb2ludEVs
aW1pbmF0aW9uKToKKyAgICAgICAgKENTRVBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQ
aGFzZTo6Z2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NF
UGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZv
bGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6aXNTZXQpOgorICAg
ICAgICAoQ29ycmVjdGFibGVKdW1wUG9pbnQpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllck51bWJlckZvckNo
ZWNrKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlkZW50aWZp
ZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzUmVnaXN0ZXJQ
b2ludGVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6
Ok9TUkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgIChPU1JFeGl0
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2lu
dCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6
OkpJVFRodW5rczo6SklUVGh1bmtzKToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJ
T04pOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVHZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xU
YWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmNvcHlTbG93KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdyk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmNvdWxkQmVXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGVFbnRyeTo6YXR0ZW1wdFRvV2F0Y2gpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
OjphZGRyZXNzT2ZJc1dhdGNoZWQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojph
ZGRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3Jp
dGVTbG93KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZVNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChTeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEZhc3QpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5OjpGYXN0OjpGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6RmFzdDo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6
Z2V0SW5kZXgpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc1JlYWRP
bmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6Z2V0QXR0cmlidXRl
cyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzRmF0KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6On5TeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0SW5kZXgp
OgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRGYXN0KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmlzUmVhZE9ubHkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojp3YXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5
V3JpdGUpOgorICAgICAgICAoRmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVu
dHJ5OjpGYXRFbnRyeTo6RmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojppc0ZhdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmZhdEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZSk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmJpdHMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpm
cmVlRmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpwYWNrKToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNWYWxpZEluZGV4KToKKwogMjAxMi0wNi0x
MiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGZvciBBUk12NyBkZWJ1ZyBidWlsZHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgU0VUKEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogICAg
IGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKKyAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcAogCiAgICAgYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0yMzEsNiArMjMyLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1l
L1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwCiAg
ICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKyAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNw
cAogICAgIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuY3BwCiAgICAgcnVudGltZS9VU3RyaW5nLmNw
cAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2
aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmggXApAQCAtNjAzLDYgKzYwNSw3IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZXJtaW5hdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2MiwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUv
T3Bjb2RlLmNwcCBcCiAgICAgYnl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgXAot
ICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAgXAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAgXAorICAgIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
IFwKKyAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgXAog
ICAgIGhlYXAvQ29waWVkU3BhY2UuY3BwIFwKQEAgLTIzNiw2ICsyMzcsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIFwKICAgICBydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcCBcCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKKyAgICBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAgICAgcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAg
XAogICAgIHJ1bnRpbWUvVVN0cmluZy5jcHAgXAogICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcCBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNTQsNiArMTI1NCwxMCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFN5bWJvbFRhYmxl
LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5ccnVudGltZVxTeW1ib2xUYWJsZS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2ODEsNiAr
MTY4NSwxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcVmFsdWVQcm9maWxl
LmgiCiAJCQkJPgogCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGJ5dGVjb2RlXFdhdGNocG9pbnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxXYXRjaHBvaW50LmgiCisJCQkJPgorCQkJ
PC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgogCQkJTmFtZT0iZGVidWdnZXIiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOSBAQAogCQkwRjkxOUQwRDE1N0VFMEEyMDA0
QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9s
VGFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAg
Ki87IH07CiAJCTBGOTE5RDExMTU3RjMzMkMwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjkxOUQwRjE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTE5RDI1
MTU4NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRj
aHBvaW50LmNwcCAqLzsgfTsKKwkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5
RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8q
IFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOTE5RDI3MTU4NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgKi87IH07
CiAJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5MzE0Q0E3REMx
MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovOyB9OwogCQkwRjkzMzI5RTE0Q0E3REM1
MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0
YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGOTMzMjlGMTRDQTdEQ0EwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk1MTRDQTdEQzEwMDg1
RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTM3MCwxMCArMzczLDEwIEBACiAJ
CTdFNEVFNzBGMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwRTBFQkI3QTVCMDA1
OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovOyB9OwogCQk3RUZGMDA2NDBFQzA1QTlBMDBB
QTdDOTMgLyogTm9kZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFRkYwMDYzMEVDMDVBOUEwMEFBN0M5MyAvKiBOb2RlSW5mby5oICovOyB9Owog
CQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ2MEZBRkJBMkQw
MDAwMTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oICovOyB9OwotCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyB9OwotCQk4
NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUxMEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oICovOyB9OwotCQk4NjAxNjFFNjBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAv
KiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovOyB9OworCQk4NjAxNjFFMzBGM0E4M0MxMDBG
ODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJY
ODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2
MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDE2MUU1MEYzQTgzQzEwMEY4
NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAx
NjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjA0RjUwNTE0M0NF
MUMyMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjA0RjUwMzE0M0NFMUMxMDBCMjk1RjUgLyogSlNHbG9iYWxU
aGlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8q
IEludHJpbnNpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxMkU0Q0IxNTIyOTE4NDAw
QzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTQwMSwxMSArNDA0LDExIEBACiAJCTg2OUQwNEFGMTE5M0I1NEQw
MDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlEMDRBRTExOTNCNTREMDA4MDM0NzUg
LyogQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBS
ZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QTkwRUQwMEVFN0Q1MUYwMEFC
MzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGlj
LmNwcCAqLzsgfTsKLQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0
MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgfTsKLQkJODZBREQxNDYw
RkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAv
KiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IH07CisJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVD
MiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZBREQx
NDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBRTY0QTgxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNz
ZW1ibGVyU0g0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QUU2NEE1MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5jcHAgKi87
IH07Ci0JCTg2QUU2NEE5MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTYxMzVF
NUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggKi87IH07Ci0JCTg2QUU2NEFBMTM1
RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3Nl
bWJsZXIuaCAqLzsgfTsKKwkJODZBRTY0QTkxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1i
bGVyU0g0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkFFNjRBNjEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkFFNjRBQTEzNUU1RTFD
MDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkFFNjRBNzEzNUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZB
RTZDNEQxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2QzRCMTM2QTExRTQwMDk2MzAxMiAvKiBE
RkdGUFJJbmZvLmggKi87IH07CiAJCTg2QUU2QzRFMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFF
NkM0QzEzNkExMUU0MDA5NjMwMTIgLyogREZHR1BSSW5mby5oICovOyB9OwogCQk4NkI1ODI2NzE0
RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQ
cm9maWxlLmNwcCAqLzsgfTsKQEAgLTQxNCw4ICs0MTcsOCBAQAogCQk4NkJCMDlDMTEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAq
LzsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEy
ODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCAqLzsgfTsKLQkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQ
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwotCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1h
Y3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QzU2
OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyog
TUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2Q0EwMzJFMTAzOEU4NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0EwMzJEMTAzOEU4
NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCAqLzsgfTsKIAkJODZDQUZFRTMxMDM1RERFNjAw
MjhBNjA5IC8qIEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2Q0FGRUUyMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDQzg1QTEw
RUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0M4NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBK
SVRJbmxpbmVNZXRob2RzLmggKi87IH07CkBAIC00MjMsMTMgKzQyNiwxMyBAQAogCQk4NkNDODVD
NDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQzg1QzMwRUU3QTg5NDAwMjg4Njgy
IC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCAqLzsgfTsKIAkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3
RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEM0IyQzMxMDE1NkJERTAw
Mjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJCRjEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVy
LmNwcCAqLzsgfTsKLQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzAx
MDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oICovOyB9OwotCQk4NkQzQjJDNTEwMTU2
QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzExMDE1NkJERTAw
Mjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAqLzsgfTsKLQkJODZE
M0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1
RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCAqLzsgfTsKLQkJODZEM0IzQzMxMDE1OUQ3RjAwMjg2
NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2RDNCM0MxMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggKi87IH07
Ci0JCTg2RDNCM0M0MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjNDMjEwMTU5RDdGMDAy
ODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oICovOyB9OworCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1
RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzUx
MDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAxNTZC
REUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzYxMDE1NkJE
RTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9B
c3NlbWJsZXJBUk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAw
Mjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NkQzQjNDNDEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0Iz
QzIxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEg
LyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2REI2NDYzMEY5NUM2RkMwMEQ3RDkyMSAvKiBF
eGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwICovOyB9OwotCQk4NkUxMTZCMTBGRTc1
QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0
aW9uLmggKi87IH07CisJCTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTExNkIw
MEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkU4NTUzOTExMUI5OTY4MDAxQUY1MUUgLyog
SlNTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi87
IH07CiAJCTg2RUJGMkZGMTU2MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQkYyRjkxNTYw
RjAzNjAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTg2RUJGMzAwMTU2
MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUJGMkZBMTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1l
Q29uc3RydWN0b3IuaCAqLzsgfTsKQEAgLTQ3NSw4ICs0NzgsOCBAQAogCQk5NUY2RTY5NTBFNUI1
Rjk3MDA5MUU4NjAgLyogSlNQcm9maWxlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpT
UHJvZmlsZXJQcml2YXRlLmNwcCAqLzsgfTsKIAkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8q
IExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi87IH07CiAJCTk2
MDYyNjk2MEZCOEVDMDIwMDk3OThBQiAvKiBKSVRTdHViQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTYwNjI2OTUwRkI4RUMwMjAwOTc5OEFCIC8q
IEpJVFN0dWJDYWxsLmggKi87IH07Ci0JCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3Nl
bWJsZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk2ODhDQjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLzsgfTsK
LQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2
NDlGIC8qIFg4NkFzc2VtYmxlci5oICovOyB9OworCQk5Njg4Q0IxNTBFRDEyQjRFMDAxRDY0OUYg
LyogQXNzZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTY4OENC
MTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4
NkFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjEwRUQx
Q0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggKi87IH07CiAJCTk2OUEwNzJBMEVE
MUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTY5QTA3MjcwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggKi87IH07
CiAJCTk2OUEwNzJCMEVEMUNFNjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyODBFRDFDRTY5MDBGMUY2
ODEgLyogUmVnaXN0ZXJJRC5oICovOyB9OwpAQCAtODM2LDYgKzgzOSw5IEBACiAJCTBGOTE5RDBB
MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3ltYm9sVGFibGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEUxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOTE5RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMjIxNTg1M0NERTAwNEE0
RTdEIC8qIFdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTE5RDIz
MTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5
MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxMaW5rU3RhdHVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2
IC8qIENhbGxMaW5rU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxMaW5rU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjk1MTRD
QTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdldEJ5SWRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA0NSw2ICsyMDUxLDcgQEAKIAkJCQk3RTRFRTcwRTBFQkI3QTVCMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uY3BwICovLAogCQkJCTdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAv
KiBTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOTA0MTQ3MEVCOTI1MDkwMEZFMjZGQSAvKiBT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCAqLywKKwkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRF
N0QgLyogU3ltYm9sVGFibGUuY3BwICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAv
KiBTeW1ib2xUYWJsZS5oICovLAogCQkJCTk3RjY5MDNBMTE2OURGN0YwMEE2QkI0NiAvKiBUZXJt
aW5hdG9yLmggKi8sCiAJCQkJMTRBNDJFM0QwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVj
a2VyLmNwcCAqLywKQEAgLTIyOTYsNiArMjMwMyw4IEBACiAJCQkJMEY5NjNCMzYxM0ZDNkZERTAw
MDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4
RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8sCiAJCQkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8q
IFZpcnR1YWxSZWdpc3Rlci5oICovLAorCQkJCTBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBX
YXRjaHBvaW50LmNwcCAqLywKKwkJCQkwRjkxOUQyMzE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hw
b2ludC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yNjcxLDYgKzI2ODAsNyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMy
NTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE5RDI2MTU4NTNDRTMwMDRB
NEU3RCAvKiBXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTMyNDUsNiArMzI1NSw4IEBA
CiAJCQkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRF
N0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjkxOUQyNTE1ODUzQ0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12
N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMs
MTIgQEAgcHVibGljOgogICAgICAgICBKdW1wTGlua1R5cGUgbV9saW5rVHlwZSA6IDg7CiAgICAg
ICAgIENvbmRpdGlvbiBtX2NvbmRpdGlvbiA6IDE2OwogICAgIH07CisgICAgCisgICAgQVJNdjdB
c3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisg
ICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICB7Cisg
ICAgfQogCiBwcml2YXRlOgogCkBAIC0xODIwLDEwICsxODI2LDI1IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDhJbW04KE9QX05PUF9UMSwgMCk7CiAgICAg
fQorICAgIAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgewor
ICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9p
bmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgp
OworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOwor
ICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQp
IDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxp
Z24oaW50IGFsaWdubWVudCkKQEAgLTIwNjcsNiArMjA4OCwzMCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7
CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICBBU1NFUlQo
IShiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0bykgJiAxKSk7CisgICAgICAgIHVpbnQxNl90KiBw
dHIgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAyOwor
ICAgICAgICAKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UncmUgbm90IGluIG9uZSBvZiB0aG9z
ZSBlcnJhdGEtdHJpZ2dlcmluZyB0aGluZ2llcy4gSWYgd2UgYXJlLCB0aGVuCisgICAgICAgIC8v
IHByZXBlbmQgYSBub3AuCisgICAgICAgIGJvb2wgc3BhbnNUd280SyA9ICgocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4ocHRyKSAmIDB4ZmZmKSA9PSAweDAwMik7CisgICAgICAgIAorICAgICAg
ICBpZiAoc3BhbnNUd280SykgeworICAgICAgICAgICAgcHRyWy0yXSA9IE9QX05PUF9UMTsKKyAg
ICAgICAgICAgIHB0cisrOworICAgICAgICB9CisKKyAgICAgICAgbGlua0p1bXBUNChwdHIsIHRv
KTsKKyAgICAgICAgY2FjaGVGbHVzaChwdHIgLSAyLCBzaXplb2YodWludDE2X3QpICogMik7Cisg
ICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gNjsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBkZWJ1Z09m
ZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KIApAQCAtMjYwNCw2
ICsyNjQ5LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxMaW5rUmVjb3JkPiBtX2p1bXBzVG9M
aW5rOwogICAgIFZlY3RvcjxpbnQzMl90PiBtX29mZnNldHM7CisgICAgaW50IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEy
MDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBMaW5rQnVmZmVyOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKK2NsYXNzIFdhdGNocG9p
bnQ7CiBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENvcnJlY3RhYmxlSnVtcFBvaW50OwogfQpAQCAt
NzAsNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgdXNl
ZCBhcyBvcGVyYW5kcyB0byBNYWNyb0Fzc2VtYmxlciBvcGVyYXRpb25zLAogICAgIC8vIGRlc2Ny
aWJpbmcgaW1tZWRpYXRlICBhbmQgbWVtb3J5IG9wZXJhbmRzIHRvIHRoZSBpbnN0cnVjdGlvbnMg
dG8gYmUgcGxhbnRlZC4KIAotCiAgICAgZW51bSBTY2FsZSB7CiAgICAgICAgIFRpbWVzT25lLAog
ICAgICAgICBUaW1lc1R3bywKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKdW1wOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOwogICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFdhdGNocG9pbnQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIExhYmVsKCkKQEAgLTU1OSw2
ICs1NjAsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAgfQog
ICAgIAorICAgIExhYmVsIHdhdGNocG9pbnRMYWJlbCgpCisgICAgeworICAgICAgICBMYWJlbCBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2xhYmVsID0gbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRj
aHBvaW50KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIExhYmVs
IGFsaWduKCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFsaWduKDE2KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAko
cmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3Nl
bWJsZXJCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBFTkFC
TEUoQVNTRU1CTEVSKQogCisjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkpJVENvbXBpbGF0aW9uRWZmb3J0LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAj
aW5jbHVkZSAic3RkaW50LmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8aml0L0V4
ZWN1dGFibGVBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk0uaAkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEwLDYgKzEwMTAs
MTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRp
b24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHBy
b3RlY3RlZDoKICAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMjAx
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4Niw2ICsxMTg2LDE2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29k
ZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBUk12N0Fzc2VtYmxl
cjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRlc3Rp
bmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBBUk12N0Fz
c2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KIAogICAgIC8vIEZvcndh
cmRzIC8gZXh0ZXJuYWwgY29udHJvbCBmbG93IG9wZXJhdGlvbnM6CiAgICAgLy8KQEAgLTEzNTYs
NiArMTM2NiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzayk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hUZXN0
OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRy
ZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFU
ZW1wUmVnaXN0ZXIuIDotLworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0
ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkOChBZGRyZXNzKGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrKTsKKyAgICB9CisKICAgICB2
b2lkIGp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5i
eCh0YXJnZXQpOwpAQCAtMTY3OSwxMiArMTY5NywxNCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgQUxXQVlTX0lOTElORSBKdW1wIGp1bXAoKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bGFiZWwoKTsgLy8gRm9yY2Ugbm9wLXBhZGRpbmcgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBh
IHdhdGNocG9pbnQuCiAgICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMy
KDApLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIu
YngoZGF0YVRlbXBSZWdpc3RlciksIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBBUk12N0Fzc2VtYmxl
cjo6SnVtcE5vQ29uZGl0aW9uRml4ZWRTaXplIDogQVJNdjdBc3NlbWJsZXI6Okp1bXBOb0NvbmRp
dGlvbik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKdW1wIG1ha2VCcmFuY2goQVJNdjdB
c3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGFi
ZWwoKTsgLy8gRm9yY2Ugbm9wLXBhZGRpbmcgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdh
dGNocG9pbnQuCiAgICAgICAgIG1fYXNzZW1ibGVyLml0KGNvbmQsIHRydWUsIHRydWUpOwogICAg
ICAgICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0
ZXIpLCBtX21ha2VKdW1wUGF0Y2hhYmxlID8gQVJNdjdBc3NlbWJsZXI6Okp1bXBDb25kaXRpb25G
aXhlZFNpemUgOiBBUk12N0Fzc2VtYmxlcjo6SnVtcENvbmRpdGlvbiwgY29uZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgJKHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NjgsNiArMTg2OCwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0
PHZvaWQoKikoKT4oTUlQU0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRp
b24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgLy8gSWYgbV9maXhlZFdpZHRoIGlzIHRydWUsIHdlIHdpbGwgZ2VuZXJhdGUg
YSBmaXhlZCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zLgogICAgIC8vIE90aGVyd2lzZSwgd2UgY2Fu
IGVtaXQgYW55IG51bWJlciBvZiBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCShyZXZpc2lvbiAx
MjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
U0g0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NzEsNiArMTk3MSwxNyBAQCB2b2lkIG9yMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzCiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oU0g0QXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChj
YWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VX
aXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25M
YWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFNINEFzc2VtYmxlcjo6Q29uZGl0aW9uIFNINENv
bmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2
aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZERvdWJsZTsKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmVEb3VibGU7CiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmNvbnZlcnRJbnQzMlRvRG91YmxlOworICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0ODsKIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xNjUs
NiArMTY2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9pMzJyKGluaXRp
YWxWYWx1ZS5hc0ludHB0cigpLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0
aGlzKTsKICAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24g
Y29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtYXNrLm1fdmFsdWUgPj0gLTEyOCAm
JiBtYXNrLm1fdmFsdWUgPD0gMjU1KTsKKyAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGJfaW0oMCwgYWRkcmVzcy5tX3B0cik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RiX2ltKG1hc2subV92YWx1ZSwg
YWRkcmVzcy5tX3B0cik7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsKKyAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBk
YXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRy
KDApKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDEyMDE1NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwOCw2ICsxNDA4LDE2IEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhK
dW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVs
IGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1
bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6
Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTEzLDYgKzUxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjptb3ZlKGFkZHIsIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQmFzZUluZGV4KHNjcmF0Y2hS
ZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBUaW1lc09uZSksIG1hc2spOwogICAgIH0KKyAgICAKKyAg
ICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlciksIG1h
c2spOworICAgIH0KIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpIHsg
cmV0dXJuIHRydWU7IH0KICAgICAvLyBTZWUgY29tbWVudCBvbiBNYWNyb0Fzc2VtYmxlckFSTXY3
OjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMDE1NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI0Nyw2ICsyNDcsOCBAQCBwcml2YXRlOgogcHVibGljOgogCiAgICAgWDg2QXNzZW1i
bGVyKCkKKyAgICAgICAgOiBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAg
ICAsIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAgICAgewogICAgIH0K
IApAQCAtNzk4LDYgKzgwMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQorICAg
IAorI2lmIENQVShYODYpCisgICAgdm9pZCBjbXBiX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIs
IEdST1VQMV9PUF9DTVAsIGFkZHIpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgfQorI2VuZGlmCiAKICAgICB2b2lkIGNtcGxfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewpA
QCAtOTQ4LDYgKzk1OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTgoaW1tKTsKICAgICB9CiAKKyNpZiBDUFUoWDg2KQorICAgIHZvaWQgdGVzdGJfaW0oaW50IGlt
bSwgY29uc3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDNfRWJJYiwgR1JPVVAzX09QX1RFU1QsIGFkZHIpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIHRlc3RsX2kz
Mm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAzX0V2SXosIEdST1VQM19PUF9URVNULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CkBA
IC0xNzAyLDEwICsxNzIwLDI1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Zv
cm1hdHRlci5jb2RlU2l6ZSgpOwogICAgIH0KKyAgICAKKyAgICBBc3NlbWJsZXJMYWJlbCBsYWJl
bEZvcldhdGNocG9pbnQoKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0g
bV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVzdWx0
Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCkKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGxhYmVsKCk7CisgICAgICAgIG1faW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1f
b2Zmc2V0OworICAgICAgICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5t
X29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0
ID0gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19j
YXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50
KSkgeworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtX2Zvcm1hdHRl
ci5sYWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAg
ICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkKQEAgLTE3ODcsNiArMTgyMCwy
MCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hl
cmUpWy0xXTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgeworICAgICAgICBpbnQ4X3QqIHB0ciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIGlu
dDhfdCogZHN0UHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPih0byk7CisgICAgICAgIGlu
dHB0cl90IGRpc3RhbmNlID0gKGludHB0cl90KShkc3RQdHIgLSAocHRyICsgNSkpOworICAgICAg
ICBwdHJbMF0gPSBPUF9KTVBfcmVsMzI7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PGludDMy
X3QqPihwdHIgKyAxKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRpc3RhbmNlKTsKKyAgICB9Cisg
ICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7
CisgICAgICAgIHJldHVybiA1OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0
Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxsKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNhbGwuaXNTZXQoKSk7CkBAIC0yMzM5LDYgKzIzODYsOCBAQCBwcml2YXRlOgogCiAgICAg
ICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsKICAgICB9IG1fZm9ybWF0dGVyOworICAgIGlu
dCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKKyAgICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdh
dGNocG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMjAxNTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTI4LDEyICs5MjgsMjggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjLCBjbwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOiB7CisgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9nbG9iYWxfdmFyX3dhdGNoYWJsZVx0ICVzLCBn
JWQoJXApXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG1fZ2xv
YmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBv
aW50ZXIpOworICAgICAgICAgICAgaXQrKzsKKyAgICAgICAgICAgIGl0Kys7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOiB7CiAg
ICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0
KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9nbG9iYWxfdmFyXHQgZyVkKCVw
KSwgJXNcbiIsIGxvY2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVn
aXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrOiB7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4q
IHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CisgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IHB1dF9nbG9iYWxfdmFyX2NoZWNrXHQgZyVkKCVwKSwgJXNcbiIsIGxvY2F0aW9uLCBtX2dsb2Jh
bE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2lu
dGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBpdCsrOwor
ICAgICAgICAgICAgaXQrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfcmVzb2x2ZV9iYXNlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTEz
MDYsNyArMTMyMiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28K
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGxfcHV0X3Jlc3VsdDogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBvcF9jYWxsX3B1dF9yZXN1bHRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY2FsbF9wdXRfcmVz
dWx0XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTIw
MTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1
ZGUgIlVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIK
KyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KQEAgLTI3MywxMCArMjc0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBlbmRP
U1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkKKyAgICAgICAgdW5zaWduZWQgYXBw
ZW5kT1NSRXhpdChjb25zdCBERkc6Ok9TUkV4aXQmIG9zckV4aXQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQg
cmVzdWx0ID0gbV9kZmdEYXRhLT5vc3JFeGl0LnNpemUoKTsKICAgICAgICAgICAgIG1fZGZnRGF0
YS0+b3NyRXhpdC5hcHBlbmQob3NyRXhpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBERkc6Ok9TUkV4aXQmIGxhc3RPU1JFeGl0KCkK
QEAgLTI4NCwxMCArMjg3LDIwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IG1fZGZnRGF0YS0+b3NyRXhpdC5sYXN0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IHZvaWQgYXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShjb25zdCBERkc6OlNwZWN1bGF0aW9uUmVj
b3ZlcnkmIHJlY292ZXJ5KQorICAgICAgICB1bnNpZ25lZCBhcHBlbmRTcGVjdWxhdGlvblJlY292
ZXJ5KGNvbnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5z
aWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LnNpemUoKTsKICAg
ICAgICAgICAgIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5hcHBlbmQocmVjb3Zlcnkp
OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdW5zaWduZWQgYXBwZW5kV2F0Y2hwb2ludChjb25zdCBXYXRjaHBvaW50JiB3YXRjaHBvaW50
KQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuc2l6ZSgp
OworICAgICAgICAgICAgbV9kZmdEYXRhLT53YXRjaHBvaW50cy5hcHBlbmQod2F0Y2hwb2ludCk7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZk9TUkV4aXRzKCkKQEAgLTMwNCw2ICszMTcsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292
ZXJ5LnNpemUoKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZXYXRjaHBvaW50cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9kZmdEYXRhKQor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+
d2F0Y2hwb2ludHMuc2l6ZSgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBERkc6Ok9T
UkV4aXQmIG9zckV4aXQodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBtX2RmZ0RhdGEtPm9zckV4aXRbaW5kZXhdOwpAQCAtMzE0LDYgKzMzNCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVj
b3ZlcnlbaW5kZXhdOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50JiB3
YXRjaHBvaW50KHVuc2lnbmVkIGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
bV9kZmdEYXRhLT53YXRjaHBvaW50c1tpbmRleF07CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIHZvaWQgYXBwZW5kV2Vha1JlZmVyZW5jZShKU0NlbGwqIHRhcmdldCkKICAgICAgICAgewog
ICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xMjM4LDYgKzEyNjMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0
YT4gb3NyRW50cnk7CiAgICAgICAgICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4
PiBvc3JFeGl0OwogICAgICAgICAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeT4g
c3BlY3VsYXRpb25SZWNvdmVyeTsKKyAgICAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxXYXRjaHBv
aW50LCAxLCAwPiB3YXRjaHBvaW50czsKICAgICAgICAgICAgIFZlY3RvcjxXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbj4gdHJhbnNpdGlvbnM7CiAgICAgICAgICAgICBWZWN0b3I8V3JpdGVCYXJyaWVy
PEpTQ2VsbD4gPiB3ZWFrUmVmZXJlbmNlczsKICAgICAgICAgICAgIGJvb2wgbWF5QmVFeGVjdXRp
bmc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuaAkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgZW51
bSBFeGl0S2luZCB7CiAgICAgSW5hZGVxdWF0ZUNvdmVyYWdlLCAvLyBXZSBleGl0ZWQgYmVjYXVz
ZSB3ZSBlbmRlZCB1cCBpbiBjb2RlIHRoYXQgZGlkbid0IGhhdmUgcHJvZmlsaW5nIGNvdmVyYWdl
LgogICAgIEFyZ3VtZW50c0VzY2FwZWQsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFyZ3VtZW50cyBl
c2NhcGVkIGJ1dCB3ZSBkaWRuJ3QgZXhwZWN0IHRoZW0gdG8uCiAgICAgVW5jb3VudGFibGUsIC8v
IFdlIGV4aXRlZCBmb3Igbm9uZSBvZiB0aGUgYWJvdmUgcmVhc29ucywgYW5kIHdlIHNob3VsZCBu
b3QgY291bnQgaXQuIE1vc3QgdXNlcyBvZiB0aGlzIHNob3VsZCBiZSB2aWV3ZWQgYXMgYSBGSVhN
RS4KKyAgICBVbmNvdW50YWJsZVdhdGNocG9pbnQgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugb2YgYSB3
YXRjaHBvaW50LCB3aGljaCBpc24ndCBjb3VudGVkIGJlY2F1c2Ugd2F0Y2hwb2ludHMgZG8gdHJh
Y2tpbmcgdGhlbXNlbHZlcy4KIH07CiAKIGlubGluZSBjb25zdCBjaGFyKiBleGl0S2luZFRvU3Ry
aW5nKEV4aXRLaW5kIGtpbmQpCkBAIC01OCw2ICs1OSwxMiBAQCBpbmxpbmUgY29uc3QgY2hhciog
ZXhpdEtpbmRUb1N0cmluZyhFeGl0CiAgICAgICAgIHJldHVybiAiTmVnYXRpdmVaZXJvIjsKICAg
ICBjYXNlIEluYWRlcXVhdGVDb3ZlcmFnZToKICAgICAgICAgcmV0dXJuICJJbmFkZXF1YXRlQ292
ZXJhZ2UiOworICAgIGNhc2UgQXJndW1lbnRzRXNjYXBlZDoKKyAgICAgICAgcmV0dXJuICJBcmd1
bWVudHNFc2NhcGVkIjsKKyAgICBjYXNlIFVuY291bnRhYmxlOgorICAgICAgICByZXR1cm4gIlVu
Y291bnRhYmxlIjsKKyAgICBjYXNlIFVuY291bnRhYmxlV2F0Y2hwb2ludDoKKyAgICAgICAgcmV0
dXJuICJVbmNvdW50YWJsZVdhdGNocG9pbnQiOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biAiVW5rbm93biI7CiAgICAgfQpAQCAtNzAsNiArNzcsNyBAQCBpbmxpbmUgYm9vbCBleGl0S2lu
ZElzQ291bnRhYmxlKEV4aXRLaW5kCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IGNhc2UgQmFkVHlwZToKICAgICBjYXNlIFVuY291bnRhYmxlOgorICAgIGNhc2UgVW5jb3VudGFi
bGVXYXRjaHBvaW50OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsxOTMsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9m
aWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIEluc3RydWN0
aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKSB7IHUucmVnaXN0ZXJQ
b2ludGVyID0gcmVnaXN0ZXJQb2ludGVyOyB9CisgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlv
bihib29sKiBwcmVkaWNhdGVQb2ludGVyKSB7IHUucHJlZGljYXRlUG9pbnRlciA9IHByZWRpY2F0
ZVBvaW50ZXI7IH0KIAogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2Rl
OwpAQCAtMjA1LDYgKzIwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgTExJbnRD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZTsKICAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CisgICAgICAgICAgICBib29sKiBwcmVk
aWNhdGVQb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjAxNTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMCw3ICsxMDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3Bf
Z2V0X3Njb3BlZF92YXIsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBt
YWNybyhvcF9wdXRfc2NvcGVkX3ZhciwgNCkgXAogICAgICAgICBtYWNybyhvcF9nZXRfZ2xvYmFs
X3ZhciwgNCkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisgICAgICAgIG1hY3JvKG9wX2dl
dF9nbG9iYWxfdmFyX3dhdGNoYWJsZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAg
ICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFyLCAzKSBcCisgICAgICAgIG1hY3JvKG9wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrLCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfYmFzZSwg
NSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2Vuc3VyZV9w
cm9wZXJ0eV9leGlzdHMsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRoX2Jhc2Us
IDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIK
KworI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1dhdGNocG9p
bnQ6On5XYXRjaHBvaW50KCkKK3sKKyAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgcmVtb3Zl
KCk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6Y29ycmVjdExhYmVscyhMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJlbDsKKyAgICBsYWJlbC5t
X2xhYmVsLm1fb2Zmc2V0ID0gbV9zb3VyY2U7CisgICAgbV9zb3VyY2UgPSBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWwpLmRhdGFMb2NhdGlvbigpKTsK
KyAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9kZXN0aW5hdGlvbjsKKyAgICBtX2Rlc3Rp
bmF0aW9uID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGxh
YmVsKS5kYXRhTG9jYXRpb24oKSk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6ZmlyZSgpCit7Cisg
ICAgZGF0YUxvZygiRmlyaW5nIHdhdGNocG9pbnQgJXAgdG8gJXAuXG4iLCBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KG1fc291cmNlKSwgYml0d2lzZV9jYXN0PHZvaWQqPihtX2Rlc3RpbmF0aW9uKSk7Cisg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgKKyAgICAgICAgQ29kZUxvY2F0aW9u
TGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihtX3NvdXJjZSkpLAorICAgICAgICBDb2RlTG9jYXRp
b25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KG1fZGVzdGluYXRpb24pKSk7CisgICAgaWYgKGlz
T25MaXN0KCkpCisgICAgICAgIHJlbW92ZSgpOworfQorCitXYXRjaHBvaW50U2V0OjpXYXRjaHBv
aW50U2V0KCkKKyAgICA6IG1faXNXYXRjaGVkKGZhbHNlKQorICAgICwgbV9pc0ludmFsaWRhdGVk
KGZhbHNlKQoreworfQorCitXYXRjaHBvaW50U2V0Ojp+V2F0Y2hwb2ludFNldCgpCit7CisgICAg
Ly8gRmlyZSBhbGwgd2F0Y2hwb2ludHMuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgaXMg
cG9zc2libGUsIHNheSB3aXRoCisgICAgLy8gc3RydWN0dXJlIHdhdGNocG9pbnRzLCBmb3IgdGhl
IHdhdGNocG9pbnQgc2V0IG93bmVyIHRvIGRpZSB3aGlsZSB0aGUKKyAgICAvLyB3YXRjaHBvaW50
IG93bmVycyBhcmUgc3RpbGwgbGl2ZS4KKyAgICBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKK30KKwor
dm9pZCBXYXRjaHBvaW50U2V0OjphZGQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKK3sKKyAgICBp
ZiAoIXdhdGNocG9pbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NldC5wdXNoKHdhdGNocG9p
bnQpOworICAgIG1faXNXYXRjaGVkID0gdHJ1ZTsKK30KKwordm9pZCBXYXRjaHBvaW50U2V0Ojpu
b3RpZnlXcml0ZVNsb3coKQoreworICAgIEFTU0VSVChtX2lzV2F0Y2hlZCk7CisgICAgCisgICAg
ZmlyZUFsbFdhdGNocG9pbnRzKCk7CisgICAgbV9pc1dhdGNoZWQgPSBmYWxzZTsKKyAgICBtX2lz
SW52YWxpZGF0ZWQgPSB0cnVlOworfQorCit2b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRj
aHBvaW50cygpCit7CisgICAgd2hpbGUgKCFtX3NldC5pc0VtcHR5KCkpCisgICAgICAgIG1fc2V0
LmJlZ2luKCktPmZpcmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdhdGNocG9pbnRfaAorI2RlZmluZSBXYXRjaHBv
aW50X2gKKworI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2VudGlu
ZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXYXRjaHBvaW50IDog
cHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPFdhdGNocG9pbnQ+IHsKK3B1YmxpYzoKKyAgICBX
YXRjaHBvaW50KE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBzb3VyY2UpCisgICAgICAgIDogbV9zb3Vy
Y2Uoc291cmNlLm1fbGFiZWwubV9vZmZzZXQpCisgICAgICAgICwgbV9kZXN0aW5hdGlvbihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnRwdHJfdD46Om1heCgpKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzZXREZXN0aW5hdGlvbihNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZGVzdGluYXRpb24p
CisgICAgeworICAgICAgICBtX2Rlc3RpbmF0aW9uID0gZGVzdGluYXRpb24ubV9sYWJlbC5tX29m
ZnNldDsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb3JyZWN0TGFiZWxzKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpOworICAgIAorICAgIH5XYXRjaHBvaW50KCk7CisgICAgCisgICAgdm9pZCBmaXJl
KCk7CisgICAgCitwcml2YXRlOgorICAgIHVpbnRwdHJfdCBtX3NvdXJjZTsKKyAgICB1aW50cHRy
X3QgbV9kZXN0aW5hdGlvbjsKK307CisKK2NsYXNzIFdhdGNocG9pbnRTZXQgOiBwdWJsaWMgUmVm
Q291bnRlZDxXYXRjaHBvaW50U2V0PiB7CitwdWJsaWM6CisgICAgV2F0Y2hwb2ludFNldCgpOwor
ICAgIH5XYXRjaHBvaW50U2V0KCk7CisgICAgCisgICAgYm9vbCBpc1N0aWxsVmFsaWQoKSBjb25z
dCB7IHJldHVybiAhbV9pc0ludmFsaWRhdGVkOyB9CisgICAgYm9vbCBoYXNCZWVuSW52YWxpZGF0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW52YWxpZGF0ZWQ7IH0KKyAgICAKKyAgICAvLyBBcyBh
IGNvbnZlbmllbmNlLCB0aGlzIHdpbGwgaWdub3JlIDAuIFRoYXQncyBiZWNhdXNlIGNvZGUgcGF0
aHMgaW4gdGhlIERGRworICAgIC8vIHRoYXQgY3JlYXRlIHNwZWN1bGF0aW9uIHdhdGNocG9pbnRz
IG1heSBjaG9vc2UgdG8gYmFpbCBvdXQgaWYgc3BlY3VsYXRpb24KKyAgICAvLyBoYWQgYWxyZWFk
eSBiZWVuIHRlcm1pbmF0ZWQuCisgICAgdm9pZCBhZGQoV2F0Y2hwb2ludCopOworICAgIAorICAg
IC8vIEZvcmNlIHRoZSB3YXRjaHBvaW50IHNldCB0byBiZWhhdmUgYXMgaWYgaXQgd2FzIGJlaW5n
IHdhdGNoZWQgZXZlbiBpZiBubworICAgIC8vIHdhdGNocG9pbnRzIGhhdmUgYmVlbiBpbnN0YWxs
ZWQuCisgICAgdm9pZCBzdGFydFdhdGNoaW5nKCkgeyBtX2lzV2F0Y2hlZCA9IHRydWU7IH0KKyAg
ICAKKyAgICB2b2lkIG5vdGlmeVdyaXRlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9pc1dhdGNo
ZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5vdGlmeVdyaXRlU2xvdygpOworICAg
IH0KKyAgICAKKyAgICBib29sKiBhZGRyZXNzT2ZJc1dhdGNoZWQoKSB7IHJldHVybiAmbV9pc1dh
dGNoZWQ7IH0KKyAgICAKKyAgICB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOyAvLyBDYWxsIG9ubHkg
aWYgeW91J3ZlIGNoZWNrZWQgaXNXYXRjaGVkLgorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIGZp
cmVBbGxXYXRjaHBvaW50cygpOworICAgIAorICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXYXRjaHBv
aW50LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXYXRjaHBvaW50PiA+IG1fc2V0OworICAgIGJvb2wg
bV9pc1dhdGNoZWQ7CisgICAgYm9vbCBtX2lzSW52YWxpZGF0ZWQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIFdhdGNocG9pbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw2ICsxNDgsNyBA
QCB2b2lkIFJlc29sdmVSZXN1bHQ6OmNoZWNrVmFsaWRpdHkoKQogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBJbmRleGVkR2xvYmFsOgogICAgIGNhc2UgUmVhZE9ubHlJbmRleGVkR2xvYmFsOgor
ICAgIGNhc2UgV2F0Y2hlZEluZGV4ZWRHbG9iYWw6CiAgICAgY2FzZSBEeW5hbWljSW5kZXhlZEds
b2JhbDoKICAgICBjYXNlIER5bmFtaWNSZWFkT25seUluZGV4ZWRHbG9iYWw6CiAgICAgICAgIEFT
U0VSVChtX2luZGV4ICE9IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSk7CkBAIC0yMTYsMTMgKzIxNywx
OSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoY29uc3QgSWRlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQpCitpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZEdsb2JhbFZhcigKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQ29uc3RhbnRNb2Rl
IGNvbnN0YW50TW9kZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZnVuY3Rpb25Nb2RlKTsKICAgICBpbnQgaW5kZXggPSBzeW1ib2xUYWJsZSgpLnNpemUo
KTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0YW50ID8gUmVh
ZE9ubHkgOiAwKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCAoY29uc3Rh
bnRNb2RlID09IElzQ29uc3RhbnQpID8gUmVhZE9ubHkgOiAwKTsKKyAgICBpZiAoZnVuY3Rpb25N
b2RlID09IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUpCisgICAgICAgIG5ld0VudHJ5LmF0dGVtcHRU
b1dhdGNoKCk7CiAgICAgU3ltYm9sVGFibGU6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJs
ZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKLSAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQorICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsKICAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZC5nZXRJbmRleCgpOworICAgIH0KICAgICByZXR1cm4gaW5kZXg7CiB9CiAKQEAg
LTI4OSwxNyArMjk2LDIzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQ
cm8KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsr
aSkgewogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tb
aV07Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERhdGEsIGZ1
bmN0aW9uLT5pZGVudCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3cml0ZSBl
eGlzdGluZyBwcm9wZXJ0aWVzLgotCisgICAgICAgIGJvb2wgcHJvcGVydHlEaWRFeGlzdCA9IAor
ICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVu
Y3Rpb24tPmlkZW50KCkpOyAvLyBOZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4
aXN0aW5nIHByb3BlcnRpZXMuCisgICAgICAgIAogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIG1ha2VGdW5jdGlvbihleGVjLCBmdW5jdGlvbiksIHNjb3Bl
Q2hhaW4pOwotICAgICAgICBpbnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoZnVuY3Rpb24tPmlkZW50
KCksIGZhbHNlKTsKKyAgICAgICAgaW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKAorICAgICAgICAg
ICAgZnVuY3Rpb24tPmlkZW50KCksIElzVmFyaWFibGUsCisgICAgICAgICAgICAhcHJvcGVydHlE
aWRFeGlzdCA/IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUgOiBOb3RGdW5jdGlvbk9yTm90U3BlY2lh
bGl6YWJsZSk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChpbmRleCkuc2V0KCpt
X2dsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdmFyU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGdsb2Jh
bE9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgKnZhclN0YWNrW2ldLmZpcnN0KSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBhZGRHbG9iYWxWYXIoKnZhclN0YWNrW2ldLmZpcnN0LCB2
YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCk7CisgICAg
ICAgIGFkZEdsb2JhbFZhcigKKyAgICAgICAgICAgICp2YXJTdGFja1tpXS5maXJzdCwKKyAgICAg
ICAgICAgICh2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFu
dCkgPyBJc0NvbnN0YW50IDogSXNWYXJpYWJsZSwKKyAgICAgICAgICAgIE5vdEZ1bmN0aW9uT3JO
b3RTcGVjaWFsaXphYmxlKTsKICAgICB9CiB9CiAKQEAgLTEyMDIsNyArMTIxNSw5IEBAIFJlc29s
dmVSZXN1bHQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmUKICAgICAgICAgICAgIGlmICgrK2l0
ZXIgPT0gZW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgUmVzb2x2ZVJlc3VsdDo6
RHluYW1pY0ZsYWcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0Ojpk
eW5hbWljSW5kZXhlZEdsb2JhbFJlc29sdmUoZW50cnkuZ2V0SW5kZXgoKSwgZGVwdGgsIGN1cnJl
bnRTY29wZSwgZmxhZ3MpOwotICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0Ojpp
bmRleGVkR2xvYmFsUmVzb2x2ZShlbnRyeS5nZXRJbmRleCgpLCBjdXJyZW50U2NvcGUsIGZsYWdz
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6aW5kZXhlZEdsb2JhbFJl
c29sdmUoCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29w
ZSwKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfCAoZW50cnkuY291bGRCZVdhdGNoZWQoKSA/
IFJlc29sdmVSZXN1bHQ6OldhdGNoZWRGbGFnIDogMCkpOwogICAgICAgICAgICAgfQogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24g
PSBqc0R5bmFtaWNDYXN0PEpTQWN0aXZhdGlvbio+KGN1cnJlbnRWYXJpYWJsZU9iamVjdCkpCkBA
IC0xMjk2LDcgKzEzMTEsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpzaG91bGRBdm9pZFJl
c29sCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUoUmVnaXN0ZXJJ
RCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSkKIHsKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKQotICAg
ICAgICByZXR1cm4gZW1pdEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQpOworICAgICAg
ICByZXR1cm4gZW1pdEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsK
ICAgICAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc0dsb2JhbCgpICYmICFzaG91bGRBdm9pZFJl
c29sdmVHbG9iYWwoKSkgewogI2lmIEVOQUJMRShKSVQpCkBAIC0xMzc5LDcgKzEzOTQsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAKICAgICAgICAgaWYgKHJl
c29sdmVSZXN1bHQuaXNTdGF0aWMoKSkgewogICAgICAgICAgICAgLy8gRGlyZWN0bHkgaW5kZXgg
dGhlIHByb3BlcnR5IGxvb2t1cCBhY3Jvc3MgbXVsdGlwbGUgc2NvcGVzLgotICAgICAgICAgICAg
ZW1pdEdldFN0YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgICAgIGVt
aXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgICAg
ICAgICAgcmV0dXJuIGJhc2VEc3Q7CiAgICAgICAgIH0KIApAQCAtMTQxOCw3ICsxNDMzLDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogewogICAgIGlmIChyZXNv
bHZlUmVzdWx0LmlzU3RhdGljKCkpIHsKICAgICAgICAgZW1pdExvYWQoYmFzZURzdCwganNVbmRl
ZmluZWQoKSk7Ci0gICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3Vs
dCk7CisgICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJv
cGVydHkpOwogICAgICAgICByZXR1cm4gYmFzZURzdDsKICAgICB9CiAKQEAgLTE0MzYsNyArMTQ1
MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICByZXR1
cm4gZW1pdFJlc29sdmUocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklE
KiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQpCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0
IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpCiB7CiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gMDsKIApAQCAtMTQ3MiwxMyArMTQ4
NywyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0CiAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICAgICAgcmV0dXJuIGRzdDsKIAor
ICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6CisgICAgICAgIC8v
IFNraXAgdGhlIHBlZXBob2xlIGZvciBub3cuIEl0J3Mgbm90IGNsZWFyIHRoYXQgaXQncyBwcm9m
aXRhYmxlIGdpdmVuCisgICAgICAgIC8vIHRoZSBERkcncyBjYXBhYmlsaXRpZXMsIGFuZCB0aGUg
ZmFjdCB0aGF0IGlmIGl0J3Mgd2F0Y2hhYmxlIHRoZW4gd2UKKyAgICAgICAgLy8gZG9uJ3QgZXhw
ZWN0IHRvIHNlZSBhbnkgcHV0X2dsb2JhbF92YXIncyBhbnl3YXkuCisgICAgICAgIHByb2ZpbGUg
PSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsgLy8gRm9yIHRo
ZSBiZW5lZml0IG9mIHRoZSBERkcuCisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9m
aWxlKTsKKyAgICAgICAgcmV0dXJuIGRzdDsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLVJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1
bHQmIHJlc29sdmVSZXN1bHQsIFJlZ2lzdGVySUQqIHZhbHVlKQorUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2
ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUmVnaXN0ZXJJRCogdmFsdWUp
CiB7CiAgICAgc3dpdGNoIChyZXNvbHZlUmVzdWx0LnR5cGUoKSkgewogICAgIGNhc2UgUmVzb2x2
ZVJlc3VsdDo6UmVnaXN0ZXI6CkBAIC0xNDk5LDYgKzE1MjUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTdAogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
cmVzb2x2ZVJlc3VsdC5yZWdpc3RlclBvaW50ZXIoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAg
CisgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAg
ZW1pdE9wY29kZShvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHJlc29sdmVSZXN1bHQuZ2xvYmFsT2Jq
ZWN0KCkpLT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSkuYWRkcmVzc09mSXNX
YXRjaGVkKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRl
bnRpZmllcikpOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBkZWZhdWx0OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDEyMDE1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgLy8gVGhlIHJlc29sdmVkIGJpbmRpbmcgaXMgaW1tdXRhYmxlLgogICAgICAg
ICAgICAgUmVhZE9ubHlGbGFnID0gMHgyMCwKICAgICAgICAgICAgIC8vIFRoZSBiYXNlIG9iamVj
dCBpcyB0aGUgZ2xvYmFsIG9iamVjdC4KLSAgICAgICAgICAgIEdsb2JhbEZsYWcgPSAweDQwCisg
ICAgICAgICAgICBHbG9iYWxGbGFnID0gMHg0MCwKKyAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0
eSBpcyBiZWluZyB3YXRjaGVkLCBzbyB3cml0ZXMgc2hvdWxkIGJlIHNwZWNpYWwuCisgICAgICAg
ICAgICBXYXRjaGVkRmxhZyA9IDB4ODAKICAgICAgICAgfTsKICAgICAgICAgZW51bSBUeXBlIHsK
ICAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBpbiBhIHJl
Z2lzdGVyLgpAQCAtMTMxLDYgKzEzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
Ly8gYmluZGluZyBjcmVhdGVkIHdpdGggInZhciIgYXQgdGhlIHRvcCBsZXZlbC4gQXQgcnVudGlt
ZSB3ZSdsbAogICAgICAgICAgICAgLy8ganVzdCBpbmRleCBpbnRvIHRoZSBnbG9iYWwgb2JqZWN0
LgogICAgICAgICAgICAgSW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFsRmxhZyB8
IFN0YXRpY0ZsYWcsCisgICAgICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWwsIGJ1dCB0aGUg
cHJvcGVydHkgaXMgYmVpbmcgd2F0Y2hlZC4KKyAgICAgICAgICAgIFdhdGNoZWRJbmRleGVkR2xv
YmFsID0gSW5kZXhlZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZyB8IFdhdGNoZWRGbGFn
LAogICAgICAgICAgICAgLy8gTGlrZSBJbmRleGVkR2xvYmFsLCBidXQgdGhlIHByb3BlcnR5IGlz
IGFsc28gcmVhZC1vbmx5LCBsaWtlIE5hTiwKICAgICAgICAgICAgIC8vIEluZmluaXR5LCBvciB1
bmRlZmluZWQuCiAgICAgICAgICAgICBSZWFkT25seUluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxh
ZyB8IFJlYWRPbmx5RmxhZyB8IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnLApAQCAtNDQxLDggKzQ0
NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90
eXBlb2YsIGRzdCwgc3JjKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSkgeyByZXR1cm4g
ZW1pdEJpbmFyeU9wKG9wX2luLCBkc3QsIHByb3BlcnR5LCBiYXNlLCBPcGVyYW5kVHlwZXMoKSk7
IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRz
dCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3Rh
dGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmLCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRTdGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNv
bHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJiwgUmVn
aXN0ZXJJRCogdmFsdWUpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKFJlZ2lz
dGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqIGRz
dCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKQEAg
LTU3NCw3ICs1NzgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBhZGRlZCB2YXIuCi0gICAgICAgIGludCBhZGRHbG9i
YWxWYXIoY29uc3QgSWRlbnRpZmllciYsIGJvb2wgaXNDb25zdGFudCk7CisgICAgICAgIGVudW0g
Q29uc3RhbnRNb2RlIHsgSXNDb25zdGFudCwgSXNWYXJpYWJsZSB9OworICAgICAgICBlbnVtIEZ1
bmN0aW9uTW9kZSB7IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUsIE5vdEZ1bmN0aW9uT3JOb3RTcGVj
aWFsaXphYmxlIH07CisgICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYs
IENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpOwog
CiAgICAgICAgIHZvaWQgYWRkUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXImLCBpbnQgcGFyYW1l
dGVySW5kZXgpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDEyMDE1NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMwLDcgKzQzMCw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29s
dmVOb2RlOjplbWkKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZnVuYy5nZXQoKSwgcmVzb2x2
ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1
bmMuZ2V0KCkpLCBmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9mZnNl
dCgpLCBlbmRPZmZzZXQoKSk7CiAgICAgfQpAQCAtNjE4LDcgKzYxOCw3IEBAIFJlZ2lzdGVySUQq
IFBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGUKICAgICB9CiAKICAgICBpZiAocmVzb2x2ZVJl
c3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1Zhcihn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHJlc29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBSZWdpc3Rl
cklEKiBvbGRWYWx1ZTsKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKSB7CiAgICAgICAgICAgICBvbGRWYWx1ZSA9IDA7CkBAIC02MjYsNyArNjI2LDcgQEAgUmVn
aXN0ZXJJRCogUG9zdGZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAg
ICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQs
IHZhbHVlLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2
ZVJlc3VsdCwgbV9pZGVudCwgdmFsdWUuZ2V0KCkpOwogICAgICAgICByZXR1cm4gb2xkVmFsdWU7
CiAgICAgfQogICAgIApAQCAtODAzLDkgKzgwMyw5IEBAIFJlZ2lzdGVySUQqIFByZWZpeFJlc29s
dmVOb2RlOjplbWl0Qnl0ZWMKICAgICB9CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRp
YygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm9wRHN0ID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICAgICAgZW1p
dFByZUluY09yRGVjKGdlbmVyYXRvciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHByb3BEc3QuZ2V0
KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBt
X2lkZW50LCBwcm9wRHN0LmdldCgpKTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9E
ZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiAgICAgfQogCkBAIC0xMjI2
LDkgKzEyMjYsOSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAg
ICAgfQogCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3Vs
dC5pc1JlYWRPbmx5KCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5l
cmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJl
c29sdmVSZXN1bHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRv
ci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2
ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRSZWFk
TW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRU
eXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9y
KCkpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwg
cmVzdWx0KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3Vs
dCwgbV9pZGVudCwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAg
LTEyNTYsNyArMTI1Niw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0
ZWMKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAg
ICAgICAgZHN0ID0gMDsKICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX3JpZ2h0KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIo
cmVzb2x2ZVJlc3VsdCwgdmFsdWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1Zh
cihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsK
ICAgICB9CiAKQEAgLTEzNjEsNyArMTM2MSw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6
OmVtaXRDb2RlU2luZ2wKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBtX2luaXQgPyBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9pbml0KSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVm
aW5lZCgpKTsKIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpCi0gICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCB2YWx1ZS5nZXQo
KSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVz
dWx0LCBtX2lkZW50LCB2YWx1ZS5nZXQoKSk7CiAgICAgCiAgICAgaWYgKGdlbmVyYXRvci5jb2Rl
VHlwZSgpICE9IEV2YWxDb2RlKQogICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlz
aW9uIDEyMDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksOSBAQCBib29sIEFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiB7CiAgICAgQVNTRVJUKG1fYmxvY2spOwogICAgIEFT
U0VSVChtX2lzVmFsaWQpOwotICAgICAgICAKKyAgICAKKyAgICBtX2RpZENsb2JiZXIgPSBmYWxz
ZTsKKyAgICAKICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gbV9ibG9jay0+YXQoaW5kZXhJbkJs
b2NrKTsKICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwogICAgICAgICAKQEAg
LTIzNyw4ICsyMzksMTIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGlu
ZAogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7
CisgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKSA9PSBTcGVjTm9u
ZSkgeworICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICBub2RlLnNl
dENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBi
b29sIGNhbkV4aXQgPSBmYWxzZTsKLSAgICAgICAgY2FuRXhpdCB8PSB2YXJpYWJsZUFjY2Vzc0Rh
dGEtPnByZWRpY3Rpb24oKSA9PSBTcGVjTm9uZTsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1
ZSA9IG1fdmFyaWFibGVzLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpKTsKICAg
ICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkgewogICAgICAgICAg
ICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkKQEAgLTE0NzYsNyArMTQ4Miw3IEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBh
YmxlIHRvIHByb3BhZ2F0ZSB0aGUgZmFjdCB0aGF0IHdlIGtub3cgd2hhdCB0aGUgZnVuY3Rpb24g
aXMuCiAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisgICAgICAgIAogICAgIGNhc2UgUHV0
QnlJZDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0
cnVlKTsKQEAgLTE0ODgsOCArMTQ5NCwxMyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
dW5zaWduZWQgaW5kCiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAg
ICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVl
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoK
KyAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOgogICAgICAgICBub2RlLnNldENhbkV4aXQoZmFs
c2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTU3OCw2ICsxNTg5LDcgQEAg
aW5saW5lIHZvaWQgQWJzdHJhY3RTdGF0ZTo6Y2xvYmJlclN0cnVjdAogICAgIGZvciAoc2l6ZV90
IGkgPSBtX3ZhcmlhYmxlcy5udW1iZXJPZkxvY2FscygpOyBpLS07KQogICAgICAgICBtX3Zhcmlh
Ymxlcy5sb2NhbChpKS5jbG9iYmVyU3RydWN0dXJlcygpOwogICAgIG1faGF2ZVN0cnVjdHVyZXMg
PSBmYWxzZTsKKyAgICBtX2RpZENsb2JiZXIgPSB0cnVlOwogfQogCiBpbmxpbmUgYm9vbCBBYnN0
cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uLCBB
YnN0cmFjdFZhbHVlJiBpblZhcmlhYmxlLCBOb2RlSW5kZXggbm9kZUluZGV4KQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9uIDEy
MDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDkgQEAgcHVibGljOgogICAgIC8vIG9mIFRocm93
LgogICAgIGJvb2wgZXhlY3V0ZSh1bnNpZ25lZCk7CiAgICAgCisgICAgLy8gRGlkIHRoZSBsYXN0
IGV4ZWN1dGVkIG5vZGUgY2xvYmJlciB0aGUgd29ybGQ/CisgICAgYm9vbCBkaWRDbG9iYmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kaWRDbG9iYmVyOyB9CisgICAgCiAgICAgLy8gSXMgdGhlIGV4ZWN1
dGlvbiBzdGF0ZSBzdGlsbCB2YWxpZD8gVGhpcyB3aWxsIGJlIGZhbHNlIGlmIGV4ZWN1dGUoKSBo
YXMKICAgICAvLyByZXR1cm5lZCBmYWxzZSBwcmV2aW91c2x5LgogICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQpAQCAtMjc0LDYgKzI3Nyw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2ZvdW5kQ29uc3RhbnRzOwogICAgIAogICAgIGJvb2wgbV9pc1ZhbGlkOwor
ICAgIGJvb2wgbV9kaWRDbG9iYmVyOwogICAgIAogICAgIEJyYW5jaERpcmVjdGlvbiBtX2JyYW5j
aERpcmVjdGlvbjsgLy8gVGhpcyBpcyBvbmx5IHNldCBmb3IgYmxvY2tzIHRoYXQgZW5kIGluIEJy
YW5jaCBhbmQgdGhhdCBleGVjdXRlIHRvIGNvbXBsZXRpb24gKGkuZS4gbV9pc1ZhbGlkID09IHRy
dWUpLgogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzNCw2ICsxMjM0
LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAgIC8vIERv
ZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVpcmVtZW50
cyBmb3IgYmVpbmcKICAgICAvLyBhbiBpbmxpbmUgY2FuZGlkYXRlPwogICAgIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jayA9IGV4ZWN1dGFibGUtPnByb2ZpbGVkQ29kZUJsb2NrRm9yKGtpbmQpOwor
ICAgIGlmICghcHJvZmlsZWRCbG9jaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAg
IGlmICghbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihwcm9maWxlZEJsb2NrLCBraW5kKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMjI1MSwxMyArMjI1NCw2MSBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2Jh
bF92YXI6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVk
aWN0aW9uKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7
CisKICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRHbG9iYWxWYXIgPSBhZGRUb0dyYXBoKAogICAg
ICAgICAgICAgICAgIEdldEdsb2JhbFZhciwKLSAgICAgICAgICAgICAgICBPcEluZm8obV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hc3NlcnRSZWdpc3Rlcklz
SW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAor
ICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJblRo
aXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCiAgICAg
ICAgICAgICAgICAgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgICAgIHNldChjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfZ2V0X2dsb2JhbF92YXIpOwogICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZTogeworICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5s
aW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3At
Pm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOworICAg
ICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gbV9jb2RlQmxvY2stPmlkZW50aWZpZXIo
aWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
Z2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSk7CisgICAg
ICAgICAgICBpZiAoIWVudHJ5LmNvdWxkQmVXYXRjaGVkKCkpIHsKKyAgICAgICAgICAgICAgICBO
b2RlSW5kZXggZ2V0R2xvYmFsVmFyID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAg
R2V0R2xvYmFsVmFyLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5h
c3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lz
dGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8ocHJlZGljdGlvbikpOwor
ICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRH
bG9iYWxWYXIpOworICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9nbG9iYWxfdmFy
X3dhdGNoYWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IFRoZSB3YXRjaHBvaW50IGlzIHN0aWxsIGludGFjdCEgVGhpcyBtZWFucyB0aGF0IHdlIHdpbGwg
Z2V0IG5vdGlmaWVkIGlmIHRoZQorICAgICAgICAgICAgLy8gY3VycmVudCB2YWx1ZSBpbiB0aGUg
Z2xvYmFsIHZhcmlhYmxlIGNoYW5nZXMuIFNvLCB3ZSBjYW4gaW5saW5lIHRoYXQgdmFsdWUuCisg
ICAgICAgICAgICAvLyBNb3Jlb3ZlciwgY3VycmVudGx5IHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlz
IHZhbHVlIGlzIGEgSlNGdW5jdGlvbiosIHdoaWNoCisgICAgICAgICAgICAvLyBpbXBsaWVzIHRo
YXQgaXQncyBhIGNlbGwuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MsIHNpbmNlIGluIGdlbmVyYWwg
d2UnZCBoYXZlCisgICAgICAgICAgICAvLyB0byB1c2UgYSBKU0NvbnN0YW50IGZvciBub24tY2Vs
bHMgYW5kIGEgV2Vha0pTQ29uc3RhbnQgZm9yIGNlbGxzLiBTbyBpbnN0ZWFkCisgICAgICAgICAg
ICAvLyBvZiBoYXZpbmcgYm90aCBjYXNlcyB3ZSBqdXN0IGFzc2VydCB0aGF0IHRoZSB2YWx1ZSBp
cyBhIGNlbGwuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE5CLiBJZiBpdCB3YXNuJ3Qg
Zm9yIENTRSwgR2xvYmFsVmFyV2F0Y2hwb2ludCB3b3VsZCBoYXZlIG5vIG5lZWQgZm9yIHRoZQor
ICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcG9pbnRlci4gQnV0IENTRSB0cmFja3MgZWZmZWN0cyBv
biBnbG9iYWwgdmFyaWFibGVzIGJ5IGNvbXBhcmluZworICAgICAgICAgICAgLy8gcmVnaXN0ZXIg
cG9pbnRlcnMuIEJlY2F1c2UgQ1NFIGV4ZWN1dGVzIG11bHRpcGxlIHRpbWVzIHdoaWxlIHRoZSBi
YWNrZW5kCisgICAgICAgICAgICAvLyBleGVjdXRlcyBvbmNlLCB3ZSB1c2UgdGhlIGZvbGxvd2lu
ZyBwZXJmb3JtYW5jZSB0cmFkZS1vZmY6CisgICAgICAgICAgICAvLyAtIFRoZSBub2RlIHJlZmVy
cyBkaXJlY3RseSB0byB0aGUgcmVnaXN0ZXIgcG9pbnRlciB0byBtYWtlIENTRSBzdXBlciBjaGVh
cC4KKyAgICAgICAgICAgIC8vIC0gVG8gcGVyZm9ybSBiYWNrZW5kIGNvZGUgZ2VuZXJhdGlvbiwg
dGhlIG5vZGUgb25seSBjb250YWlucyB0aGUgaWRlbnRpZmllcgorICAgICAgICAgICAgLy8gICBu
dW1iZXIsIGZyb20gd2hpY2ggaXQgaXMgcG9zc2libGUgdG8gZ2V0ICh2aWEgYSBmZXcgYXZlcmFn
ZS10aW1lIE8oMSkKKyAgICAgICAgICAgIC8vICAgbG9va3VwcykgdG8gdGhlIFdhdGNocG9pbnRT
ZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAgICAg
ICAgR2xvYmFsVmFyV2F0Y2hwb2ludCwKKyAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2Jq
ZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhpZGVudGlmaWVyTnVt
YmVyKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9
IGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKTsKKyAgICAg
ICAgICAgIEFTU0VSVChzcGVjaWZpY1ZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgIHNldChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhzcGVjaWZpY1ZhbHVlLmFzQ2VsbCgpKSkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZ2xvYmFsX3Zhcl93YXRj
aGFibGUpOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3Zhcjogewog
ICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpOwpAQCAtMjI2OCw2ICsyMzE5LDI4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9nbG9iYWxf
dmFyKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6
IHsKKyAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1h
cFtjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIp
OworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+c3lt
Ym9sVGFibGUoKS5nZXQoaWRlbnRpZmllci5pbXBsKCkpOworICAgICAgICAgICAgaWYgKCFlbnRy
eS5jb3VsZEJlV2F0Y2hlZCgpKSB7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAg
ICAgICAgICAgICAgICAgUHV0R2xvYmFsVmFyLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8o
Z2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7
CisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICBQ
dXRHbG9iYWxWYXJDaGVjaywKKyAgICAgICAgICAgICAgICBPcEluZm8oY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKS0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICBPcEluZm8oaWRlbnRp
Zmllck51bWJlciksCisgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgICAgICB9CisKICAgICAgICAgLy8g
PT09IEJsb2NrIHRlcm1pbmF0b3JzLiA9PT0KIAogICAgICAgICBjYXNlIG9wX2ptcDogewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShyZXZpc2lv
biAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcxKTsKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwogICAgIH0K
KyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0
ciBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNFeGVjU3RhdGUoKQogICAgIHsKQEAgLTQzMyw2ICs0MzksMTEgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjAs
IEdQUkluZm86OmFyZ3VtZW50R1BSMT4oYXJnMSwgYXJnMik7CiAgICAgfQorICAgIAorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAg
eworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24g
MTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IE5vTm9kZTsKICAgICB9CiAgICAgCisgICAgYm9vbCBnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWlu
YXRpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpCisgICAgeworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgeworICAgICAgICAg
ICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOworICAgICAgICAgICAg
Tm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOworICAgICAgICAgICAgc3dpdGNoIChub2RlLm9w
KCkpIHsKKyAgICAgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVn
aXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KG1fZ3JhcGguY2xvYmJlcnNXb3JsZChpbmRleCkpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICBOb2RlSW5k
ZXggZ2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbihXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lz
dGVyUG9pbnRlcikKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJs
b2NrOyBpLS07KSB7CkBAIC0yMjYsNiArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CiAgICAgICAgICAg
ICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQ
b2ludGVyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC05ODUsNyArMTAwOSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0
UmVwbGFjZW1lbnQoZ2xvYmFsVmFyTG9hZEVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2ludGVy
KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgR2xv
YmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAgIGlmIChnbG9iYWxWYXJXYXRjaHBvaW50RWxp
bWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkpCisgICAgICAgICAgICAgICAgZWxpbWlu
YXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIFB1
dEdsb2JhbFZhcjoKKyAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAgICAg
IGlmIChtX2ZpeHBvaW50U3RhdGUgPT0gRml4cG9pbnROb3RDb252ZXJnZWQpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBlbGltaW5hdGUoZ2xvYmFsVmFyU3RvcmVFbGltaW5h
dGlvbihub2RlLnJlZ2lzdGVyUG9pbnRlcigpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Myw3ICsxMjMsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGVPcGNvZGUoCiAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKKyAg
ICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKICAgICBjYXNlIG9wX3B1dF9nbG9i
YWxfdmFyOgorICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CiAgICAgY2FzZSBvcF9q
bXA6CiAgICAgY2FzZSBvcF9sb29wOgogICAgIGNhc2Ugb3BfanRydWU6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDkgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFibG9jay0+
Y2ZhRm91bmRDb25zdGFudHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisjaWYgREZHX0VO
QUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAgZGF0YUxvZygiQ29u
c3RhbnQgZm9sZGluZyBjb25zaWRlcmluZyBCbG9jayAjJXUuXG4iLCBibG9ja0luZGV4KTsKKyNl
bmRpZgogICAgICAgICAgICAgc3RhdGUuYmVnaW5CYXNpY0Jsb2NrKGJsb2NrKTsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2st
PnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlLmlz
VmFsaWQoKSkKQEAgLTkwLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIHN0YXRlLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKQotICAgICAgICAgICAgICAgICAgICB8fCBtX2dy
YXBoLmNsb2JiZXJzV29ybGQobm9kZSkKKyAgICAgICAgICAgICAgICAgICAgfHwgc3RhdGUuZGlk
Q2xvYmJlcigpCiAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUuaGFzQ29uc3RhbnQoKSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IHN0YXRlLmZvck5vZGUobm9kZUluZGV4KS52YWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkocmV2aXNp
b24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1
bXBQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2NiwxMSBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB9CiAgICAgCisgICAgYm9vbCBpc1NldCgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9jb2RlT2Zmc2V0ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCBzd2l0Y2hUb0xhdGVKdW1wKE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wIGNoZWNrKQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTIwMTU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDcgKzQ0LDExIEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygp
CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9T
UkV4aXRzKCk7ICsraSkgewogICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9z
ckV4aXQoaSk7Ci0gICAgICAgIGV4aXQubV9jaGVjay5pbml0aWFsSnVtcCgpLmxpbmsodGhpcyk7
CisgICAgICAgIEFTU0VSVCghZXhpdC5tX2NoZWNrLmlzU2V0KCkgPT0gKGV4aXQubV93YXRjaHBv
aW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7CisgICAg
ICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIGV4aXQubV9jaGVjay5pbml0aWFsSnVtcCgpLmxp
bmsodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVCbG9jaygpLT53YXRjaHBv
aW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLnNldERlc3RpbmF0aW9uKGxhYmVsKCkpOwogICAg
ICAgICBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwogICAgICAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihpKSwgJmdsb2JhbERhdGEoKS0+b3NyRXhpdEluZGV4KTsKICAgICAgICAgZXhpdC5t
X2NoZWNrLnN3aXRjaFRvTGF0ZUp1bXAocGF0Y2hhYmxlSnVtcCgpKTsKQEAgLTE5MCw2ICsxOTQs
OCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgIE9T
UkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhpdChpKTsKICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKGV4aXQubV9jaGVjay5sYXRlSnVtcCgpLCB0YXJnZXQpOwogICAgICAgICBleGl0Lm1f
Y2hlY2suY29ycmVjdExhdGVKdW1wKGxpbmtCdWZmZXIpOworICAgICAgICBpZiAoZXhpdC5tX3dh
dGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisg
ICAgICAgICAgICBjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4
KS5jb3JyZWN0TGFiZWxzKGxpbmtCdWZmZXIpOwogICAgIH0KICAgICAKICAgICBjb2RlQmxvY2so
KS0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDkgKzQzMCwyMCBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsKICAgICB9CiAgICAgCisgICAg
Ym9vbCBoYXNJZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hwb2ludCB8fCBvcCgpID09IFB1dEdsb2JhbFZhckNoZWNr
OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0lkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvMjsKKyAgICB9CisgICAgCiAgICAgYm9vbCBoYXNSZWdpc3Rl
clBvaW50ZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2V0R2xvYmFsVmFyIHx8
IG9wKCkgPT0gUHV0R2xvYmFsVmFyOworICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxW
YXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBHbG9iYWxWYXJXYXRjaHBvaW50
IHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyQ2hlY2s7CiAgICAgfQogICAgIAogICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRTY29wZWRW
YXIsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKEdl
dEdsb2JhbFZhciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KFB1dEdsb2JhbFZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdsb2JhbFZhcldh
dGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhQdXRHbG9iYWxWYXJDaGVj
aywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBcCiAgICAgLyogT3B0aW1pemF0aW9ucyBmb3IgYXJyYXkgbXV0YXRp
b24uICovXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShy
ZXZpc2lvbiAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIE9TUkV4aXQ6Ok9TUkV4aXQoRXhp
dEtpbmQga2luZCwgSlNWYWx1ZVMKICAgICAsIG1fY29kZU9yaWdpbihqaXQtPm1fY29kZU9yaWdp
bkZvck9TUikKICAgICAsIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKG1fY29kZU9yaWdpbikK
ICAgICAsIG1fcmVjb3ZlcnlJbmRleChyZWNvdmVyeUluZGV4KQorICAgICwgbV93YXRjaHBvaW50
SW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICwgbV9raW5k
KGtpbmQpCiAgICAgLCBtX2NvdW50KDApCiAgICAgLCBtX2FyZ3VtZW50cyhqaXQtPm1fYXJndW1l
bnRzLnNpemUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShy
ZXZpc2lvbiAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBzdHJ1Y3QgT1NSRXhpdCB7CiAgICAg
Q29kZU9yaWdpbiBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAKICAgICB1bnNpZ25l
ZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWduZWQgbV93YXRjaHBvaW50SW5kZXg7CiAgICAg
CiAgICAgRXhpdEtpbmQgbV9raW5kOwogICAgIHVpbnQzMl90IG1fY291bnQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEyMDE1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkyNCw2ICs5MjQsMTEgQEAgdm9pZCogREZHX09QRVJBVElPTiBvcGVyYXRp
b25WaXJ0dWFsQ29ucwogICAgIHJldHVybiB2aXJ0dWFsRm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JD
b25zdHJ1Y3QpOwogfQogCit2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5R2xvYmFs
VmFyV3JpdGUoV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkKK3sKKyAgICB3YXRjaHBvaW50
U2V0LT5ub3RpZnlXcml0ZSgpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lv
biAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFU
SU9OICgqVl9ERkdPcGVyYXQKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVy
YXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0
aW9uX0VKUFApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdm9p
ZCopOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FUFpKKShF
eGVjU3RhdGUqLCB2b2lkKiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiB2b2lk
IERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9XKShXYXRjaHBvaW50U2V0Kik7CiB0eXBl
ZGVmIHZvaWQqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsK
IAogLy8gVGhlc2Ugcm91dGluZXMgYXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1w
bGVtZW50YXRpb25zIG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgpAQCAtMTE2LDYg
KzExNyw3IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2UKIEVuY29k
ZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQ3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTQ2VsbCosIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jLCBJZGVudGlmaWVyKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25DYWxsR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZShXYXRjaHBvaW50U2V0KiB3YXRj
aHBvaW50U2V0KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlc29sdmUoRXhlY1N0YXRlKiwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZUJhc2UoRXhlY1N0YXRl
KiwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uUmVzb2x2ZUJhc2VTdHJpY3RQdXQoRXhlY1N0YXRlKiwgSWRlbnRpZmllciop
IFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMjAx
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkxLDcgKzQ5MSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ug
UHV0R2xvYmFsVmFyOiB7CisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAgICBjYXNl
IFB1dEdsb2JhbFZhckNoZWNrOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTY2OSw2ICs2NzAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IFRlYXJPZmZBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ2hlY2tOdW1iZXI6CiAgICAgICAgIGNh
c2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNo
cG9pbnQ6CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5Niw2ICszNTk2LDYyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgCisgICAgICAgIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRTZXQgPQorICAgICAgICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUu
Y29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCkuZ2V0KAorICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKSktPmltcGwoKSkud2F0Y2hwb2ludFNl
dCgpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpBYnNvbHV0ZUFkZHJlc3Mod2F0Y2hwb2ludFNldC0+YWRkcmVzc09mSXNXYXRjaGVkKCkp
KSwKKyAgICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZSwg
Tm9SZXN1bHQsIHdhdGNocG9pbnRTZXQpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChIZWFwOjpp
c1dyaXRlQmFycmllckVuYWJsZWQoKSkgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdyaXRlQmFycmllcihtX2ppdC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS5jb2RlT3JpZ2luKSwgdmFsdWUudGFnR1BSKCksIG5vZGUuY2hpbGQxKCksIFdy
aXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEZJWE1FOiBpZiB3ZSBoYXBwZW4gdG8gaGF2ZSBhIHNwYXJlIHJlZ2lzdGVyIC0g
YW5kIF9PTkxZXyBpZiB3ZSBoYXBwZW4gdG8gaGF2ZQorICAgICAgICAvLyBhIHNwYXJlIHJlZ2lz
dGVyIC0gYSBnb29kIG9wdGltaXphdGlvbiB3b3VsZCBiZSB0byBwdXQgdGhlIHJlZ2lzdGVyIHBv
aW50ZXIgaW50bworICAgICAgICAvLyBhIHJlZ2lzdGVyIGFuZCB0aGVuIGRvIGEgemVybyBvZmZz
ZXQgc3RvcmUgZm9sbG93ZWQgYnkgYSBmb3VyLW9mZnNldCBzdG9yZSAob3IKKyAgICAgICAgLy8g
dmljZS12ZXJzYSBkZXBlbmRpbmcgb24gZW5kaWFubmVzcykuCisgICAgICAgIG1faml0LnN0b3Jl
MzIodmFsdWUudGFnR1BSKCksIG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnRhZ1BvaW50ZXIoKSk7
CisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUucGF5bG9hZEdQUigpLCBub2RlLnJlZ2lzdGVy
UG9pbnRlcigpLT5wYXlsb2FkUG9pbnRlcigpKTsKKworICAgICAgICBub1Jlc3VsdChtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHbG9i
YWxWYXJXYXRjaHBvaW50OiB7CisgICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNv
ZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpLmdldCgKKyAgICAgICAgICAgIGlkZW50aWZpZXIobm9k
ZS5pZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKSktPmltcGwoKSkuYWRkV2F0Y2hwb2ludCgKKyAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7CisgICAgICAgIAorI2lmIERG
R19FTkFCTEUoSklUX0FTU0VSVCkKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgbV9q
aXQubG9hZDMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnRhZ1BvaW50ZXIoKSwgc2NyYXRjaEdQ
Uik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE9LID0gbV9qaXQuYnJhbmNoMzIoCisg
ICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsCisgICAgICAgICAg
ICBUcnVzdGVkSW1tMzIobm9kZS5yZWdpc3RlclBvaW50ZXIoKS0+Z2V0KCkudGFnKCkpKTsKKyAg
ICAgICAgbV9qaXQubG9hZDMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnBheWxvYWRQb2ludGVy
KCksIHNjcmF0Y2hHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBvayA9IG1faml0LmJy
YW5jaDMyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCBzY3JhdGNoR1BSLAorICAg
ICAgICAgICAgVHJ1c3RlZEltbTMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPmdldCgpLnBheWxv
YWQoKSkpOworICAgICAgICBub3RPSy5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmJyZWFr
cG9pbnQoKTsKKyAgICAgICAgb2subGluaygmbV9qaXQpOworI2VuZGlmCisgICAgICAgIAorICAg
ICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0
dXJlKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjE1
LDYgKzM2MTUsNTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOiB7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAg
ICAKKyAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCA9CisgICAgICAgICAgICBt
X2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQo
CisgICAgICAgICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVj
aygpKS0+aW1wbCgpKS53YXRjaHBvaW50U2V0KCk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3Q4KAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywKKyAg
ICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyh3YXRjaHBvaW50
U2V0LT5hZGRyZXNzT2ZJc1dhdGNoZWQoKSkpLAorICAgICAgICAgICAgICAgIHRoaXMsIG9wZXJh
dGlvbk5vdGlmeUdsb2JhbFZhcldyaXRlLCBOb1Jlc3VsdCwgd2F0Y2hwb2ludFNldCkpOworICAg
ICAgICAKKyAgICAgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKSB7CisgICAg
ICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd3Jp
dGVCYXJyaWVyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLCB2YWx1ZS5n
cHIoKSwgbm9kZS5jaGlsZDEoKSwgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MsIHNjcmF0
Y2hSZWcpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2ppdC5zdG9yZVB0cih2YWx1
ZS5ncHIoKSwgbm9kZS5yZWdpc3RlclBvaW50ZXIoKSk7CisKKyAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2Ug
R2xvYmFsVmFyV2F0Y2hwb2ludDogeworICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQoCisgICAgICAgICAgICBpZGVudGlmaWVy
KG5vZGUuaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpLT5pbXBsKCkpLmFkZFdhdGNocG9pbnQo
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOworICAgICAgICAKKyNp
ZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAg
IG1faml0LmxvYWRQdHIobm9kZS5yZWdpc3RlclBvaW50ZXIoKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KEpTVmFsdWU6OmVuY29kZShub2RlLnJlZ2lzdGVyUG9pbnRl
cigpLT5nZXQoKSkpKSk7CisgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgb2su
bGluaygmbV9qaXQpOworI2VuZGlmCisgICAgICAgIAorICAgICAgICBub1Jlc3VsdChtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ2hlY2tIYXNJbnN0
YW5jZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24g
MTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDE0LDYgKzE0MTQsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIp
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9u
KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJh
dGlvbl9XIG9wZXJhdGlvbiwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkKKyAgICB7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKFRydXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTE+CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBO
b1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBhcmcxKQogICAgIHsKQEAgLTE2NzIsNiArMTY3Nywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAg
ICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25f
VyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCisgICAgeworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyKHdhdGNocG9pbnRTZXQpKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxPgogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1
bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJnMSkKICAgICB7CkBAIC0xNzkzLDYgKzE4MDMsMTEgQEAg
cHVibGljOgogICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1
bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwg
YXBwZW5kQ2FsbChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCisgICAgeworICAgICAgICBw
cmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBtX2ppdC5hcHBlbmRDYWxs
KGZ1bmN0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJl
ZyByZXN1bHQxLCBHUFJSZWcgcmVzdWx0MikKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKQEAgLTIx
OTMsNiArMjIwOCwzMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRl
eCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2UuaW5kZXgoKSwganVtcFRv
RmFpbCwgcmVjb3ZlcnkpOwogICAgIH0KKyAgICAvLyBVc2UgdGhpcyBsaWtlIHlvdSB3b3VsZCB1
c2Ugc3BlY3VsYXRpb25DaGVjaygpLCBleGNlcHQgdGhhdCB5b3UgZG9uJ3QgcGFzcyBpdCBhIGp1
bXAKKyAgICAvLyAoYmVjYXVzZSB5b3UgZG9uJ3QgaGF2ZSB0byBleGVjdXRlIGEgYnJhbmNoOyB0
aGF0J3Mga2luZCBvZiB0aGUgd2hvbGUgcG9pbnQpLCBhbmQgeW91CisgICAgLy8gbXVzdCByZWdp
c3RlciB0aGUgcmV0dXJuZWQgV2F0Y2hwb2ludCB3aXRoIHNvbWV0aGluZyByZWxldmFudC4gSW4g
Z2VuZXJhbCwgdGhpcyBzaG91bGQKKyAgICAvLyBiZSB1c2VkIHdpdGggZXh0cmVtZSBjYXJlLiBV
c2Ugc3BlY3VsYXRpb25DaGVjaygpIHVubGVzcyB5b3UndmUgZ290IGFuIGFtYXppbmcgcmVhc29u
CisgICAgLy8gbm90IHRvLgorICAgIFdhdGNocG9pbnQqIHNwZWN1bGF0aW9uV2F0Y2hwb2ludChF
eGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2Rl
SW5kZXgpCisgICAgeworICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwg
bV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CisgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2pp
dC5jb2RlQmxvY2soKS0+b3NyRXhpdCgKKyAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5h
cHBlbmRPU1JFeGl0KAorICAgICAgICAgICAgICAgIE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAoKSwgdGhpcykpKTsKKyAgICAgICAgZXhpdC5tX3dhdGNocG9pbnRJbmRl
eCA9IG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRXYXRjaHBvaW50KAorICAgICAgICAgICAgV2F0
Y2hwb2ludChtX2ppdC53YXRjaHBvaW50TGFiZWwoKSkpOworICAgICAgICByZXR1cm4gJm1faml0
LmNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpOworICAgIH0K
KyAgICAvLyBUaGUgZGVmYXVsdCBmb3Igc3BlY3VsYXRpb24gd2F0Y2hwb2ludHMgaXMgdGhhdCB0
aGV5J3JlIHVuY291bnRlZCwgYmVjYXVzZSB0aGUKKyAgICAvLyBhY3Qgb2YgZmlyaW5nIGEgd2F0
Y2hwb2ludCBpbnZhbGlkYXRlcyBpdC4gU28sIGZ1dHVyZSByZWNvbXBpbGF0aW9ucyB3aWxsIG5v
dAorICAgIC8vIGF0dGVtcHQgdG8gc2V0IHRoaXMgd2F0Y2hwb2ludCBhZ2Fpbi4KKyAgICBXYXRj
aHBvaW50KiBzcGVjdWxhdGlvbldhdGNocG9pbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNw
ZWN1bGF0aW9uV2F0Y2hwb2ludChVbmNvdW50YWJsZVdhdGNocG9pbnQsIEpTVmFsdWVTb3VyY2Uo
KSwgTm9Ob2RlKTsKKyAgICB9CiAgICAgdm9pZCBmb3J3YXJkU3BlY3VsYXRpb25DaGVjayhFeGl0
S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5k
ZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3Zlcnkm
IHZhbHVlUmVjb3ZlcnkpCiAgICAgewogICAgICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgp
LmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDYgKzI1OSw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9i
eV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYXJndW1lbnRfYnlfdmFsKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZ2V0X2J5X3BuYW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2ds
b2JhbF92YXJfd2F0Y2hhYmxlKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2dsb2JhbF92YXIp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcG5hbWVzKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X3Njb3BlZF92YXIpCkBAIC0zMjQsNiArMzI1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2dsb2JhbF92YXIpCisgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zY29wZWRfdmFyKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcmVzb2x2ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfYmFzZSkKQEAgLTQ4MSw2
ICs0ODMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9i
eV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVj
ayk7CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9yc2hpZnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2Myw3ICs0NjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCBpc01hcHBlZChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpOwogICAgICAgICBib29s
IGdldE1hcHBlZFBheWxvYWQoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEJiBw
YXlsb2FkKTsKICAgICAgICAgYm9vbCBnZXRNYXBwZWRUYWcoaW50IHZpcnR1YWxSZWdpc3Rlcklu
ZGV4LCBSZWdpc3RlcklEJiB0YWcpOwotCisgICAgICAgIAogICAgICAgICB2b2lkIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpOwogICAgICAgICB2
b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgs
IFJlZ2lzdGVySUQgdGFnKTsKIApAQCAtNTk5LDYgKzU5OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfZ2xvYmFsX3ZhcihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikgeyBlbWl0X29wX2dldF9nbG9iYWxfdmFyKGluc3RydWN0aW9uKTsgfQogICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2luaXRfbGF6eV9yZWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2No
ZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiopOwpAQCAtNjYyLDYgKzY2Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXIoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX3Jlc29sdmUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3Jlc29sdmVfYmFzZShJbnN0cnVjdGlvbiopOwpAQCAtNzM5LDYgKzc0MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3ByZV9pbmMoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWwo
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyhJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9yc2hpZnQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTAs
NiArMTA5MCwzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiAg
ICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX3B1dF9nbG9iYWxfdmFy
KSwgdmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9i
YWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5yZWdpc3RlclBvaW50ZXI7CisgICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKKyAgICAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIAorICAgIGVtaXRMb2FkKHZhbHVlLCBy
ZWdUMSwgcmVnVDApOworICAgIAorICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8s
IEFic29sdXRlQWRkcmVzcyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5wcmVkaWNhdGVQb2ludGVy
KSkpOworICAgIAorICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQoKSkgeworICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgcmVnVDIpOworICAgICAgICBl
bWl0V3JpdGVCYXJyaWVyKGdsb2JhbE9iamVjdCwgcmVnVDEsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJ
bW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CisgICAgfQorICAgIAor
ICAgIHN0b3JlMzIocmVnVDEsIHJlZ2lzdGVyUG9pbnRlci0+dGFnUG9pbnRlcigpKTsKKyAgICBz
dG9yZTMyKHJlZ1QwLCByZWdpc3RlclBvaW50ZXItPnBheWxvYWRQb2ludGVyKCkpOworICAgIHVu
bWFwKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICAKKyAgICBKSVRT
dHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxLCByZWdUMCk7CisgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKyAg
ICBzdHViQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjpyZXNldFBhdGNoR2V0QnlJZChSZXBh
dGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCiB7
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwg
Y3RpX29wX2dldF9ieV9pZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MjcsNiArMTAyNywyOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVj
CiAgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0LCByZWdUMCwgcmVnVDIsIFNo
b3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIH0K
IAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICAKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3MoY3VycmVudEluc3RydWN0aW9uWzNd
LnUucHJlZGljYXRlUG9pbnRlcikpKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgCisgICAgc3RvcmVQdHIocmVn
VDAsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcik7CisgICAgaWYgKEhl
YXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKQorICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGds
b2JhbE9iamVjdCwgcmVnVDAsIHJlZ1QyLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJh
cnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
Z2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKKyAgICAKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKKyAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpOworICAgIHN0dWJDYWxsLmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6OnJlc2V0UGF0Y2hH
ZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby0+Y2FsbFJldHVy
bkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk3LDcgKzc5Nyw3IEBAIEpJ
VFRodW5rczo6SklUVGh1bmtzKEpTR2xvYmFsRGF0YSogZ2xvYmEKICAgICBBU1NFUlQoT0JKRUNU
X09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCByZWdpc3RlckZpbGUpID09IFJFR0lTVEVS
X0ZJTEVfT0ZGU0VUKTsKICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFj
a0ZyYW1lLCBjYWxsRnJhbWUpID09IENBTExGUkFNRV9PRkZTRVQpOwogICAgIC8vIFRoZSBmaWZ0
aCBhcmd1bWVudCBpcyB0aGUgZmlyc3QgaXRlbSBhbHJlYWR5IG9uIHRoZSBzdGFjay4KLSAgICBB
U1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCB1bnVzZWQyKSA9PSBG
SVJTVF9TVEFDS19BUkdVTUVOVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3Qg
SklUU3RhY2tGcmFtZSwgdW51c2VkMSkgPT0gRklSU1RfU1RBQ0tfQVJHVU1FTlQpOwogCiAgICAg
QVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgdGh1bmtSZXR1cm5B
ZGRyZXNzKSA9PSBUSFVOS19SRVRVUk5fQUREUkVTU19PRkZTRVQpOwogCkBAIC0yMzc3LDYgKzIz
NzcsMTUgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9uZXdfYQogICAgIHJl
dHVybiBjb25zdHJ1Y3RBcnJheShzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3RhY2tGcmFtZS5jYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihzdGFja0ZyYW1lLmFyZ3NbMF0uaW50
MzIoKSksIHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpKTsKIH0KIAorREVGSU5FX1NUVUJfRlVO
Q1RJT04odm9pZCwgb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spCit7CisgICAgU1RVQl9JTklUX1NU
QUNLX0ZSQU1FKHN0YWNrRnJhbWUpOworICAgIAorICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
c3RhY2tGcmFtZS5jYWxsRnJhbWU7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOworICAgIHN5bWJvbFRhYmxlUHV0KGNvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCksIGNhbGxGcmFtZSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHN0YWNrRnJhbWUuYXJnc1sx
XS5pbnQzMigpKSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSwgdHJ1ZSk7Cit9CisKIERF
RklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNvbHZlKQogewogICAgIFNU
VUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSw3IEBAIGV4dGVy
biAiQyIgewogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1dF9ieV9pbmRleChTVFVCX0FSR1Nf
REVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRf
YnlfdmFsKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQgSklU
X1NUVUIgY3RpX29wX3B1dF9nZXR0ZXJfc2V0dGVyKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RG
X0lOVEVSTkFMOworICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1dF9nbG9iYWxfdmFyX2NoZWNr
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQgSklUX1NUVUIg
Y3RpX29wX3RlYXJfb2ZmX2FjdGl2YXRpb24oU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfdGVhcl9vZmZfYXJndW1lbnRzKFNUVUJf
QVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29w
X3Rocm93X3JlZmVyZW5jZV9lcnJvcihTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5B
TDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU2LDYgKzg1NiwxNCBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV93CiAgICAgTExJTlRfRU5EKCk7CiB9
CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgc3ltYm9sVGFibGVQdXQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzRdLnUub3BlcmFuZCksIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCB0cnVlKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJl
dmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDcgQEAgTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX2Jhc2UpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20J
KHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM5LDcgKzEwMzksNyBA
QCBfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRf
b3BfZ2V0X2dsb2JhbF92YXI6CittYWNybyBnZXRHbG9iYWxWYXIoc2l6ZSkKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgbG9hZHAgOFtQQ10sIHQwCiAgICAgbG9hZGkgNFtQQ10sIHQzCkBAIC0x
MDQ3LDkgKzEwNDcsMTcgQEAgX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgogICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbdDBdLCB0MQogICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
CiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCi0gICAgbG9hZGkgMTJb
UENdLCB0MworICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDMKICAgICB2YWx1ZVByb2Zp
bGUodDIsIHQxLCB0MykKLSAgICBkaXNwYXRjaCg0KQorICAgIGRpc3BhdGNoKHNpemUpCitlbmQK
KworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIGdldEdsb2JhbFZhcig0KQorCisKK19s
bGludF9vcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6CisgICAgZ2V0R2xvYmFsVmFyKDUpCiAK
IAogX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgpAQCAtMTA2Myw2ICsxMDcxLDIyIEBAIF9sbGlu
dF9vcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9wdXRf
Z2xvYmFsX3Zhcl9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgMTJbUENd
LCB0MgorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJ0Ym56
IFt0Ml0sIC5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDEsIHQyLCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W3QwXQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MF0KKyAgICBkaXNw
YXRjaCg1KQorLm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQorICAgIGRpc3BhdGNoKDUpCisKKwog
X2xsaW50X29wX2dldF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgIyBXZSBvbmx5
IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3Qg
bW9kaWZ5IHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC04OTMsMTUgKzg5MywyMyBAQCBfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CiAgICAg
ZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CittYWNybyBnZXRHbG9i
YWxWYXIoc2l6ZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgMTZbUEIsIFBDLCA4
XSwgdDAKICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MwogICAgIGxvYWRwIFt0MF0sIHQxCiAg
ICAgc3RvcmVwIHQxLCBbY2ZyLCB0MywgOF0KLSAgICBsb2FkcCAyNFtQQiwgUEMsIDhdLCB0MAor
ICAgIGxvYWRwIChzaXplIC0gMSkgKiA4W1BCLCBQQywgOF0sIHQwCiAgICAgdmFsdWVQcm9maWxl
KHQxLCB0MCkKLSAgICBkaXNwYXRjaCg0KQorICAgIGRpc3BhdGNoKHNpemUpCitlbmQKKworX2xs
aW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIGdldEdsb2JhbFZhcig0KQorCisKK19sbGludF9v
cF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6CisgICAgZ2V0R2xvYmFsVmFyKDUpCiAKIAogX2xs
aW50X29wX3B1dF9nbG9iYWxfdmFyOgpAQCAtOTE0LDYgKzkyMiwyMSBAQCBfbGxpbnRfb3BfcHV0
X2dsb2JhbF92YXI6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92
YXJfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIDI0W1BCLCBQQywgOF0s
IHQyCisgICAgbG9hZGlzIDE2W1BCLCBQQywgOF0sIHQxCisgICAgbG9hZHAgOFtQQiwgUEMsIDhd
LCB0MAorICAgIGJ0Ym56IFt0Ml0sIC5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDEsIHQyKQorICAgIHdyaXRlQmFycmllcih0MikKKyAgICBzdG9y
ZXAgdDIsIFt0MF0KKyAgICBkaXNwYXRjaCg1KQorLm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93Ogor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQor
ICAgIGRpc3BhdGNoKDUpCisKKwogX2xsaW50X29wX2dldF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZv
ciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDQs
MjIgKzUwNCwyNSBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAg
ICAgc3RydWN0dXJlKCktPnNldFN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsKIH0KIAotdm9pZCBK
U09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHN0
cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5k
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHNpemVfdCBv
ZmZzZXQ7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7
CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0g
V1RGOjpub3RGb3VuZCkKLSAgICAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9m
ZnNldCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwdXRVbmRlZmluZWRBdERp
cmVjdE9mZnNldChvZmZzZXQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBz
ZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7Ci0gICAg
aWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVj
dE9mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIE5FVkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxs
R2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYgc2xvdCwgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiogbG9jYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDEyMDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9w
ZXJ0eU5hbWUpOworICAgICAgICBib29sIHJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9w
ZXJ0eU5hbWUpOyAvLyBSZXR1cm4gdHJ1ZSBpZiBhbnl0aGluZyBpcyByZW1vdmVkLgogICAgICAg
ICBib29sIGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+ZGlkVHJh
bnNpdGlvbigpOyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsg
cmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAkocmV2aXNpb24gMTIwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw5ICs3MiwxMiBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBz
eW1ib2xUYWJsZUdldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFN5bWJvbFRh
YmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAgICBTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCk7CisgICAgU3ltYm9sVGFi
bGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOworICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNlY29u
ZDsKKyAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICBzbG90LnNldFZhbHVlKG9iamVj
dC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC04Myw5ICs4NiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVj
dFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAgICBTeW1ib2xUYWJsZU9iamVj
dFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3Qt
PnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAg
IGlmIChlbnRyeS5pc051bGwoKSkKKyAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBvYmpl
Y3QtPnN5bWJvbFRhYmxlKCk7CisgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1i
b2xUYWJsZS5maW5kKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIGlmIChpdGVyID09
IHN5bWJvbFRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgU3ltYm9sVGFi
bGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNlY29uZDsKKyAgICBBU1NFUlQoIWVudHJ5Lmlz
TnVsbCgpKTsKICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoCiAgICAgICAgIG9iamVjdC0+
cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSwgZW50cnkuZ2V0QXR0cmlidXRlcygp
IHwgRG9udERlbGV0ZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC05Niw5ICsxMDIsMTIgQEAgaW5s
aW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwKICAgICBi
b29sJiBzbG90SXNXcml0ZWFibGUpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9i
amVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQorICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9
IG9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAgICBTeW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9
IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgaWYgKGl0
ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTeW1i
b2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+c2Vjb25kOworICAgIEFTU0VSVCghZW50
cnkuaXNOdWxsKCkpOwogICAgIHNsb3Quc2V0VmFsdWUob2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5
LmdldEluZGV4KCkpLmdldCgpKTsKICAgICBzbG90SXNXcml0ZWFibGUgPSAhZW50cnkuaXNSZWFk
T25seSgpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTEyLDE1ICsxMjEsMjEgQEAgaW5saW5lIGJv
b2wgc3ltYm9sVGFibGVQdXQoCiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVh
cCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKICAgICAKLSAgICBTeW1ib2xUYWJsZUVu
dHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlOjpp
dGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKKyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsKKyAgICBib29sIHdhc0ZhdDsKKyAg
ICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGZhc3RFbnRyeSA9IGl0ZXItPnNlY29uZC5nZXRGYXN0
KHdhc0ZhdCk7CisgICAgQVNTRVJUKCFmYXN0RW50cnkuaXNOdWxsKCkpOworICAgIGlmIChmYXN0
RW50cnkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBvYmplY3QtPnJlZ2lzdGVy
QXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUpOworICAg
IGlmIChVTkxJS0VMWSh3YXNGYXQpKQorICAgICAgICBpdGVyLT5zZWNvbmQubm90aWZ5V3JpdGUo
KTsKKyAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZmFzdEVudHJ5LmdldEluZGV4KCkpLnNldChnbG9i
YWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTM2LDYg
KzE1MSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+c2Vj
b25kOwogICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgIGVudHJ5Lm5vdGlmeVdyaXRl
KCk7CiAgICAgZW50cnkuc2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICBvYmplY3QtPnJl
Z2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUp
OwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitTeW1ib2xUYWJsZUVudHJ5JiBTeW1ib2xUYWJsZUVudHJ5Ojpjb3B5U2xvdyhj
b25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikKK3sKKyAgICBBU1NFUlQob3RoZXIuaXNGYXQo
KSk7CisgICAgRmF0RW50cnkqIG5ld0ZhdEVudHJ5ID0gbmV3IEZhdEVudHJ5KCpvdGhlci5mYXRF
bnRyeSgpKTsKKyAgICBmcmVlRmF0RW50cnkoKTsKKyAgICBtX2JpdHMgPSBiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KG5ld0ZhdEVudHJ5KSB8IEZhdEZsYWc7CisgICAgcmV0dXJuICp0aGlzOworfQor
Cit2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmZyZWVGYXRFbnRyeVNsb3coKQoreworICAgIEFTU0VS
VChpc0ZhdCgpKTsKKyAgICBkZWxldGUgZmF0RW50cnkoKTsKK30KKworYm9vbCBTeW1ib2xUYWJs
ZUVudHJ5Ojpjb3VsZEJlV2F0Y2hlZCgpCit7CisgICAgaWYgKCFpc0ZhdCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludHMgPSBmYXRFbnRyeSgp
LT5tX3dhdGNocG9pbnRzLmdldCgpOworICAgIGlmICghd2F0Y2hwb2ludHMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gd2F0Y2hwb2ludHMtPmlzU3RpbGxWYWxpZCgpOworfQor
Cit2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmF0dGVtcHRUb1dhdGNoKCkKK3sKKyAgICBGYXRFbnRy
eSogZW50cnkgPSBpbmZsYXRlKCk7CisgICAgaWYgKCFlbnRyeS0+bV93YXRjaHBvaW50cykgewor
ICAgICAgICBlbnRyeS0+bV93YXRjaHBvaW50cyA9IGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0
KCkpOworICAgICAgICBlbnRyeS0+bV93YXRjaHBvaW50cy0+c3RhcnRXYXRjaGluZygpOworICAg
IH0KK30KKworYm9vbCogU3ltYm9sVGFibGVFbnRyeTo6YWRkcmVzc09mSXNXYXRjaGVkKCkKK3sK
KyAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7CisgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1f
d2F0Y2hwb2ludHMtPmFkZHJlc3NPZklzV2F0Y2hlZCgpOworfQorCit2b2lkIFN5bWJvbFRhYmxl
RW50cnk6OmFkZFdhdGNocG9pbnQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKK3sKKyAgICBBU1NF
UlQoY291bGRCZVdhdGNoZWQoKSk7CisgICAgZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy0+YWRk
KHdhdGNocG9pbnQpOworfQorCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlU2xv
dygpCit7CisgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludHMgPSBmYXRFbnRyeSgpLT5tX3dh
dGNocG9pbnRzLmdldCgpOworICAgIGlmICghd2F0Y2hwb2ludHMpCisgICAgICAgIHJldHVybjsK
KyAgICB3YXRjaHBvaW50cy0+bm90aWZ5V3JpdGUoKTsKK30KKworU3ltYm9sVGFibGVFbnRyeTo6
RmF0RW50cnkqIFN5bWJvbFRhYmxlRW50cnk6OmluZmxhdGVTbG93KCkKK3sKKyAgICBGYXRFbnRy
eSogZW50cnkgPSBuZXcgRmF0RW50cnkobV9iaXRzKTsKKyAgICBtX2JpdHMgPSBiaXR3aXNlX2Nh
c3Q8aW50cHRyX3Q+KGVudHJ5KSB8IEZhdEZsYWc7CisgICAgcmV0dXJuIGVudHJ5OworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxMjAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw1
MyArMzEsMTYzIEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcu
aCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAg
Y2xhc3MgV2F0Y2hwb2ludDsKKyAgICBjbGFzcyBXYXRjaHBvaW50U2V0OworCiAgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgaW50IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSB7IHJldHVybiBzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1heCgpOyB9CiAKICAgICAvLyBUaGUgYml0IHR3aWRkbGluZyBp
biB0aGlzIGNsYXNzIGFzc3VtZXMgdGhhdCBldmVyeSByZWdpc3RlciBpbmRleCBpcyBhCiAgICAg
Ly8gcmVhc29uYWJseSBzbWFsbCBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBudW1iZXIsIGFuZCB0aGVy
ZWZvcmUgaGFzIGl0cyBoaWdoCiAgICAgLy8gZm91ciBiaXRzIGFsbCBzZXQgb3IgYWxsIHVuc2V0
LgogCisgICAgLy8gSW4gYWRkaXRpb24gdG8gaW1wbGVtZW50aW5nIHNlbWFudGljcy1tYW5kYXRl
ZCB2YXJpYWJsZSBhdHRyaWJ1dGVzIGFuZAorICAgIC8vIGltcGxlbWVudGF0aW9uLW1hbmRhdGVk
IHZhcmlhYmxlIGluZGV4aW5nLCB0aGlzIGNsYXNzIGFsc28gaW1wbGVtZW50cworICAgIC8vIHdh
dGNocG9pbnRzIHRvIGJlIHVzZWQgZm9yIEpJVCBvcHRpbWl6YXRpb25zLiBCZWNhdXNlIHdhdGNo
cG9pbnRzIGFyZQorICAgIC8vIG1lYW50IHRvIGJlIHJlbGF0aXZlbHkgcmFyZSwgdGhpcyBjbGFz
cyBvcHRpbWl6ZXMgaGVhdmlseSBmb3IgdGhlIGNhc2UKKyAgICAvLyB0aGF0IHRoZXkgYXJlIG5v
dCBiZWluZyB1c2VkLiBUbyB0aGF0IGVuZCwgdGhpcyBjbGFzcyB1c2VzIHRoZSB0aGluLWZhdAor
ICAgIC8vIGlkaW9tOiBlaXRoZXIgaXQgaXMgdGhpbiwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlu
cyBhbiBpbi1wbGFjZSBlbmNvZGVkCisgICAgLy8gd29yZCB0aGF0IGNvbnNpc3RzIG9mIGF0dHJp
YnV0ZXMsIHRoZSBpbmRleCwgYW5kIGEgYml0IHNheWluZyB0aGF0IGl0IGlzCisgICAgLy8gdGhp
bjsgb3IgaXQgaXMgZmF0LCBpbiB3aGljaCBjYXNlIGl0IGNvbnRhaW5zIGEgcG9pbnRlciB0byBh
IG1hbGxvYydkCisgICAgLy8gZGF0YSBzdHJ1Y3R1cmUgYW5kIGEgYml0IHNheWluZyB0aGF0IGl0
IGlzIGZhdC4gVGhlIG1hbGxvYydkIGRhdGEKKyAgICAvLyBzdHJ1Y3R1cmUgd2lsbCBiZSBtYWxs
b2NlZCBhIHNlY29uZCB0aW1lIHVwb24gY29weSwgdG8gcHJlc2VydmUgdGhlCisgICAgLy8gcHJv
cGVydHkgdGhhdCBpbi1wbGFjZSBlZGl0cyB0byBTeW1ib2xUYWJsZUVudHJ5IGRvIG5vdCBtYW5p
ZmVzdCBpbiBhbnkKKyAgICAvLyBjb3BpZXMuIEhvd2V2ZXIsIHRoZSBtYWxsb2MnZCBGYXRFbnRy
eSBkYXRhIHN0cnVjdHVyZSBjb250YWlucyBhIHJlZi0KKyAgICAvLyBjb3VudGVkIHBvaW50ZXIg
dG8gYSBzaGFyZWQgV2F0Y2hwb2ludFNldC4gVGh1cywgaW4tcGxhY2UgZWRpdHMgb2YgdGhlCisg
ICAgLy8gV2F0Y2hwb2ludFNldCB3aWxsIG1hbmlmZXN0IGluIGFsbCBjb3BpZXMuIEhlcmUncyBh
IHBpY3R1cmU6CisgICAgLy8KKyAgICAvLyBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAt
LT4gV2F0Y2hwb2ludFNldAorICAgIC8vCisgICAgLy8gSWYgeW91IG1ha2UgYSBjb3B5IG9mIGEg
U3ltYm9sVGFibGVFbnRyeSwgeW91IHdpbGwgaGF2ZToKKyAgICAvLworICAgIC8vIG9yaWdpbmFs
OiBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hwb2ludFNldAorICAgIC8v
IGNvcHk6ICAgICBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLS0tLV4KKwogICAgIHN0
cnVjdCBTeW1ib2xUYWJsZUVudHJ5IHsKKyAgICAgICAgLy8gVXNlIHRoZSBTeW1ib2xUYWJsZUVu
dHJ5OjpGYXN0IGNsYXNzLCBlaXRoZXIgdmlhIGltcGxpY2l0IGNhc3Qgb3IgYnkgY2FsbGluZwor
ICAgICAgICAvLyBnZXRGYXN0KCksIHdoZW4geW91ICgxKSBvbmx5IGNhcmUgYWJvdXQgaXNOdWxs
KCksIGdldEluZGV4KCksIGFuZCBpc1JlYWRPbmx5KCksCisgICAgICAgIC8vIGFuZCAoMikgeW91
IGFyZSBpbiBhIGhvdCBwYXRoIHdoZXJlIHlvdSBuZWVkIHRvIG1pbmltaXplIHRoZSBudW1iZXIg
b2YgdGltZXMKKyAgICAgICAgLy8gdGhhdCB5b3UgYnJhbmNoIG9uIGlzRmF0KCkgd2hlbiBnZXR0
aW5nIHRoZSBiaXRzKCkuCisgICAgICAgIGNsYXNzIEZhc3QgeworICAgICAgICBwdWJsaWM6Cisg
ICAgICAgICAgICBGYXN0KCkKKyAgICAgICAgICAgICAgICA6IG1fYml0cygwKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBBTFdBWVNfSU5M
SU5FIEZhc3QoY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkpCisgICAgICAgICAgICAgICAg
OiBtX2JpdHMoZW50cnkuYml0cygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIW1fYml0czsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaW50IGdldEluZGV4KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2JpdHMgPj4gRmxhZ0JpdHMpOworICAgICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0CisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5zaWduZWQgZ2V0QXR0cmli
dXRlcygpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgYXR0
cmlidXRlcyA9IDA7CisgICAgICAgICAgICAgICAgaWYgKG1fYml0cyAmIFJlYWRPbmx5RmxhZykK
KyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBSZWFkT25seTsKKyAgICAgICAgICAg
ICAgICBpZiAobV9iaXRzICYgRG9udEVudW1GbGFnKQorICAgICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGVzIHw9IERvbnRFbnVtOworICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29sIGlzRmF0KCkgY29uc3QKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9iaXRzICYgRmF0RmxhZzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgZnJpZW5k
IHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5OworICAgICAgICAgICAgaW50cHRyX3QgbV9iaXRzOwor
ICAgICAgICB9OworCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoKQogICAgICAgICAgICAgOiBt
X2JpdHMoMCkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgU3ltYm9sVGFibGVFbnRy
eShpbnQgaW5kZXgpCisgICAgICAgICAgICA6IG1fYml0cygwKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQoaXNWYWxpZEluZGV4KGluZGV4KSk7CiAgICAgICAgICAgICBwYWNrKGluZGV4
LCBmYWxzZSwgZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeShp
bnQgaW5kZXgsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCisgICAgICAgICAgICA6IG1fYml0cygwKQog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZEluZGV4KGluZGV4KSk7CiAgICAg
ICAgICAgICBwYWNrKGluZGV4LCBhdHRyaWJ1dGVzICYgUmVhZE9ubHksIGF0dHJpYnV0ZXMgJiBE
b250RW51bSk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIH5TeW1ib2xUYWJsZUVudHJ5
KCkKKyAgICAgICAgeworICAgICAgICAgICAgZnJlZUZhdEVudHJ5KCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoY29uc3QgU3ltYm9sVGFibGVFbnRyeSYg
b3RoZXIpCisgICAgICAgICAgICA6IG1fYml0cygwKQorICAgICAgICB7CisgICAgICAgICAgICAq
dGhpcyA9IG90aGVyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5JiBvcGVyYXRvcj0oY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgb3RoZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChVTkxJS0VMWShvdGhlci5pc0ZhdCgpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY29weVNsb3cob3RoZXIpOworICAgICAgICAgICAgZnJlZUZhdEVudHJ5KCk7Cisg
ICAgICAgICAgICBtX2JpdHMgPSBvdGhlci5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFtX2JpdHM7CisgICAgICAgICAgICByZXR1cm4g
IWJpdHMoKTsKICAgICAgICAgfQogCiAgICAgICAgIGludCBnZXRJbmRleCgpIGNvbnN0CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2JpdHMgPj4gRmxhZ0JpdHM7CisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihiaXRzKCkgPj4gRmxhZ0JpdHMpOwogICAgICAgICB9
Ci0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgRmFzdCBnZXRGYXN0KCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEZhc3QoKnRoaXMpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QgZ2V0RmFzdChib29sJiB3YXNGYXQp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEZhc3QgcmVzdWx0OworICAgICAgICAgICAg
d2FzRmF0ID0gaXNGYXQoKTsKKyAgICAgICAgICAgIGlmICh3YXNGYXQpCisgICAgICAgICAgICAg
ICAgcmVzdWx0Lm1fYml0cyA9IGZhdEVudHJ5KCktPm1fYml0czsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXN1bHQubV9iaXRzID0gbV9iaXRzOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdW5zaWduZWQgZ2V0QXR0
cmlidXRlcygpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXMgPSAwOwotICAgICAgICAgICAgaWYgKG1fYml0cyAmIFJlYWRPbmx5RmxhZykKLSAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVzIHw9IFJlYWRPbmx5OwotICAgICAgICAgICAgaWYgKG1fYml0cyAm
IERvbnRFbnVtRmxhZykKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IERvbnRFbnVtOwot
ICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CisgICAgICAgICAgICByZXR1cm4gZ2V0RmFz
dCgpLmdldEF0dHJpYnV0ZXMoKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgc2V0QXR0cmli
dXRlcyh1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAtODcsMzAgKzE5NywxMjUgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgIHJldHVy
biBiaXRzKCkgJiBSZWFkT25seUZsYWc7CiAgICAgICAgIH0KLQorICAgICAgICAKKyAgICAgICAg
Ym9vbCBjb3VsZEJlV2F0Y2hlZCgpOworICAgICAgICAKKyAgICAgICAgLy8gTm90aWZ5IGFuIG9w
cG9ydHVuaXR5IHRvIGNyZWF0ZSBhIHdhdGNocG9pbnQgZm9yIGEgdmFyaWFibGUuIFRoaXMgaXMK
KyAgICAgICAgLy8gaWRlbXBvdGVudCBhbmQgZmFpbC1zaWxlbnQuIEl0IGlzIGlkZW1wb3RlbnQg
aW4gdGhlIHNlbnNlIHRoYXQgaWYKKyAgICAgICAgLy8gYSB3YXRjaHBvaW50IHNldCBoYWQgYWxy
ZWFkeSBiZWVuIGNyZWF0ZWQsIHRoZW4gYW5vdGhlciBvbmUgd2lsbCBub3QKKyAgICAgICAgLy8g
YmUgY3JlYXRlZC4gSGVuY2UgdHdvIGNhbGxzIHRvIHRoaXMgbWV0aG9kIGhhdmUgdGhlIHNhbWUg
ZWZmZWN0IGFzCisgICAgICAgIC8vIG9uZSBjYWxsLiBJdCBpcyBhbHNvIGZhaWwtc2lsZW50LCBp
biB0aGUgc2Vuc2UgdGhhdCBpZiBhIHdhdGNocG9pbnQKKyAgICAgICAgLy8gc2V0IGhhZCBiZWVu
IGNyZWF0ZWQgYW5kIGhhZCBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQsIHRoZW4gdGhpcyB3aWxs
CisgICAgICAgIC8vIGp1c3QgcmV0dXJuLiBUaGlzIG1lYW5zIHRoYXQgY291bGRCZVdhdGNoZWQo
KSBtYXkgcmV0dXJuIGZhbHNlIGV2ZW4KKyAgICAgICAgLy8gaW1tZWRpYXRlbHkgYWZ0ZXIgYSBj
YWxsIHRvIGF0dGVtcHRUb1dhdGNoKCkuCisgICAgICAgIHZvaWQgYXR0ZW1wdFRvV2F0Y2goKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wqIGFkZHJlc3NPZklzV2F0Y2hlZCgpOworICAgICAgICAK
KyAgICAgICAgdm9pZCBhZGRXYXRjaHBvaW50KFdhdGNocG9pbnQqKTsKKyAgICAgICAgCisgICAg
ICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQoKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG5vdGlmeVdyaXRlKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKExJS0VMWSghaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgbm90aWZ5V3JpdGVTbG93KCk7CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFJlYWRPbmx5Rmxh
ZyA9IDB4MTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4
MjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vdE51bGxGbGFnID0gMHg0OwotICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRmxhZ0JpdHMgPSAzOworICAgICAgICBzdGF0aWMg
Y29uc3QgaW50cHRyX3QgRmF0RmxhZyA9IDB4MTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0
cl90IFJlYWRPbmx5RmxhZyA9IDB4MjsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IERv
bnRFbnVtRmxhZyA9IDB4NDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IE5vdE51bGxG
bGFnID0gMHg4OworICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgRmxhZ0JpdHMgPSA0Owor
ICAgICAgICAKKyAgICAgICAgY2xhc3MgRmF0RW50cnkgeworICAgICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEZhdEVudHJ5KGlu
dHB0cl90IGJpdHMpCisgICAgICAgICAgICAgICAgOiBtX2JpdHMoYml0cyB8IEZhdEZsYWcpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlu
dHB0cl90IG1fYml0czsgLy8gYWx3YXlzIGhhcyBGYXRGbGFnIHNldCBhbmQgZXhhY3RseSBtYXRj
aGVzIHdoYXQgdGhlIGJpdHMgd291bGQgaGF2ZSBiZWVuIGlmIHRoaXMgd2Fzbid0IGZhdC4KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fd2F0Y2hwb2lu
dHM7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBjb3B5
U2xvdyhjb25zdCBTeW1ib2xUYWJsZUVudHJ5Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7CisgICAgICAgIAorICAgICAgICBib29sIGlzRmF0KCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IEZhdEVudHJ5KiBmYXRFbnRyeSgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0ZhdCgpKTsKKyAgICAgICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgRmF0RW50cnkqPihtX2JpdHMgJiB+RmF0RmxhZyk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBmYXRFbnRyeSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0ZhdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8RmF0RW50cnkqPihtX2JpdHMgJiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBpbmZsYXRlKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKExJS0VMWShpc0ZhdCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmF0RW50cnko
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZsYXRlU2xvdygpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBGYXRFbnRyeSogaW5mbGF0ZVNsb3coKTsKKyAgICAgICAgCisgICAgICAgIEFM
V0FZU19JTkxJTkUgaW50cHRyX3QgYml0cygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX2JpdHM7
CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBBTFdBWVNfSU5MSU5FIGludHB0cl90JiBiaXRzKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGlzRmF0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsK
KyAgICAgICAgICAgIHJldHVybiBtX2JpdHM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHZvaWQgZnJlZUZhdEVudHJ5KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKExJS0VMWSgh
aXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZnJlZUZhdEVu
dHJ5U2xvdygpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGZyZWVGYXRFbnRy
eVNsb3coKTsKIAogICAgICAgICB2b2lkIHBhY2soaW50IGluZGV4LCBib29sIHJlYWRPbmx5LCBi
b29sIGRvbnRFbnVtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2JpdHMgPSAoaW5kZXggPDwg
RmxhZ0JpdHMpIHwgTm90TnVsbEZsYWc7CisgICAgICAgICAgICBpbnRwdHJfdCYgYml0c1JlZiA9
IGJpdHMoKTsKKyAgICAgICAgICAgIGJpdHNSZWYgPSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGlu
ZGV4KSA8PCBGbGFnQml0cykgfCBOb3ROdWxsRmxhZzsKICAgICAgICAgICAgIGlmIChyZWFkT25s
eSkKLSAgICAgICAgICAgICAgICBtX2JpdHMgfD0gUmVhZE9ubHlGbGFnOworICAgICAgICAgICAg
ICAgIGJpdHNSZWYgfD0gUmVhZE9ubHlGbGFnOwogICAgICAgICAgICAgaWYgKGRvbnRFbnVtKQot
ICAgICAgICAgICAgICAgIG1fYml0cyB8PSBEb250RW51bUZsYWc7CisgICAgICAgICAgICAgICAg
Yml0c1JlZiB8PSBEb250RW51bUZsYWc7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJv
b2wgaXNWYWxpZEluZGV4KGludCBpbmRleCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
ICgoaW5kZXggPDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRzKSA9PSBpbmRleDsKKyAgICAgICAgICAg
IHJldHVybiAoKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpID4+IEZs
YWdCaXRzKSA9PSBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpOwogICAgICAgICB9CiAKLSAg
ICAgICAgaW50IG1fYml0czsKKyAgICAgICAgaW50cHRyX3QgbV9iaXRzOwogICAgIH07CiAKICAg
ICBzdHJ1Y3QgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFN5bWJvbFRh
YmxlRW50cnk+IHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjAxNTUpCisrKyBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTEwICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRv
IHNldCB3YXRjaHBvaW50cyBvbiBnbG9iYWwgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODY5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgYWJpbGl0eSB0byBzZXQg
dGhlIGlubGluZSBjYXBhY2l0eSBvZiBzZWdtZW50ZWQgdmVjdG9ycy4KKworICAgICAgICAqIHd0
Zi9TZWdtZW50ZWRWZWN0b3IuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChTZWdtZW50ZWRW
ZWN0b3JJdGVyYXRvcik6CisgICAgICAgIChXVEY6OlNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yOjpv
cGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjo6U2VnbWVu
dGVkVmVjdG9ySXRlcmF0b3IpOgorICAgICAgICAoU2VnbWVudGVkVmVjdG9yKToKKwogMjAxMi0w
Ni0xMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0
byBmaXggdGhlIGJ1aWxkLgpJbmRleDogU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgJKHJldmlzaW9u
IDEyMDE1NSkKKysrIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCwxMiArMzQsMTIgQEAKIG5hbWVzcGFjZSBXVEYgewogCiAgICAgLy8gQW4gaXRl
cmF0b3IgZm9yIFNlZ21lbnRlZFZlY3Rvci4gSXQgc3VwcG9ydHMgb25seSB0aGUgcHJlICsrIG9w
ZXJhdG9yCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZT4gY2xh
c3MgU2VnbWVudGVkVmVjdG9yOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2Vn
bWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yIHsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplID0gOCwgc2l6ZV90IElubGluZUNhcGFjaXR5
ID0gMzI+IGNsYXNzIFNlZ21lbnRlZFZlY3RvcjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
c2l6ZV90IFNlZ21lbnRTaXplID0gOCwgc2l6ZV90IElubGluZUNhcGFjaXR5ID0gMzI+IGNsYXNz
IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yIHsKICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQg
Y2xhc3MgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPjsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+OwogICAg
IHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdt
ZW50U2l6ZT4gSXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0
b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiBJdGVyYXRvcjsKIAogICAgICAgICB+
U2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoKSB7IH0KIApAQCAtNzUsNyArNzUsNyBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ICE9IG90aGVyLm1faW5kZXggfHwg
bV9zZWdtZW50ICE9IG90aGVyLm1fc2VnbWVudCB8fCAmbV92ZWN0b3IgIT0gJm90aGVyLm1fdmVj
dG9yOwogICAgICAgICB9CiAKLSAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3ImIG9wZXJh
dG9yPShjb25zdCBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4mIG90aGVy
KQorICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IFNlZ21l
bnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4mIG90aGVy
KQogICAgICAgICB7CiAgICAgICAgICAgICBtX3ZlY3RvciA9IG90aGVyLm1fdmVjdG9yOwogICAg
ICAgICAgICAgbV9zZWdtZW50ID0gb3RoZXIubV9zZWdtZW50OwpAQCAtODQsMjUgKzg0LDI4IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBTZWdt
ZW50ZWRWZWN0b3JJdGVyYXRvcihTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemU+JiB2ZWN0
b3IsIHNpemVfdCBzZWdtZW50LCBzaXplX3QgaW5kZXgpCisgICAgICAgIFNlZ21lbnRlZFZlY3Rv
ckl0ZXJhdG9yKFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+
JiB2ZWN0b3IsIHNpemVfdCBzZWdtZW50LCBzaXplX3QgaW5kZXgpCiAgICAgICAgICAgICA6IG1f
dmVjdG9yKHZlY3RvcikKICAgICAgICAgICAgICwgbV9zZWdtZW50KHNlZ21lbnQpCiAgICAgICAg
ICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFNl
Z21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZT4mIG1fdmVjdG9yOworICAgICAgICBTZWdtZW50
ZWRWZWN0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiYgbV92ZWN0b3I7CiAgICAg
ICAgIHNpemVfdCBtX3NlZ21lbnQ7CiAgICAgICAgIHNpemVfdCBtX2luZGV4OwogICAgIH07CiAK
ICAgICAvLyBTZWdtZW50ZWRWZWN0b3IgaXMganVzdCBsaWtlIFZlY3RvciwgYnV0IGl0IGRvZXNu
J3QgbW92ZSB0aGUgdmFsdWVzCiAgICAgLy8gc3RvcmVkIGluIGl0cyBidWZmZXIgd2hlbiBpdCBn
cm93cy4gVGhlcmVmb3JlLCBpdCBpcyBzYWZlIHRvIGtlZXAKLSAgICAvLyBwb2ludGVycyBpbnRv
IGEgU2VnbWVudGVkVmVjdG9yLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2Vn
bWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBT
ZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT47CisgICAgLy8gcG9pbnRlcnMg
aW50byBhIFNlZ21lbnRlZFZlY3Rvci4gVGhlIGRlZmF1bHQgdHVuaW5nIHZhbHVlcyBhcmUKKyAg
ICAvLyBvcHRpbWl6ZWQgZm9yIHNlZ21lbnRlZCB2ZWN0b3JzIHRoYXQgZ2V0IGxhcmdlOyB5b3Ug
bWF5IHdhbnQgdG8gdXNlCisgICAgLy8gU2VnbWVudGVkVmVjdG9yPHRoaW5neSwgMSwgMD4gaWYg
eW91IGRvbid0IGV4cGVjdCBhIGxvdCBvZiBlbnRyaWVzLgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgU2VnbWVudFNpemUsIHNpemVfdCBJbmxpbmVDYXBhY2l0eT4KKyAgICBjbGFz
cyBTZWdtZW50ZWRWZWN0b3IgeworICAgICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9y
SXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PjsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+IEl0
ZXJhdG9yOworICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21l
bnRTaXplLCBJbmxpbmVDYXBhY2l0eT4gSXRlcmF0b3I7CiAKICAgICAgICAgU2VnbWVudGVkVmVj
dG9yKCkKICAgICAgICAgICAgIDogbV9zaXplKDApCkBAIC0yNTAsNyArMjUzLDcgQEAgbmFtZXNw
YWNlIFdURiB7CiAKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKICAgICAgICAgU2VnbWVudCBtX2lu
bGluZVNlZ21lbnQ7Ci0gICAgICAgIFZlY3RvcjxTZWdtZW50KiwgMzI+IG1fc2VnbWVudHM7Cisg
ICAgICAgIFZlY3RvcjxTZWdtZW50KiwgSW5saW5lQ2FwYWNpdHk+IG1fc2VnbWVudHM7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2pzYy10
ZXN0LWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9qc2MtdGVzdC1saXN0
CShyZXZpc2lvbiAxMjAxNTUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2pzYy10ZXN0LWxpc3QJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDIzICs2NCw0NSBAQCBmYXN0L2pzL2RlYnVnZ2VyCiBmYXN0
L2pzL2RlY2xhcmF0aW9uLWluLWJsb2NrCiBmYXN0L2pzL2RlbGV0ZS1nZXR0ZXJzLXNldHRlcnMK
IGZhc3QvanMvZGVsZXRlLXRoZW4tcHV0Ci1mYXN0L2pzL2RmZy1hcmd1bWVudHMtb3NyLWV4aXQK
LWZhc3QvanMvZGZnLWFyZ3VtZW50cy1taXhlZC1hbGlhcworZmFzdC9qcy9kZmctYWRkLW5vdC1u
dW1iZXIKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcy1lc2NhcGUKK2Zhc3QvanMvZGZnLWFy
Z3VtZW50cy1hbGlhcy1vbmUtYmxvY2stb3NyLWV4aXQKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1h
bGlhcy1vbmUtYmxvY2stb3ZlcndyaXRlLWFyZ3VtZW50cworZmFzdC9qcy9kZmctYXJndW1lbnRz
LWFsaWFzLW9uZS1ibG9jay1vdmVyd3JpdGUKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcy1v
bmUtYmxvY2sKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcwogZmFzdC9qcy9kZmctYXJndW1l
bnRzLWNyb3NzLWNvZGUtb3JpZ2luCitmYXN0L2pzL2RmZy1hcmd1bWVudHMtbWl4ZWQtYWxpYXMK
K2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1vc3ItZXhpdAorZmFzdC9qcy9kZmctYXJndW1lbnRzLW91
dC1vZi1ib3VuZHMKIGZhc3QvanMvZGZnLWFyZ3VtZW50cy11bmV4cGVjdGVkLWVzY2FwZQotZmFz
dC9qcy9kZmctYXJndW1lbnRzLWFsaWFzCi1mYXN0L2pzL2RmZy1hcmd1bWVudHMtYWxpYXMtZXNj
YXBlCiBmYXN0L2pzL2RmZy1hcnJheS1sZW5ndGgtZGVhZAorZmFzdC9qcy9kZmctYnJhbmNoLW5v
dC1mYWlsCitmYXN0L2pzL2RmZy1jaGVjay10d28tc3RydWN0dXJlcworZmFzdC9qcy9kZmctY29u
c3RhbnQtZm9sZC1maXJzdC1sb2NhbC1yZWFkLWFmdGVyLWJsb2NrLW1lcmdlCiBmYXN0L2pzL2Rm
Zy1jb252ZXJ0LXRoaXMtZG9tLXdpbmRvdworZmFzdC9qcy9kZmctY3NlLWNmYS1kaXNjcmVwYW5j
eQorZmFzdC9qcy9kZmctZGVhZC1taW4tb25lLWFyZworZmFzdC9qcy9kZmctZGVhZC1taW4tdHdv
LWFyZ3MKK2Zhc3QvanMvZGZnLWRlYWQtc3BlY3VsYXRpb24KK2Zhc3QvanMvZGZnLWRlYWQtdmFy
aWFibGUtb24tZXhpdAorZmFzdC9qcy9kZmctZG91YmxlLXVzZS1vZi1wb3N0LXNpbXBsaWZpY2F0
aW9uLWRvdWJsZS1wcmVkaWN0aW9uCiBmYXN0L2pzL2RmZy1kb3VibGUtdm90ZS1mdXp6CiBmYXN0
L2pzL2RmZy1leGNlcHRpb24KIGZhc3QvanMvZGZnLWZsb2F0MzJhcnJheQogZmFzdC9qcy9kZmct
ZmxvYXQ2NGFycmF5CitmYXN0L2pzL2RmZy1mbHVzaC1nZXQtbG9jYWwKIGZhc3QvanMvZGZnLWdl
dC1ieS12YWwtY2xvYmJlcgogZmFzdC9qcy9kZmctZ2V0LWJ5LXZhbC1nZXR0ZXItY3NlCiBmYXN0
L2pzL2RmZy1nZXR0ZXItdGhyb3cKIGZhc3QvanMvZGZnLWdldHRlcgorZmFzdC9qcy9kZmctaW5s
aW5lLWFyZ3VtZW50cy1iZWNvbWUtZG91YmxlCitmYXN0L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRz
LWJlY29tZS1pbnQzMgogZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1pbnQzMgorZmFzdC9q
cy9kZmctaW5saW5lLWFyZ3VtZW50cy1vc3ItZXhpdC1hbmQtY2FwdHVyZQorZmFzdC9qcy9kZmct
aW5saW5lLWFyZ3VtZW50cy1vdXQtb2YtYm91bmRzCitmYXN0L2pzL2RmZy1pbmxpbmUtYXJndW1l
bnRzLXJlc2V0LWNoYW5nZXR5cGUKK2Zhc3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMtcmVzZXQK
IGZhc3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMtc2ltcGxlCiBmYXN0L2pzL2RmZy1pbmxpbmUt
YXJndW1lbnRzLXVzZS1kaXJlY3RseS1mcm9tLWlubGluZWQtY29kZQogZmFzdC9qcy9kZmctaW5s
aW5lLWFyZ3VtZW50cy11c2UtZnJvbS1hbGwtdGhlLXBsYWNlcy1icm9rZW4KQEAgLTk2LDYgKzEx
OCw3IEBAIGZhc3QvanMvZGZnLWlubGluZS11bnVzZWQtdGhpcy1tZXRob2QtY2gKIGZhc3QvanMv
ZGZnLWlubGluZS11bnVzZWQtdGhpcwogZmFzdC9qcy9kZmctaW5saW5pbmctcmVnLWFsbG9jCiBm
YXN0L2pzL2RmZy1pbnQxNmFycmF5CitmYXN0L2pzL2RmZy1pbnQzMi10by1kb3VibGUtb24ta25v
d24tbnVtYmVyCiBmYXN0L2pzL2RmZy1pbnQzMmFycmF5LW92ZXJmbG93LXZhbHVlcwogZmFzdC9q
cy9kZmctaW50MzJhcnJheQogZmFzdC9qcy9kZmctaW50OGFycmF5CkBAIC0xMDUsMTUgKzEyOCwy
NCBAQCBmYXN0L2pzL2RmZy1pbnRyaW5zaWMtdW51c2VkLXRoaXMtbWV0aG9kCiBmYXN0L2pzL2Rm
Zy1pbnRyaW5zaWMtdW51c2VkLXRoaXMKIGZhc3QvanMvZGZnLW1pbi1tYXgKIGZhc3QvanMvZGZn
LW11bHRpcGx5CitmYXN0L2pzL2RmZy1uZWdhdGl2ZS1hcnJheS1pbmRleAorZmFzdC9qcy9kZmct
b2J2aW91cy1jb25zdGFudC1jZmEKIGZhc3QvanMvZGZnLW90aGVyLWJyYW5jaAogZmFzdC9qcy9k
ZmctcG9pc29uLWZ1enoKK2Zhc3QvanMvZGZnLXByb3RvLWFjY2Vzcy1pbmxpbmUtb3NyLWV4aXQK
K2Zhc3QvanMvZGZnLXB1dC1ieS1pZC1wcm90b3R5cGUtY2hlY2sKK2Zhc3QvanMvZGZnLXB1dGJ5
dmFsLWNmYS1jbG9iYmVyCiBmYXN0L2pzL2RmZy1zdHJpbmctc3RyaWN0ZXEKK2Zhc3QvanMvZGZn
LXRlYXItb2ZmLWFyZ3VtZW50cy1ub3QtYWN0aXZhdGlvbgogZmFzdC9qcy9kZmctdWludDE2YXJy
YXkKLWZhc3QvanMvZGZnLXVpbnQzMmFycmF5LW92ZXJmbG93LXZhbHVlcwotZmFzdC9qcy9kZmct
dWludDMyLXRvLW51bWJlcgogZmFzdC9qcy9kZmctdWludDMyLXRvLW51bWJlci1vbi1jYXB0dXJl
ZC12YXJpYWJsZQorZmFzdC9qcy9kZmctdWludDMyLXRvLW51bWJlcgorZmFzdC9qcy9kZmctdWlu
dDMyYXJyYXktb3ZlcmZsb3ctY29uc3RhbnQKK2Zhc3QvanMvZGZnLXVpbnQzMmFycmF5LW92ZXJm
bG93LXZhbHVlcworZmFzdC9qcy9kZmctdWludDMyYXJyYXkKIGZhc3QvanMvZGZnLXVpbnQ4YXJy
YXkKIGZhc3QvanMvZGZnLXVpbnQ4Y2xhbXBlZGFycmF5CitmYXN0L2pzL2RmZy13ZWFrLWpzLWNv
bnN0YW50LXNpbGVudC1maWxsCiBmYXN0L2pzL2RpY3Rpb25hcnktbm8tY2FjaGUKIGZhc3QvanMv
ZGljdGlvbmFyeS1wcm90b3R5cGUtY2FjaGluZwogZmFzdC9qcy9kby13aGlsZS1zZW1pY29sb24K
QEAgLTEyNiw2ICsxNTgsNyBAQCBmYXN0L2pzL2V2YWwtdmFyLWRlY2wKIGZhc3QvanMvZXhjZXB0
aW9uLWV4cHJlc3Npb24tb2Zmc2V0CiBmYXN0L2pzL2V4Y2VwdGlvbi1mb3Itbm9ub2JqZWN0CiBm
YXN0L2pzL2V4Y2VwdGlvbi1saW5lbnVtcworZmFzdC9qcy9leGNlcHRpb24tcHJvcGFnYXRlLWZy
b20tZGZnLXRvLWxsaW50CiBmYXN0L2pzL2V4Y2VwdGlvbi1wcm9wZXJ0aWVzCiBmYXN0L2pzL2V4
Y2VwdGlvbi10cnktZmluYWxseS1zY29wZS1lcnJvcgogZmFzdC9qcy9leGNlcHRpb24td2l0aC1o
YW5kbGVyLWluc2lkZS1ldmFsLXdpdGgtZHluYW1pYy1zY29wZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147238</attachid>
            <date>2012-06-12 22:49:24 -0700</date>
            <delta_ts>2012-06-13 00:04:58 -0700</delta_ts>
            <desc>ummmm please apply?</desc>
            <filename>globalwatch_patch_15.diff</filename>
            <type>text/plain</type>
            <size>157034</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMCBA
QAorMjAxMi0wNi0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaW1wbGVtZW50cyBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgZm9sZGluZyBieSBhbGxv
d2luZyB0aGUgb3B0aW1pemluZworICAgICAgICBjb21waWxlciB0byBzZXQgYSAid2F0Y2hwb2lu
dCIgb24gZ2xvYmFscyB0aGF0IGl0IHdpc2hlcyB0byBjb25zdGFudCBmb2xkLgorICAgICAgICBJ
ZiB0aGUgd2F0Y2hwb2ludCBmaXJlcywgdGhlbiBhbiBPU1IgZXhpdCBpcyBmb3JjZWQgYnkgb3Zl
cndyaXRpbmcgdGhlCisgICAgICAgIG1hY2hpbmUgY29kZSB0aGF0IHRoZSBvcHRpbWl6aW5nIGNv
bXBpbGVyIGdlbmVyYXRlZCB3aXRoIGEganVtcC4KKyAgICAgICAgCisgICAgICAgIEFzIHN1Y2gs
IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHF1aXRlIGEgYml0IG9mIHN0dWZmOgorICAgICAgICAKKyAg
ICAgICAgLSBKdW1wIHJlcGxhY2VtZW50IG9uIHRob3NlIGhhcmR3YXJlIHRhcmdldHMgc3VwcG9y
dGVkIGJ5IHRoZSBvcHRpbWl6aW5nCisgICAgICAgICAgSklULiBJdCBpcyBub3cgcG9zc2libGUg
dG8gcGF0Y2ggaW4gYSBqdW1wIGluc3RydWN0aW9uIG92ZXIgYW55IHJlY29yZGVkCisgICAgICAg
ICAgd2F0Y2hwb2ludCBsYWJlbC4gVGhlIGp1bXAgbXVzdCBiZSAibG9jYWwiIGluIHRoZSBzZW5z
ZSB0aGF0IGl0IG11c3QgYmUKKyAgICAgICAgICB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBsYXJn
ZXN0IGp1bXAgZGlzdGFuY2Ugc3VwcG9ydGVkIGJ5IGEgb25lCisgICAgICAgICAgaW5zdHJ1Y3Rp
b24ganVtcC4KKyAgICAgICAgICAKKyAgICAgICAgLSBXYXRjaHBvaW50U2V0cyBhbmQgV2F0Y2hw
b2ludHMuIEEgV2F0Y2hwb2ludCBpcyBhIGRvdWJseS1saW5rZWQgbGlzdCBub2RlCisgICAgICAg
ICAgdGhhdCByZWNvcmRzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIGp1bXAgbXVzdCBiZSBpbnNlcnRl
ZCBhbmQgdGhlCisgICAgICAgICAgZGVzdGluYXRpb24gdG8gd2hpY2ggaXQgc2hvdWxkIGp1bXAu
IFdhdGNocG9pbnRzIGNhbiBiZSBhZGRlZCB0byBhCisgICAgICAgICAgV2F0Y2hwb2ludFNldC4g
VGhlIFdhdGNocG9pbnRTZXQgY2FuIGJlIGZpcmVkIGFsbCBhdCBvbmNlLCB3aGljaCBwbGFudHMK
KyAgICAgICAgICBhbGwganVtcHMuIFdhdGNocG9pbnRTZXQgYWxzbyByZW1lbWJlcnMgaWYgaXQg
aGFkIGV2ZXIgYmVlbiBpbnZhbGlkYXRlZCwKKyAgICAgICAgICB3aGljaCBhbGxvd3MgZm9yIG1v
bm90b25pY2l0eTogd2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8gb3B0aW1pemUgdXNpbmcKKyAg
ICAgICAgICB3YXRjaHBvaW50cyBvbiBzb21ldGhpbmcgZm9yIHdoaWNoIHdhdGNocG9pbnRzIGhh
ZCBwcmV2aW91c2x5IGZpcmVkLiBUaGUKKyAgICAgICAgICBhY3Qgb2Ygbm90aWZ5aW5nIGEgV2F0
Y2hwb2ludFNldCBoYXMgYSB0cml2aWFsIGZhc3QgcGF0aCBpbiBjYXNlIG5vCisgICAgICAgICAg
V2F0Y2hwb2ludHMgYXJlIHJlZ2lzdGVyZWQgKG9uZS1ieXRlIGxvYWQrYnJhbmNoKS4KKyAgICAg
ICAgCisgICAgICAgIC0gU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLiBJ
dCdzIGxpa2Ugc3BlY3VsYXRpb25DaGVjaygpLAorICAgICAgICAgIGV4Y2VwdCB0aGF0IHlvdSBk
b24ndCBoYXZlIHRvIGVtaXQgYnJhbmNoZXMuIEJ1dCwgeW91IG5lZWQgdG8ga25vdyB3aGF0Cisg
ICAgICAgICAgV2F0Y2hwb2ludFNldCB0byBhZGQgdGhlIHJlc3VsdGluZyBXYXRjaHBvaW50IHRv
LiBOb3QgZXZlcnl0aGluZyB0aGF0CisgICAgICAgICAgeW91IGNvdWxkIHdyaXRlIGEgc3BlY3Vs
YXRpb25DaGVjaygpIGZvciB3aWxsIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRoYXQKKyAgICAgICAg
ICB3b3VsZCBnZXQgbm90aWZpZWQgaWYgdGhlIGNvbmRpdGlvbiB5b3Ugd2VyZSBzcGVjdWxhdGlu
ZyBhZ2FpbnN0IGJlY2FtZQorICAgICAgICAgIGludmFsaWQuCisgICAgICAgICAgCisgICAgICAg
IC0gU3ltYm9sVGFibGVFbnRyeSBub3cgaGFzIHRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgV2F0
Y2hwb2ludFNldC4gSXQgY2FuCisgICAgICAgICAgZG8gc28gd2l0aG91dCBpbmN1cnJpbmcgYW55
IHNwYWNlIG92ZXJoZWFkIGZvciB0aG9zZSBlbnRyaWVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICBo
YXZlIFdhdGNocG9pbnRTZXRzLgorICAgICAgICAgIAorICAgICAgICAtIFRoZSBieXRlY29kZSBn
ZW5lcmF0b3IgaW5mZXJzIGFsbCBnbG9iYWwgZnVuY3Rpb24gdmFyaWFibGVzIHRvIGJlCisgICAg
ICAgICAgd2F0Y2hhYmxlLCBhbmQgbWFrZXMgYWxsIHN0b3JlcyBwZXJmb3JtIHRoZSBXYXRjaHBv
aW50U2V0J3Mgd3JpdGUgY2hlY2ssCisgICAgICAgICAgYW5kIG1hcmtzIGFsbCBsb2FkcyBhcyBi
ZWluZyBwb3RlbnRpYWxseSB3YXRjaGFibGUgKGkuZS4geW91IGNhbiBjb21waWxlCisgICAgICAg
ICAgdGhlbSB0byBhIHdhdGNocG9pbnQgYW5kIGEgY29uc3RhbnQpLgorICAgICAgICAKKyAgICAg
ICAgUHV0IHRvZ2V0aGVyLCB0aGlzIGFsbG93cyBmb3IgZnVsbHkgc2xlYXp5IGlubGluaW5nIG9m
IGNhbGxzIHRvIGdsb2JhbGx5CisgICAgICAgIGRlY2xhcmVkIGZ1bmN0aW9ucy4gVGhlIGlubGlu
ZSBwcm9sb2d1ZSB3aWxsIG5vIGxvbmdlciBjb250YWluIHRoZSBsb2FkIG9mCisgICAgICAgIHRo
ZSBmdW5jdGlvbiwgb3IgYW55IGNoZWNrcyBvZiB0aGUgZnVuY3Rpb24geW91J3JlIGNhbGxpbmcu
IEkuZS4gaXQncworICAgICAgICBwcmV0dHkgbXVjaCBsaWtlIHRoZSBraW5kIG9mIGlubGluaW5n
IHlvdSB3b3VsZCBzZWUgaW4gSmF2YSBvciBDKysuCisgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUg
d2F0Y2hwb2ludGluZyBmdW5jdGlvbmFsaXR5IGlzIGJ1aWx0IHRvIGJlIGZhaXJseSBnZW5lcmFs
LAorICAgICAgICBhbmQgc2hvdWxkIGFsbG93IHNldHRpbmcgd2F0Y2hwb2ludHMgb24gYWxsIHNv
cnRzIG9mIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHNsZWF6eSBpbmxpbmluZyBtZWFucyB0aGF0IHdlIHdpbGwgbm93IHNv
bWV0aW1lcyBpbmxpbmUgaW4gY29kZSBwYXRocworICAgICAgICB0aGF0IGhhdmUgbmV2ZXIgZXhl
Y3V0ZWQuIFByZXZpb3VzbHksIHRvIGlubGluZSB3ZSB3b3VsZCBoYXZlIGVpdGhlciBoYWQKKyAg
ICAgICAgdG8gaGF2ZSBleGVjdXRlZCB0aGUgY2FsbCAodG8gcmVhZCB0aGUgY2FsbCdzIGlubGlu
ZSBjYWNoZSkgb3IgaGF2ZQorICAgICAgICBleGVjdXRlZCB0aGUgbWV0aG9kIGNoZWNrICh0byBy
ZWFkIHRoZSBtZXRob2QgY2hlY2sncyBpbmxpbmUgY2FjaGUpLiBOb3csCisgICAgICAgIHdlIG1p
Z2h0IGlubGluZSB3aGVuIHRoZSBjYWxsZWUgaXMgYSB3YXRjaGVkIGdsb2JhbCB2YXJpYWJsZS4g
VGhpcworICAgICAgICByZXZlYWxlZCBzb21lIGh1bW9yb3VzIGJ1Z3MuIEZpcnN0LCBjb25zdGFu
dCBmb2xkaW5nIGRpc2FncmVlZCB3aXRoIENGQQorICAgICAgICBvdmVyIHdoYXQga2luZHMgb2Yg
b3BlcmF0aW9ucyBjYW4gY2xvYmJlciAoZXhhbXBsZTogY29kZSBwYXRoIEEgaXMgZGVhZAorICAg
ICAgICBidXQgc3RvcmVzIGEgU3RyaW5nIGludG8gdmFyaWFibGUgWCwgYWxsIG90aGVyIGNvZGUg
cGF0aHMgc3RvcmUgMCBpbnRvCisgICAgICAgIFgsIGFuZCB0aGVuIHlvdSBkbyBDb21wYXJlRXEo
WCwgMCkgLSBDRkEgd2lsbCBzYXkgdGhhdCB0aGlzIGlzIGEgbm9uLQorICAgICAgICBjbG9iYmVy
aW5nIGNvbnN0YW50LCBidXQgY29uc3RhbnQgZm9sZGluZyB0aG91Z2h0IGl0IHdhcyBjbG9iYmVy
aW5nCisgICAgICAgIGJlY2F1c2UgaXQgc2F3IHRoZSBTdHJpbmcgcHJlZGljdGlvbikuIFNlY29u
ZCwgaW5saW5pbmcgd291bGQgY3Jhc2ggaWYKKyAgICAgICAgdGhlIGlubGluZSBjYWxsZWUgaGFk
IG5vdCBiZWVuIGNvbXBpbGVkLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggYnVncywKKyAgICAgICAg
c2luY2Ugb3RoZXJ3aXNlIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyB3b3VsZCByZXBvcnQgcmVn
cmVzc2lvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJsZXIpOgor
ICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNdjdBc3NlbWJsZXIpOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6
QVJNdjdBc3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjptYXhKdW1wUmVw
bGFjZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgor
ICAgICAgICAoTGFiZWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjp3
YXRjaHBvaW50TGFiZWwpOgorICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2Vt
YmxlckFSTSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgor
ICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTXY3OjpicmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6Omp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjptYWtlQnJhbmNo
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3Jv
QXNzZW1ibGVyTUlQUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpyZXBsYWNlV2l0aEp1bXApOgor
ICAgICAgICAoTWFjcm9Bc3NlbWJsZXJTSDQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clNINDo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2XzY0OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcGJf
aW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnRlc3RiX2ltKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpsYWJlbEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0
aEp1bXApOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNp
emUpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVy
OjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRPU1JFeGl0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KToKKyAgICAgICAgKENvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kV2F0Y2hwb2ludCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZXYXRjaHBvaW50cyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6d2F0Y2hwb2ludCk6CisgICAgICAgIChERkdEYXRhKToKKyAgICAgICAgKiBi
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kVG9T
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kSXNDb3VudGFibGUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChJbnN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUv
T3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwYWRPcGNvZGVOYW1lKToK
KyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojp+V2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6
OldhdGNocG9pbnQ6OmNvcnJlY3RMYWJlbHMpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojpm
aXJlKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OldhdGNocG9pbnRTZXQ6On5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6
V2F0Y2hwb2ludFNldDo6YWRkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6bm90aWZ5
V3JpdGVTbG93KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbFdhdGNocG9p
bnRzKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50OjpX
YXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6c2V0RGVzdGluYXRpb24pOgor
ICAgICAgICAoV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Omlz
U3RpbGxWYWxpZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Omhhc0JlZW5JbnZhbGlk
YXRlZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OnN0YXJ0V2F0Y2hpbmcpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZSk6CisgICAgICAgIChKU0M6Oldh
dGNocG9pbnRTZXQ6OmFkZHJlc3NPZklzV2F0Y2hlZCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6Y2hl
Y2tWYWxpZGl0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxW
YXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1Zhcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhSZXNvbHZl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4UmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKToKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RT
dGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6Y2xvYmJl
clN0cnVjdHVyZXMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAg
IChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpkaWRD
bG9iYmVyKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDQ2Fs
bEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyV2F0Y2hwb2ludEVs
aW1pbmF0aW9uKToKKyAgICAgICAgKENTRVBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQ
aGFzZTo6Z2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NF
UGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZv
bGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6aXNTZXQpOgorICAg
ICAgICAoQ29ycmVjdGFibGVKdW1wUG9pbnQpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllck51bWJlckZvckNo
ZWNrKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlkZW50aWZp
ZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzUmVnaXN0ZXJQ
b2ludGVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6
Ok9TUkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgIChPU1JFeGl0
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2lu
dCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6
OkpJVFRodW5rczo6SklUVGh1bmtzKToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJ
T04pOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVHZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xU
YWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmNvcHlTbG93KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdyk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmNvdWxkQmVXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGVFbnRyeTo6YXR0ZW1wdFRvV2F0Y2gpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
OjphZGRyZXNzT2ZJc1dhdGNoZWQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojph
ZGRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3Jp
dGVTbG93KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZVNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChTeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEZhc3QpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5OjpGYXN0OjpGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6RmFzdDo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6
Z2V0SW5kZXgpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc1JlYWRP
bmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6Z2V0QXR0cmlidXRl
cyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzRmF0KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6On5TeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0SW5kZXgp
OgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRGYXN0KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmlzUmVhZE9ubHkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojp3YXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5
V3JpdGUpOgorICAgICAgICAoRmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVu
dHJ5OjpGYXRFbnRyeTo6RmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojppc0ZhdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmZhdEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZSk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmJpdHMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpm
cmVlRmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpwYWNrKToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNWYWxpZEluZGV4KToKKwogMjAxMi0wNi0x
MiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGZvciBBUk12NyBkZWJ1ZyBidWlsZHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgU0VUKEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogICAg
IGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKKyAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcAogCiAgICAgYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0yMzEsNiArMjMyLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1l
L1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwCiAg
ICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKyAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNw
cAogICAgIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuY3BwCiAgICAgcnVudGltZS9VU3RyaW5nLmNw
cAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2
aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmggXApAQCAtNjAzLDYgKzYwNSw3IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZXJtaW5hdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2MiwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUv
T3Bjb2RlLmNwcCBcCiAgICAgYnl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgXAot
ICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAgXAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAgXAorICAgIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
IFwKKyAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgXAog
ICAgIGhlYXAvQ29waWVkU3BhY2UuY3BwIFwKQEAgLTIzNiw2ICsyMzcsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIFwKICAgICBydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcCBcCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKKyAgICBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAgICAgcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAg
XAogICAgIHJ1bnRpbWUvVVN0cmluZy5jcHAgXAogICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcCBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNTQsNiArMTI1NCwxMCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFN5bWJvbFRhYmxl
LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5ccnVudGltZVxTeW1ib2xUYWJsZS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2ODEsNiAr
MTY4NSwxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcVmFsdWVQcm9maWxl
LmgiCiAJCQkJPgogCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGJ5dGVjb2RlXFdhdGNocG9pbnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxXYXRjaHBvaW50LmgiCisJCQkJPgorCQkJ
PC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgogCQkJTmFtZT0iZGVidWdnZXIiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOSBAQAogCQkwRjkxOUQwRDE1N0VFMEEyMDA0
QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9s
VGFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAg
Ki87IH07CiAJCTBGOTE5RDExMTU3RjMzMkMwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjkxOUQwRjE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTE5RDI1
MTU4NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRj
aHBvaW50LmNwcCAqLzsgfTsKKwkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5
RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8q
IFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOTE5RDI3MTU4NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgKi87IH07
CiAJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5MzE0Q0E3REMx
MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovOyB9OwogCQkwRjkzMzI5RTE0Q0E3REM1
MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0
YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGOTMzMjlGMTRDQTdEQ0EwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk1MTRDQTdEQzEwMDg1
RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTM3MCwxMCArMzczLDEwIEBACiAJ
CTdFNEVFNzBGMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwRTBFQkI3QTVCMDA1
OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovOyB9OwogCQk3RUZGMDA2NDBFQzA1QTlBMDBB
QTdDOTMgLyogTm9kZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFRkYwMDYzMEVDMDVBOUEwMEFBN0M5MyAvKiBOb2RlSW5mby5oICovOyB9Owog
CQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ2MEZBRkJBMkQw
MDAwMTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oICovOyB9OwotCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyB9OwotCQk4
NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUxMEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oICovOyB9OwotCQk4NjAxNjFFNjBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAv
KiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovOyB9OworCQk4NjAxNjFFMzBGM0E4M0MxMDBG
ODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJY
ODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2
MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDE2MUU1MEYzQTgzQzEwMEY4
NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAx
NjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjA0RjUwNTE0M0NF
MUMyMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjA0RjUwMzE0M0NFMUMxMDBCMjk1RjUgLyogSlNHbG9iYWxU
aGlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8q
IEludHJpbnNpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxMkU0Q0IxNTIyOTE4NDAw
QzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTQwMSwxMSArNDA0LDExIEBACiAJCTg2OUQwNEFGMTE5M0I1NEQw
MDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlEMDRBRTExOTNCNTREMDA4MDM0NzUg
LyogQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBS
ZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QTkwRUQwMEVFN0Q1MUYwMEFC
MzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGlj
LmNwcCAqLzsgfTsKLQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0
MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgfTsKLQkJODZBREQxNDYw
RkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAv
KiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IH07CisJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVD
MiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZBREQx
NDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBRTY0QTgxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNz
ZW1ibGVyU0g0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QUU2NEE1MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5jcHAgKi87
IH07Ci0JCTg2QUU2NEE5MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTYxMzVF
NUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggKi87IH07Ci0JCTg2QUU2NEFBMTM1
RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3Nl
bWJsZXIuaCAqLzsgfTsKKwkJODZBRTY0QTkxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1i
bGVyU0g0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkFFNjRBNjEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkFFNjRBQTEzNUU1RTFD
MDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkFFNjRBNzEzNUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZB
RTZDNEQxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2QzRCMTM2QTExRTQwMDk2MzAxMiAvKiBE
RkdGUFJJbmZvLmggKi87IH07CiAJCTg2QUU2QzRFMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFF
NkM0QzEzNkExMUU0MDA5NjMwMTIgLyogREZHR1BSSW5mby5oICovOyB9OwogCQk4NkI1ODI2NzE0
RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQ
cm9maWxlLmNwcCAqLzsgfTsKQEAgLTQxNCw4ICs0MTcsOCBAQAogCQk4NkJCMDlDMTEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAq
LzsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEy
ODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCAqLzsgfTsKLQkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQ
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwotCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1h
Y3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QzU2
OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyog
TUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2Q0EwMzJFMTAzOEU4NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0EwMzJEMTAzOEU4
NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCAqLzsgfTsKIAkJODZDQUZFRTMxMDM1RERFNjAw
MjhBNjA5IC8qIEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2Q0FGRUUyMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDQzg1QTEw
RUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0M4NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBK
SVRJbmxpbmVNZXRob2RzLmggKi87IH07CkBAIC00MjMsMTMgKzQyNiwxMyBAQAogCQk4NkNDODVD
NDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQzg1QzMwRUU3QTg5NDAwMjg4Njgy
IC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCAqLzsgfTsKIAkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3
RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEM0IyQzMxMDE1NkJERTAw
Mjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJCRjEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVy
LmNwcCAqLzsgfTsKLQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzAx
MDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oICovOyB9OwotCQk4NkQzQjJDNTEwMTU2
QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzExMDE1NkJERTAw
Mjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAqLzsgfTsKLQkJODZE
M0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1
RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCAqLzsgfTsKLQkJODZEM0IzQzMxMDE1OUQ3RjAwMjg2
NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2RDNCM0MxMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggKi87IH07
Ci0JCTg2RDNCM0M0MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjNDMjEwMTU5RDdGMDAy
ODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oICovOyB9OworCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1
RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzUx
MDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAxNTZC
REUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzYxMDE1NkJE
RTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9B
c3NlbWJsZXJBUk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAw
Mjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NkQzQjNDNDEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0Iz
QzIxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEg
LyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2REI2NDYzMEY5NUM2RkMwMEQ3RDkyMSAvKiBF
eGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwICovOyB9OwotCQk4NkUxMTZCMTBGRTc1
QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0
aW9uLmggKi87IH07CisJCTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTExNkIw
MEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkU4NTUzOTExMUI5OTY4MDAxQUY1MUUgLyog
SlNTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi87
IH07CiAJCTg2RUJGMkZGMTU2MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQkYyRjkxNTYw
RjAzNjAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTg2RUJGMzAwMTU2
MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUJGMkZBMTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1l
Q29uc3RydWN0b3IuaCAqLzsgfTsKQEAgLTQ3NSw4ICs0NzgsOCBAQAogCQk5NUY2RTY5NTBFNUI1
Rjk3MDA5MUU4NjAgLyogSlNQcm9maWxlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpT
UHJvZmlsZXJQcml2YXRlLmNwcCAqLzsgfTsKIAkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8q
IExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi87IH07CiAJCTk2
MDYyNjk2MEZCOEVDMDIwMDk3OThBQiAvKiBKSVRTdHViQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTYwNjI2OTUwRkI4RUMwMjAwOTc5OEFCIC8q
IEpJVFN0dWJDYWxsLmggKi87IH07Ci0JCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3Nl
bWJsZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk2ODhDQjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLzsgfTsK
LQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2
NDlGIC8qIFg4NkFzc2VtYmxlci5oICovOyB9OworCQk5Njg4Q0IxNTBFRDEyQjRFMDAxRDY0OUYg
LyogQXNzZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTY4OENC
MTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4
NkFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjEwRUQx
Q0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggKi87IH07CiAJCTk2OUEwNzJBMEVE
MUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTY5QTA3MjcwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggKi87IH07
CiAJCTk2OUEwNzJCMEVEMUNFNjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyODBFRDFDRTY5MDBGMUY2
ODEgLyogUmVnaXN0ZXJJRC5oICovOyB9OwpAQCAtODM2LDYgKzgzOSw5IEBACiAJCTBGOTE5RDBB
MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3ltYm9sVGFibGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEUxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOTE5RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMjIxNTg1M0NERTAwNEE0
RTdEIC8qIFdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTE5RDIz
MTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5
MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxMaW5rU3RhdHVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2
IC8qIENhbGxMaW5rU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxMaW5rU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjk1MTRD
QTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdldEJ5SWRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA0NSw2ICsyMDUxLDcgQEAKIAkJCQk3RTRFRTcwRTBFQkI3QTVCMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uY3BwICovLAogCQkJCTdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAv
KiBTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOTA0MTQ3MEVCOTI1MDkwMEZFMjZGQSAvKiBT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCAqLywKKwkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRF
N0QgLyogU3ltYm9sVGFibGUuY3BwICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAv
KiBTeW1ib2xUYWJsZS5oICovLAogCQkJCTk3RjY5MDNBMTE2OURGN0YwMEE2QkI0NiAvKiBUZXJt
aW5hdG9yLmggKi8sCiAJCQkJMTRBNDJFM0QwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVj
a2VyLmNwcCAqLywKQEAgLTIyOTYsNiArMjMwMyw4IEBACiAJCQkJMEY5NjNCMzYxM0ZDNkZERTAw
MDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4
RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8sCiAJCQkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8q
IFZpcnR1YWxSZWdpc3Rlci5oICovLAorCQkJCTBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBX
YXRjaHBvaW50LmNwcCAqLywKKwkJCQkwRjkxOUQyMzE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hw
b2ludC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yNjcxLDYgKzI2ODAsNyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMy
NTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE5RDI2MTU4NTNDRTMwMDRB
NEU3RCAvKiBXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTMyNDUsNiArMzI1NSw4IEBA
CiAJCQkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRF
N0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjkxOUQyNTE1ODUzQ0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12
N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMs
MTIgQEAgcHVibGljOgogICAgICAgICBKdW1wTGlua1R5cGUgbV9saW5rVHlwZSA6IDg7CiAgICAg
ICAgIENvbmRpdGlvbiBtX2NvbmRpdGlvbiA6IDE2OwogICAgIH07CisgICAgCisgICAgQVJNdjdB
c3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisg
ICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICB7Cisg
ICAgfQogCiBwcml2YXRlOgogCkBAIC0xODIwLDEwICsxODI2LDI1IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDhJbW04KE9QX05PUF9UMSwgMCk7CiAgICAg
fQorICAgIAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgewor
ICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9p
bmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgp
OworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOwor
ICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQp
IDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxp
Z24oaW50IGFsaWdubWVudCkKQEAgLTIwNjcsNiArMjA4OCwzMCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7
CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICBBU1NFUlQo
IShiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0bykgJiAxKSk7CisgICAgICAgIHVpbnQxNl90KiBw
dHIgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAyOwor
ICAgICAgICAKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UncmUgbm90IGluIG9uZSBvZiB0aG9z
ZSBlcnJhdGEtdHJpZ2dlcmluZyB0aGluZ2llcy4gSWYgd2UgYXJlLCB0aGVuCisgICAgICAgIC8v
IHByZXBlbmQgYSBub3AuCisgICAgICAgIGJvb2wgc3BhbnNUd280SyA9ICgocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4ocHRyKSAmIDB4ZmZmKSA9PSAweDAwMik7CisgICAgICAgIAorICAgICAg
ICBpZiAoc3BhbnNUd280SykgeworICAgICAgICAgICAgcHRyWy0yXSA9IE9QX05PUF9UMTsKKyAg
ICAgICAgICAgIHB0cisrOworICAgICAgICB9CisKKyAgICAgICAgbGlua0p1bXBUNChwdHIsIHRv
KTsKKyAgICAgICAgY2FjaGVGbHVzaChwdHIgLSAyLCBzaXplb2YodWludDE2X3QpICogMik7Cisg
ICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gNjsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBkZWJ1Z09m
ZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KIApAQCAtMjYwNCw2
ICsyNjQ5LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxMaW5rUmVjb3JkPiBtX2p1bXBzVG9M
aW5rOwogICAgIFZlY3RvcjxpbnQzMl90PiBtX29mZnNldHM7CisgICAgaW50IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEy
MDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBMaW5rQnVmZmVyOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKK2NsYXNzIFdhdGNocG9p
bnQ7CiBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENvcnJlY3RhYmxlSnVtcFBvaW50OwogfQpAQCAt
NzAsNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgdXNl
ZCBhcyBvcGVyYW5kcyB0byBNYWNyb0Fzc2VtYmxlciBvcGVyYXRpb25zLAogICAgIC8vIGRlc2Ny
aWJpbmcgaW1tZWRpYXRlICBhbmQgbWVtb3J5IG9wZXJhbmRzIHRvIHRoZSBpbnN0cnVjdGlvbnMg
dG8gYmUgcGxhbnRlZC4KIAotCiAgICAgZW51bSBTY2FsZSB7CiAgICAgICAgIFRpbWVzT25lLAog
ICAgICAgICBUaW1lc1R3bywKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKdW1wOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOwogICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFdhdGNocG9pbnQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIExhYmVsKCkKQEAgLTU1OSw2
ICs1NjAsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAgfQog
ICAgIAorICAgIExhYmVsIHdhdGNocG9pbnRMYWJlbCgpCisgICAgeworICAgICAgICBMYWJlbCBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2xhYmVsID0gbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRj
aHBvaW50KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIExhYmVs
IGFsaWduKCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFsaWduKDE2KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAko
cmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3Nl
bWJsZXJCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBFTkFC
TEUoQVNTRU1CTEVSKQogCisjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkpJVENvbXBpbGF0aW9uRWZmb3J0LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAj
aW5jbHVkZSAic3RkaW50LmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8aml0L0V4
ZWN1dGFibGVBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk0uaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEwLDYgKzEwMTAs
MTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRp
b24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHBy
b3RlY3RlZDoKICAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMjAx
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4Niw2ICsxMTg2LDE2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29k
ZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBUk12N0Fzc2VtYmxl
cjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRlc3Rp
bmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBBUk12N0Fz
c2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KIAogICAgIC8vIEZvcndh
cmRzIC8gZXh0ZXJuYWwgY29udHJvbCBmbG93IG9wZXJhdGlvbnM6CiAgICAgLy8KQEAgLTEzNTYs
NiArMTM2NiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzayk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hUZXN0
OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRy
ZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFU
ZW1wUmVnaXN0ZXIuIDotLworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0
ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkOChBZGRyZXNzKGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrKTsKKyAgICB9CisKICAgICB2
b2lkIGp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5i
eCh0YXJnZXQpOwpAQCAtMTY3OSwxMiArMTY5NywxNCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgQUxXQVlTX0lOTElORSBKdW1wIGp1bXAoKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bGFiZWwoKTsgLy8gRm9yY2Ugbm9wLXBhZGRpbmcgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBh
IHdhdGNocG9pbnQuCiAgICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMy
KDApLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIu
YngoZGF0YVRlbXBSZWdpc3RlciksIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBBUk12N0Fzc2VtYmxl
cjo6SnVtcE5vQ29uZGl0aW9uRml4ZWRTaXplIDogQVJNdjdBc3NlbWJsZXI6Okp1bXBOb0NvbmRp
dGlvbik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKdW1wIG1ha2VCcmFuY2goQVJNdjdB
c3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGFi
ZWwoKTsgLy8gRm9yY2Ugbm9wLXBhZGRpbmcgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdh
dGNocG9pbnQuCiAgICAgICAgIG1fYXNzZW1ibGVyLml0KGNvbmQsIHRydWUsIHRydWUpOwogICAg
ICAgICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0
ZXIpLCBtX21ha2VKdW1wUGF0Y2hhYmxlID8gQVJNdjdBc3NlbWJsZXI6Okp1bXBDb25kaXRpb25G
aXhlZFNpemUgOiBBUk12N0Fzc2VtYmxlcjo6SnVtcENvbmRpdGlvbiwgY29uZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NjgsNiArMTg2OCwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0
PHZvaWQoKikoKT4oTUlQU0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRp
b24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgLy8gSWYgbV9maXhlZFdpZHRoIGlzIHRydWUsIHdlIHdpbGwgZ2VuZXJhdGUg
YSBmaXhlZCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zLgogICAgIC8vIE90aGVyd2lzZSwgd2UgY2Fu
IGVtaXQgYW55IG51bWJlciBvZiBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCShyZXZpc2lvbiAx
MjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
U0g0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NzEsNiArMTk3MSwxNyBAQCB2b2lkIG9yMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzCiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oU0g0QXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChj
YWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VX
aXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25M
YWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFNINEFzc2VtYmxlcjo6Q29uZGl0aW9uIFNINENv
bmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2
aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZERvdWJsZTsKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmVEb3VibGU7CiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmNvbnZlcnRJbnQzMlRvRG91YmxlOworICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0ODsKIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xNjUs
NiArMTY2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9pMzJyKGluaXRp
YWxWYWx1ZS5hc0ludHB0cigpLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0
aGlzKTsKICAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24g
Y29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtYXNrLm1fdmFsdWUgPj0gLTEyOCAm
JiBtYXNrLm1fdmFsdWUgPD0gMjU1KTsKKyAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGJfaW0oMCwgYWRkcmVzcy5tX3B0cik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RiX2ltKG1hc2subV92YWx1ZSwg
YWRkcmVzcy5tX3B0cik7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsKKyAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBk
YXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRy
KDApKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDEyMDE2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwOCw2ICsxNDA4LDE2IEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhK
dW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVs
IGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1
bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6
Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTEzLDYgKzUxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjptb3ZlKGFkZHIsIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQmFzZUluZGV4KHNjcmF0Y2hS
ZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBUaW1lc09uZSksIG1hc2spOwogICAgIH0KKyAgICAKKyAg
ICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlciksIG1h
c2spOworICAgIH0KIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpIHsg
cmV0dXJuIHRydWU7IH0KICAgICAvLyBTZWUgY29tbWVudCBvbiBNYWNyb0Fzc2VtYmxlckFSTXY3
OjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMDE2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI0Nyw2ICsyNDcsOCBAQCBwcml2YXRlOgogcHVibGljOgogCiAgICAgWDg2QXNzZW1i
bGVyKCkKKyAgICAgICAgOiBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAg
ICAsIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAgICAgewogICAgIH0K
IApAQCAtNzk4LDYgKzgwMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQorICAg
IAorI2lmIENQVShYODYpCisgICAgdm9pZCBjbXBiX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIs
IEdST1VQMV9PUF9DTVAsIGFkZHIpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgfQorI2VuZGlmCiAKICAgICB2b2lkIGNtcGxfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewpA
QCAtOTQ4LDYgKzk1OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTgoaW1tKTsKICAgICB9CiAKKyNpZiBDUFUoWDg2KQorICAgIHZvaWQgdGVzdGJfaW0oaW50IGlt
bSwgY29uc3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDNfRWJJYiwgR1JPVVAzX09QX1RFU1QsIGFkZHIpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIHRlc3RsX2kz
Mm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAzX0V2SXosIEdST1VQM19PUF9URVNULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CkBA
IC0xNzAyLDEwICsxNzIwLDI1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Zv
cm1hdHRlci5jb2RlU2l6ZSgpOwogICAgIH0KKyAgICAKKyAgICBBc3NlbWJsZXJMYWJlbCBsYWJl
bEZvcldhdGNocG9pbnQoKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0g
bV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVzdWx0
Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCkKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGxhYmVsKCk7CisgICAgICAgIG1faW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1f
b2Zmc2V0OworICAgICAgICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5t
X29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0
ID0gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19j
YXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50
KSkgeworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtX2Zvcm1hdHRl
ci5sYWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAg
ICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkKQEAgLTE3ODcsNiArMTgyMCwy
MCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hl
cmUpWy0xXTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgeworICAgICAgICBpbnQ4X3QqIHB0ciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIGlu
dDhfdCogZHN0UHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPih0byk7CisgICAgICAgIGlu
dHB0cl90IGRpc3RhbmNlID0gKGludHB0cl90KShkc3RQdHIgLSAocHRyICsgNSkpOworICAgICAg
ICBwdHJbMF0gPSBPUF9KTVBfcmVsMzI7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PGludDMy
X3QqPihwdHIgKyAxKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRpc3RhbmNlKTsKKyAgICB9Cisg
ICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7
CisgICAgICAgIHJldHVybiA1OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0
Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxsKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNhbGwuaXNTZXQoKSk7CkBAIC0yMzM5LDYgKzIzODYsOCBAQCBwcml2YXRlOgogCiAgICAg
ICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsKICAgICB9IG1fZm9ybWF0dGVyOworICAgIGlu
dCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKKyAgICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdh
dGNocG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTI4LDEyICs5MjgsMjggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjLCBjbwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOiB7CisgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9nbG9iYWxfdmFyX3dhdGNoYWJsZVx0ICVzLCBn
JWQoJXApXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIG1fZ2xv
YmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBv
aW50ZXIpOworICAgICAgICAgICAgaXQrKzsKKyAgICAgICAgICAgIGl0Kys7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOiB7CiAg
ICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0
KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9nbG9iYWxfdmFyXHQgZyVkKCVw
KSwgJXNcbiIsIGxvY2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVn
aXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrOiB7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4q
IHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CisgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IHB1dF9nbG9iYWxfdmFyX2NoZWNrXHQgZyVkKCVwKSwgJXNcbiIsIGxvY2F0aW9uLCBtX2dsb2Jh
bE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2lu
dGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBpdCsrOwor
ICAgICAgICAgICAgaXQrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfcmVzb2x2ZV9iYXNlOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTEz
MDYsNyArMTMyMiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28K
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGxfcHV0X3Jlc3VsdDogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSBvcF9jYWxsX3B1dF9yZXN1bHRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gY2FsbF9wdXRfcmVz
dWx0XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTIw
MTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1
ZGUgIlVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIK
KyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KQEAgLTI3MywxMCArMjc0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBlbmRP
U1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkKKyAgICAgICAgdW5zaWduZWQgYXBw
ZW5kT1NSRXhpdChjb25zdCBERkc6Ok9TUkV4aXQmIG9zckV4aXQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQg
cmVzdWx0ID0gbV9kZmdEYXRhLT5vc3JFeGl0LnNpemUoKTsKICAgICAgICAgICAgIG1fZGZnRGF0
YS0+b3NyRXhpdC5hcHBlbmQob3NyRXhpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBERkc6Ok9TUkV4aXQmIGxhc3RPU1JFeGl0KCkK
QEAgLTI4NCwxMCArMjg3LDIwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IG1fZGZnRGF0YS0+b3NyRXhpdC5sYXN0KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IHZvaWQgYXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShjb25zdCBERkc6OlNwZWN1bGF0aW9uUmVj
b3ZlcnkmIHJlY292ZXJ5KQorICAgICAgICB1bnNpZ25lZCBhcHBlbmRTcGVjdWxhdGlvblJlY292
ZXJ5KGNvbnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5z
aWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LnNpemUoKTsKICAg
ICAgICAgICAgIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5hcHBlbmQocmVjb3Zlcnkp
OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdW5zaWduZWQgYXBwZW5kV2F0Y2hwb2ludChjb25zdCBXYXRjaHBvaW50JiB3YXRjaHBvaW50
KQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuc2l6ZSgp
OworICAgICAgICAgICAgbV9kZmdEYXRhLT53YXRjaHBvaW50cy5hcHBlbmQod2F0Y2hwb2ludCk7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZk9TUkV4aXRzKCkKQEAgLTMwNCw2ICszMTcsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292
ZXJ5LnNpemUoKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZXYXRjaHBvaW50cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9kZmdEYXRhKQor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+
d2F0Y2hwb2ludHMuc2l6ZSgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBERkc6Ok9T
UkV4aXQmIG9zckV4aXQodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBtX2RmZ0RhdGEtPm9zckV4aXRbaW5kZXhdOwpAQCAtMzE0LDYgKzMzNCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVj
b3ZlcnlbaW5kZXhdOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50JiB3
YXRjaHBvaW50KHVuc2lnbmVkIGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
bV9kZmdEYXRhLT53YXRjaHBvaW50c1tpbmRleF07CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIHZvaWQgYXBwZW5kV2Vha1JlZmVyZW5jZShKU0NlbGwqIHRhcmdldCkKICAgICAgICAgewog
ICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xMjM4LDYgKzEyNjMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0
YT4gb3NyRW50cnk7CiAgICAgICAgICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4
PiBvc3JFeGl0OwogICAgICAgICAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeT4g
c3BlY3VsYXRpb25SZWNvdmVyeTsKKyAgICAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxXYXRjaHBv
aW50LCAxLCAwPiB3YXRjaHBvaW50czsKICAgICAgICAgICAgIFZlY3RvcjxXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbj4gdHJhbnNpdGlvbnM7CiAgICAgICAgICAgICBWZWN0b3I8V3JpdGVCYXJyaWVy
PEpTQ2VsbD4gPiB3ZWFrUmVmZXJlbmNlczsKICAgICAgICAgICAgIGJvb2wgbWF5QmVFeGVjdXRp
bmc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgZW51
bSBFeGl0S2luZCB7CiAgICAgSW5hZGVxdWF0ZUNvdmVyYWdlLCAvLyBXZSBleGl0ZWQgYmVjYXVz
ZSB3ZSBlbmRlZCB1cCBpbiBjb2RlIHRoYXQgZGlkbid0IGhhdmUgcHJvZmlsaW5nIGNvdmVyYWdl
LgogICAgIEFyZ3VtZW50c0VzY2FwZWQsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFyZ3VtZW50cyBl
c2NhcGVkIGJ1dCB3ZSBkaWRuJ3QgZXhwZWN0IHRoZW0gdG8uCiAgICAgVW5jb3VudGFibGUsIC8v
IFdlIGV4aXRlZCBmb3Igbm9uZSBvZiB0aGUgYWJvdmUgcmVhc29ucywgYW5kIHdlIHNob3VsZCBu
b3QgY291bnQgaXQuIE1vc3QgdXNlcyBvZiB0aGlzIHNob3VsZCBiZSB2aWV3ZWQgYXMgYSBGSVhN
RS4KKyAgICBVbmNvdW50YWJsZVdhdGNocG9pbnQgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugb2YgYSB3
YXRjaHBvaW50LCB3aGljaCBpc24ndCBjb3VudGVkIGJlY2F1c2Ugd2F0Y2hwb2ludHMgZG8gdHJh
Y2tpbmcgdGhlbXNlbHZlcy4KIH07CiAKIGlubGluZSBjb25zdCBjaGFyKiBleGl0S2luZFRvU3Ry
aW5nKEV4aXRLaW5kIGtpbmQpCkBAIC01OCw2ICs1OSwxMiBAQCBpbmxpbmUgY29uc3QgY2hhciog
ZXhpdEtpbmRUb1N0cmluZyhFeGl0CiAgICAgICAgIHJldHVybiAiTmVnYXRpdmVaZXJvIjsKICAg
ICBjYXNlIEluYWRlcXVhdGVDb3ZlcmFnZToKICAgICAgICAgcmV0dXJuICJJbmFkZXF1YXRlQ292
ZXJhZ2UiOworICAgIGNhc2UgQXJndW1lbnRzRXNjYXBlZDoKKyAgICAgICAgcmV0dXJuICJBcmd1
bWVudHNFc2NhcGVkIjsKKyAgICBjYXNlIFVuY291bnRhYmxlOgorICAgICAgICByZXR1cm4gIlVu
Y291bnRhYmxlIjsKKyAgICBjYXNlIFVuY291bnRhYmxlV2F0Y2hwb2ludDoKKyAgICAgICAgcmV0
dXJuICJVbmNvdW50YWJsZVdhdGNocG9pbnQiOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biAiVW5rbm93biI7CiAgICAgfQpAQCAtNzAsNiArNzcsNyBAQCBpbmxpbmUgYm9vbCBleGl0S2lu
ZElzQ291bnRhYmxlKEV4aXRLaW5kCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IGNhc2UgQmFkVHlwZToKICAgICBjYXNlIFVuY291bnRhYmxlOgorICAgIGNhc2UgVW5jb3VudGFi
bGVXYXRjaHBvaW50OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsxOTMsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9m
aWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIEluc3RydWN0
aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKSB7IHUucmVnaXN0ZXJQ
b2ludGVyID0gcmVnaXN0ZXJQb2ludGVyOyB9CisgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlv
bihib29sKiBwcmVkaWNhdGVQb2ludGVyKSB7IHUucHJlZGljYXRlUG9pbnRlciA9IHByZWRpY2F0
ZVBvaW50ZXI7IH0KIAogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2Rl
OwpAQCAtMjA1LDYgKzIwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgTExJbnRD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZTsKICAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CisgICAgICAgICAgICBib29sKiBwcmVk
aWNhdGVQb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMjAxNjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMCw3ICsxMDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3Bf
Z2V0X3Njb3BlZF92YXIsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBt
YWNybyhvcF9wdXRfc2NvcGVkX3ZhciwgNCkgXAogICAgICAgICBtYWNybyhvcF9nZXRfZ2xvYmFs
X3ZhciwgNCkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisgICAgICAgIG1hY3JvKG9wX2dl
dF9nbG9iYWxfdmFyX3dhdGNoYWJsZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAg
ICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFyLCAzKSBcCisgICAgICAgIG1hY3JvKG9wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrLCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfYmFzZSwg
NSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX2Vuc3VyZV9w
cm9wZXJ0eV9leGlzdHMsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfcmVzb2x2ZV93aXRoX2Jhc2Us
IDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIK
KworI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1dhdGNocG9p
bnQ6On5XYXRjaHBvaW50KCkKK3sKKyAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgcmVtb3Zl
KCk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6Y29ycmVjdExhYmVscyhMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJlbDsKKyAgICBsYWJlbC5t
X2xhYmVsLm1fb2Zmc2V0ID0gbV9zb3VyY2U7CisgICAgbV9zb3VyY2UgPSBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWwpLmRhdGFMb2NhdGlvbigpKTsK
KyAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9kZXN0aW5hdGlvbjsKKyAgICBtX2Rlc3Rp
bmF0aW9uID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGxh
YmVsKS5kYXRhTG9jYXRpb24oKSk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6ZmlyZSgpCit7Cisg
ICAgZGF0YUxvZygiRmlyaW5nIHdhdGNocG9pbnQgJXAgdG8gJXAuXG4iLCBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KG1fc291cmNlKSwgYml0d2lzZV9jYXN0PHZvaWQqPihtX2Rlc3RpbmF0aW9uKSk7Cisg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgKKyAgICAgICAgQ29kZUxvY2F0aW9u
TGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihtX3NvdXJjZSkpLAorICAgICAgICBDb2RlTG9jYXRp
b25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KG1fZGVzdGluYXRpb24pKSk7CisgICAgaWYgKGlz
T25MaXN0KCkpCisgICAgICAgIHJlbW92ZSgpOworfQorCitXYXRjaHBvaW50U2V0OjpXYXRjaHBv
aW50U2V0KCkKKyAgICA6IG1faXNXYXRjaGVkKGZhbHNlKQorICAgICwgbV9pc0ludmFsaWRhdGVk
KGZhbHNlKQoreworfQorCitXYXRjaHBvaW50U2V0Ojp+V2F0Y2hwb2ludFNldCgpCit7CisgICAg
Ly8gRmlyZSBhbGwgd2F0Y2hwb2ludHMuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgaXMg
cG9zc2libGUsIHNheSB3aXRoCisgICAgLy8gc3RydWN0dXJlIHdhdGNocG9pbnRzLCBmb3IgdGhl
IHdhdGNocG9pbnQgc2V0IG93bmVyIHRvIGRpZSB3aGlsZSB0aGUKKyAgICAvLyB3YXRjaHBvaW50
IG93bmVycyBhcmUgc3RpbGwgbGl2ZS4KKyAgICBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKK30KKwor
dm9pZCBXYXRjaHBvaW50U2V0OjphZGQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKK3sKKyAgICBp
ZiAoIXdhdGNocG9pbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NldC5wdXNoKHdhdGNocG9p
bnQpOworICAgIG1faXNXYXRjaGVkID0gdHJ1ZTsKK30KKwordm9pZCBXYXRjaHBvaW50U2V0Ojpu
b3RpZnlXcml0ZVNsb3coKQoreworICAgIEFTU0VSVChtX2lzV2F0Y2hlZCk7CisgICAgCisgICAg
ZmlyZUFsbFdhdGNocG9pbnRzKCk7CisgICAgbV9pc1dhdGNoZWQgPSBmYWxzZTsKKyAgICBtX2lz
SW52YWxpZGF0ZWQgPSB0cnVlOworfQorCit2b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRj
aHBvaW50cygpCit7CisgICAgd2hpbGUgKCFtX3NldC5pc0VtcHR5KCkpCisgICAgICAgIG1fc2V0
LmJlZ2luKCktPmZpcmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdhdGNocG9pbnRfaAorI2RlZmluZSBXYXRjaHBv
aW50X2gKKworI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2VudGlu
ZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXYXRjaHBvaW50IDog
cHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPFdhdGNocG9pbnQ+IHsKK3B1YmxpYzoKKyAgICBX
YXRjaHBvaW50KE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBzb3VyY2UpCisgICAgICAgIDogbV9zb3Vy
Y2Uoc291cmNlLm1fbGFiZWwubV9vZmZzZXQpCisgICAgICAgICwgbV9kZXN0aW5hdGlvbihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnRwdHJfdD46Om1heCgpKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzZXREZXN0aW5hdGlvbihNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZGVzdGluYXRpb24p
CisgICAgeworICAgICAgICBtX2Rlc3RpbmF0aW9uID0gZGVzdGluYXRpb24ubV9sYWJlbC5tX29m
ZnNldDsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb3JyZWN0TGFiZWxzKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpOworICAgIAorICAgIH5XYXRjaHBvaW50KCk7CisgICAgCisgICAgdm9pZCBmaXJl
KCk7CisgICAgCitwcml2YXRlOgorICAgIHVpbnRwdHJfdCBtX3NvdXJjZTsKKyAgICB1aW50cHRy
X3QgbV9kZXN0aW5hdGlvbjsKK307CisKK2NsYXNzIFdhdGNocG9pbnRTZXQgOiBwdWJsaWMgUmVm
Q291bnRlZDxXYXRjaHBvaW50U2V0PiB7CitwdWJsaWM6CisgICAgV2F0Y2hwb2ludFNldCgpOwor
ICAgIH5XYXRjaHBvaW50U2V0KCk7CisgICAgCisgICAgYm9vbCBpc1N0aWxsVmFsaWQoKSBjb25z
dCB7IHJldHVybiAhbV9pc0ludmFsaWRhdGVkOyB9CisgICAgYm9vbCBoYXNCZWVuSW52YWxpZGF0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW52YWxpZGF0ZWQ7IH0KKyAgICAKKyAgICAvLyBBcyBh
IGNvbnZlbmllbmNlLCB0aGlzIHdpbGwgaWdub3JlIDAuIFRoYXQncyBiZWNhdXNlIGNvZGUgcGF0
aHMgaW4gdGhlIERGRworICAgIC8vIHRoYXQgY3JlYXRlIHNwZWN1bGF0aW9uIHdhdGNocG9pbnRz
IG1heSBjaG9vc2UgdG8gYmFpbCBvdXQgaWYgc3BlY3VsYXRpb24KKyAgICAvLyBoYWQgYWxyZWFk
eSBiZWVuIHRlcm1pbmF0ZWQuCisgICAgdm9pZCBhZGQoV2F0Y2hwb2ludCopOworICAgIAorICAg
IC8vIEZvcmNlIHRoZSB3YXRjaHBvaW50IHNldCB0byBiZWhhdmUgYXMgaWYgaXQgd2FzIGJlaW5n
IHdhdGNoZWQgZXZlbiBpZiBubworICAgIC8vIHdhdGNocG9pbnRzIGhhdmUgYmVlbiBpbnN0YWxs
ZWQuCisgICAgdm9pZCBzdGFydFdhdGNoaW5nKCkgeyBtX2lzV2F0Y2hlZCA9IHRydWU7IH0KKyAg
ICAKKyAgICB2b2lkIG5vdGlmeVdyaXRlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9pc1dhdGNo
ZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5vdGlmeVdyaXRlU2xvdygpOworICAg
IH0KKyAgICAKKyAgICBib29sKiBhZGRyZXNzT2ZJc1dhdGNoZWQoKSB7IHJldHVybiAmbV9pc1dh
dGNoZWQ7IH0KKyAgICAKKyAgICB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOyAvLyBDYWxsIG9ubHkg
aWYgeW91J3ZlIGNoZWNrZWQgaXNXYXRjaGVkLgorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIGZp
cmVBbGxXYXRjaHBvaW50cygpOworICAgIAorICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXYXRjaHBv
aW50LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXYXRjaHBvaW50PiA+IG1fc2V0OworICAgIGJvb2wg
bV9pc1dhdGNoZWQ7CisgICAgYm9vbCBtX2lzSW52YWxpZGF0ZWQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIFdhdGNocG9pbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw2ICsxNDgsNyBA
QCB2b2lkIFJlc29sdmVSZXN1bHQ6OmNoZWNrVmFsaWRpdHkoKQogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBJbmRleGVkR2xvYmFsOgogICAgIGNhc2UgUmVhZE9ubHlJbmRleGVkR2xvYmFsOgor
ICAgIGNhc2UgV2F0Y2hlZEluZGV4ZWRHbG9iYWw6CiAgICAgY2FzZSBEeW5hbWljSW5kZXhlZEds
b2JhbDoKICAgICBjYXNlIER5bmFtaWNSZWFkT25seUluZGV4ZWRHbG9iYWw6CiAgICAgICAgIEFT
U0VSVChtX2luZGV4ICE9IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSk7CkBAIC0yMTYsMTMgKzIxNywx
OSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoY29uc3QgSWRlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQpCitpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZEdsb2JhbFZhcigKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQ29uc3RhbnRNb2Rl
IGNvbnN0YW50TW9kZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKKyAgICBVTlVTRURf
UEFSQU0oZnVuY3Rpb25Nb2RlKTsKICAgICBpbnQgaW5kZXggPSBzeW1ib2xUYWJsZSgpLnNpemUo
KTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0YW50ID8gUmVh
ZE9ubHkgOiAwKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCAoY29uc3Rh
bnRNb2RlID09IElzQ29uc3RhbnQpID8gUmVhZE9ubHkgOiAwKTsKKyAgICBpZiAoZnVuY3Rpb25N
b2RlID09IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUpCisgICAgICAgIG5ld0VudHJ5LmF0dGVtcHRU
b1dhdGNoKCk7CiAgICAgU3ltYm9sVGFibGU6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJs
ZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKLSAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQorICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsKICAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZC5nZXRJbmRleCgpOworICAgIH0KICAgICByZXR1cm4gaW5kZXg7CiB9CiAKQEAg
LTI4OSwxNyArMjk2LDIzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQ
cm8KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsr
aSkgewogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tb
aV07Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERhdGEsIGZ1
bmN0aW9uLT5pZGVudCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3cml0ZSBl
eGlzdGluZyBwcm9wZXJ0aWVzLgotCisgICAgICAgIGJvb2wgcHJvcGVydHlEaWRFeGlzdCA9IAor
ICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVu
Y3Rpb24tPmlkZW50KCkpOyAvLyBOZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4
aXN0aW5nIHByb3BlcnRpZXMuCisgICAgICAgIAogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIG1ha2VGdW5jdGlvbihleGVjLCBmdW5jdGlvbiksIHNjb3Bl
Q2hhaW4pOwotICAgICAgICBpbnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoZnVuY3Rpb24tPmlkZW50
KCksIGZhbHNlKTsKKyAgICAgICAgaW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKAorICAgICAgICAg
ICAgZnVuY3Rpb24tPmlkZW50KCksIElzVmFyaWFibGUsCisgICAgICAgICAgICAhcHJvcGVydHlE
aWRFeGlzdCA/IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUgOiBOb3RGdW5jdGlvbk9yTm90U3BlY2lh
bGl6YWJsZSk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChpbmRleCkuc2V0KCpt
X2dsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdmFyU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGdsb2Jh
bE9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgKnZhclN0YWNrW2ldLmZpcnN0KSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBhZGRHbG9iYWxWYXIoKnZhclN0YWNrW2ldLmZpcnN0LCB2
YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCk7CisgICAg
ICAgIGFkZEdsb2JhbFZhcigKKyAgICAgICAgICAgICp2YXJTdGFja1tpXS5maXJzdCwKKyAgICAg
ICAgICAgICh2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFu
dCkgPyBJc0NvbnN0YW50IDogSXNWYXJpYWJsZSwKKyAgICAgICAgICAgIE5vdEZ1bmN0aW9uT3JO
b3RTcGVjaWFsaXphYmxlKTsKICAgICB9CiB9CiAKQEAgLTEyMDIsNyArMTIxNSw5IEBAIFJlc29s
dmVSZXN1bHQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmUKICAgICAgICAgICAgIGlmICgrK2l0
ZXIgPT0gZW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgUmVzb2x2ZVJlc3VsdDo6
RHluYW1pY0ZsYWcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0Ojpk
eW5hbWljSW5kZXhlZEdsb2JhbFJlc29sdmUoZW50cnkuZ2V0SW5kZXgoKSwgZGVwdGgsIGN1cnJl
bnRTY29wZSwgZmxhZ3MpOwotICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0Ojpp
bmRleGVkR2xvYmFsUmVzb2x2ZShlbnRyeS5nZXRJbmRleCgpLCBjdXJyZW50U2NvcGUsIGZsYWdz
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6aW5kZXhlZEdsb2JhbFJl
c29sdmUoCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29w
ZSwKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfCAoZW50cnkuY291bGRCZVdhdGNoZWQoKSA/
IFJlc29sdmVSZXN1bHQ6OldhdGNoZWRGbGFnIDogMCkpOwogICAgICAgICAgICAgfQogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24g
PSBqc0R5bmFtaWNDYXN0PEpTQWN0aXZhdGlvbio+KGN1cnJlbnRWYXJpYWJsZU9iamVjdCkpCkBA
IC0xMjk2LDcgKzEzMTEsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpzaG91bGRBdm9pZFJl
c29sCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUoUmVnaXN0ZXJJ
RCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSkKIHsKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKQotICAg
ICAgICByZXR1cm4gZW1pdEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQpOworICAgICAg
ICByZXR1cm4gZW1pdEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsK
ICAgICAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc0dsb2JhbCgpICYmICFzaG91bGRBdm9pZFJl
c29sdmVHbG9iYWwoKSkgewogI2lmIEVOQUJMRShKSVQpCkBAIC0xMzc5LDcgKzEzOTQsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAKICAgICAgICAgaWYgKHJl
c29sdmVSZXN1bHQuaXNTdGF0aWMoKSkgewogICAgICAgICAgICAgLy8gRGlyZWN0bHkgaW5kZXgg
dGhlIHByb3BlcnR5IGxvb2t1cCBhY3Jvc3MgbXVsdGlwbGUgc2NvcGVzLgotICAgICAgICAgICAg
ZW1pdEdldFN0YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgICAgIGVt
aXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgICAg
ICAgICAgcmV0dXJuIGJhc2VEc3Q7CiAgICAgICAgIH0KIApAQCAtMTQxOCw3ICsxNDMzLDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogewogICAgIGlmIChyZXNv
bHZlUmVzdWx0LmlzU3RhdGljKCkpIHsKICAgICAgICAgZW1pdExvYWQoYmFzZURzdCwganNVbmRl
ZmluZWQoKSk7Ci0gICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3Vs
dCk7CisgICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJv
cGVydHkpOwogICAgICAgICByZXR1cm4gYmFzZURzdDsKICAgICB9CiAKQEAgLTE0MzYsNyArMTQ1
MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICByZXR1
cm4gZW1pdFJlc29sdmUocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklE
KiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQpCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0
IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpCiB7CiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gMDsKIApAQCAtMTQ3MiwxMyArMTQ4
NywyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0CiAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKICAgICAgICAgcmV0dXJuIGRzdDsKIAor
ICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6CisgICAgICAgIC8v
IFNraXAgdGhlIHBlZXBob2xlIGZvciBub3cuIEl0J3Mgbm90IGNsZWFyIHRoYXQgaXQncyBwcm9m
aXRhYmxlIGdpdmVuCisgICAgICAgIC8vIHRoZSBERkcncyBjYXBhYmlsaXRpZXMsIGFuZCB0aGUg
ZmFjdCB0aGF0IGlmIGl0J3Mgd2F0Y2hhYmxlIHRoZW4gd2UKKyAgICAgICAgLy8gZG9uJ3QgZXhw
ZWN0IHRvIHNlZSBhbnkgcHV0X2dsb2JhbF92YXIncyBhbnl3YXkuCisgICAgICAgIHByb2ZpbGUg
PSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsgLy8gRm9yIHRo
ZSBiZW5lZml0IG9mIHRoZSBERkcuCisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9m
aWxlKTsKKyAgICAgICAgcmV0dXJuIGRzdDsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLVJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1
bHQmIHJlc29sdmVSZXN1bHQsIFJlZ2lzdGVySUQqIHZhbHVlKQorUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2
ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUmVnaXN0ZXJJRCogdmFsdWUp
CiB7CiAgICAgc3dpdGNoIChyZXNvbHZlUmVzdWx0LnR5cGUoKSkgewogICAgIGNhc2UgUmVzb2x2
ZVJlc3VsdDo6UmVnaXN0ZXI6CkBAIC0xNDk5LDYgKzE1MjUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTdAogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
cmVzb2x2ZVJlc3VsdC5yZWdpc3RlclBvaW50ZXIoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAg
CisgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAg
ZW1pdE9wY29kZShvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHJlc29sdmVSZXN1bHQuZ2xvYmFsT2Jq
ZWN0KCkpLT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSkuYWRkcmVzc09mSXNX
YXRjaGVkKCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRl
bnRpZmllcikpOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBkZWZhdWx0OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDEyMDE2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgLy8gVGhlIHJlc29sdmVkIGJpbmRpbmcgaXMgaW1tdXRhYmxlLgogICAgICAg
ICAgICAgUmVhZE9ubHlGbGFnID0gMHgyMCwKICAgICAgICAgICAgIC8vIFRoZSBiYXNlIG9iamVj
dCBpcyB0aGUgZ2xvYmFsIG9iamVjdC4KLSAgICAgICAgICAgIEdsb2JhbEZsYWcgPSAweDQwCisg
ICAgICAgICAgICBHbG9iYWxGbGFnID0gMHg0MCwKKyAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0
eSBpcyBiZWluZyB3YXRjaGVkLCBzbyB3cml0ZXMgc2hvdWxkIGJlIHNwZWNpYWwuCisgICAgICAg
ICAgICBXYXRjaGVkRmxhZyA9IDB4ODAKICAgICAgICAgfTsKICAgICAgICAgZW51bSBUeXBlIHsK
ICAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBpbiBhIHJl
Z2lzdGVyLgpAQCAtMTMxLDYgKzEzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
Ly8gYmluZGluZyBjcmVhdGVkIHdpdGggInZhciIgYXQgdGhlIHRvcCBsZXZlbC4gQXQgcnVudGlt
ZSB3ZSdsbAogICAgICAgICAgICAgLy8ganVzdCBpbmRleCBpbnRvIHRoZSBnbG9iYWwgb2JqZWN0
LgogICAgICAgICAgICAgSW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFsRmxhZyB8
IFN0YXRpY0ZsYWcsCisgICAgICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWwsIGJ1dCB0aGUg
cHJvcGVydHkgaXMgYmVpbmcgd2F0Y2hlZC4KKyAgICAgICAgICAgIFdhdGNoZWRJbmRleGVkR2xv
YmFsID0gSW5kZXhlZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZyB8IFdhdGNoZWRGbGFn
LAogICAgICAgICAgICAgLy8gTGlrZSBJbmRleGVkR2xvYmFsLCBidXQgdGhlIHByb3BlcnR5IGlz
IGFsc28gcmVhZC1vbmx5LCBsaWtlIE5hTiwKICAgICAgICAgICAgIC8vIEluZmluaXR5LCBvciB1
bmRlZmluZWQuCiAgICAgICAgICAgICBSZWFkT25seUluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxh
ZyB8IFJlYWRPbmx5RmxhZyB8IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnLApAQCAtNDQxLDggKzQ0
NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90
eXBlb2YsIGRzdCwgc3JjKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSkgeyByZXR1cm4g
ZW1pdEJpbmFyeU9wKG9wX2luLCBkc3QsIHByb3BlcnR5LCBiYXNlLCBPcGVyYW5kVHlwZXMoKSk7
IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRz
dCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3Rh
dGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmLCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRTdGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNv
bHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJiwgUmVn
aXN0ZXJJRCogdmFsdWUpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKFJlZ2lz
dGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqIGRz
dCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKQEAg
LTU3NCw3ICs1NzgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBhZGRlZCB2YXIuCi0gICAgICAgIGludCBhZGRHbG9i
YWxWYXIoY29uc3QgSWRlbnRpZmllciYsIGJvb2wgaXNDb25zdGFudCk7CisgICAgICAgIGVudW0g
Q29uc3RhbnRNb2RlIHsgSXNDb25zdGFudCwgSXNWYXJpYWJsZSB9OworICAgICAgICBlbnVtIEZ1
bmN0aW9uTW9kZSB7IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUsIE5vdEZ1bmN0aW9uT3JOb3RTcGVj
aWFsaXphYmxlIH07CisgICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYs
IENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpOwog
CiAgICAgICAgIHZvaWQgYWRkUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXImLCBpbnQgcGFyYW1l
dGVySW5kZXgpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMwLDcgKzQzMCw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29s
dmVOb2RlOjplbWkKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZnVuYy5nZXQoKSwgcmVzb2x2
ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1
bmMuZ2V0KCkpLCBmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBzdGFydE9mZnNl
dCgpLCBlbmRPZmZzZXQoKSk7CiAgICAgfQpAQCAtNjE4LDcgKzYxOCw3IEBAIFJlZ2lzdGVySUQq
IFBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGUKICAgICB9CiAKICAgICBpZiAocmVzb2x2ZVJl
c3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1Zhcihn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHJlc29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBSZWdpc3Rl
cklEKiBvbGRWYWx1ZTsKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKSB7CiAgICAgICAgICAgICBvbGRWYWx1ZSA9IDA7CkBAIC02MjYsNyArNjI2LDcgQEAgUmVn
aXN0ZXJJRCogUG9zdGZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAg
ICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQs
IHZhbHVlLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2
ZVJlc3VsdCwgbV9pZGVudCwgdmFsdWUuZ2V0KCkpOwogICAgICAgICByZXR1cm4gb2xkVmFsdWU7
CiAgICAgfQogICAgIApAQCAtODAzLDkgKzgwMyw5IEBAIFJlZ2lzdGVySUQqIFByZWZpeFJlc29s
dmVOb2RlOjplbWl0Qnl0ZWMKICAgICB9CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRp
YygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm9wRHN0ID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICAgICAgZW1p
dFByZUluY09yRGVjKGdlbmVyYXRvciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHByb3BEc3QuZ2V0
KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBt
X2lkZW50LCBwcm9wRHN0LmdldCgpKTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9E
ZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiAgICAgfQogCkBAIC0xMjI2
LDkgKzEyMjYsOSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAg
ICAgfQogCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3Vs
dC5pc1JlYWRPbmx5KCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5l
cmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJl
c29sdmVSZXN1bHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRv
ci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2
ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRSZWFk
TW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRU
eXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9y
KCkpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwg
cmVzdWx0KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3Vs
dCwgbV9pZGVudCwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAg
LTEyNTYsNyArMTI1Niw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0
ZWMKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAg
ICAgICAgZHN0ID0gMDsKICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX3JpZ2h0KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIo
cmVzb2x2ZVJlc3VsdCwgdmFsdWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1Zh
cihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsK
ICAgICB9CiAKQEAgLTEzNjEsNyArMTM2MSw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6
OmVtaXRDb2RlU2luZ2wKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBtX2luaXQgPyBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9pbml0KSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVm
aW5lZCgpKTsKIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpCi0gICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCB2YWx1ZS5nZXQo
KSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVz
dWx0LCBtX2lkZW50LCB2YWx1ZS5nZXQoKSk7CiAgICAgCiAgICAgaWYgKGdlbmVyYXRvci5jb2Rl
VHlwZSgpICE9IEV2YWxDb2RlKQogICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlz
aW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksOSBAQCBib29sIEFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiB7CiAgICAgQVNTRVJUKG1fYmxvY2spOwogICAgIEFT
U0VSVChtX2lzVmFsaWQpOwotICAgICAgICAKKyAgICAKKyAgICBtX2RpZENsb2JiZXIgPSBmYWxz
ZTsKKyAgICAKICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gbV9ibG9jay0+YXQoaW5kZXhJbkJs
b2NrKTsKICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwogICAgICAgICAKQEAg
LTIzNyw4ICsyMzksMTIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGlu
ZAogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7
CisgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKSA9PSBTcGVjTm9u
ZSkgeworICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICBub2RlLnNl
dENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBi
b29sIGNhbkV4aXQgPSBmYWxzZTsKLSAgICAgICAgY2FuRXhpdCB8PSB2YXJpYWJsZUFjY2Vzc0Rh
dGEtPnByZWRpY3Rpb24oKSA9PSBTcGVjTm9uZTsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1
ZSA9IG1fdmFyaWFibGVzLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpKTsKICAg
ICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkgewogICAgICAgICAg
ICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkKQEAgLTE0NzYsNyArMTQ4Miw3IEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY0Z1bmN0aW9uKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBh
YmxlIHRvIHByb3BhZ2F0ZSB0aGUgZmFjdCB0aGF0IHdlIGtub3cgd2hhdCB0aGUgZnVuY3Rpb24g
aXMuCiAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisgICAgICAgIAogICAgIGNhc2UgUHV0
QnlJZDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0
cnVlKTsKQEAgLTE0ODgsOCArMTQ5NCwxMyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
dW5zaWduZWQgaW5kCiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAg
ICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVl
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoK
KyAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOgogICAgICAgICBub2RlLnNldENhbkV4aXQoZmFs
c2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTU3OCw2ICsxNTg5LDcgQEAg
aW5saW5lIHZvaWQgQWJzdHJhY3RTdGF0ZTo6Y2xvYmJlclN0cnVjdAogICAgIGZvciAoc2l6ZV90
IGkgPSBtX3ZhcmlhYmxlcy5udW1iZXJPZkxvY2FscygpOyBpLS07KQogICAgICAgICBtX3Zhcmlh
Ymxlcy5sb2NhbChpKS5jbG9iYmVyU3RydWN0dXJlcygpOwogICAgIG1faGF2ZVN0cnVjdHVyZXMg
PSBmYWxzZTsKKyAgICBtX2RpZENsb2JiZXIgPSB0cnVlOwogfQogCiBpbmxpbmUgYm9vbCBBYnN0
cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uLCBB
YnN0cmFjdFZhbHVlJiBpblZhcmlhYmxlLCBOb2RlSW5kZXggbm9kZUluZGV4KQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9uIDEy
MDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDkgQEAgcHVibGljOgogICAgIC8vIG9mIFRocm93
LgogICAgIGJvb2wgZXhlY3V0ZSh1bnNpZ25lZCk7CiAgICAgCisgICAgLy8gRGlkIHRoZSBsYXN0
IGV4ZWN1dGVkIG5vZGUgY2xvYmJlciB0aGUgd29ybGQ/CisgICAgYm9vbCBkaWRDbG9iYmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kaWRDbG9iYmVyOyB9CisgICAgCiAgICAgLy8gSXMgdGhlIGV4ZWN1
dGlvbiBzdGF0ZSBzdGlsbCB2YWxpZD8gVGhpcyB3aWxsIGJlIGZhbHNlIGlmIGV4ZWN1dGUoKSBo
YXMKICAgICAvLyByZXR1cm5lZCBmYWxzZSBwcmV2aW91c2x5LgogICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQpAQCAtMjc0LDYgKzI3Nyw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2ZvdW5kQ29uc3RhbnRzOwogICAgIAogICAgIGJvb2wgbV9pc1ZhbGlkOwor
ICAgIGJvb2wgbV9kaWRDbG9iYmVyOwogICAgIAogICAgIEJyYW5jaERpcmVjdGlvbiBtX2JyYW5j
aERpcmVjdGlvbjsgLy8gVGhpcyBpcyBvbmx5IHNldCBmb3IgYmxvY2tzIHRoYXQgZW5kIGluIEJy
YW5jaCBhbmQgdGhhdCBleGVjdXRlIHRvIGNvbXBsZXRpb24gKGkuZS4gbV9pc1ZhbGlkID09IHRy
dWUpLgogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzNCw2ICsxMjM0
LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAgIC8vIERv
ZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVpcmVtZW50
cyBmb3IgYmVpbmcKICAgICAvLyBhbiBpbmxpbmUgY2FuZGlkYXRlPwogICAgIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jayA9IGV4ZWN1dGFibGUtPnByb2ZpbGVkQ29kZUJsb2NrRm9yKGtpbmQpOwor
ICAgIGlmICghcHJvZmlsZWRCbG9jaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAg
IGlmICghbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihwcm9maWxlZEJsb2NrLCBraW5kKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMjI1MSwxMyArMjI1NCw2MSBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2Jh
bF92YXI6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVk
aWN0aW9uKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7
CisKICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRHbG9iYWxWYXIgPSBhZGRUb0dyYXBoKAogICAg
ICAgICAgICAgICAgIEdldEdsb2JhbFZhciwKLSAgICAgICAgICAgICAgICBPcEluZm8obV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hc3NlcnRSZWdpc3Rlcklz
SW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAor
ICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJblRo
aXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCiAgICAg
ICAgICAgICAgICAgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgICAgIHNldChjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfZ2V0X2dsb2JhbF92YXIpOwogICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZTogeworICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5s
aW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3At
Pm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOworICAg
ICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gbV9jb2RlQmxvY2stPmlkZW50aWZpZXIo
aWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
Z2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSk7CisgICAg
ICAgICAgICBpZiAoIWVudHJ5LmNvdWxkQmVXYXRjaGVkKCkpIHsKKyAgICAgICAgICAgICAgICBO
b2RlSW5kZXggZ2V0R2xvYmFsVmFyID0gYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAg
R2V0R2xvYmFsVmFyLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5h
c3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lz
dGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8ocHJlZGljdGlvbikpOwor
ICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRH
bG9iYWxWYXIpOworICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9nbG9iYWxfdmFy
X3dhdGNoYWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IFRoZSB3YXRjaHBvaW50IGlzIHN0aWxsIGludGFjdCEgVGhpcyBtZWFucyB0aGF0IHdlIHdpbGwg
Z2V0IG5vdGlmaWVkIGlmIHRoZQorICAgICAgICAgICAgLy8gY3VycmVudCB2YWx1ZSBpbiB0aGUg
Z2xvYmFsIHZhcmlhYmxlIGNoYW5nZXMuIFNvLCB3ZSBjYW4gaW5saW5lIHRoYXQgdmFsdWUuCisg
ICAgICAgICAgICAvLyBNb3Jlb3ZlciwgY3VycmVudGx5IHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlz
IHZhbHVlIGlzIGEgSlNGdW5jdGlvbiosIHdoaWNoCisgICAgICAgICAgICAvLyBpbXBsaWVzIHRo
YXQgaXQncyBhIGNlbGwuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MsIHNpbmNlIGluIGdlbmVyYWwg
d2UnZCBoYXZlCisgICAgICAgICAgICAvLyB0byB1c2UgYSBKU0NvbnN0YW50IGZvciBub24tY2Vs
bHMgYW5kIGEgV2Vha0pTQ29uc3RhbnQgZm9yIGNlbGxzLiBTbyBpbnN0ZWFkCisgICAgICAgICAg
ICAvLyBvZiBoYXZpbmcgYm90aCBjYXNlcyB3ZSBqdXN0IGFzc2VydCB0aGF0IHRoZSB2YWx1ZSBp
cyBhIGNlbGwuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE5CLiBJZiBpdCB3YXNuJ3Qg
Zm9yIENTRSwgR2xvYmFsVmFyV2F0Y2hwb2ludCB3b3VsZCBoYXZlIG5vIG5lZWQgZm9yIHRoZQor
ICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcG9pbnRlci4gQnV0IENTRSB0cmFja3MgZWZmZWN0cyBv
biBnbG9iYWwgdmFyaWFibGVzIGJ5IGNvbXBhcmluZworICAgICAgICAgICAgLy8gcmVnaXN0ZXIg
cG9pbnRlcnMuIEJlY2F1c2UgQ1NFIGV4ZWN1dGVzIG11bHRpcGxlIHRpbWVzIHdoaWxlIHRoZSBi
YWNrZW5kCisgICAgICAgICAgICAvLyBleGVjdXRlcyBvbmNlLCB3ZSB1c2UgdGhlIGZvbGxvd2lu
ZyBwZXJmb3JtYW5jZSB0cmFkZS1vZmY6CisgICAgICAgICAgICAvLyAtIFRoZSBub2RlIHJlZmVy
cyBkaXJlY3RseSB0byB0aGUgcmVnaXN0ZXIgcG9pbnRlciB0byBtYWtlIENTRSBzdXBlciBjaGVh
cC4KKyAgICAgICAgICAgIC8vIC0gVG8gcGVyZm9ybSBiYWNrZW5kIGNvZGUgZ2VuZXJhdGlvbiwg
dGhlIG5vZGUgb25seSBjb250YWlucyB0aGUgaWRlbnRpZmllcgorICAgICAgICAgICAgLy8gICBu
dW1iZXIsIGZyb20gd2hpY2ggaXQgaXMgcG9zc2libGUgdG8gZ2V0ICh2aWEgYSBmZXcgYXZlcmFn
ZS10aW1lIE8oMSkKKyAgICAgICAgICAgIC8vICAgbG9va3VwcykgdG8gdGhlIFdhdGNocG9pbnRT
ZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAgICAg
ICAgR2xvYmFsVmFyV2F0Y2hwb2ludCwKKyAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2Jq
ZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhpZGVudGlmaWVyTnVt
YmVyKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9
IGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKTsKKyAgICAg
ICAgICAgIEFTU0VSVChzcGVjaWZpY1ZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgIHNldChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhzcGVjaWZpY1ZhbHVlLmFzQ2VsbCgpKSkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZ2xvYmFsX3Zhcl93YXRj
aGFibGUpOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3Zhcjogewog
ICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpOwpAQCAtMjI2OCw2ICsyMzE5LDI4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9nbG9iYWxf
dmFyKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6
IHsKKyAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1h
cFtjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIp
OworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+c3lt
Ym9sVGFibGUoKS5nZXQoaWRlbnRpZmllci5pbXBsKCkpOworICAgICAgICAgICAgaWYgKCFlbnRy
eS5jb3VsZEJlV2F0Y2hlZCgpKSB7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAg
ICAgICAgICAgICAgICAgUHV0R2xvYmFsVmFyLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8o
Z2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7
CisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICBQ
dXRHbG9iYWxWYXJDaGVjaywKKyAgICAgICAgICAgICAgICBPcEluZm8oY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKS0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICBPcEluZm8oaWRlbnRp
Zmllck51bWJlciksCisgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgICAgICB9CisKICAgICAgICAgLy8g
PT09IEJsb2NrIHRlcm1pbmF0b3JzLiA9PT0KIAogICAgICAgICBjYXNlIG9wX2ptcDogewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShyZXZpc2lv
biAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcxKTsKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwogICAgIH0K
KyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0
ciBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNFeGVjU3RhdGUoKQogICAgIHsKQEAgLTQzMyw2ICs0MzksMTEgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjAs
IEdQUkluZm86OmFyZ3VtZW50R1BSMT4oYXJnMSwgYXJnMik7CiAgICAgfQorICAgIAorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAg
eworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24g
MTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IE5vTm9kZTsKICAgICB9CiAgICAgCisgICAgYm9vbCBnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWlu
YXRpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpCisgICAgeworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgeworICAgICAgICAg
ICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOworICAgICAgICAgICAg
Tm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOworICAgICAgICAgICAgc3dpdGNoIChub2RlLm9w
KCkpIHsKKyAgICAgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVn
aXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KG1fZ3JhcGguY2xvYmJlcnNXb3JsZChpbmRleCkpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICBOb2RlSW5k
ZXggZ2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbihXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lz
dGVyUG9pbnRlcikKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJs
b2NrOyBpLS07KSB7CkBAIC0yMjYsNiArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CiAgICAgICAgICAg
ICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQ
b2ludGVyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC05ODUsNyArMTAwOSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0
UmVwbGFjZW1lbnQoZ2xvYmFsVmFyTG9hZEVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2ludGVy
KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgR2xv
YmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAgIGlmIChnbG9iYWxWYXJXYXRjaHBvaW50RWxp
bWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkpCisgICAgICAgICAgICAgICAgZWxpbWlu
YXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIFB1
dEdsb2JhbFZhcjoKKyAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAgICAg
IGlmIChtX2ZpeHBvaW50U3RhdGUgPT0gRml4cG9pbnROb3RDb252ZXJnZWQpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBlbGltaW5hdGUoZ2xvYmFsVmFyU3RvcmVFbGltaW5h
dGlvbihub2RlLnJlZ2lzdGVyUG9pbnRlcigpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Myw3ICsxMjMsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGVPcGNvZGUoCiAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKKyAg
ICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKICAgICBjYXNlIG9wX3B1dF9nbG9i
YWxfdmFyOgorICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CiAgICAgY2FzZSBvcF9q
bXA6CiAgICAgY2FzZSBvcF9sb29wOgogICAgIGNhc2Ugb3BfanRydWU6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDkgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFibG9jay0+
Y2ZhRm91bmRDb25zdGFudHMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisjaWYgREZHX0VO
QUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorICAgICAgICAgICAgZGF0YUxvZygiQ29u
c3RhbnQgZm9sZGluZyBjb25zaWRlcmluZyBCbG9jayAjJXUuXG4iLCBibG9ja0luZGV4KTsKKyNl
bmRpZgogICAgICAgICAgICAgc3RhdGUuYmVnaW5CYXNpY0Jsb2NrKGJsb2NrKTsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2st
PnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlLmlz
VmFsaWQoKSkKQEAgLTkwLDcgKzkzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIHN0YXRlLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKQotICAgICAgICAgICAgICAgICAgICB8fCBtX2dy
YXBoLmNsb2JiZXJzV29ybGQobm9kZSkKKyAgICAgICAgICAgICAgICAgICAgfHwgc3RhdGUuZGlk
Q2xvYmJlcigpCiAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUuaGFzQ29uc3RhbnQoKSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IHN0YXRlLmZvck5vZGUobm9kZUluZGV4KS52YWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkocmV2aXNp
b24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1
bXBQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2NiwxMSBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB9CiAgICAgCisgICAgYm9vbCBpc1NldCgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9jb2RlT2Zmc2V0ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCBzd2l0Y2hUb0xhdGVKdW1wKE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wIGNoZWNrKQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTIwMTYyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDcgKzQ0LDExIEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygp
CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9T
UkV4aXRzKCk7ICsraSkgewogICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9z
ckV4aXQoaSk7Ci0gICAgICAgIGV4aXQubV9jaGVjay5pbml0aWFsSnVtcCgpLmxpbmsodGhpcyk7
CisgICAgICAgIEFTU0VSVCghZXhpdC5tX2NoZWNrLmlzU2V0KCkgPT0gKGV4aXQubV93YXRjaHBv
aW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSk7CisgICAg
ICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIGV4aXQubV9jaGVjay5pbml0aWFsSnVtcCgpLmxp
bmsodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVCbG9jaygpLT53YXRjaHBv
aW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLnNldERlc3RpbmF0aW9uKGxhYmVsKCkpOwogICAg
ICAgICBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwogICAgICAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihpKSwgJmdsb2JhbERhdGEoKS0+b3NyRXhpdEluZGV4KTsKICAgICAgICAgZXhpdC5t
X2NoZWNrLnN3aXRjaFRvTGF0ZUp1bXAocGF0Y2hhYmxlSnVtcCgpKTsKQEAgLTE5MCw2ICsxOTQs
OCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgIE9T
UkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhpdChpKTsKICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKGV4aXQubV9jaGVjay5sYXRlSnVtcCgpLCB0YXJnZXQpOwogICAgICAgICBleGl0Lm1f
Y2hlY2suY29ycmVjdExhdGVKdW1wKGxpbmtCdWZmZXIpOworICAgICAgICBpZiAoZXhpdC5tX3dh
dGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisg
ICAgICAgICAgICBjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4
KS5jb3JyZWN0TGFiZWxzKGxpbmtCdWZmZXIpOwogICAgIH0KICAgICAKICAgICBjb2RlQmxvY2so
KS0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hyaW5rKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDkgKzQzMCwyMCBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsKICAgICB9CiAgICAgCisgICAg
Ym9vbCBoYXNJZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hwb2ludCB8fCBvcCgpID09IFB1dEdsb2JhbFZhckNoZWNr
OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0lkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvMjsKKyAgICB9CisgICAgCiAgICAgYm9vbCBoYXNSZWdpc3Rl
clBvaW50ZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2V0R2xvYmFsVmFyIHx8
IG9wKCkgPT0gUHV0R2xvYmFsVmFyOworICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxW
YXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBHbG9iYWxWYXJXYXRjaHBvaW50
IHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyQ2hlY2s7CiAgICAgfQogICAgIAogICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRTY29wZWRW
YXIsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKEdl
dEdsb2JhbFZhciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KFB1dEdsb2JhbFZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdsb2JhbFZhcldh
dGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhQdXRHbG9iYWxWYXJDaGVj
aywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBcCiAgICAgLyogT3B0aW1pemF0aW9ucyBmb3IgYXJyYXkgbXV0YXRp
b24uICovXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShy
ZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIE9TUkV4aXQ6Ok9TUkV4aXQoRXhp
dEtpbmQga2luZCwgSlNWYWx1ZVMKICAgICAsIG1fY29kZU9yaWdpbihqaXQtPm1fY29kZU9yaWdp
bkZvck9TUikKICAgICAsIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKG1fY29kZU9yaWdpbikK
ICAgICAsIG1fcmVjb3ZlcnlJbmRleChyZWNvdmVyeUluZGV4KQorICAgICwgbV93YXRjaHBvaW50
SW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICwgbV9raW5k
KGtpbmQpCiAgICAgLCBtX2NvdW50KDApCiAgICAgLCBtX2FyZ3VtZW50cyhqaXQtPm1fYXJndW1l
bnRzLnNpemUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShy
ZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBzdHJ1Y3QgT1NSRXhpdCB7CiAgICAg
Q29kZU9yaWdpbiBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAKICAgICB1bnNpZ25l
ZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWduZWQgbV93YXRjaHBvaW50SW5kZXg7CiAgICAg
CiAgICAgRXhpdEtpbmQgbV9raW5kOwogICAgIHVpbnQzMl90IG1fY291bnQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEyMDE2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkyNCw2ICs5MjQsMTEgQEAgdm9pZCogREZHX09QRVJBVElPTiBvcGVyYXRp
b25WaXJ0dWFsQ29ucwogICAgIHJldHVybiB2aXJ0dWFsRm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JD
b25zdHJ1Y3QpOwogfQogCit2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5R2xvYmFs
VmFyV3JpdGUoV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkKK3sKKyAgICB3YXRjaHBvaW50
U2V0LT5ub3RpZnlXcml0ZSgpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lv
biAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFU
SU9OICgqVl9ERkdPcGVyYXQKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVy
YXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0
aW9uX0VKUFApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdm9p
ZCopOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FUFpKKShF
eGVjU3RhdGUqLCB2b2lkKiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiB2b2lk
IERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9XKShXYXRjaHBvaW50U2V0Kik7CiB0eXBl
ZGVmIHZvaWQqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsK
IAogLy8gVGhlc2Ugcm91dGluZXMgYXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1w
bGVtZW50YXRpb25zIG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgpAQCAtMTE2LDYg
KzExNyw3IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2UKIEVuY29k
ZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQ3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTQ2VsbCosIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jLCBJZGVudGlmaWVyKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25DYWxsR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZShXYXRjaHBvaW50U2V0KiB3YXRj
aHBvaW50U2V0KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlc29sdmUoRXhlY1N0YXRlKiwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZUJhc2UoRXhlY1N0YXRl
KiwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uUmVzb2x2ZUJhc2VTdHJpY3RQdXQoRXhlY1N0YXRlKiwgSWRlbnRpZmllciop
IFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMjAx
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkxLDcgKzQ5MSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ug
UHV0R2xvYmFsVmFyOiB7CisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAgICBjYXNl
IFB1dEdsb2JhbFZhckNoZWNrOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTY2OSw2ICs2NzAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IFRlYXJPZmZBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ2hlY2tOdW1iZXI6CiAgICAgICAgIGNh
c2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNo
cG9pbnQ6CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdzKG5vZGUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5Niw2ICszNTk2LDYyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgCisgICAgICAgIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRTZXQgPQorICAgICAgICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUu
Y29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCkuZ2V0KAorICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKSktPmltcGwoKSkud2F0Y2hwb2ludFNl
dCgpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpBYnNvbHV0ZUFkZHJlc3Mod2F0Y2hwb2ludFNldC0+YWRkcmVzc09mSXNXYXRjaGVkKCkp
KSwKKyAgICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZSwg
Tm9SZXN1bHQsIHdhdGNocG9pbnRTZXQpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChIZWFwOjpp
c1dyaXRlQmFycmllckVuYWJsZWQoKSkgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdyaXRlQmFycmllcihtX2ppdC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS5jb2RlT3JpZ2luKSwgdmFsdWUudGFnR1BSKCksIG5vZGUuY2hpbGQxKCksIFdy
aXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEZJWE1FOiBpZiB3ZSBoYXBwZW4gdG8gaGF2ZSBhIHNwYXJlIHJlZ2lzdGVyIC0g
YW5kIF9PTkxZXyBpZiB3ZSBoYXBwZW4gdG8gaGF2ZQorICAgICAgICAvLyBhIHNwYXJlIHJlZ2lz
dGVyIC0gYSBnb29kIG9wdGltaXphdGlvbiB3b3VsZCBiZSB0byBwdXQgdGhlIHJlZ2lzdGVyIHBv
aW50ZXIgaW50bworICAgICAgICAvLyBhIHJlZ2lzdGVyIGFuZCB0aGVuIGRvIGEgemVybyBvZmZz
ZXQgc3RvcmUgZm9sbG93ZWQgYnkgYSBmb3VyLW9mZnNldCBzdG9yZSAob3IKKyAgICAgICAgLy8g
dmljZS12ZXJzYSBkZXBlbmRpbmcgb24gZW5kaWFubmVzcykuCisgICAgICAgIG1faml0LnN0b3Jl
MzIodmFsdWUudGFnR1BSKCksIG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnRhZ1BvaW50ZXIoKSk7
CisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUucGF5bG9hZEdQUigpLCBub2RlLnJlZ2lzdGVy
UG9pbnRlcigpLT5wYXlsb2FkUG9pbnRlcigpKTsKKworICAgICAgICBub1Jlc3VsdChtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHbG9i
YWxWYXJXYXRjaHBvaW50OiB7CisgICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNv
ZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpLmdldCgKKyAgICAgICAgICAgIGlkZW50aWZpZXIobm9k
ZS5pZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKSktPmltcGwoKSkuYWRkV2F0Y2hwb2ludCgKKyAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7CisgICAgICAgIAorI2lmIERG
R19FTkFCTEUoSklUX0FTU0VSVCkKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgbV9q
aXQubG9hZDMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnRhZ1BvaW50ZXIoKSwgc2NyYXRjaEdQ
Uik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE9LID0gbV9qaXQuYnJhbmNoMzIoCisg
ICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsCisgICAgICAgICAg
ICBUcnVzdGVkSW1tMzIobm9kZS5yZWdpc3RlclBvaW50ZXIoKS0+Z2V0KCkudGFnKCkpKTsKKyAg
ICAgICAgbV9qaXQubG9hZDMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnBheWxvYWRQb2ludGVy
KCksIHNjcmF0Y2hHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBvayA9IG1faml0LmJy
YW5jaDMyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCBzY3JhdGNoR1BSLAorICAg
ICAgICAgICAgVHJ1c3RlZEltbTMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPmdldCgpLnBheWxv
YWQoKSkpOworICAgICAgICBub3RPSy5saW5rKCZtX2ppdCk7CisgICAgICAgIG1faml0LmJyZWFr
cG9pbnQoKTsKKyAgICAgICAgb2subGluaygmbV9qaXQpOworI2VuZGlmCisgICAgICAgIAorICAg
ICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0
dXJlKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjE1
LDYgKzM2MTUsNTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOiB7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAg
ICAKKyAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCA9CisgICAgICAgICAgICBt
X2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQo
CisgICAgICAgICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVj
aygpKS0+aW1wbCgpKS53YXRjaHBvaW50U2V0KCk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3Q4KAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywKKyAg
ICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyh3YXRjaHBvaW50
U2V0LT5hZGRyZXNzT2ZJc1dhdGNoZWQoKSkpLAorICAgICAgICAgICAgICAgIHRoaXMsIG9wZXJh
dGlvbk5vdGlmeUdsb2JhbFZhcldyaXRlLCBOb1Jlc3VsdCwgd2F0Y2hwb2ludFNldCkpOworICAg
ICAgICAKKyAgICAgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKSB7CisgICAg
ICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd3Jp
dGVCYXJyaWVyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLCB2YWx1ZS5n
cHIoKSwgbm9kZS5jaGlsZDEoKSwgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MsIHNjcmF0
Y2hSZWcpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2ppdC5zdG9yZVB0cih2YWx1
ZS5ncHIoKSwgbm9kZS5yZWdpc3RlclBvaW50ZXIoKSk7CisKKyAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2Ug
R2xvYmFsVmFyV2F0Y2hwb2ludDogeworICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQoCisgICAgICAgICAgICBpZGVudGlmaWVy
KG5vZGUuaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpLT5pbXBsKCkpLmFkZFdhdGNocG9pbnQo
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOworICAgICAgICAKKyNp
ZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAg
IG1faml0LmxvYWRQdHIobm9kZS5yZWdpc3RlclBvaW50ZXIoKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KEpTVmFsdWU6OmVuY29kZShub2RlLnJlZ2lzdGVyUG9pbnRl
cigpLT5nZXQoKSkpKSk7CisgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgb2su
bGluaygmbV9qaXQpOworI2VuZGlmCisgICAgICAgIAorICAgICAgICBub1Jlc3VsdChtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ2hlY2tIYXNJbnN0
YW5jZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24g
MTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDE0LDYgKzE0MTQsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIp
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9u
KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJh
dGlvbl9XIG9wZXJhdGlvbiwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkKKyAgICB7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKFRydXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTE+CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBO
b1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBhcmcxKQogICAgIHsKQEAgLTE2NzIsNiArMTY3Nywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAg
ICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25f
VyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCisgICAgeworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyKHdhdGNocG9pbnRTZXQpKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxPgogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1
bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJnMSkKICAgICB7CkBAIC0xNzkzLDYgKzE4MDMsMTEgQEAg
cHVibGljOgogICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1
bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwg
YXBwZW5kQ2FsbChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCisgICAgeworICAgICAgICBw
cmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBtX2ppdC5hcHBlbmRDYWxs
KGZ1bmN0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJl
ZyByZXN1bHQxLCBHUFJSZWcgcmVzdWx0MikKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKQEAgLTIx
OTMsNiArMjIwOCwzMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRl
eCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2UuaW5kZXgoKSwganVtcFRv
RmFpbCwgcmVjb3ZlcnkpOwogICAgIH0KKyAgICAvLyBVc2UgdGhpcyBsaWtlIHlvdSB3b3VsZCB1
c2Ugc3BlY3VsYXRpb25DaGVjaygpLCBleGNlcHQgdGhhdCB5b3UgZG9uJ3QgcGFzcyBpdCBhIGp1
bXAKKyAgICAvLyAoYmVjYXVzZSB5b3UgZG9uJ3QgaGF2ZSB0byBleGVjdXRlIGEgYnJhbmNoOyB0
aGF0J3Mga2luZCBvZiB0aGUgd2hvbGUgcG9pbnQpLCBhbmQgeW91CisgICAgLy8gbXVzdCByZWdp
c3RlciB0aGUgcmV0dXJuZWQgV2F0Y2hwb2ludCB3aXRoIHNvbWV0aGluZyByZWxldmFudC4gSW4g
Z2VuZXJhbCwgdGhpcyBzaG91bGQKKyAgICAvLyBiZSB1c2VkIHdpdGggZXh0cmVtZSBjYXJlLiBV
c2Ugc3BlY3VsYXRpb25DaGVjaygpIHVubGVzcyB5b3UndmUgZ290IGFuIGFtYXppbmcgcmVhc29u
CisgICAgLy8gbm90IHRvLgorICAgIFdhdGNocG9pbnQqIHNwZWN1bGF0aW9uV2F0Y2hwb2ludChF
eGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2Rl
SW5kZXgpCisgICAgeworICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwg
bV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CisgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2pp
dC5jb2RlQmxvY2soKS0+b3NyRXhpdCgKKyAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5h
cHBlbmRPU1JFeGl0KAorICAgICAgICAgICAgICAgIE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAoKSwgdGhpcykpKTsKKyAgICAgICAgZXhpdC5tX3dhdGNocG9pbnRJbmRl
eCA9IG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRXYXRjaHBvaW50KAorICAgICAgICAgICAgV2F0
Y2hwb2ludChtX2ppdC53YXRjaHBvaW50TGFiZWwoKSkpOworICAgICAgICByZXR1cm4gJm1faml0
LmNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpOworICAgIH0K
KyAgICAvLyBUaGUgZGVmYXVsdCBmb3Igc3BlY3VsYXRpb24gd2F0Y2hwb2ludHMgaXMgdGhhdCB0
aGV5J3JlIHVuY291bnRlZCwgYmVjYXVzZSB0aGUKKyAgICAvLyBhY3Qgb2YgZmlyaW5nIGEgd2F0
Y2hwb2ludCBpbnZhbGlkYXRlcyBpdC4gU28sIGZ1dHVyZSByZWNvbXBpbGF0aW9ucyB3aWxsIG5v
dAorICAgIC8vIGF0dGVtcHQgdG8gc2V0IHRoaXMgd2F0Y2hwb2ludCBhZ2Fpbi4KKyAgICBXYXRj
aHBvaW50KiBzcGVjdWxhdGlvbldhdGNocG9pbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNw
ZWN1bGF0aW9uV2F0Y2hwb2ludChVbmNvdW50YWJsZVdhdGNocG9pbnQsIEpTVmFsdWVTb3VyY2Uo
KSwgTm9Ob2RlKTsKKyAgICB9CiAgICAgdm9pZCBmb3J3YXJkU3BlY3VsYXRpb25DaGVjayhFeGl0
S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5k
ZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3Zlcnkm
IHZhbHVlUmVjb3ZlcnkpCiAgICAgewogICAgICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgp
LmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDYgKzI1OSw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9i
eV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYXJndW1lbnRfYnlfdmFsKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZ2V0X2J5X3BuYW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2ds
b2JhbF92YXJfd2F0Y2hhYmxlKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2dsb2JhbF92YXIp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcG5hbWVzKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X3Njb3BlZF92YXIpCkBAIC0zMjQsNiArMzI1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2dsb2JhbF92YXIpCisgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zY29wZWRfdmFyKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcmVzb2x2ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfYmFzZSkKQEAgLTQ4MSw2
ICs0ODMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9i
eV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVj
ayk7CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9yc2hpZnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2Myw3ICs0NjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCBpc01hcHBlZChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpOwogICAgICAgICBib29s
IGdldE1hcHBlZFBheWxvYWQoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEJiBw
YXlsb2FkKTsKICAgICAgICAgYm9vbCBnZXRNYXBwZWRUYWcoaW50IHZpcnR1YWxSZWdpc3Rlcklu
ZGV4LCBSZWdpc3RlcklEJiB0YWcpOwotCisgICAgICAgIAogICAgICAgICB2b2lkIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpOwogICAgICAgICB2
b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgs
IFJlZ2lzdGVySUQgdGFnKTsKIApAQCAtNTk5LDYgKzU5OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfZ2xvYmFsX3ZhcihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikgeyBlbWl0X29wX2dldF9nbG9iYWxfdmFyKGluc3RydWN0aW9uKTsgfQogICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2luaXRfbGF6eV9yZWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2No
ZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiopOwpAQCAtNjYyLDYgKzY2Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXIoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX3Jlc29sdmUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3Jlc29sdmVfYmFzZShJbnN0cnVjdGlvbiopOwpAQCAtNzM5LDYgKzc0MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3ByZV9pbmMoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWwo
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyhJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9yc2hpZnQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTAs
NiArMTA5MCwzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiAg
ICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX3B1dF9nbG9iYWxfdmFy
KSwgdmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9i
YWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5yZWdpc3RlclBvaW50ZXI7CisgICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKKyAgICAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIAorICAgIGVtaXRMb2FkKHZhbHVlLCBy
ZWdUMSwgcmVnVDApOworICAgIAorICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8s
IEFic29sdXRlQWRkcmVzcyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5wcmVkaWNhdGVQb2ludGVy
KSkpOworICAgIAorICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQoKSkgeworICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgcmVnVDIpOworICAgICAgICBl
bWl0V3JpdGVCYXJyaWVyKGdsb2JhbE9iamVjdCwgcmVnVDEsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJ
bW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CisgICAgfQorICAgIAor
ICAgIHN0b3JlMzIocmVnVDEsIHJlZ2lzdGVyUG9pbnRlci0+dGFnUG9pbnRlcigpKTsKKyAgICBz
dG9yZTMyKHJlZ1QwLCByZWdpc3RlclBvaW50ZXItPnBheWxvYWRQb2ludGVyKCkpOworICAgIHVu
bWFwKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICAKKyAgICBKSVRT
dHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxLCByZWdUMCk7CisgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKyAg
ICBzdHViQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjpyZXNldFBhdGNoR2V0QnlJZChSZXBh
dGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCiB7
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwg
Y3RpX29wX2dldF9ieV9pZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MjcsNiArMTAyNywyOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVj
CiAgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0LCByZWdUMCwgcmVnVDIsIFNo
b3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIH0K
IAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICAKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3MoY3VycmVudEluc3RydWN0aW9uWzNd
LnUucHJlZGljYXRlUG9pbnRlcikpKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgCisgICAgc3RvcmVQdHIocmVn
VDAsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcik7CisgICAgaWYgKEhl
YXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKQorICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGds
b2JhbE9iamVjdCwgcmVnVDAsIHJlZ1QyLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJh
cnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
Z2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKKyAgICAKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKKyAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpOworICAgIHN0dWJDYWxsLmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6OnJlc2V0UGF0Y2hH
ZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby0+Y2FsbFJldHVy
bkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3Nyw2ICsyMzc3LDE1IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X2EKICAgICByZXR1cm4gY29u
c3RydWN0QXJyYXkoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIoc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCkpLCBz
dGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIoKSk7CiB9CiAKK0RFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQsIG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQoreworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKKyAgICAKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJh
bWUuY2FsbEZyYW1lOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKKyAgICBzeW1ib2xUYWJsZVB1dChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBj
YWxsRnJhbWUsIGNvZGVCbG9jay0+aWRlbnRpZmllcihzdGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIo
KSksIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCksIHRydWUpOworfQorCiBERUZJTkVfU1RV
Ql9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZSkKIHsKICAgICBTVFVCX0lOSVRf
U1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSw2ICs0NDUsNyBAQCBleHRlcm4gIkMiIHsK
ICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfYnlfaW5kZXgoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X3ZhbChT
VFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0
aV9vcF9wdXRfZ2V0dGVyX3NldHRlcihTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5B
TDsKKyAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhTVFVCX0FS
R1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF90
ZWFyX29mZl9hY3RpdmF0aW9uKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwog
ICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhTVFVCX0FSR1NfREVD
TEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF90aHJvd19y
ZWZlcmVuY2VfZXJyb3IoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJl
dmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1Niw2ICs4NTYsMTQgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfdwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2dsb2JhbF92YXJfY2hlY2spCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIHN5bWJvbFRhYmxlUHV0KGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGV4ZWMs
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1s0XS51Lm9wZXJhbmQpLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgdHJ1ZSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAx
MjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcmUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
ZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3Jlc29sdmVfd2l0aF9iYXNlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcHV0X2J5X2lkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lv
biAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgX2xsaW50
X29wX3B1dF9zY29wZWRfdmFyOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX2dldF9n
bG9iYWxfdmFyOgorbWFjcm8gZ2V0R2xvYmFsVmFyKHNpemUpCiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgIGxvYWRwIDhbUENdLCB0MAogICAgIGxvYWRpIDRbUENdLCB0MwpAQCAtMTA0Nyw5ICsx
MDQ3LDE3IEBAIF9sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QwXSwgdDEKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQogICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGxvYWRpIDEyW1BDXSwgdDMK
KyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQzCiAgICAgdmFsdWVQcm9maWxlKHQyLCB0
MSwgdDMpCi0gICAgZGlzcGF0Y2goNCkKKyAgICBkaXNwYXRjaChzaXplKQorZW5kCisKK19sbGlu
dF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICBnZXRHbG9iYWxWYXIoNCkKKworCitfbGxpbnRfb3Bf
Z2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOgorICAgIGdldEdsb2JhbFZhcig1KQogCiAKIF9sbGlu
dF9vcF9wdXRfZ2xvYmFsX3ZhcjoKQEAgLTEwNjMsNiArMTA3MSwyMiBAQCBfbGxpbnRfb3BfcHV0
X2dsb2JhbF92YXI6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92
YXJfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIDEyW1BDXSwgdDIKKyAg
ICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBidGJueiBbdDJdLCAu
b3BQdXRHbG9iYWxWYXJDaGVja1Nsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0
MiwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFt0MF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDBdCisgICAgZGlzcGF0Y2goNSkK
Ky5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGludF9v
cF9nZXRfYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgICMgV2Ugb25seSBkbyBtb25v
bW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0
aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAt
ODkzLDE1ICs4OTMsMjMgQEAgX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgogICAgIGRpc3BhdGNo
KDQpCiAKIAotX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorbWFjcm8gZ2V0R2xvYmFsVmFyKHNp
emUpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRwIDE2W1BCLCBQQywgOF0sIHQwCiAg
ICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBsb2FkcCBbdDBdLCB0MQogICAgIHN0b3Jl
cCB0MSwgW2NmciwgdDMsIDhdCi0gICAgbG9hZHAgMjRbUEIsIFBDLCA4XSwgdDAKKyAgICBsb2Fk
cCAoc2l6ZSAtIDEpICogOFtQQiwgUEMsIDhdLCB0MAogICAgIHZhbHVlUHJvZmlsZSh0MSwgdDAp
Ci0gICAgZGlzcGF0Y2goNCkKKyAgICBkaXNwYXRjaChzaXplKQorZW5kCisKK19sbGludF9vcF9n
ZXRfZ2xvYmFsX3ZhcjoKKyAgICBnZXRHbG9iYWxWYXIoNCkKKworCitfbGxpbnRfb3BfZ2V0X2ds
b2JhbF92YXJfd2F0Y2hhYmxlOgorICAgIGdldEdsb2JhbFZhcig1KQogCiAKIF9sbGludF9vcF9w
dXRfZ2xvYmFsX3ZhcjoKQEAgLTkxNCw2ICs5MjIsMjEgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxf
dmFyOgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNr
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCAyNFtQQiwgUEMsIDhdLCB0MgorICAg
IGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MQorICAgIGxvYWRwIDhbUEIsIFBDLCA4XSwgdDAKKyAg
ICBidGJueiBbdDJdLCAub3BQdXRHbG9iYWxWYXJDaGVja1Nsb3cKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQxLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDIpCisgICAgc3RvcmVwIHQyLCBb
dDBdCisgICAgZGlzcGF0Y2goNSkKKy5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdzoKKyAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKKyAgICBkaXNw
YXRjaCg1KQorCisKIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBh
bmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA0LDIyICs1MDQs
MjUgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZQogICAgIHN0cnVj
dHVyZSgpLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6
OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChzdHJ1Y3R1cmUo
KS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzaXplX3Qgb2Zmc2V0Owog
ICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAg
ICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90
Rm91bmQpCi0gICAgICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZz
ZXQob2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc2V0U3RydWN0
dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwotICAgIGlmIChvZmZz
ZXQgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQo
b2Zmc2V0KTsKKyAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgIHJl
dHVybiB0cnVlOwogfQogCiBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclBy
b3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmIHNsb3QsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4q
IGxvY2F0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CiAKLSAgICAgICAgdm9pZCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1l
KTsKKyAgICAgICAgYm9vbCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1l
KTsgLy8gUmV0dXJuIHRydWUgaWYgYW55dGhpbmcgaXMgcmVtb3ZlZC4KICAgICAgICAgYm9vbCBo
YXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRpb24o
KTsgfQogICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBz
dHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJ
KHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsMTIgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFi
bGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
KyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CisgICAg
QVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QtPnJlZ2lz
dGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
ODMsOSArODYsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgog
aW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBv
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xU
YWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50
cnkuaXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1i
b2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUu
ZmluZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBpZiAoaXRlciA9PSBzeW1ib2xU
YWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN5bWJvbFRhYmxlRW50cnk6
OkZhc3QgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CisgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7
CiAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKAogICAgICAgICBvYmplY3QtPnJlZ2lzdGVy
QXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCksIGVudHJ5LmdldEF0dHJpYnV0ZXMoKSB8IERvbnRE
ZWxldGUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtOTYsOSArMTAyLDEyIEBAIGlubGluZSBib29s
IHN5bWJvbFRhYmxlR2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsCiAgICAgYm9vbCYgc2xv
dElzV3JpdGVhYmxlKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5
bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlm
IChlbnRyeS5pc051bGwoKSkKKyAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBvYmplY3Qt
PnN5bWJvbFRhYmxlKCk7CisgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZS5maW5kKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIGlmIChpdGVyID09IHN5
bWJvbFRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgU3ltYm9sVGFibGVF
bnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNlY29uZDsKKyAgICBBU1NFUlQoIWVudHJ5LmlzTnVs
bCgpKTsKICAgICBzbG90LnNldFZhbHVlKG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRl
eCgpKS5nZXQoKSk7CiAgICAgc2xvdElzV3JpdGVhYmxlID0gIWVudHJ5LmlzUmVhZE9ubHkoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMiwxNSArMTIxLDIxIEBAIGlubGluZSBib29sIHN5bWJv
bFRhYmxlUHV0KAogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERh
dGEoKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUp
ID09IEhlYXA6OmhlYXAob2JqZWN0KSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQorICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAgICBTeW1ib2xUYWJsZTo6aXRlcmF0b3Ig
aXRlciA9IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CisgICAgYm9vbCB3YXNGYXQ7CisgICAgU3ltYm9s
VGFibGVFbnRyeTo6RmFzdCBmYXN0RW50cnkgPSBpdGVyLT5zZWNvbmQuZ2V0RmFzdCh3YXNGYXQp
OworICAgIEFTU0VSVCghZmFzdEVudHJ5LmlzTnVsbCgpKTsKKyAgICBpZiAoZmFzdEVudHJ5Lmlz
UmVhZE9ubHkoKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5
LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKKyAgICBpZiAoVU5M
SUtFTFkod2FzRmF0KSkKKyAgICAgICAgaXRlci0+c2Vjb25kLm5vdGlmeVdyaXRlKCk7CisgICAg
b2JqZWN0LT5yZWdpc3RlckF0KGZhc3RFbnRyeS5nZXRJbmRleCgpKS5zZXQoZ2xvYmFsRGF0YSwg
b2JqZWN0LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzNiw2ICsxNTEsNyBA
QCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnNlY29uZDsKICAg
ICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICBlbnRyeS5ub3RpZnlXcml0ZSgpOwogICAg
IGVudHJ5LnNldEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgb2JqZWN0LT5yZWdpc3RlckF0
KGVudHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworU3ltYm9sVGFibGVFbnRyeSYgU3ltYm9sVGFibGVFbnRyeTo6Y29weVNsb3coY29uc3QgU3lt
Ym9sVGFibGVFbnRyeSYgb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyLmlzRmF0KCkpOworICAg
IEZhdEVudHJ5KiBuZXdGYXRFbnRyeSA9IG5ldyBGYXRFbnRyeSgqb3RoZXIuZmF0RW50cnkoKSk7
CisgICAgZnJlZUZhdEVudHJ5KCk7CisgICAgbV9iaXRzID0gYml0d2lzZV9jYXN0PGludHB0cl90
PihuZXdGYXRFbnRyeSkgfCBGYXRGbGFnOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBT
eW1ib2xUYWJsZUVudHJ5OjpmcmVlRmF0RW50cnlTbG93KCkKK3sKKyAgICBBU1NFUlQoaXNGYXQo
KSk7CisgICAgZGVsZXRlIGZhdEVudHJ5KCk7Cit9CisKK2Jvb2wgU3ltYm9sVGFibGVFbnRyeTo6
Y291bGRCZVdhdGNoZWQoKQoreworICAgIGlmICghaXNGYXQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRj
aHBvaW50cy5nZXQoKTsKKyAgICBpZiAoIXdhdGNocG9pbnRzKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIHdhdGNocG9pbnRzLT5pc1N0aWxsVmFsaWQoKTsKK30KKwordm9pZCBT
eW1ib2xUYWJsZUVudHJ5OjphdHRlbXB0VG9XYXRjaCgpCit7CisgICAgRmF0RW50cnkqIGVudHJ5
ID0gaW5mbGF0ZSgpOworICAgIGlmICghZW50cnktPm1fd2F0Y2hwb2ludHMpIHsKKyAgICAgICAg
ZW50cnktPm1fd2F0Y2hwb2ludHMgPSBhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldCgpKTsKKyAg
ICAgICAgZW50cnktPm1fd2F0Y2hwb2ludHMtPnN0YXJ0V2F0Y2hpbmcoKTsKKyAgICB9Cit9CisK
K2Jvb2wqIFN5bWJvbFRhYmxlRW50cnk6OmFkZHJlc3NPZklzV2F0Y2hlZCgpCit7CisgICAgQVNT
RVJUKGNvdWxkQmVXYXRjaGVkKCkpOworICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX3dhdGNocG9p
bnRzLT5hZGRyZXNzT2ZJc1dhdGNoZWQoKTsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5Ojph
ZGRXYXRjaHBvaW50KFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCit7CisgICAgQVNTRVJUKGNvdWxk
QmVXYXRjaGVkKCkpOworICAgIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMtPmFkZCh3YXRjaHBv
aW50KTsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZVNsb3coKQorewor
ICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50
cy5nZXQoKTsKKyAgICBpZiAoIXdhdGNocG9pbnRzKQorICAgICAgICByZXR1cm47CisgICAgd2F0
Y2hwb2ludHMtPm5vdGlmeVdyaXRlKCk7Cit9CisKK1N5bWJvbFRhYmxlRW50cnk6OkZhdEVudHJ5
KiBTeW1ib2xUYWJsZUVudHJ5OjppbmZsYXRlU2xvdygpCit7CisgICAgRmF0RW50cnkqIGVudHJ5
ID0gbmV3IEZhdEVudHJ5KG1fYml0cyk7CisgICAgbV9iaXRzID0gYml0d2lzZV9jYXN0PGludHB0
cl90PihlbnRyeSkgfCBGYXRGbGFnOworICAgIHJldHVybiBlbnRyeTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNTMgKzMxLDE2
MyBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5j
bHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIFdh
dGNocG9pbnQ7CisgICAgY2xhc3MgV2F0Y2hwb2ludFNldDsKKwogICAgIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIGludCBtaXNzaW5nU3ltYm9sTWFya2VyKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ+OjptYXgoKTsgfQogCiAgICAgLy8gVGhlIGJpdCB0d2lkZGxpbmcgaW4gdGhpcyBj
bGFzcyBhc3N1bWVzIHRoYXQgZXZlcnkgcmVnaXN0ZXIgaW5kZXggaXMgYQogICAgIC8vIHJlYXNv
bmFibHkgc21hbGwgcG9zaXRpdmUgb3IgbmVnYXRpdmUgbnVtYmVyLCBhbmQgdGhlcmVmb3JlIGhh
cyBpdHMgaGlnaAogICAgIC8vIGZvdXIgYml0cyBhbGwgc2V0IG9yIGFsbCB1bnNldC4KIAorICAg
IC8vIEluIGFkZGl0aW9uIHRvIGltcGxlbWVudGluZyBzZW1hbnRpY3MtbWFuZGF0ZWQgdmFyaWFi
bGUgYXR0cmlidXRlcyBhbmQKKyAgICAvLyBpbXBsZW1lbnRhdGlvbi1tYW5kYXRlZCB2YXJpYWJs
ZSBpbmRleGluZywgdGhpcyBjbGFzcyBhbHNvIGltcGxlbWVudHMKKyAgICAvLyB3YXRjaHBvaW50
cyB0byBiZSB1c2VkIGZvciBKSVQgb3B0aW1pemF0aW9ucy4gQmVjYXVzZSB3YXRjaHBvaW50cyBh
cmUKKyAgICAvLyBtZWFudCB0byBiZSByZWxhdGl2ZWx5IHJhcmUsIHRoaXMgY2xhc3Mgb3B0aW1p
emVzIGhlYXZpbHkgZm9yIHRoZSBjYXNlCisgICAgLy8gdGhhdCB0aGV5IGFyZSBub3QgYmVpbmcg
dXNlZC4gVG8gdGhhdCBlbmQsIHRoaXMgY2xhc3MgdXNlcyB0aGUgdGhpbi1mYXQKKyAgICAvLyBp
ZGlvbTogZWl0aGVyIGl0IGlzIHRoaW4sIGluIHdoaWNoIGNhc2UgaXQgY29udGFpbnMgYW4gaW4t
cGxhY2UgZW5jb2RlZAorICAgIC8vIHdvcmQgdGhhdCBjb25zaXN0cyBvZiBhdHRyaWJ1dGVzLCB0
aGUgaW5kZXgsIGFuZCBhIGJpdCBzYXlpbmcgdGhhdCBpdCBpcworICAgIC8vIHRoaW47IG9yIGl0
IGlzIGZhdCwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyBhIHBvaW50ZXIgdG8gYSBtYWxsb2Mn
ZAorICAgIC8vIGRhdGEgc3RydWN0dXJlIGFuZCBhIGJpdCBzYXlpbmcgdGhhdCBpdCBpcyBmYXQu
IFRoZSBtYWxsb2MnZCBkYXRhCisgICAgLy8gc3RydWN0dXJlIHdpbGwgYmUgbWFsbG9jZWQgYSBz
ZWNvbmQgdGltZSB1cG9uIGNvcHksIHRvIHByZXNlcnZlIHRoZQorICAgIC8vIHByb3BlcnR5IHRo
YXQgaW4tcGxhY2UgZWRpdHMgdG8gU3ltYm9sVGFibGVFbnRyeSBkbyBub3QgbWFuaWZlc3QgaW4g
YW55CisgICAgLy8gY29waWVzLiBIb3dldmVyLCB0aGUgbWFsbG9jJ2QgRmF0RW50cnkgZGF0YSBz
dHJ1Y3R1cmUgY29udGFpbnMgYSByZWYtCisgICAgLy8gY291bnRlZCBwb2ludGVyIHRvIGEgc2hh
cmVkIFdhdGNocG9pbnRTZXQuIFRodXMsIGluLXBsYWNlIGVkaXRzIG9mIHRoZQorICAgIC8vIFdh
dGNocG9pbnRTZXQgd2lsbCBtYW5pZmVzdCBpbiBhbGwgY29waWVzLiBIZXJlJ3MgYSBwaWN0dXJl
OgorICAgIC8vCisgICAgLy8gU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNo
cG9pbnRTZXQKKyAgICAvLworICAgIC8vIElmIHlvdSBtYWtlIGEgY29weSBvZiBhIFN5bWJvbFRh
YmxlRW50cnksIHlvdSB3aWxsIGhhdmU6CisgICAgLy8KKyAgICAvLyBvcmlnaW5hbDogU3ltYm9s
VGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAvLyBjb3B5OiAg
ICAgU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0tLS1eCisKICAgICBzdHJ1Y3QgU3lt
Ym9sVGFibGVFbnRyeSB7CisgICAgICAgIC8vIFVzZSB0aGUgU3ltYm9sVGFibGVFbnRyeTo6RmFz
dCBjbGFzcywgZWl0aGVyIHZpYSBpbXBsaWNpdCBjYXN0IG9yIGJ5IGNhbGxpbmcKKyAgICAgICAg
Ly8gZ2V0RmFzdCgpLCB3aGVuIHlvdSAoMSkgb25seSBjYXJlIGFib3V0IGlzTnVsbCgpLCBnZXRJ
bmRleCgpLCBhbmQgaXNSZWFkT25seSgpLAorICAgICAgICAvLyBhbmQgKDIpIHlvdSBhcmUgaW4g
YSBob3QgcGF0aCB3aGVyZSB5b3UgbmVlZCB0byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIHRpbWVz
CisgICAgICAgIC8vIHRoYXQgeW91IGJyYW5jaCBvbiBpc0ZhdCgpIHdoZW4gZ2V0dGluZyB0aGUg
Yml0cygpLgorICAgICAgICBjbGFzcyBGYXN0IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAg
ICAgRmFzdCgpCisgICAgICAgICAgICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0
KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5KQorICAgICAgICAgICAgICAgIDogbV9iaXRz
KGVudHJ5LmJpdHMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuICFtX2JpdHM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBn
ZXRJbmRleCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4obV9iaXRzID4+IEZsYWdCaXRzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBSZWFkT25seUZsYWc7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBj
b25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMg
PSAwOworICAgICAgICAgICAgICAgIGlmIChtX2JpdHMgJiBSZWFkT25seUZsYWcpCisgICAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUmVhZE9ubHk7CisgICAgICAgICAgICAgICAgaWYg
KG1fYml0cyAmIERvbnRFbnVtRmxhZykKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8
PSBEb250RW51bTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlczsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgYm9vbCBpc0ZhdCgpIGNvbnN0CisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIGZyaWVuZCBzdHJ1Y3Qg
U3ltYm9sVGFibGVFbnRyeTsKKyAgICAgICAgICAgIGludHB0cl90IG1fYml0czsKKyAgICAgICAg
fTsKKwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KCkKICAgICAgICAgICAgIDogbV9iaXRzKDAp
CiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGlu
ZGV4KQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgZmFsc2Us
IGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAgICAgICAg
cGFjayhpbmRleCwgYXR0cmlidXRlcyAmIFJlYWRPbmx5LCBhdHRyaWJ1dGVzICYgRG9udEVudW0p
OwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB+U3ltYm9sVGFibGVFbnRyeSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQor
ICAgICAgICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAgeworICAgICAgICAgICAgKnRoaXMgPSBv
dGhlcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgb3Bl
cmF0b3I9KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkob3RoZXIuaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNvcHlTbG93KG90aGVyKTsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgpOworICAgICAgICAg
ICAgbV9iaXRzID0gb3RoZXIubV9iaXRzOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAg
ICAgICB9CisgICAgICAgIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiAhbV9iaXRzOworICAgICAgICAgICAgcmV0dXJuICFiaXRzKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgZ2V0SW5kZXgoKSBjb25zdAogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9iaXRzID4+IEZsYWdCaXRzOworICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oYml0cygpID4+IEZsYWdCaXRzKTsKICAgICAgICAgfQotCisgICAg
ICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QgZ2V0RmFzdCgpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBGYXN0KCp0aGlzKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0IGdldEZhc3QoYm9vbCYgd2FzRmF0KSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBGYXN0IHJlc3VsdDsKKyAgICAgICAgICAgIHdhc0ZhdCA9
IGlzRmF0KCk7CisgICAgICAgICAgICBpZiAod2FzRmF0KQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5tX2JpdHMgPSBmYXRFbnRyeSgpLT5tX2JpdHM7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0czsKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMo
KSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsK
LSAgICAgICAgICAgIGlmIChtX2JpdHMgJiBSZWFkT25seUZsYWcpCi0gICAgICAgICAgICAgICAg
YXR0cmlidXRlcyB8PSBSZWFkT25seTsKLSAgICAgICAgICAgIGlmIChtX2JpdHMgJiBEb250RW51
bUZsYWcpCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBEb250RW51bTsKLSAgICAgICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgICAgICAgICAgcmV0dXJuIGdldEZhc3QoKS5nZXRB
dHRyaWJ1dGVzKCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZXModW5z
aWduZWQgYXR0cmlidXRlcykKQEAgLTg3LDMwICsxOTcsMTI1IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBtX2JpdHMgJiBSZWFkT25seUZsYWc7CisgICAgICAgICAgICByZXR1cm4gYml0cygp
ICYgUmVhZE9ubHlGbGFnOwogICAgICAgICB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgY291
bGRCZVdhdGNoZWQoKTsKKyAgICAgICAgCisgICAgICAgIC8vIE5vdGlmeSBhbiBvcHBvcnR1bml0
eSB0byBjcmVhdGUgYSB3YXRjaHBvaW50IGZvciBhIHZhcmlhYmxlLiBUaGlzIGlzCisgICAgICAg
IC8vIGlkZW1wb3RlbnQgYW5kIGZhaWwtc2lsZW50LiBJdCBpcyBpZGVtcG90ZW50IGluIHRoZSBz
ZW5zZSB0aGF0IGlmCisgICAgICAgIC8vIGEgd2F0Y2hwb2ludCBzZXQgaGFkIGFscmVhZHkgYmVl
biBjcmVhdGVkLCB0aGVuIGFub3RoZXIgb25lIHdpbGwgbm90CisgICAgICAgIC8vIGJlIGNyZWF0
ZWQuIEhlbmNlIHR3byBjYWxscyB0byB0aGlzIG1ldGhvZCBoYXZlIHRoZSBzYW1lIGVmZmVjdCBh
cworICAgICAgICAvLyBvbmUgY2FsbC4gSXQgaXMgYWxzbyBmYWlsLXNpbGVudCwgaW4gdGhlIHNl
bnNlIHRoYXQgaWYgYSB3YXRjaHBvaW50CisgICAgICAgIC8vIHNldCBoYWQgYmVlbiBjcmVhdGVk
IGFuZCBoYWQgYWxyZWFkeSBiZWVuIGludmFsaWRhdGVkLCB0aGVuIHRoaXMgd2lsbAorICAgICAg
ICAvLyBqdXN0IHJldHVybi4gVGhpcyBtZWFucyB0aGF0IGNvdWxkQmVXYXRjaGVkKCkgbWF5IHJl
dHVybiBmYWxzZSBldmVuCisgICAgICAgIC8vIGltbWVkaWF0ZWx5IGFmdGVyIGEgY2FsbCB0byBh
dHRlbXB0VG9XYXRjaCgpLgorICAgICAgICB2b2lkIGF0dGVtcHRUb1dhdGNoKCk7CisgICAgICAg
IAorICAgICAgICBib29sKiBhZGRyZXNzT2ZJc1dhdGNoZWQoKTsKKyAgICAgICAgCisgICAgICAg
IHZvaWQgYWRkV2F0Y2hwb2ludChXYXRjaHBvaW50Kik7CisgICAgICAgIAorICAgICAgICBXYXRj
aHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlXcml0ZSgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIG5vdGlmeVdyaXRlU2xvdygpOworICAgICAgICB9CisgICAgICAgIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBSZWFkT25seUZsYWcgPSAweDE7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEb250RW51bUZsYWcgPSAweDI7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb3ROdWxsRmxhZyA9IDB4NDsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEZsYWdCaXRzID0gMzsKKyAgICAgICAgc3RhdGljIGNvbnN0IGlu
dHB0cl90IEZhdEZsYWcgPSAweDE7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBSZWFk
T25seUZsYWcgPSAweDI7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBEb250RW51bUZs
YWcgPSAweDQ7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBOb3ROdWxsRmxhZyA9IDB4
ODsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IEZsYWdCaXRzID0gNDsKKyAgICAgICAg
CisgICAgICAgIGNsYXNzIEZhdEVudHJ5IHsKKyAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBGYXRFbnRyeShpbnRwdHJfdCBi
aXRzKQorICAgICAgICAgICAgICAgIDogbV9iaXRzKGJpdHMgfCBGYXRGbGFnKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpbnRwdHJfdCBt
X2JpdHM7IC8vIGFsd2F5cyBoYXMgRmF0RmxhZyBzZXQgYW5kIGV4YWN0bHkgbWF0Y2hlcyB3aGF0
IHRoZSBiaXRzIHdvdWxkIGhhdmUgYmVlbiBpZiB0aGlzIHdhc24ndCBmYXQuCisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3dhdGNocG9pbnRzOworICAg
ICAgICB9OworICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgY29weVNsb3coY29u
c3QgU3ltYm9sVGFibGVFbnRyeSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG5v
dGlmeVdyaXRlU2xvdygpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpc0ZhdCgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBGYXRGbGFnOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBjb25zdCBGYXRFbnRyeSogZmF0RW50cnkoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PGNvbnN0IEZhdEVudHJ5Kj4obV9iaXRzICYgfkZhdEZsYWcpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogZmF0RW50cnkoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PEZhdEVudHJ5Kj4obV9iaXRzICYgfkZhdEZsYWcpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBGYXRFbnRyeSogaW5mbGF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChM
SUtFTFkoaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbGF0ZVNsb3coKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgRmF0RW50cnkqIGluZmxhdGVTbG93KCk7CisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5M
SU5FIGludHB0cl90IGJpdHMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNG
YXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV9iaXRzOworICAgICAg
ICAgICAgcmV0dXJuIG1fYml0czsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlT
X0lOTElORSBpbnRwdHJfdCYgYml0cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0Zh
dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX2JpdHM7CisgICAgICAg
ICAgICByZXR1cm4gbV9iaXRzOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGZy
ZWVGYXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeVNsb3co
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBmcmVlRmF0RW50cnlTbG93KCk7
CiAKICAgICAgICAgdm9pZCBwYWNrKGludCBpbmRleCwgYm9vbCByZWFkT25seSwgYm9vbCBkb250
RW51bSkKICAgICAgICAgewotICAgICAgICAgICAgbV9iaXRzID0gKGluZGV4IDw8IEZsYWdCaXRz
KSB8IE5vdE51bGxGbGFnOworICAgICAgICAgICAgaW50cHRyX3QmIGJpdHNSZWYgPSBiaXRzKCk7
CisgICAgICAgICAgICBiaXRzUmVmID0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwg
RmxhZ0JpdHMpIHwgTm90TnVsbEZsYWc7CiAgICAgICAgICAgICBpZiAocmVhZE9ubHkpCi0gICAg
ICAgICAgICAgICAgbV9iaXRzIHw9IFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgICAgICBiaXRz
UmVmIHw9IFJlYWRPbmx5RmxhZzsKICAgICAgICAgICAgIGlmIChkb250RW51bSkKLSAgICAgICAg
ICAgICAgICBtX2JpdHMgfD0gRG9udEVudW1GbGFnOworICAgICAgICAgICAgICAgIGJpdHNSZWYg
fD0gRG9udEVudW1GbGFnOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzVmFs
aWRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKGluZGV4
IDw8IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gaW5kZXg7CisgICAgICAgICAgICByZXR1cm4g
KChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IEZsYWdCaXRzKSA+PiBGbGFnQml0cykg
PT0gc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KTsKICAgICAgICAgfQogCi0gICAgICAgIGlu
dCBtX2JpdHM7CisgICAgICAgIGludHB0cl90IG1fYml0czsKICAgICB9OwogCiAgICAgc3RydWN0
IFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxTeW1ib2xUYWJsZUVudHJ5
PiB7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNi0xMCAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0
Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGFiaWxpdHkgdG8gc2V0IHRoZSBpbmxp
bmUgY2FwYWNpdHkgb2Ygc2VnbWVudGVkIHZlY3RvcnMuCisKKyAgICAgICAgKiB3dGYvU2VnbWVu
dGVkVmVjdG9yLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAoU2VnbWVudGVkVmVjdG9ySXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdURjo6U2VnbWVudGVkVmVjdG9ySXRlcmF0b3I6OlNlZ21lbnRlZFZlY3Rv
ckl0ZXJhdG9yKToKKyAgICAgICAgKFNlZ21lbnRlZFZlY3Rvcik6CisKIDIwMTItMDYtMTIgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IHRo
ZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCShyZXZpc2lvbiAxMjAxNjIp
CisrKyBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMTIgKzM0LDEyIEBACiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIEFuIGl0ZXJhdG9yIGZv
ciBTZWdtZW50ZWRWZWN0b3IuIEl0IHN1cHBvcnRzIG9ubHkgdGhlIHByZSArKyBvcGVyYXRvcgot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemU+IGNsYXNzIFNlZ21l
bnRlZFZlY3RvcjsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXpl
PiBjbGFzcyBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvciB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBTZWdtZW50U2l6ZSA9IDgsIHNpemVfdCBJbmxpbmVDYXBhY2l0eSA9IDMyPiBj
bGFzcyBTZWdtZW50ZWRWZWN0b3I7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBT
ZWdtZW50U2l6ZSA9IDgsIHNpemVfdCBJbmxpbmVDYXBhY2l0eSA9IDMyPiBjbGFzcyBTZWdtZW50
ZWRWZWN0b3JJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNl
Z21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZT47CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZWdt
ZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PjsKICAgICBwdWJsaWM6
Ci0gICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+
IEl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNl
Z21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4gSXRlcmF0b3I7CiAKICAgICAgICAgflNlZ21lbnRl
ZFZlY3Rvckl0ZXJhdG9yKCkgeyB9CiAKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCAhPSBvdGhlci5tX2luZGV4IHx8IG1fc2VnbWVu
dCAhPSBvdGhlci5tX3NlZ21lbnQgfHwgJm1fdmVjdG9yICE9ICZvdGhlci5tX3ZlY3RvcjsKICAg
ICAgICAgfQogCi0gICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yJiBvcGVyYXRvcj0oY29u
c3QgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+JiBvdGhlcikKKyAgICAg
ICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBTZWdtZW50ZWRWZWN0
b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+JiBvdGhlcikKICAgICAg
ICAgewogICAgICAgICAgICAgbV92ZWN0b3IgPSBvdGhlci5tX3ZlY3RvcjsKICAgICAgICAgICAg
IG1fc2VnbWVudCA9IG90aGVyLm1fc2VnbWVudDsKQEAgLTg0LDI1ICs4NCwyOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU2VnbWVudGVkVmVj
dG9ySXRlcmF0b3IoU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPiYgdmVjdG9yLCBzaXpl
X3Qgc2VnbWVudCwgc2l6ZV90IGluZGV4KQorICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRv
cihTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiYgdmVjdG9y
LCBzaXplX3Qgc2VnbWVudCwgc2l6ZV90IGluZGV4KQogICAgICAgICAgICAgOiBtX3ZlY3Rvcih2
ZWN0b3IpCiAgICAgICAgICAgICAsIG1fc2VnbWVudChzZWdtZW50KQogICAgICAgICAgICAgLCBt
X2luZGV4KGluZGV4KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTZWdtZW50ZWRW
ZWN0b3I8VCwgU2VnbWVudFNpemU+JiBtX3ZlY3RvcjsKKyAgICAgICAgU2VnbWVudGVkVmVjdG9y
PFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4mIG1fdmVjdG9yOwogICAgICAgICBzaXpl
X3QgbV9zZWdtZW50OwogICAgICAgICBzaXplX3QgbV9pbmRleDsKICAgICB9OwogCiAgICAgLy8g
U2VnbWVudGVkVmVjdG9yIGlzIGp1c3QgbGlrZSBWZWN0b3IsIGJ1dCBpdCBkb2Vzbid0IG1vdmUg
dGhlIHZhbHVlcwogICAgIC8vIHN0b3JlZCBpbiBpdHMgYnVmZmVyIHdoZW4gaXQgZ3Jvd3MuIFRo
ZXJlZm9yZSwgaXQgaXMgc2FmZSB0byBrZWVwCi0gICAgLy8gcG9pbnRlcnMgaW50byBhIFNlZ21l
bnRlZFZlY3Rvci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXpl
PiBjbGFzcyBTZWdtZW50ZWRWZWN0b3IgewotICAgICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVk
VmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+OworICAgIC8vIHBvaW50ZXJzIGludG8gYSBT
ZWdtZW50ZWRWZWN0b3IuIFRoZSBkZWZhdWx0IHR1bmluZyB2YWx1ZXMgYXJlCisgICAgLy8gb3B0
aW1pemVkIGZvciBzZWdtZW50ZWQgdmVjdG9ycyB0aGF0IGdldCBsYXJnZTsgeW91IG1heSB3YW50
IHRvIHVzZQorICAgIC8vIFNlZ21lbnRlZFZlY3Rvcjx0aGluZ3ksIDEsIDA+IGlmIHlvdSBkb24n
dCBleHBlY3QgYSBsb3Qgb2YgZW50cmllcy4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6
ZV90IFNlZ21lbnRTaXplLCBzaXplX3QgSW5saW5lQ2FwYWNpdHk+CisgICAgY2xhc3MgU2VnbWVu
dGVkVmVjdG9yIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9y
PFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT47CiAgICAgcHVibGljOgotICAgICAgICB0
eXBlZGVmIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiBJdGVyYXRvcjsK
KyAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwg
SW5saW5lQ2FwYWNpdHk+IEl0ZXJhdG9yOwogCiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcigpCiAg
ICAgICAgICAgICA6IG1fc2l6ZSgwKQpAQCAtMjUwLDcgKzI1Myw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogCiAgICAgICAgIHNpemVfdCBtX3NpemU7CiAgICAgICAgIFNlZ21lbnQgbV9pbmxpbmVTZWdt
ZW50OwotICAgICAgICBWZWN0b3I8U2VnbWVudCosIDMyPiBtX3NlZ21lbnRzOworICAgICAgICBW
ZWN0b3I8U2VnbWVudCosIElubGluZUNhcGFjaXR5PiBtX3NlZ21lbnRzOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTYyKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMTIg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBERkcgc2hvdWxkIGJl
IGFibGUgdG8gc2V0IHdhdGNocG9pbnRzIG9uIGdsb2JhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NjkyCisKKyAgICAgICAgUnVi
YmVyIHN0YW1wZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAgIAorICAgICAgICBBZGRlZCBh
IHRlc3QgZm9yIHdhdGNocG9pbnRzLiBBbHNvIHVwZGF0ZWQgdGhlIGpzYy10ZXN0LWxpc3QgdG8g
aW5jbHVkZSB0aGUgbGF0ZXN0CisgICAgICAgIHRlc3RzLgorCisgICAgICAgICogZmFzdC9qcy9k
ZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9qc2MtdGVzdC1saXN0OgorICAgICAgICAqIGZhc3QvanMv
c2NyaXB0LXRlc3RzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRjaHBvaW50LmpzOiBBZGRlZC4K
KyAgICAgICAgKGZvbyk6CisgICAgICAgIChiYXIpOgorICAgICAgICAoLmZvbyk6CisKIDIwMTIt
MDYtMTIgIEVkYWVuYSBTYWxpbmFzIEphc3NvICA8ZWRhZW5hQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDYW4ndCBzZXQgZWwudHlwZSBvbiBhIDxidXR0b24+IGVsZW1lbnQKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0
LXdhdGNocG9pbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9kZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjA5IEBACitUZXN0cyBjb3JyZWN0bmVzcyBvZiBmdW5jdGlvbiBj
YWxscyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBvdmVyd3JpdHRlbi4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxCitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA3
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDExCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMTMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDE3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTkKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAyMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIzCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMjUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI5
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMzEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAzMworUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDM1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMzcKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAzOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDQxCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgNDMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA0NQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDQ3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNDkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA1
MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDUzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgNTUKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyA1NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDU5CitQQVNTIGJh
cihpLCBpICsgMSkgaXMgNjEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA2MworUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDY1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNjcKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyA2OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDcxCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
NzMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA3NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDc3CitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgNzkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA4MQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDgzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgODUKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyA4NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDg5CitQQVNTIGJhcihpLCBpICsg
MSkgaXMgOTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA5MworUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDk1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgOTcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA5OQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDEwMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEwMworUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDEwNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEwNworUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDEwOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDExMQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDExMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDExNQorUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDExNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDExOQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDEyMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEyMworUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDEyNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEyNworUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDEyOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEzMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEz
MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEzNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEzNwor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDEzOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE0MQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDE0MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE0NQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDE0NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE0OQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDE1MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE1MworUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDE1NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE1NworUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDE1OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE2MQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDE2MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE2NQorUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDE2NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE2OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE3
MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE3MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE3NQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDE3NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE3OQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDE4MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE4MworUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDE4NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE4NworUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDE4OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE5MQorUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDE5MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE5NQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDE5NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE5OQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDIwMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIwMworUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDIwNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIwNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIw
OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIxMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIxMwor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDIxNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIxNworUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDIxOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIyMQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDIyMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIyNQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDIyNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIyOQorUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDIzMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIzMworUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDIzNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIzNworUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDIzOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI0MQorUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDI0MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI0NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI0
NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI0OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI1MQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDI1MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI1NQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDI1NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI1OQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDI2MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI2MworUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDI2NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI2NworUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDI2OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI3MQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDI3MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI3NQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDI3NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI3OQorUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDI4MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI4MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI4
NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI4NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI4OQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDI5MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI5MworUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDI5NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI5NworUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDI5OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0x
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAt
MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJh
cihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwg
aSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
LTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsg
MSkgaXMgLTEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRj
aHBvaW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctY2FsbC1m
dW5jdGlvbi1oaXQtd2F0Y2hwb2ludC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9kZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9qc2MtdGVzdC1saXN0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvanNjLXRlc3QtbGlzdAkocmV2aXNpb24gMTIwMTYy
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9qc2MtdGVzdC1saXN0CSh3b3JraW5nIGNvcHkpCkBA
IC02NCwyMyArNjQsNDUgQEAgZmFzdC9qcy9kZWJ1Z2dlcgogZmFzdC9qcy9kZWNsYXJhdGlvbi1p
bi1ibG9jawogZmFzdC9qcy9kZWxldGUtZ2V0dGVycy1zZXR0ZXJzCiBmYXN0L2pzL2RlbGV0ZS10
aGVuLXB1dAotZmFzdC9qcy9kZmctYXJndW1lbnRzLW9zci1leGl0Ci1mYXN0L2pzL2RmZy1hcmd1
bWVudHMtbWl4ZWQtYWxpYXMKK2Zhc3QvanMvZGZnLWFkZC1ub3QtbnVtYmVyCitmYXN0L2pzL2Rm
Zy1hcmd1bWVudHMtYWxpYXMtZXNjYXBlCitmYXN0L2pzL2RmZy1hcmd1bWVudHMtYWxpYXMtb25l
LWJsb2NrLW9zci1leGl0CitmYXN0L2pzL2RmZy1hcmd1bWVudHMtYWxpYXMtb25lLWJsb2NrLW92
ZXJ3cml0ZS1hcmd1bWVudHMKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcy1vbmUtYmxvY2st
b3ZlcndyaXRlCitmYXN0L2pzL2RmZy1hcmd1bWVudHMtYWxpYXMtb25lLWJsb2NrCitmYXN0L2pz
L2RmZy1hcmd1bWVudHMtYWxpYXMKIGZhc3QvanMvZGZnLWFyZ3VtZW50cy1jcm9zcy1jb2RlLW9y
aWdpbgorZmFzdC9qcy9kZmctYXJndW1lbnRzLW1peGVkLWFsaWFzCitmYXN0L2pzL2RmZy1hcmd1
bWVudHMtb3NyLWV4aXQKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1vdXQtb2YtYm91bmRzCiBmYXN0
L2pzL2RmZy1hcmd1bWVudHMtdW5leHBlY3RlZC1lc2NhcGUKLWZhc3QvanMvZGZnLWFyZ3VtZW50
cy1hbGlhcwotZmFzdC9qcy9kZmctYXJndW1lbnRzLWFsaWFzLWVzY2FwZQogZmFzdC9qcy9kZmct
YXJyYXktbGVuZ3RoLWRlYWQKK2Zhc3QvanMvZGZnLWJyYW5jaC1ub3QtZmFpbAorZmFzdC9qcy9k
ZmctY2hlY2stdHdvLXN0cnVjdHVyZXMKK2Zhc3QvanMvZGZnLWNvbnN0YW50LWZvbGQtZmlyc3Qt
bG9jYWwtcmVhZC1hZnRlci1ibG9jay1tZXJnZQogZmFzdC9qcy9kZmctY29udmVydC10aGlzLWRv
bS13aW5kb3cKK2Zhc3QvanMvZGZnLWNzZS1jZmEtZGlzY3JlcGFuY3kKK2Zhc3QvanMvZGZnLWRl
YWQtbWluLW9uZS1hcmcKK2Zhc3QvanMvZGZnLWRlYWQtbWluLXR3by1hcmdzCitmYXN0L2pzL2Rm
Zy1kZWFkLXNwZWN1bGF0aW9uCitmYXN0L2pzL2RmZy1kZWFkLXZhcmlhYmxlLW9uLWV4aXQKK2Zh
c3QvanMvZGZnLWRvdWJsZS11c2Utb2YtcG9zdC1zaW1wbGlmaWNhdGlvbi1kb3VibGUtcHJlZGlj
dGlvbgogZmFzdC9qcy9kZmctZG91YmxlLXZvdGUtZnV6egogZmFzdC9qcy9kZmctZXhjZXB0aW9u
CiBmYXN0L2pzL2RmZy1mbG9hdDMyYXJyYXkKIGZhc3QvanMvZGZnLWZsb2F0NjRhcnJheQorZmFz
dC9qcy9kZmctZmx1c2gtZ2V0LWxvY2FsCiBmYXN0L2pzL2RmZy1nZXQtYnktdmFsLWNsb2JiZXIK
IGZhc3QvanMvZGZnLWdldC1ieS12YWwtZ2V0dGVyLWNzZQogZmFzdC9qcy9kZmctZ2V0dGVyLXRo
cm93CiBmYXN0L2pzL2RmZy1nZXR0ZXIKK2Zhc3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMtYmVj
b21lLWRvdWJsZQorZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1iZWNvbWUtaW50MzIKIGZh
c3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMtaW50MzIKK2Zhc3QvanMvZGZnLWlubGluZS1hcmd1
bWVudHMtb3NyLWV4aXQtYW5kLWNhcHR1cmUKK2Zhc3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMt
b3V0LW9mLWJvdW5kcworZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1yZXNldC1jaGFuZ2V0
eXBlCitmYXN0L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRzLXJlc2V0CiBmYXN0L2pzL2RmZy1pbmxp
bmUtYXJndW1lbnRzLXNpbXBsZQogZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy11c2UtZGly
ZWN0bHktZnJvbS1pbmxpbmVkLWNvZGUKIGZhc3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMtdXNl
LWZyb20tYWxsLXRoZS1wbGFjZXMtYnJva2VuCkBAIC05Niw2ICsxMTgsNyBAQCBmYXN0L2pzL2Rm
Zy1pbmxpbmUtdW51c2VkLXRoaXMtbWV0aG9kLWNoCiBmYXN0L2pzL2RmZy1pbmxpbmUtdW51c2Vk
LXRoaXMKIGZhc3QvanMvZGZnLWlubGluaW5nLXJlZy1hbGxvYwogZmFzdC9qcy9kZmctaW50MTZh
cnJheQorZmFzdC9qcy9kZmctaW50MzItdG8tZG91YmxlLW9uLWtub3duLW51bWJlcgogZmFzdC9q
cy9kZmctaW50MzJhcnJheS1vdmVyZmxvdy12YWx1ZXMKIGZhc3QvanMvZGZnLWludDMyYXJyYXkK
IGZhc3QvanMvZGZnLWludDhhcnJheQpAQCAtMTA1LDE1ICsxMjgsMjQgQEAgZmFzdC9qcy9kZmct
aW50cmluc2ljLXVudXNlZC10aGlzLW1ldGhvZAogZmFzdC9qcy9kZmctaW50cmluc2ljLXVudXNl
ZC10aGlzCiBmYXN0L2pzL2RmZy1taW4tbWF4CiBmYXN0L2pzL2RmZy1tdWx0aXBseQorZmFzdC9q
cy9kZmctbmVnYXRpdmUtYXJyYXktaW5kZXgKK2Zhc3QvanMvZGZnLW9idmlvdXMtY29uc3RhbnQt
Y2ZhCiBmYXN0L2pzL2RmZy1vdGhlci1icmFuY2gKIGZhc3QvanMvZGZnLXBvaXNvbi1mdXp6Citm
YXN0L2pzL2RmZy1wcm90by1hY2Nlc3MtaW5saW5lLW9zci1leGl0CitmYXN0L2pzL2RmZy1wdXQt
YnktaWQtcHJvdG90eXBlLWNoZWNrCitmYXN0L2pzL2RmZy1wdXRieXZhbC1jZmEtY2xvYmJlcgog
ZmFzdC9qcy9kZmctc3RyaW5nLXN0cmljdGVxCitmYXN0L2pzL2RmZy10ZWFyLW9mZi1hcmd1bWVu
dHMtbm90LWFjdGl2YXRpb24KIGZhc3QvanMvZGZnLXVpbnQxNmFycmF5Ci1mYXN0L2pzL2RmZy11
aW50MzJhcnJheS1vdmVyZmxvdy12YWx1ZXMKLWZhc3QvanMvZGZnLXVpbnQzMi10by1udW1iZXIK
IGZhc3QvanMvZGZnLXVpbnQzMi10by1udW1iZXItb24tY2FwdHVyZWQtdmFyaWFibGUKK2Zhc3Qv
anMvZGZnLXVpbnQzMi10by1udW1iZXIKK2Zhc3QvanMvZGZnLXVpbnQzMmFycmF5LW92ZXJmbG93
LWNvbnN0YW50CitmYXN0L2pzL2RmZy11aW50MzJhcnJheS1vdmVyZmxvdy12YWx1ZXMKK2Zhc3Qv
anMvZGZnLXVpbnQzMmFycmF5CiBmYXN0L2pzL2RmZy11aW50OGFycmF5CiBmYXN0L2pzL2RmZy11
aW50OGNsYW1wZWRhcnJheQorZmFzdC9qcy9kZmctd2Vhay1qcy1jb25zdGFudC1zaWxlbnQtZmls
bAogZmFzdC9qcy9kaWN0aW9uYXJ5LW5vLWNhY2hlCiBmYXN0L2pzL2RpY3Rpb25hcnktcHJvdG90
eXBlLWNhY2hpbmcKIGZhc3QvanMvZG8td2hpbGUtc2VtaWNvbG9uCkBAIC0xMjYsNiArMTU4LDcg
QEAgZmFzdC9qcy9ldmFsLXZhci1kZWNsCiBmYXN0L2pzL2V4Y2VwdGlvbi1leHByZXNzaW9uLW9m
ZnNldAogZmFzdC9qcy9leGNlcHRpb24tZm9yLW5vbm9iamVjdAogZmFzdC9qcy9leGNlcHRpb24t
bGluZW51bXMKK2Zhc3QvanMvZXhjZXB0aW9uLXByb3BhZ2F0ZS1mcm9tLWRmZy10by1sbGludAog
ZmFzdC9qcy9leGNlcHRpb24tcHJvcGVydGllcwogZmFzdC9qcy9leGNlcHRpb24tdHJ5LWZpbmFs
bHktc2NvcGUtZXJyb3IKIGZhc3QvanMvZXhjZXB0aW9uLXdpdGgtaGFuZGxlci1pbnNpZGUtZXZh
bC13aXRoLWR5bmFtaWMtc2NvcGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRl
c3RzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRjaHBvaW50LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRj
aHBvaW50LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQuanMJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjMgQEAKK2Rlc2NyaXB0aW9uKAorIlRlc3RzIGNvcnJlY3RuZXNzIG9mIGZ1bmN0aW9u
IGNhbGxzIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIG92ZXJ3cml0dGVuLiIKKyk7CisKK2Z1bmN0aW9u
IGZvbyhhLCBiKSB7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitmdW5jdGlvbiBiYXIoYSwgYikg
eworICAgIHJldHVybiBmb28oYSwgYik7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyAr
K2kpIHsKKyAgICBpZiAoaSA9PSAxNTApCisgICAgICAgIGZvbyA9IGZ1bmN0aW9uKGEsIGIpIHsg
cmV0dXJuIGEgLSBiOyB9CisgICAgdmFyIGV4cGVjdGVkOworICAgIGlmIChpIDwgMTUwKQorICAg
ICAgICBleHBlY3RlZCA9IGkgKyBpICsgMTsKKyAgICBlbHNlCisgICAgICAgIGV4cGVjdGVkID0g
LTE7CisgICAgc2hvdWxkQmUoImJhcihpLCBpICsgMSkiLCAiIiArIGV4cGVjdGVkKTsKK30KKwo=
</data>
<flag name="commit-queue"
          id="154710"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147245</attachid>
            <date>2012-06-13 00:04:58 -0700</date>
            <delta_ts>2012-06-13 00:34:27 -0700</delta_ts>
            <desc>attempting to fix Win</desc>
            <filename>globalwatch_patch_16.diff</filename>
            <type>text/plain</type>
            <size>157167</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMCBA
QAorMjAxMi0wNi0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaW1wbGVtZW50cyBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgZm9sZGluZyBieSBhbGxv
d2luZyB0aGUgb3B0aW1pemluZworICAgICAgICBjb21waWxlciB0byBzZXQgYSAid2F0Y2hwb2lu
dCIgb24gZ2xvYmFscyB0aGF0IGl0IHdpc2hlcyB0byBjb25zdGFudCBmb2xkLgorICAgICAgICBJ
ZiB0aGUgd2F0Y2hwb2ludCBmaXJlcywgdGhlbiBhbiBPU1IgZXhpdCBpcyBmb3JjZWQgYnkgb3Zl
cndyaXRpbmcgdGhlCisgICAgICAgIG1hY2hpbmUgY29kZSB0aGF0IHRoZSBvcHRpbWl6aW5nIGNv
bXBpbGVyIGdlbmVyYXRlZCB3aXRoIGEganVtcC4KKyAgICAgICAgCisgICAgICAgIEFzIHN1Y2gs
IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHF1aXRlIGEgYml0IG9mIHN0dWZmOgorICAgICAgICAKKyAg
ICAgICAgLSBKdW1wIHJlcGxhY2VtZW50IG9uIHRob3NlIGhhcmR3YXJlIHRhcmdldHMgc3VwcG9y
dGVkIGJ5IHRoZSBvcHRpbWl6aW5nCisgICAgICAgICAgSklULiBJdCBpcyBub3cgcG9zc2libGUg
dG8gcGF0Y2ggaW4gYSBqdW1wIGluc3RydWN0aW9uIG92ZXIgYW55IHJlY29yZGVkCisgICAgICAg
ICAgd2F0Y2hwb2ludCBsYWJlbC4gVGhlIGp1bXAgbXVzdCBiZSAibG9jYWwiIGluIHRoZSBzZW5z
ZSB0aGF0IGl0IG11c3QgYmUKKyAgICAgICAgICB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBsYXJn
ZXN0IGp1bXAgZGlzdGFuY2Ugc3VwcG9ydGVkIGJ5IGEgb25lCisgICAgICAgICAgaW5zdHJ1Y3Rp
b24ganVtcC4KKyAgICAgICAgICAKKyAgICAgICAgLSBXYXRjaHBvaW50U2V0cyBhbmQgV2F0Y2hw
b2ludHMuIEEgV2F0Y2hwb2ludCBpcyBhIGRvdWJseS1saW5rZWQgbGlzdCBub2RlCisgICAgICAg
ICAgdGhhdCByZWNvcmRzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIGp1bXAgbXVzdCBiZSBpbnNlcnRl
ZCBhbmQgdGhlCisgICAgICAgICAgZGVzdGluYXRpb24gdG8gd2hpY2ggaXQgc2hvdWxkIGp1bXAu
IFdhdGNocG9pbnRzIGNhbiBiZSBhZGRlZCB0byBhCisgICAgICAgICAgV2F0Y2hwb2ludFNldC4g
VGhlIFdhdGNocG9pbnRTZXQgY2FuIGJlIGZpcmVkIGFsbCBhdCBvbmNlLCB3aGljaCBwbGFudHMK
KyAgICAgICAgICBhbGwganVtcHMuIFdhdGNocG9pbnRTZXQgYWxzbyByZW1lbWJlcnMgaWYgaXQg
aGFkIGV2ZXIgYmVlbiBpbnZhbGlkYXRlZCwKKyAgICAgICAgICB3aGljaCBhbGxvd3MgZm9yIG1v
bm90b25pY2l0eTogd2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8gb3B0aW1pemUgdXNpbmcKKyAg
ICAgICAgICB3YXRjaHBvaW50cyBvbiBzb21ldGhpbmcgZm9yIHdoaWNoIHdhdGNocG9pbnRzIGhh
ZCBwcmV2aW91c2x5IGZpcmVkLiBUaGUKKyAgICAgICAgICBhY3Qgb2Ygbm90aWZ5aW5nIGEgV2F0
Y2hwb2ludFNldCBoYXMgYSB0cml2aWFsIGZhc3QgcGF0aCBpbiBjYXNlIG5vCisgICAgICAgICAg
V2F0Y2hwb2ludHMgYXJlIHJlZ2lzdGVyZWQgKG9uZS1ieXRlIGxvYWQrYnJhbmNoKS4KKyAgICAg
ICAgCisgICAgICAgIC0gU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLiBJ
dCdzIGxpa2Ugc3BlY3VsYXRpb25DaGVjaygpLAorICAgICAgICAgIGV4Y2VwdCB0aGF0IHlvdSBk
b24ndCBoYXZlIHRvIGVtaXQgYnJhbmNoZXMuIEJ1dCwgeW91IG5lZWQgdG8ga25vdyB3aGF0Cisg
ICAgICAgICAgV2F0Y2hwb2ludFNldCB0byBhZGQgdGhlIHJlc3VsdGluZyBXYXRjaHBvaW50IHRv
LiBOb3QgZXZlcnl0aGluZyB0aGF0CisgICAgICAgICAgeW91IGNvdWxkIHdyaXRlIGEgc3BlY3Vs
YXRpb25DaGVjaygpIGZvciB3aWxsIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRoYXQKKyAgICAgICAg
ICB3b3VsZCBnZXQgbm90aWZpZWQgaWYgdGhlIGNvbmRpdGlvbiB5b3Ugd2VyZSBzcGVjdWxhdGlu
ZyBhZ2FpbnN0IGJlY2FtZQorICAgICAgICAgIGludmFsaWQuCisgICAgICAgICAgCisgICAgICAg
IC0gU3ltYm9sVGFibGVFbnRyeSBub3cgaGFzIHRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgV2F0
Y2hwb2ludFNldC4gSXQgY2FuCisgICAgICAgICAgZG8gc28gd2l0aG91dCBpbmN1cnJpbmcgYW55
IHNwYWNlIG92ZXJoZWFkIGZvciB0aG9zZSBlbnRyaWVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICBo
YXZlIFdhdGNocG9pbnRTZXRzLgorICAgICAgICAgIAorICAgICAgICAtIFRoZSBieXRlY29kZSBn
ZW5lcmF0b3IgaW5mZXJzIGFsbCBnbG9iYWwgZnVuY3Rpb24gdmFyaWFibGVzIHRvIGJlCisgICAg
ICAgICAgd2F0Y2hhYmxlLCBhbmQgbWFrZXMgYWxsIHN0b3JlcyBwZXJmb3JtIHRoZSBXYXRjaHBv
aW50U2V0J3Mgd3JpdGUgY2hlY2ssCisgICAgICAgICAgYW5kIG1hcmtzIGFsbCBsb2FkcyBhcyBi
ZWluZyBwb3RlbnRpYWxseSB3YXRjaGFibGUgKGkuZS4geW91IGNhbiBjb21waWxlCisgICAgICAg
ICAgdGhlbSB0byBhIHdhdGNocG9pbnQgYW5kIGEgY29uc3RhbnQpLgorICAgICAgICAKKyAgICAg
ICAgUHV0IHRvZ2V0aGVyLCB0aGlzIGFsbG93cyBmb3IgZnVsbHkgc2xlYXp5IGlubGluaW5nIG9m
IGNhbGxzIHRvIGdsb2JhbGx5CisgICAgICAgIGRlY2xhcmVkIGZ1bmN0aW9ucy4gVGhlIGlubGlu
ZSBwcm9sb2d1ZSB3aWxsIG5vIGxvbmdlciBjb250YWluIHRoZSBsb2FkIG9mCisgICAgICAgIHRo
ZSBmdW5jdGlvbiwgb3IgYW55IGNoZWNrcyBvZiB0aGUgZnVuY3Rpb24geW91J3JlIGNhbGxpbmcu
IEkuZS4gaXQncworICAgICAgICBwcmV0dHkgbXVjaCBsaWtlIHRoZSBraW5kIG9mIGlubGluaW5n
IHlvdSB3b3VsZCBzZWUgaW4gSmF2YSBvciBDKysuCisgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUg
d2F0Y2hwb2ludGluZyBmdW5jdGlvbmFsaXR5IGlzIGJ1aWx0IHRvIGJlIGZhaXJseSBnZW5lcmFs
LAorICAgICAgICBhbmQgc2hvdWxkIGFsbG93IHNldHRpbmcgd2F0Y2hwb2ludHMgb24gYWxsIHNv
cnRzIG9mIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHNsZWF6eSBpbmxpbmluZyBtZWFucyB0aGF0IHdlIHdpbGwgbm93IHNv
bWV0aW1lcyBpbmxpbmUgaW4gY29kZSBwYXRocworICAgICAgICB0aGF0IGhhdmUgbmV2ZXIgZXhl
Y3V0ZWQuIFByZXZpb3VzbHksIHRvIGlubGluZSB3ZSB3b3VsZCBoYXZlIGVpdGhlciBoYWQKKyAg
ICAgICAgdG8gaGF2ZSBleGVjdXRlZCB0aGUgY2FsbCAodG8gcmVhZCB0aGUgY2FsbCdzIGlubGlu
ZSBjYWNoZSkgb3IgaGF2ZQorICAgICAgICBleGVjdXRlZCB0aGUgbWV0aG9kIGNoZWNrICh0byBy
ZWFkIHRoZSBtZXRob2QgY2hlY2sncyBpbmxpbmUgY2FjaGUpLiBOb3csCisgICAgICAgIHdlIG1p
Z2h0IGlubGluZSB3aGVuIHRoZSBjYWxsZWUgaXMgYSB3YXRjaGVkIGdsb2JhbCB2YXJpYWJsZS4g
VGhpcworICAgICAgICByZXZlYWxlZCBzb21lIGh1bW9yb3VzIGJ1Z3MuIEZpcnN0LCBjb25zdGFu
dCBmb2xkaW5nIGRpc2FncmVlZCB3aXRoIENGQQorICAgICAgICBvdmVyIHdoYXQga2luZHMgb2Yg
b3BlcmF0aW9ucyBjYW4gY2xvYmJlciAoZXhhbXBsZTogY29kZSBwYXRoIEEgaXMgZGVhZAorICAg
ICAgICBidXQgc3RvcmVzIGEgU3RyaW5nIGludG8gdmFyaWFibGUgWCwgYWxsIG90aGVyIGNvZGUg
cGF0aHMgc3RvcmUgMCBpbnRvCisgICAgICAgIFgsIGFuZCB0aGVuIHlvdSBkbyBDb21wYXJlRXEo
WCwgMCkgLSBDRkEgd2lsbCBzYXkgdGhhdCB0aGlzIGlzIGEgbm9uLQorICAgICAgICBjbG9iYmVy
aW5nIGNvbnN0YW50LCBidXQgY29uc3RhbnQgZm9sZGluZyB0aG91Z2h0IGl0IHdhcyBjbG9iYmVy
aW5nCisgICAgICAgIGJlY2F1c2UgaXQgc2F3IHRoZSBTdHJpbmcgcHJlZGljdGlvbikuIFNlY29u
ZCwgaW5saW5pbmcgd291bGQgY3Jhc2ggaWYKKyAgICAgICAgdGhlIGlubGluZSBjYWxsZWUgaGFk
IG5vdCBiZWVuIGNvbXBpbGVkLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggYnVncywKKyAgICAgICAg
c2luY2Ugb3RoZXJ3aXNlIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyB3b3VsZCByZXBvcnQgcmVn
cmVzc2lvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJsZXIpOgor
ICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNdjdBc3NlbWJsZXIpOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6
QVJNdjdBc3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjptYXhKdW1wUmVw
bGFjZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgor
ICAgICAgICAoTGFiZWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjp3
YXRjaHBvaW50TGFiZWwpOgorICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2Vt
YmxlckFSTSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgor
ICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTXY3OjpicmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6Omp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjptYWtlQnJhbmNo
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3Jv
QXNzZW1ibGVyTUlQUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpyZXBsYWNlV2l0aEp1bXApOgor
ICAgICAgICAoTWFjcm9Bc3NlbWJsZXJTSDQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clNINDo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2XzY0OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcGJf
aW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnRlc3RiX2ltKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpsYWJlbEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0
aEp1bXApOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNp
emUpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVy
OjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRPU1JFeGl0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KToKKyAgICAgICAgKENvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kV2F0Y2hwb2ludCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZXYXRjaHBvaW50cyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6d2F0Y2hwb2ludCk6CisgICAgICAgIChERkdEYXRhKToKKyAgICAgICAgKiBi
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kVG9T
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kSXNDb3VudGFibGUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChJbnN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUv
T3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwYWRPcGNvZGVOYW1lKToK
KyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojp+V2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6
OldhdGNocG9pbnQ6OmNvcnJlY3RMYWJlbHMpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojpm
aXJlKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OldhdGNocG9pbnRTZXQ6On5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6
V2F0Y2hwb2ludFNldDo6YWRkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6bm90aWZ5
V3JpdGVTbG93KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbFdhdGNocG9p
bnRzKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50OjpX
YXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6c2V0RGVzdGluYXRpb24pOgor
ICAgICAgICAoV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Omlz
U3RpbGxWYWxpZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Omhhc0JlZW5JbnZhbGlk
YXRlZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OnN0YXJ0V2F0Y2hpbmcpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZSk6CisgICAgICAgIChKU0M6Oldh
dGNocG9pbnRTZXQ6OmFkZHJlc3NPZklzV2F0Y2hlZCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6Y2hl
Y2tWYWxpZGl0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxW
YXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1Zhcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhSZXNvbHZl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4UmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKToKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RT
dGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6Y2xvYmJl
clN0cnVjdHVyZXMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAg
IChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpkaWRD
bG9iYmVyKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDQ2Fs
bEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyV2F0Y2hwb2ludEVs
aW1pbmF0aW9uKToKKyAgICAgICAgKENTRVBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQ
aGFzZTo6Z2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NF
UGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZv
bGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6aXNTZXQpOgorICAg
ICAgICAoQ29ycmVjdGFibGVKdW1wUG9pbnQpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllck51bWJlckZvckNo
ZWNrKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlkZW50aWZp
ZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzUmVnaXN0ZXJQ
b2ludGVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6
Ok9TUkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgIChPU1JFeGl0
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2lu
dCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6
OkpJVFRodW5rczo6SklUVGh1bmtzKToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJ
T04pOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVHZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xU
YWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmNvcHlTbG93KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdyk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmNvdWxkQmVXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGVFbnRyeTo6YXR0ZW1wdFRvV2F0Y2gpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
OjphZGRyZXNzT2ZJc1dhdGNoZWQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojph
ZGRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3Jp
dGVTbG93KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZVNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChTeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEZhc3QpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5OjpGYXN0OjpGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6RmFzdDo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6
Z2V0SW5kZXgpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc1JlYWRP
bmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6Z2V0QXR0cmlidXRl
cyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzRmF0KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6On5TeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0SW5kZXgp
OgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRGYXN0KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmlzUmVhZE9ubHkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojp3YXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5
V3JpdGUpOgorICAgICAgICAoRmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVu
dHJ5OjpGYXRFbnRyeTo6RmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojppc0ZhdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmZhdEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZSk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmJpdHMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpm
cmVlRmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpwYWNrKToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNWYWxpZEluZGV4KToKKwogMjAxMi0wNi0x
MiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGZvciBBUk12NyBkZWJ1ZyBidWlsZHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgU0VUKEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogICAg
IGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKKyAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcAogCiAgICAgYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0yMzEsNiArMjMyLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1l
L1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwCiAg
ICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKyAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNw
cAogICAgIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuY3BwCiAgICAgcnVudGltZS9VU3RyaW5nLmNw
cAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2
aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmggXApAQCAtNjAzLDYgKzYwNSw3IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZXJtaW5hdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2MiwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUv
T3Bjb2RlLmNwcCBcCiAgICAgYnl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgXAot
ICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAgXAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAgXAorICAgIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
IFwKKyAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgXAog
ICAgIGhlYXAvQ29waWVkU3BhY2UuY3BwIFwKQEAgLTIzNiw2ICsyMzcsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIFwKICAgICBydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcCBcCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKKyAgICBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAgICAgcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAg
XAogICAgIHJ1bnRpbWUvVVN0cmluZy5jcHAgXAogICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcCBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNTQsNiArMTI1NCwxMCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFN5bWJvbFRhYmxl
LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5ccnVudGltZVxTeW1ib2xUYWJsZS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2ODEsNiAr
MTY4NSwxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcVmFsdWVQcm9maWxl
LmgiCiAJCQkJPgogCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGJ5dGVjb2RlXFdhdGNocG9pbnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxXYXRjaHBvaW50LmgiCisJCQkJPgorCQkJ
PC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgogCQkJTmFtZT0iZGVidWdnZXIiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOSBAQAogCQkwRjkxOUQwRDE1N0VFMEEyMDA0
QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9s
VGFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAg
Ki87IH07CiAJCTBGOTE5RDExMTU3RjMzMkMwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjkxOUQwRjE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTE5RDI1
MTU4NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRj
aHBvaW50LmNwcCAqLzsgfTsKKwkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5
RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8q
IFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOTE5RDI3MTU4NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgKi87IH07
CiAJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5MzE0Q0E3REMx
MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovOyB9OwogCQkwRjkzMzI5RTE0Q0E3REM1
MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0
YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGOTMzMjlGMTRDQTdEQ0EwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk1MTRDQTdEQzEwMDg1
RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTM3MCwxMCArMzczLDEwIEBACiAJ
CTdFNEVFNzBGMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwRTBFQkI3QTVCMDA1
OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovOyB9OwogCQk3RUZGMDA2NDBFQzA1QTlBMDBB
QTdDOTMgLyogTm9kZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFRkYwMDYzMEVDMDVBOUEwMEFBN0M5MyAvKiBOb2RlSW5mby5oICovOyB9Owog
CQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ2MEZBRkJBMkQw
MDAwMTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oICovOyB9OwotCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyB9OwotCQk4
NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUxMEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oICovOyB9OwotCQk4NjAxNjFFNjBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAv
KiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovOyB9OworCQk4NjAxNjFFMzBGM0E4M0MxMDBG
ODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJY
ODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2
MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDE2MUU1MEYzQTgzQzEwMEY4
NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAx
NjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjA0RjUwNTE0M0NF
MUMyMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjA0RjUwMzE0M0NFMUMxMDBCMjk1RjUgLyogSlNHbG9iYWxU
aGlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8q
IEludHJpbnNpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxMkU0Q0IxNTIyOTE4NDAw
QzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTQwMSwxMSArNDA0LDExIEBACiAJCTg2OUQwNEFGMTE5M0I1NEQw
MDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlEMDRBRTExOTNCNTREMDA4MDM0NzUg
LyogQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBS
ZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QTkwRUQwMEVFN0Q1MUYwMEFC
MzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGlj
LmNwcCAqLzsgfTsKLQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0
MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgfTsKLQkJODZBREQxNDYw
RkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAv
KiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IH07CisJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVD
MiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZBREQx
NDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBRTY0QTgxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNz
ZW1ibGVyU0g0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QUU2NEE1MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5jcHAgKi87
IH07Ci0JCTg2QUU2NEE5MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTYxMzVF
NUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggKi87IH07Ci0JCTg2QUU2NEFBMTM1
RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3Nl
bWJsZXIuaCAqLzsgfTsKKwkJODZBRTY0QTkxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1i
bGVyU0g0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkFFNjRBNjEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkFFNjRBQTEzNUU1RTFD
MDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkFFNjRBNzEzNUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZB
RTZDNEQxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2QzRCMTM2QTExRTQwMDk2MzAxMiAvKiBE
RkdGUFJJbmZvLmggKi87IH07CiAJCTg2QUU2QzRFMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFF
NkM0QzEzNkExMUU0MDA5NjMwMTIgLyogREZHR1BSSW5mby5oICovOyB9OwogCQk4NkI1ODI2NzE0
RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQ
cm9maWxlLmNwcCAqLzsgfTsKQEAgLTQxNCw4ICs0MTcsOCBAQAogCQk4NkJCMDlDMTEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAq
LzsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEy
ODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCAqLzsgfTsKLQkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQ
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwotCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1h
Y3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QzU2
OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyog
TUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2Q0EwMzJFMTAzOEU4NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0EwMzJEMTAzOEU4
NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCAqLzsgfTsKIAkJODZDQUZFRTMxMDM1RERFNjAw
MjhBNjA5IC8qIEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2Q0FGRUUyMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDQzg1QTEw
RUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0M4NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBK
SVRJbmxpbmVNZXRob2RzLmggKi87IH07CkBAIC00MjMsMTMgKzQyNiwxMyBAQAogCQk4NkNDODVD
NDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQzg1QzMwRUU3QTg5NDAwMjg4Njgy
IC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCAqLzsgfTsKIAkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3
RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEM0IyQzMxMDE1NkJERTAw
Mjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJCRjEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVy
LmNwcCAqLzsgfTsKLQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzAx
MDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oICovOyB9OwotCQk4NkQzQjJDNTEwMTU2
QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzExMDE1NkJERTAw
Mjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAqLzsgfTsKLQkJODZE
M0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1
RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCAqLzsgfTsKLQkJODZEM0IzQzMxMDE1OUQ3RjAwMjg2
NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2RDNCM0MxMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggKi87IH07
Ci0JCTg2RDNCM0M0MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjNDMjEwMTU5RDdGMDAy
ODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oICovOyB9OworCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1
RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzUx
MDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAxNTZC
REUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzYxMDE1NkJE
RTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9B
c3NlbWJsZXJBUk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAw
Mjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NkQzQjNDNDEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0Iz
QzIxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEg
LyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2REI2NDYzMEY5NUM2RkMwMEQ3RDkyMSAvKiBF
eGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwICovOyB9OwotCQk4NkUxMTZCMTBGRTc1
QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0
aW9uLmggKi87IH07CisJCTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTExNkIw
MEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkU4NTUzOTExMUI5OTY4MDAxQUY1MUUgLyog
SlNTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi87
IH07CiAJCTg2RUJGMkZGMTU2MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQkYyRjkxNTYw
RjAzNjAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTg2RUJGMzAwMTU2
MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUJGMkZBMTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1l
Q29uc3RydWN0b3IuaCAqLzsgfTsKQEAgLTQ3NSw4ICs0NzgsOCBAQAogCQk5NUY2RTY5NTBFNUI1
Rjk3MDA5MUU4NjAgLyogSlNQcm9maWxlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpT
UHJvZmlsZXJQcml2YXRlLmNwcCAqLzsgfTsKIAkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8q
IExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi87IH07CiAJCTk2
MDYyNjk2MEZCOEVDMDIwMDk3OThBQiAvKiBKSVRTdHViQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTYwNjI2OTUwRkI4RUMwMjAwOTc5OEFCIC8q
IEpJVFN0dWJDYWxsLmggKi87IH07Ci0JCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3Nl
bWJsZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk2ODhDQjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLzsgfTsK
LQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2
NDlGIC8qIFg4NkFzc2VtYmxlci5oICovOyB9OworCQk5Njg4Q0IxNTBFRDEyQjRFMDAxRDY0OUYg
LyogQXNzZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTY4OENC
MTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4
NkFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjEwRUQx
Q0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggKi87IH07CiAJCTk2OUEwNzJBMEVE
MUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTY5QTA3MjcwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggKi87IH07
CiAJCTk2OUEwNzJCMEVEMUNFNjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyODBFRDFDRTY5MDBGMUY2
ODEgLyogUmVnaXN0ZXJJRC5oICovOyB9OwpAQCAtODM2LDYgKzgzOSw5IEBACiAJCTBGOTE5RDBB
MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3ltYm9sVGFibGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEUxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOTE5RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMjIxNTg1M0NERTAwNEE0
RTdEIC8qIFdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTE5RDIz
MTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5
MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxMaW5rU3RhdHVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2
IC8qIENhbGxMaW5rU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxMaW5rU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjk1MTRD
QTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdldEJ5SWRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA0NSw2ICsyMDUxLDcgQEAKIAkJCQk3RTRFRTcwRTBFQkI3QTVCMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uY3BwICovLAogCQkJCTdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAv
KiBTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOTA0MTQ3MEVCOTI1MDkwMEZFMjZGQSAvKiBT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCAqLywKKwkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRF
N0QgLyogU3ltYm9sVGFibGUuY3BwICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAv
KiBTeW1ib2xUYWJsZS5oICovLAogCQkJCTk3RjY5MDNBMTE2OURGN0YwMEE2QkI0NiAvKiBUZXJt
aW5hdG9yLmggKi8sCiAJCQkJMTRBNDJFM0QwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVj
a2VyLmNwcCAqLywKQEAgLTIyOTYsNiArMjMwMyw4IEBACiAJCQkJMEY5NjNCMzYxM0ZDNkZERTAw
MDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4
RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8sCiAJCQkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8q
IFZpcnR1YWxSZWdpc3Rlci5oICovLAorCQkJCTBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBX
YXRjaHBvaW50LmNwcCAqLywKKwkJCQkwRjkxOUQyMzE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hw
b2ludC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yNjcxLDYgKzI2ODAsNyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMy
NTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE5RDI2MTU4NTNDRTMwMDRB
NEU3RCAvKiBXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTMyNDUsNiArMzI1NSw4IEBA
CiAJCQkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRF
N0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjkxOUQyNTE1ODUzQ0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12
N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMs
MTIgQEAgcHVibGljOgogICAgICAgICBKdW1wTGlua1R5cGUgbV9saW5rVHlwZSA6IDg7CiAgICAg
ICAgIENvbmRpdGlvbiBtX2NvbmRpdGlvbiA6IDE2OwogICAgIH07CisgICAgCisgICAgQVJNdjdB
c3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisg
ICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICB7Cisg
ICAgfQogCiBwcml2YXRlOgogCkBAIC0xODIwLDEwICsxODI2LDI1IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDhJbW04KE9QX05PUF9UMSwgMCk7CiAgICAg
fQorICAgIAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgewor
ICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9p
bmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgp
OworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOwor
ICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQp
IDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxp
Z24oaW50IGFsaWdubWVudCkKQEAgLTIwNjcsNiArMjA4OCwzMCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7
CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICBBU1NFUlQo
IShiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0bykgJiAxKSk7CisgICAgICAgIHVpbnQxNl90KiBw
dHIgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAyOwor
ICAgICAgICAKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UncmUgbm90IGluIG9uZSBvZiB0aG9z
ZSBlcnJhdGEtdHJpZ2dlcmluZyB0aGluZ2llcy4gSWYgd2UgYXJlLCB0aGVuCisgICAgICAgIC8v
IHByZXBlbmQgYSBub3AuCisgICAgICAgIGJvb2wgc3BhbnNUd280SyA9ICgocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4ocHRyKSAmIDB4ZmZmKSA9PSAweDAwMik7CisgICAgICAgIAorICAgICAg
ICBpZiAoc3BhbnNUd280SykgeworICAgICAgICAgICAgcHRyWy0yXSA9IE9QX05PUF9UMTsKKyAg
ICAgICAgICAgIHB0cisrOworICAgICAgICB9CisKKyAgICAgICAgbGlua0p1bXBUNChwdHIsIHRv
KTsKKyAgICAgICAgY2FjaGVGbHVzaChwdHIgLSAyLCBzaXplb2YodWludDE2X3QpICogMik7Cisg
ICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gNjsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBkZWJ1Z09m
ZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KIApAQCAtMjYwNCw2
ICsyNjQ5LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxMaW5rUmVjb3JkPiBtX2p1bXBzVG9M
aW5rOwogICAgIFZlY3RvcjxpbnQzMl90PiBtX29mZnNldHM7CisgICAgaW50IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEy
MDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBMaW5rQnVmZmVyOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKK2NsYXNzIFdhdGNocG9p
bnQ7CiBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENvcnJlY3RhYmxlSnVtcFBvaW50OwogfQpAQCAt
NzAsNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgdXNl
ZCBhcyBvcGVyYW5kcyB0byBNYWNyb0Fzc2VtYmxlciBvcGVyYXRpb25zLAogICAgIC8vIGRlc2Ny
aWJpbmcgaW1tZWRpYXRlICBhbmQgbWVtb3J5IG9wZXJhbmRzIHRvIHRoZSBpbnN0cnVjdGlvbnMg
dG8gYmUgcGxhbnRlZC4KIAotCiAgICAgZW51bSBTY2FsZSB7CiAgICAgICAgIFRpbWVzT25lLAog
ICAgICAgICBUaW1lc1R3bywKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKdW1wOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOwogICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFdhdGNocG9pbnQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIExhYmVsKCkKQEAgLTU1OSw2
ICs1NjAsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAgfQog
ICAgIAorICAgIExhYmVsIHdhdGNocG9pbnRMYWJlbCgpCisgICAgeworICAgICAgICBMYWJlbCBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2xhYmVsID0gbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRj
aHBvaW50KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIExhYmVs
IGFsaWduKCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFsaWduKDE2KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAko
cmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3Nl
bWJsZXJCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBFTkFC
TEUoQVNTRU1CTEVSKQogCisjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkpJVENvbXBpbGF0aW9uRWZmb3J0LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAj
aW5jbHVkZSAic3RkaW50LmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8aml0L0V4
ZWN1dGFibGVBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk0uaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEwLDYgKzEwMTAs
MTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRp
b24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHBy
b3RlY3RlZDoKICAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMjAx
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4Niw2ICsxMTg2LDE2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29k
ZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBUk12N0Fzc2VtYmxl
cjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRlc3Rp
bmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBBUk12N0Fz
c2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KIAogICAgIC8vIEZvcndh
cmRzIC8gZXh0ZXJuYWwgY29udHJvbCBmbG93IG9wZXJhdGlvbnM6CiAgICAgLy8KQEAgLTEzNTYs
NiArMTM2NiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzayk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hUZXN0
OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRy
ZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFU
ZW1wUmVnaXN0ZXIuIDotLworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0
ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkOChBZGRyZXNzKGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrKTsKKyAgICB9CisKICAgICB2
b2lkIGp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5i
eCh0YXJnZXQpOwpAQCAtMTY3OSwxMiArMTY5NywxNCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgQUxXQVlTX0lOTElORSBKdW1wIGp1bXAoKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bGFiZWwoKTsgLy8gRm9yY2Ugbm9wLXBhZGRpbmcgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBh
IHdhdGNocG9pbnQuCiAgICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMy
KDApLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIu
YngoZGF0YVRlbXBSZWdpc3RlciksIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBBUk12N0Fzc2VtYmxl
cjo6SnVtcE5vQ29uZGl0aW9uRml4ZWRTaXplIDogQVJNdjdBc3NlbWJsZXI6Okp1bXBOb0NvbmRp
dGlvbik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKdW1wIG1ha2VCcmFuY2goQVJNdjdB
c3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGFi
ZWwoKTsgLy8gRm9yY2Ugbm9wLXBhZGRpbmcgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdh
dGNocG9pbnQuCiAgICAgICAgIG1fYXNzZW1ibGVyLml0KGNvbmQsIHRydWUsIHRydWUpOwogICAg
ICAgICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0
ZXIpLCBtX21ha2VKdW1wUGF0Y2hhYmxlID8gQVJNdjdBc3NlbWJsZXI6Okp1bXBDb25kaXRpb25G
aXhlZFNpemUgOiBBUk12N0Fzc2VtYmxlcjo6SnVtcENvbmRpdGlvbiwgY29uZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NjgsNiArMTg2OCwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0
PHZvaWQoKikoKT4oTUlQU0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRp
b24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgLy8gSWYgbV9maXhlZFdpZHRoIGlzIHRydWUsIHdlIHdpbGwgZ2VuZXJhdGUg
YSBmaXhlZCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zLgogICAgIC8vIE90aGVyd2lzZSwgd2UgY2Fu
IGVtaXQgYW55IG51bWJlciBvZiBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCShyZXZpc2lvbiAx
MjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
U0g0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NzEsNiArMTk3MSwxNyBAQCB2b2lkIG9yMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzCiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oU0g0QXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChj
YWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VX
aXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25M
YWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFNINEFzc2VtYmxlcjo6Q29uZGl0aW9uIFNINENv
bmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2
aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZERvdWJsZTsKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmVEb3VibGU7CiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmNvbnZlcnRJbnQzMlRvRG91YmxlOworICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0ODsKIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xNjUs
NiArMTY2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9pMzJyKGluaXRp
YWxWYWx1ZS5hc0ludHB0cigpLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0
aGlzKTsKICAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24g
Y29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtYXNrLm1fdmFsdWUgPj0gLTEyOCAm
JiBtYXNrLm1fdmFsdWUgPD0gMjU1KTsKKyAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGJfaW0oMCwgYWRkcmVzcy5tX3B0cik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RiX2ltKG1hc2subV92YWx1ZSwg
YWRkcmVzcy5tX3B0cik7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsKKyAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBk
YXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRy
KDApKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDEyMDE2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwOCw2ICsxNDA4LDE2IEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhK
dW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVs
IGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1
bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6
Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTEzLDYgKzUxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjptb3ZlKGFkZHIsIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQmFzZUluZGV4KHNjcmF0Y2hS
ZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBUaW1lc09uZSksIG1hc2spOwogICAgIH0KKyAgICAKKyAg
ICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlciksIG1h
c2spOworICAgIH0KIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpIHsg
cmV0dXJuIHRydWU7IH0KICAgICAvLyBTZWUgY29tbWVudCBvbiBNYWNyb0Fzc2VtYmxlckFSTXY3
OjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMDE2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI0Nyw2ICsyNDcsOCBAQCBwcml2YXRlOgogcHVibGljOgogCiAgICAgWDg2QXNzZW1i
bGVyKCkKKyAgICAgICAgOiBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAg
ICAsIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAgICAgewogICAgIH0K
IApAQCAtNzk4LDYgKzgwMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQorICAg
IAorI2lmIENQVShYODYpCisgICAgdm9pZCBjbXBiX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIs
IEdST1VQMV9PUF9DTVAsIGFkZHIpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgfQorI2VuZGlmCiAKICAgICB2b2lkIGNtcGxfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewpA
QCAtOTQ4LDYgKzk1OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTgoaW1tKTsKICAgICB9CiAKKyNpZiBDUFUoWDg2KQorICAgIHZvaWQgdGVzdGJfaW0oaW50IGlt
bSwgY29uc3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDNfRWJJYiwgR1JPVVAzX09QX1RFU1QsIGFkZHIpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIHRlc3RsX2kz
Mm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAzX0V2SXosIEdST1VQM19PUF9URVNULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CkBA
IC0xNzAyLDEwICsxNzIwLDI1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Zv
cm1hdHRlci5jb2RlU2l6ZSgpOwogICAgIH0KKyAgICAKKyAgICBBc3NlbWJsZXJMYWJlbCBsYWJl
bEZvcldhdGNocG9pbnQoKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0g
bV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVzdWx0
Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCkKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGxhYmVsKCk7CisgICAgICAgIG1faW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1f
b2Zmc2V0OworICAgICAgICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5t
X29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0
ID0gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19j
YXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50
KSkgeworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtX2Zvcm1hdHRl
ci5sYWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAg
ICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkKQEAgLTE3ODcsNiArMTgyMCwy
MCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hl
cmUpWy0xXTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgeworICAgICAgICBpbnQ4X3QqIHB0ciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIGlu
dDhfdCogZHN0UHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPih0byk7CisgICAgICAgIGlu
dHB0cl90IGRpc3RhbmNlID0gKGludHB0cl90KShkc3RQdHIgLSAocHRyICsgNSkpOworICAgICAg
ICBwdHJbMF0gPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KE9QX0pNUF9yZWwzMik7CisgICAgICAgICpy
ZWludGVycHJldF9jYXN0PGludDMyX3QqPihwdHIgKyAxKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KGRpc3RhbmNlKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVw
bGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiA1OworICAgIH0KKyAgICAKICAg
ICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxs
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNhbGwuaXNTZXQoKSk7CkBAIC0yMzM5LDYgKzIzODYs
OCBAQCBwcml2YXRlOgogCiAgICAgICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsKICAgICB9
IG1fZm9ybWF0dGVyOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKKyAgICBpbnQg
bV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI4LDEyICs5MjgsMjggQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXJfd2F0
Y2hhYmxlOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51
LnJlZ2lzdGVyUG9pbnRlcjsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGdldF9nbG9iYWxf
dmFyX3dhdGNoYWJsZVx0ICVzLCBnJWQoJXApXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCksIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3Rl
clBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIpOworICAgICAgICAgICAgaXQrKzsKKyAgICAgICAg
ICAgIGl0Kys7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3B1dF9nbG9iYWxfdmFyOiB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJl
Z2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHB1
dF9nbG9iYWxfdmFyXHQgZyVkKCVwKSwgJXNcbiIsIGxvY2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+
ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorICAgICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOiB7CisgICAgICAgICAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3Rl
clBvaW50ZXI7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIGRhdGFMb2coIlslNGRdIHB1dF9nbG9iYWxfdmFyX2NoZWNrXHQgZyVkKCVwKSwgJXNc
biIsIGxvY2F0aW9uLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQ
b2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7
CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgaXQrKzsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9iYXNlOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytp
dCktPnUub3BlcmFuZDsKQEAgLTEzMDYsNyArMTMyMiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
KEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGxfcHV0
X3Jlc3VsdDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSBvcF9jYWxsX3B1dF9yZXN1bHRcdFx0ICVzXG4iLCBsb2Nh
dGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gY2FsbF9wdXRfcmVzdWx0XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVk
ZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIlVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIKICNpbmNs
dWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTI3MywxMCArMjc0LDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgdm9pZCBhcHBlbmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYgb3NyRXhpdCkK
KyAgICAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBERkc6Ok9TUkV4aXQmIG9zckV4
aXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOwor
ICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT5vc3JFeGl0LnNpemUoKTsK
ICAgICAgICAgICAgIG1fZGZnRGF0YS0+b3NyRXhpdC5hcHBlbmQob3NyRXhpdCk7CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBERkc6Ok9T
UkV4aXQmIGxhc3RPU1JFeGl0KCkKQEAgLTI4NCwxMCArMjg3LDIwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdC5sYXN0KCk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgYXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShjb25z
dCBERkc6OlNwZWN1bGF0aW9uUmVjb3ZlcnkmIHJlY292ZXJ5KQorICAgICAgICB1bnNpZ25lZCBh
cHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KGNvbnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYg
cmVjb3ZlcnkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2Fy
eSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9kZmdEYXRhLT5zcGVjdWxhdGlv
blJlY292ZXJ5LnNpemUoKTsKICAgICAgICAgICAgIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNv
dmVyeS5hcHBlbmQocmVjb3ZlcnkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgYXBwZW5kV2F0Y2hwb2ludChjb25zdCBX
YXRjaHBvaW50JiB3YXRjaHBvaW50KQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVERkdE
YXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fZGZnRGF0
YS0+d2F0Y2hwb2ludHMuc2l6ZSgpOworICAgICAgICAgICAgbV9kZmdEYXRhLT53YXRjaHBvaW50
cy5hcHBlbmQod2F0Y2hwb2ludCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZk9TUkV4aXRzKCkKQEAgLTMw
NCw2ICszMTcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdE
YXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LnNpemUoKTsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZXYXRjaHBvaW50cygpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbV9kZmdEYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuc2l6ZSgpOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBERkc6Ok9TUkV4aXQmIG9zckV4aXQodW5zaWduZWQgaW5kZXgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPm9zckV4aXRbaW5kZXhdOwpAQCAt
MzE0LDYgKzMzNCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2Rm
Z0RhdGEtPnNwZWN1bGF0aW9uUmVjb3ZlcnlbaW5kZXhdOwogICAgICAgICB9CiAgICAgICAgIAor
ICAgICAgICBXYXRjaHBvaW50JiB3YXRjaHBvaW50KHVuc2lnbmVkIGluZGV4KQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT53YXRjaHBvaW50c1tpbmRleF07CisgICAg
ICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgYXBwZW5kV2Vha1JlZmVyZW5jZShKU0NlbGwq
IHRhcmdldCkKICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5
KCk7CkBAIC0xMjM4LDYgKzEyNjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFZl
Y3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7CiAgICAgICAgICAgICBTZWdtZW50ZWRW
ZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgICAgICAgICAgVmVjdG9yPERGRzo6
U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKKyAgICAgICAgICAgIFNl
Z21lbnRlZFZlY3RvcjxXYXRjaHBvaW50LCAxLCAwPiB3YXRjaHBvaW50czsKICAgICAgICAgICAg
IFZlY3RvcjxXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbj4gdHJhbnNpdGlvbnM7CiAgICAgICAgICAg
ICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4gPiB3ZWFrUmVmZXJlbmNlczsKICAgICAgICAg
ICAgIGJvb2wgbWF5QmVFeGVjdXRpbmc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDYgKzQxLDcgQEAgZW51bSBFeGl0S2luZCB7CiAgICAgSW5hZGVxdWF0ZUNvdmVyYWdl
LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmRlZCB1cCBpbiBjb2RlIHRoYXQgZGlkbid0IGhh
dmUgcHJvZmlsaW5nIGNvdmVyYWdlLgogICAgIEFyZ3VtZW50c0VzY2FwZWQsIC8vIFdlIGV4aXRl
ZCBiZWNhdXNlIGFyZ3VtZW50cyBlc2NhcGVkIGJ1dCB3ZSBkaWRuJ3QgZXhwZWN0IHRoZW0gdG8u
CiAgICAgVW5jb3VudGFibGUsIC8vIFdlIGV4aXRlZCBmb3Igbm9uZSBvZiB0aGUgYWJvdmUgcmVh
c29ucywgYW5kIHdlIHNob3VsZCBub3QgY291bnQgaXQuIE1vc3QgdXNlcyBvZiB0aGlzIHNob3Vs
ZCBiZSB2aWV3ZWQgYXMgYSBGSVhNRS4KKyAgICBVbmNvdW50YWJsZVdhdGNocG9pbnQgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2Ugb2YgYSB3YXRjaHBvaW50LCB3aGljaCBpc24ndCBjb3VudGVkIGJlY2F1
c2Ugd2F0Y2hwb2ludHMgZG8gdHJhY2tpbmcgdGhlbXNlbHZlcy4KIH07CiAKIGlubGluZSBjb25z
dCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpbmQpCkBAIC01OCw2ICs1OSwxMiBA
QCBpbmxpbmUgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0cmluZyhFeGl0CiAgICAgICAgIHJldHVy
biAiTmVnYXRpdmVaZXJvIjsKICAgICBjYXNlIEluYWRlcXVhdGVDb3ZlcmFnZToKICAgICAgICAg
cmV0dXJuICJJbmFkZXF1YXRlQ292ZXJhZ2UiOworICAgIGNhc2UgQXJndW1lbnRzRXNjYXBlZDoK
KyAgICAgICAgcmV0dXJuICJBcmd1bWVudHNFc2NhcGVkIjsKKyAgICBjYXNlIFVuY291bnRhYmxl
OgorICAgICAgICByZXR1cm4gIlVuY291bnRhYmxlIjsKKyAgICBjYXNlIFVuY291bnRhYmxlV2F0
Y2hwb2ludDoKKyAgICAgICAgcmV0dXJuICJVbmNvdW50YWJsZVdhdGNocG9pbnQiOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiAiVW5rbm93biI7CiAgICAgfQpAQCAtNzAsNiArNzcsNyBA
QCBpbmxpbmUgYm9vbCBleGl0S2luZElzQ291bnRhYmxlKEV4aXRLaW5kCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIGNhc2UgQmFkVHlwZToKICAgICBjYXNlIFVuY291bnRhYmxl
OgorICAgIGNhc2UgVW5jb3VudGFibGVXYXRjaHBvaW50OgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTIwMTYyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5Myw2ICsxOTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rp
b24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KICAgICAg
ICAgCiAgICAgICAgIEluc3RydWN0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQ
b2ludGVyKSB7IHUucmVnaXN0ZXJQb2ludGVyID0gcmVnaXN0ZXJQb2ludGVyOyB9CisgICAgICAg
IAorICAgICAgICBJbnN0cnVjdGlvbihib29sKiBwcmVkaWNhdGVQb2ludGVyKSB7IHUucHJlZGlj
YXRlUG9pbnRlciA9IHByZWRpY2F0ZVBvaW50ZXI7IH0KIAogICAgICAgICB1bmlvbiB7CiAgICAg
ICAgICAgICBPcGNvZGUgb3Bjb2RlOwpAQCAtMjA1LDYgKzIwNyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAg
ICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKICAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7Cisg
ICAgICAgICAgICBib29sKiBwcmVkaWNhdGVQb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAg
IAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29k
ZS5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X3Njb3BlZF92YXIsIDUpIC8qIGhhcyB2YWx1ZSBwcm9m
aWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9wdXRfc2NvcGVkX3ZhciwgNCkgXAogICAgICAg
ICBtYWNybyhvcF9nZXRfZ2xvYmFsX3ZhciwgNCkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBc
CisgICAgICAgIG1hY3JvKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSwgNSkgLyogaGFzIHZh
bHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFyLCAzKSBc
CisgICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrLCA1KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3Jlc29sdmVfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAg
ICAgIG1hY3JvKG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMsIDMpIFwKICAgICAgICAgbWFjcm8o
b3BfcmVzb2x2ZV93aXRoX2Jhc2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldhdGNocG9pbnQuaCIKKworI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK1dhdGNocG9pbnQ6On5XYXRjaHBvaW50KCkKK3sKKyAgICBpZiAoaXNPbkxp
c3QoKSkKKyAgICAgICAgcmVtb3ZlKCk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludDo6Y29ycmVjdExh
YmVscyhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBsYWJlbDsKKyAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9zb3VyY2U7CisgICAgbV9z
b3VyY2UgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFi
ZWwpLmRhdGFMb2NhdGlvbigpKTsKKyAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9kZXN0
aW5hdGlvbjsKKyAgICBtX2Rlc3RpbmF0aW9uID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGxhYmVsKS5kYXRhTG9jYXRpb24oKSk7Cit9CisKK3ZvaWQgV2F0
Y2hwb2ludDo6ZmlyZSgpCit7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcCgK
KyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihtX3NvdXJjZSkp
LAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KG1fZGVzdGlu
YXRpb24pKSk7CisgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgIHJlbW92ZSgpOworfQorCitX
YXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KCkKKyAgICA6IG1faXNXYXRjaGVkKGZhbHNlKQor
ICAgICwgbV9pc0ludmFsaWRhdGVkKGZhbHNlKQoreworfQorCitXYXRjaHBvaW50U2V0Ojp+V2F0
Y2hwb2ludFNldCgpCit7CisgICAgLy8gRmlyZSBhbGwgd2F0Y2hwb2ludHMuIFRoaXMgaXMgbmVj
ZXNzYXJ5IGJlY2F1c2UgaXQgaXMgcG9zc2libGUsIHNheSB3aXRoCisgICAgLy8gc3RydWN0dXJl
IHdhdGNocG9pbnRzLCBmb3IgdGhlIHdhdGNocG9pbnQgc2V0IG93bmVyIHRvIGRpZSB3aGlsZSB0
aGUKKyAgICAvLyB3YXRjaHBvaW50IG93bmVycyBhcmUgc3RpbGwgbGl2ZS4KKyAgICBmaXJlQWxs
V2F0Y2hwb2ludHMoKTsKK30KKwordm9pZCBXYXRjaHBvaW50U2V0OjphZGQoV2F0Y2hwb2ludCog
d2F0Y2hwb2ludCkKK3sKKyAgICBpZiAoIXdhdGNocG9pbnQpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX3NldC5wdXNoKHdhdGNocG9pbnQpOworICAgIG1faXNXYXRjaGVkID0gdHJ1ZTsKK30KKwor
dm9pZCBXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZVNsb3coKQoreworICAgIEFTU0VSVChtX2lz
V2F0Y2hlZCk7CisgICAgCisgICAgZmlyZUFsbFdhdGNocG9pbnRzKCk7CisgICAgbV9pc1dhdGNo
ZWQgPSBmYWxzZTsKKyAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOworfQorCit2b2lkIFdhdGNo
cG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cygpCit7CisgICAgd2hpbGUgKCFtX3NldC5pc0Vt
cHR5KCkpCisgICAgICAgIG1fc2V0LmJlZ2luKCktPmZpcmUoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9p
bnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRj
aHBvaW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdhdGNocG9p
bnRfaAorI2RlZmluZSBXYXRjaHBvaW50X2gKKworI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgor
I2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBXYXRjaHBvaW50IDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPFdhdGNocG9p
bnQ+IHsKK3B1YmxpYzoKKyAgICBXYXRjaHBvaW50KE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBzb3Vy
Y2UpCisgICAgICAgIDogbV9zb3VyY2Uoc291cmNlLm1fbGFiZWwubV9vZmZzZXQpCisgICAgICAg
ICwgbV9kZXN0aW5hdGlvbihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnRwdHJfdD46Om1heCgpKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXREZXN0aW5hdGlvbihNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBtX2Rlc3RpbmF0aW9uID0gZGVz
dGluYXRpb24ubV9sYWJlbC5tX29mZnNldDsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb3JyZWN0
TGFiZWxzKExpbmtCdWZmZXImKTsKKyAgICAKKyAgICB+V2F0Y2hwb2ludCgpOworICAgIAorICAg
IHZvaWQgZmlyZSgpOworICAgIAorcHJpdmF0ZToKKyAgICB1aW50cHRyX3QgbV9zb3VyY2U7Cisg
ICAgdWludHB0cl90IG1fZGVzdGluYXRpb247Cit9OworCitjbGFzcyBXYXRjaHBvaW50U2V0IDog
cHVibGljIFJlZkNvdW50ZWQ8V2F0Y2hwb2ludFNldD4geworcHVibGljOgorICAgIFdhdGNocG9p
bnRTZXQoKTsKKyAgICB+V2F0Y2hwb2ludFNldCgpOworICAgIAorICAgIGJvb2wgaXNTdGlsbFZh
bGlkKCkgY29uc3QgeyByZXR1cm4gIW1faXNJbnZhbGlkYXRlZDsgfQorICAgIGJvb2wgaGFzQmVl
bkludmFsaWRhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ludmFsaWRhdGVkOyB9CisgICAgCisg
ICAgLy8gQXMgYSBjb252ZW5pZW5jZSwgdGhpcyB3aWxsIGlnbm9yZSAwLiBUaGF0J3MgYmVjYXVz
ZSBjb2RlIHBhdGhzIGluIHRoZSBERkcKKyAgICAvLyB0aGF0IGNyZWF0ZSBzcGVjdWxhdGlvbiB3
YXRjaHBvaW50cyBtYXkgY2hvb3NlIHRvIGJhaWwgb3V0IGlmIHNwZWN1bGF0aW9uCisgICAgLy8g
aGFkIGFscmVhZHkgYmVlbiB0ZXJtaW5hdGVkLgorICAgIHZvaWQgYWRkKFdhdGNocG9pbnQqKTsK
KyAgICAKKyAgICAvLyBGb3JjZSB0aGUgd2F0Y2hwb2ludCBzZXQgdG8gYmVoYXZlIGFzIGlmIGl0
IHdhcyBiZWluZyB3YXRjaGVkIGV2ZW4gaWYgbm8KKyAgICAvLyB3YXRjaHBvaW50cyBoYXZlIGJl
ZW4gaW5zdGFsbGVkLiBUaGlzIHdpbGwgcmVzdWx0IGluIGludmFsaWRhdGlvbiBpZiB0aGUKKyAg
ICAvLyB3YXRjaHBvaW50IHdvdWxkIGhhdmUgZmlyZWQuIFRoYXQncyBhIHByZXR0eSBnb29kIGlu
ZGljYXRpb24gdGhhdCB5b3UKKyAgICAvLyBwcm9iYWJseSBkb24ndCB3YW50IHRvIHNldCB3YXRj
aHBvaW50cywgc2luY2Ugd2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8KKyAgICAvLyBzZXQgd2F0
Y2hwb2ludHMgdGhhdCB3ZSBiZWxpZXZlIHdpbGwgYWN0dWFsbHkgYmUgZmlyZWQuCisgICAgdm9p
ZCBzdGFydFdhdGNoaW5nKCkgeyBtX2lzV2F0Y2hlZCA9IHRydWU7IH0KKyAgICAKKyAgICB2b2lk
IG5vdGlmeVdyaXRlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9pc1dhdGNoZWQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG5vdGlmeVdyaXRlU2xvdygpOworICAgIH0KKyAgICAKKyAg
ICBib29sKiBhZGRyZXNzT2ZJc1dhdGNoZWQoKSB7IHJldHVybiAmbV9pc1dhdGNoZWQ7IH0KKyAg
ICAKKyAgICB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOyAvLyBDYWxsIG9ubHkgaWYgeW91J3ZlIGNo
ZWNrZWQgaXNXYXRjaGVkLgorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIGZpcmVBbGxXYXRjaHBv
aW50cygpOworICAgIAorICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXYXRjaHBvaW50LCBCYXNpY1Jh
d1NlbnRpbmVsTm9kZTxXYXRjaHBvaW50PiA+IG1fc2V0OworICAgIGJvb2wgbV9pc1dhdGNoZWQ7
CisgICAgYm9vbCBtX2lzSW52YWxpZGF0ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIFdhdGNocG9pbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24g
MTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw2ICsxNDgsNyBAQCB2b2lkIFJlc29s
dmVSZXN1bHQ6OmNoZWNrVmFsaWRpdHkoKQogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJbmRl
eGVkR2xvYmFsOgogICAgIGNhc2UgUmVhZE9ubHlJbmRleGVkR2xvYmFsOgorICAgIGNhc2UgV2F0
Y2hlZEluZGV4ZWRHbG9iYWw6CiAgICAgY2FzZSBEeW5hbWljSW5kZXhlZEdsb2JhbDoKICAgICBj
YXNlIER5bmFtaWNSZWFkT25seUluZGV4ZWRHbG9iYWw6CiAgICAgICAgIEFTU0VSVChtX2luZGV4
ICE9IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSk7CkBAIC0yMTYsMTMgKzIxNywxOSBAQCBib29sIEJ5
dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoY29uc3QgSWRlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBib29sIGlzQ29uc3RhbnQpCitpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZh
cigKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQ29uc3RhbnRNb2RlIGNvbnN0YW50TW9k
ZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZnVuY3Rp
b25Nb2RlKTsKICAgICBpbnQgaW5kZXggPSBzeW1ib2xUYWJsZSgpLnNpemUoKTsKLSAgICBTeW1i
b2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0YW50ID8gUmVhZE9ubHkgOiAwKTsK
KyAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCAoY29uc3RhbnRNb2RlID09IElz
Q29uc3RhbnQpID8gUmVhZE9ubHkgOiAwKTsKKyAgICBpZiAoZnVuY3Rpb25Nb2RlID09IElzRnVu
Y3Rpb25Ub1NwZWNpYWxpemUpCisgICAgICAgIG5ld0VudHJ5LmF0dGVtcHRUb1dhdGNoKCk7CiAg
ICAgU3ltYm9sVGFibGU6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVu
dC5pbXBsKCksIG5ld0VudHJ5KTsKLSAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgIGlm
ICghcmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQu
bm90aWZ5V3JpdGUoKTsKICAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5n
ZXRJbmRleCgpOworICAgIH0KICAgICByZXR1cm4gaW5kZXg7CiB9CiAKQEAgLTI4OSwxNyArMjk2
LDIzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm8KIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsraSkgewogICAgICAg
ICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07Ci0gICAgICAg
IGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERhdGEsIGZ1bmN0aW9uLT5pZGVu
dCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3cml0ZSBleGlzdGluZyBwcm9w
ZXJ0aWVzLgotCisgICAgICAgIGJvb2wgcHJvcGVydHlEaWRFeGlzdCA9IAorICAgICAgICAgICAg
Z2xvYmFsT2JqZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24tPmlkZW50
KCkpOyAvLyBOZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4aXN0aW5nIHByb3Bl
cnRpZXMuCisgICAgICAgIAogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKGV4ZWMsIG1ha2VGdW5jdGlvbihleGVjLCBmdW5jdGlvbiksIHNjb3BlQ2hhaW4pOwotICAg
ICAgICBpbnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoZnVuY3Rpb24tPmlkZW50KCksIGZhbHNlKTsK
KyAgICAgICAgaW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKAorICAgICAgICAgICAgZnVuY3Rpb24t
PmlkZW50KCksIElzVmFyaWFibGUsCisgICAgICAgICAgICAhcHJvcGVydHlEaWRFeGlzdCA/IElz
RnVuY3Rpb25Ub1NwZWNpYWxpemUgOiBOb3RGdW5jdGlvbk9yTm90U3BlY2lhbGl6YWJsZSk7CiAg
ICAgICAgIGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChpbmRleCkuc2V0KCptX2dsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdmFyU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFz
UHJvcGVydHkoZXhlYywgKnZhclN0YWNrW2ldLmZpcnN0KSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBhZGRHbG9iYWxWYXIoKnZhclN0YWNrW2ldLmZpcnN0LCB2YXJTdGFja1tpXS5z
ZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCk7CisgICAgICAgIGFkZEdsb2Jh
bFZhcigKKyAgICAgICAgICAgICp2YXJTdGFja1tpXS5maXJzdCwKKyAgICAgICAgICAgICh2YXJT
dGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCkgPyBJc0NvbnN0
YW50IDogSXNWYXJpYWJsZSwKKyAgICAgICAgICAgIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXph
YmxlKTsKICAgICB9CiB9CiAKQEAgLTEyMDIsNyArMTIxNSw5IEBAIFJlc29sdmVSZXN1bHQgQnl0
ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmUKICAgICAgICAgICAgIGlmICgrK2l0ZXIgPT0gZW5kKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWcp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjpkeW5hbWljSW5kZXhl
ZEdsb2JhbFJlc29sdmUoZW50cnkuZ2V0SW5kZXgoKSwgZGVwdGgsIGN1cnJlbnRTY29wZSwgZmxh
Z3MpOwotICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjppbmRleGVkR2xvYmFs
UmVzb2x2ZShlbnRyeS5nZXRJbmRleCgpLCBjdXJyZW50U2NvcGUsIGZsYWdzKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3VsdDo6aW5kZXhlZEdsb2JhbFJlc29sdmUoCisgICAg
ICAgICAgICAgICAgICAgIGVudHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29wZSwKKyAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MgfCAoZW50cnkuY291bGRCZVdhdGNoZWQoKSA/IFJlc29sdmVSZXN1
bHQ6OldhdGNoZWRGbGFnIDogMCkpOwogICAgICAgICAgICAgfQogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICAgICAgICAgIGlmIChKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBqc0R5bmFtaWND
YXN0PEpTQWN0aXZhdGlvbio+KGN1cnJlbnRWYXJpYWJsZU9iamVjdCkpCkBAIC0xMjk2LDcgKzEz
MTEsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpzaG91bGRBdm9pZFJlc29sCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUoUmVnaXN0ZXJJRCogZHN0LCBjb25z
dCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eSkKIHsKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKQotICAgICAgICByZXR1cm4g
ZW1pdEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQpOworICAgICAgICByZXR1cm4gZW1p
dEdldFN0YXRpY1Zhcihkc3QsIHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsKICAgICAKICAgICBp
ZiAocmVzb2x2ZVJlc3VsdC5pc0dsb2JhbCgpICYmICFzaG91bGRBdm9pZFJlc29sdmVHbG9iYWwo
KSkgewogI2lmIEVOQUJMRShKSVQpCkBAIC0xMzc5LDcgKzEzOTQsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAKICAgICAgICAgaWYgKHJlc29sdmVSZXN1bHQu
aXNTdGF0aWMoKSkgewogICAgICAgICAgICAgLy8gRGlyZWN0bHkgaW5kZXggdGhlIHByb3BlcnR5
IGxvb2t1cCBhY3Jvc3MgbXVsdGlwbGUgc2NvcGVzLgotICAgICAgICAgICAgZW1pdEdldFN0YXRp
Y1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgICAgIGVtaXRHZXRTdGF0aWNW
YXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJu
IGJhc2VEc3Q7CiAgICAgICAgIH0KIApAQCAtMTQxOCw3ICsxNDMzLDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogewogICAgIGlmIChyZXNvbHZlUmVzdWx0Lmlz
U3RhdGljKCkpIHsKICAgICAgICAgZW1pdExvYWQoYmFzZURzdCwganNVbmRlZmluZWQoKSk7Ci0g
ICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAg
IGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAg
ICAgICByZXR1cm4gYmFzZURzdDsKICAgICB9CiAKQEAgLTE0MzYsNyArMTQ1MSw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICByZXR1cm4gZW1pdFJlc29s
dmUocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogfQogCi1SZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0
IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1
bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gMDsKIApAQCAtMTQ3MiwxMyArMTQ4NywyNCBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0CiAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChwcm9maWxlKTsKICAgICAgICAgcmV0dXJuIGRzdDsKIAorICAgIGNhc2UgUmVz
b2x2ZVJlc3VsdDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6CisgICAgICAgIC8vIFNraXAgdGhlIHBl
ZXBob2xlIGZvciBub3cuIEl0J3Mgbm90IGNsZWFyIHRoYXQgaXQncyBwcm9maXRhYmxlIGdpdmVu
CisgICAgICAgIC8vIHRoZSBERkcncyBjYXBhYmlsaXRpZXMsIGFuZCB0aGUgZmFjdCB0aGF0IGlm
IGl0J3Mgd2F0Y2hhYmxlIHRoZW4gd2UKKyAgICAgICAgLy8gZG9uJ3QgZXhwZWN0IHRvIHNlZSBh
bnkgcHV0X2dsb2JhbF92YXIncyBhbnl3YXkuCisgICAgICAgIHByb2ZpbGUgPSBlbWl0UHJvZmls
ZWRPcGNvZGUob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChyZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsgLy8gRm9yIHRoZSBiZW5lZml0IG9m
IHRoZSBERkcuCisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKyAgICAg
ICAgcmV0dXJuIGRzdDsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVS
ZXN1bHQsIFJlZ2lzdGVySUQqIHZhbHVlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgc3dp
dGNoIChyZXNvbHZlUmVzdWx0LnR5cGUoKSkgewogICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVn
aXN0ZXI6CkBAIC0xNDk5LDYgKzE1MjUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRTdAogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJlc3Vs
dC5yZWdpc3RlclBvaW50ZXIoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1
ZS0+aW5kZXgoKSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgCisgICAgY2FzZSBS
ZXNvbHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAgZW1pdE9wY29kZShv
cF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChy
ZXNvbHZlUmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KHJlc29sdmVSZXN1bHQuZ2xvYmFsT2JqZWN0KCkpLT5zeW1i
b2xUYWJsZSgpLmdldChpZGVudGlmaWVyLmltcGwoKSkuYWRkcmVzc09mSXNXYXRjaGVkKCkpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOwor
ICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTExLDcgKzExMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
Ly8gVGhlIHJlc29sdmVkIGJpbmRpbmcgaXMgaW1tdXRhYmxlLgogICAgICAgICAgICAgUmVhZE9u
bHlGbGFnID0gMHgyMCwKICAgICAgICAgICAgIC8vIFRoZSBiYXNlIG9iamVjdCBpcyB0aGUgZ2xv
YmFsIG9iamVjdC4KLSAgICAgICAgICAgIEdsb2JhbEZsYWcgPSAweDQwCisgICAgICAgICAgICBH
bG9iYWxGbGFnID0gMHg0MCwKKyAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBiZWluZyB3
YXRjaGVkLCBzbyB3cml0ZXMgc2hvdWxkIGJlIHNwZWNpYWwuCisgICAgICAgICAgICBXYXRjaGVk
RmxhZyA9IDB4ODAKICAgICAgICAgfTsKICAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAgICAg
IC8vIFRoZSBwcm9wZXJ0eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBpbiBhIHJlZ2lzdGVyLgpAQCAt
MTMxLDYgKzEzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8gYmluZGluZyBj
cmVhdGVkIHdpdGggInZhciIgYXQgdGhlIHRvcCBsZXZlbC4gQXQgcnVudGltZSB3ZSdsbAogICAg
ICAgICAgICAgLy8ganVzdCBpbmRleCBpbnRvIHRoZSBnbG9iYWwgb2JqZWN0LgogICAgICAgICAg
ICAgSW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFsRmxhZyB8IFN0YXRpY0ZsYWcs
CisgICAgICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWwsIGJ1dCB0aGUgcHJvcGVydHkgaXMg
YmVpbmcgd2F0Y2hlZC4KKyAgICAgICAgICAgIFdhdGNoZWRJbmRleGVkR2xvYmFsID0gSW5kZXhl
ZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZyB8IFdhdGNoZWRGbGFnLAogICAgICAgICAg
ICAgLy8gTGlrZSBJbmRleGVkR2xvYmFsLCBidXQgdGhlIHByb3BlcnR5IGlzIGFsc28gcmVhZC1v
bmx5LCBsaWtlIE5hTiwKICAgICAgICAgICAgIC8vIEluZmluaXR5LCBvciB1bmRlZmluZWQuCiAg
ICAgICAgICAgICBSZWFkT25seUluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxhZyB8IFJlYWRPbmx5
RmxhZyB8IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnLApAQCAtNDQxLDggKzQ0NSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90eXBlb2YsIGRzdCwg
c3JjKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogYmFzZSkgeyByZXR1cm4gZW1pdEJpbmFyeU9w
KG9wX2luLCBkc3QsIHByb3BlcnR5LCBiYXNlLCBPcGVyYW5kVHlwZXMoKSk7IH0KIAotICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVz
b2x2ZVJlc3VsdCYpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3RhdGljVmFyKGNvbnN0
IFJlc29sdmVSZXN1bHQmLCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRTdGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0Jiwg
Y29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3RhdGljVmFy
KGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCogdmFs
dWUpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKFJlZ2lzdGVySUQqIGRzdCwg
Y29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVz
b2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKQEAgLTU3NCw3ICs1Nzgs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFJldHVybnMgdGhl
IGluZGV4IG9mIHRoZSBhZGRlZCB2YXIuCi0gICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3Qg
SWRlbnRpZmllciYsIGJvb2wgaXNDb25zdGFudCk7CisgICAgICAgIGVudW0gQ29uc3RhbnRNb2Rl
IHsgSXNDb25zdGFudCwgSXNWYXJpYWJsZSB9OworICAgICAgICBlbnVtIEZ1bmN0aW9uTW9kZSB7
IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUsIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlIH07
CisgICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYsIENvbnN0YW50TW9k
ZSwgRnVuY3Rpb25Nb2RlKTsKIAogICAgICAgICB2b2lkIGFkZFBhcmFtZXRlcihjb25zdCBJZGVu
dGlmaWVyJiwgaW50IHBhcmFtZXRlckluZGV4KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZp
c2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMCw3ICs0MzAsNyBAQCBSZWdpc3RlcklE
KiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNT
dGF0aWMoKSkgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVy
YXRvciwgbV9hcmdzKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZnVuYy5n
ZXQoKSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFy
KGZ1bmMuZ2V0KCksIHJlc29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAg
ICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b25Pcklnbm9yZWQoZHN0LCBmdW5jLmdldCgpKSwgZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOwogICAgIH0KQEAgLTYxOCw3ICs2
MTgsNyBAQCBSZWdpc3RlcklEKiBQb3N0Zml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlCiAgICAgfQog
CiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3VsdC5pc1Jl
YWRPbmx5KCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9y
LmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXNvbHZlUmVzdWx0
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRT
dGF0aWNWYXIoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogb2xkVmFsdWU7CiAgICAgICAgIGlmIChkc3QgPT0gZ2Vu
ZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICAgICAgb2xkVmFsdWUgPSAwOwpAQCAt
NjI2LDcgKzYyNiw3IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGUK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRl
YyhnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgp
LCBtX29wZXJhdG9yKTsKICAgICAgICAgfQotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRp
Y1ZhcihyZXNvbHZlUmVzdWx0LCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIG1faWRlbnQsIHZhbHVlLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuIG9sZFZhbHVlOwogICAgIH0KICAgICAKQEAgLTgwMyw5ICs4MDMsOSBAQCBSZWdp
c3RlcklEKiBQcmVmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgfQogCiAgICAgaWYgKHJl
c29sdmVSZXN1bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3VsdC5pc1JlYWRPbmx5KCkpIHsK
LSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IuZW1pdEdldFN0
YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJlc29sdmVSZXN1bHQpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci5lbWl0R2V0U3Rh
dGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwgbV9p
ZGVudCk7CiAgICAgICAgIGVtaXRQcmVJbmNPckRlYyhnZW5lcmF0b3IsIHByb3BEc3QuZ2V0KCks
IG1fb3BlcmF0b3IpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZl
UmVzdWx0LCBwcm9wRHN0LmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNW
YXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgcHJvcERzdC5nZXQoKSk7CiAgICAgICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkp
OwogICAgIH0KIApAQCAtMTIyNiw5ICsxMjI2LDkgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJl
c29sdmVOb2RlOjplbWl0QgogICAgIH0KIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGlj
KCkgJiYgIXJlc29sdmVSZXN1bHQuaXNSZWFkT25seSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIHJlc29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBSZWdpc3RlcklE
KiByZXN1bHQgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBtX3JpZ2h0LCBt
X29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdo
dC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGlj
VmFyKHJlc29sdmVSZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3Rh
dGljVmFyKHJlc29sdmVSZXN1bHQsIG1faWRlbnQsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCkBAIC0xMjU2LDcgKzEyNTYsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25S
ZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSkKICAgICAgICAgICAgIGRzdCA9IDA7CiAgICAgICAgIFJlZ2lzdGVySUQqIHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9yaWdodCk7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHZhbHVlKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgdmFsdWUpOwogICAg
ICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCkBAIC0xMzYxLDcgKzEzNjEsNyBAQCBSZWdpc3Rl
cklEKiBDb25zdERlY2xOb2RlOjplbWl0Q29kZVNpbmdsCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gbV9pbml0ID8gZ2VuZXJhdG9yLmVtaXROb2RlKG1faW5pdCkgOiBnZW5lcmF0b3Iu
ZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0
YXRpYygpKQotICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2
ZVJlc3VsdCwgdmFsdWUuZ2V0KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRT
dGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgdmFsdWUuZ2V0KCkpOwogICAgIAogICAg
IGlmIChnZW5lcmF0b3IuY29kZVR5cGUoKSAhPSBFdmFsQ29kZSkKICAgICAgICAgcmV0dXJuIHZh
bHVlLmdldCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNyArMjE5LDkg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogewogICAgIEFTU0VS
VChtX2Jsb2NrKTsKICAgICBBU1NFUlQobV9pc1ZhbGlkKTsKLSAgICAgICAgCisgICAgCisgICAg
bV9kaWRDbG9iYmVyID0gZmFsc2U7CisgICAgCiAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IG1f
YmxvY2stPmF0KGluZGV4SW5CbG9jayk7CiAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbbm9kZUlu
ZGV4XTsKICAgICAgICAgCkBAIC0yMzcsOCArMjM5LDEyIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIAogICAgIGNhc2UgR2V0TG9jYWw6IHsK
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZh
cmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICBpZiAodmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVk
aWN0aW9uKCkgPT0gU3BlY05vbmUpIHsKKyAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwor
ICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgYm9vbCBjYW5FeGl0ID0gZmFsc2U7Ci0gICAgICAgIGNhbkV4aXQg
fD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCkgPT0gU3BlY05vbmU7CiAgICAgICAg
IEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX3ZhcmlhYmxlcy5vcGVyYW5kKHZhcmlhYmxlQWNjZXNz
RGF0YS0+bG9jYWwoKSk7CiAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhLT5pc0NhcHR1
cmVkKCkpIHsKICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NsZWFyKCkpCkBAIC0xNDc2LDcgKzE0
ODIsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNGdW5jdGlvbik7CiAgICAgICAgIC8v
IEZJWE1FOiBTaG91bGQgYmUgYWJsZSB0byBwcm9wYWdhdGUgdGhlIGZhY3QgdGhhdCB3ZSBrbm93
IHdoYXQgdGhlIGZ1bmN0aW9uIGlzLgogICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorICAg
ICAgICAKICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAg
ICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CkBAIC0xNDg4LDggKzE0OTQsMTMgQEAgYm9vbCBBYnN0
cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBub2RlLnNldENhbkV4aXQo
ZmFsc2UpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICBi
cmVhazsKKyAgICAgICAgCisgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAgICAgICBu
b2RlLnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAg
Y2FzZSBQdXRHbG9iYWxWYXI6CisgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAg
bm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAg
LTE1NzgsNiArMTU4OSw3IEBAIGlubGluZSB2b2lkIEFic3RyYWN0U3RhdGU6OmNsb2JiZXJTdHJ1
Y3QKICAgICBmb3IgKHNpemVfdCBpID0gbV92YXJpYWJsZXMubnVtYmVyT2ZMb2NhbHMoKTsgaS0t
OykKICAgICAgICAgbV92YXJpYWJsZXMubG9jYWwoaSkuY2xvYmJlclN0cnVjdHVyZXMoKTsKICAg
ICBtX2hhdmVTdHJ1Y3R1cmVzID0gZmFsc2U7CisgICAgbV9kaWRDbG9iYmVyID0gdHJ1ZTsKIH0K
IAogaW5saW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VGFpbChBYnN0cmFjdFZh
bHVlJiBkZXN0aW5hdGlvbiwgQWJzdHJhY3RWYWx1ZSYgaW5WYXJpYWJsZSwgTm9kZUluZGV4IG5v
ZGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDYgKzE5Myw5IEBAIHB1Ymxp
YzoKICAgICAvLyBvZiBUaHJvdy4KICAgICBib29sIGV4ZWN1dGUodW5zaWduZWQpOwogICAgIAor
ICAgIC8vIERpZCB0aGUgbGFzdCBleGVjdXRlZCBub2RlIGNsb2JiZXIgdGhlIHdvcmxkPworICAg
IGJvb2wgZGlkQ2xvYmJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlkQ2xvYmJlcjsgfQorICAgIAog
ICAgIC8vIElzIHRoZSBleGVjdXRpb24gc3RhdGUgc3RpbGwgdmFsaWQ/IFRoaXMgd2lsbCBiZSBm
YWxzZSBpZiBleGVjdXRlKCkgaGFzCiAgICAgLy8gcmV0dXJuZWQgZmFsc2UgcHJldmlvdXNseS4K
ICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KQEAgLTI3NCw2
ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9mb3VuZENvbnN0YW50czsKICAgICAKICAg
ICBib29sIG1faXNWYWxpZDsKKyAgICBib29sIG1fZGlkQ2xvYmJlcjsKICAgICAKICAgICBCcmFu
Y2hEaXJlY3Rpb24gbV9icmFuY2hEaXJlY3Rpb247IC8vIFRoaXMgaXMgb25seSBzZXQgZm9yIGJs
b2NrcyB0aGF0IGVuZCBpbiBCcmFuY2ggYW5kIHRoYXQgZXhlY3V0ZSB0byBjb21wbGV0aW9uIChp
LmUuIG1faXNWYWxpZCA9PSB0cnVlKS4KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMzQsNiArMTIzNCw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKGJvb2wKICAgICAvLyBEb2VzIHRoZSBjb2RlIGJsb2NrJ3Mgc2l6ZSBtYXRjaCB0aGUgaGV1
cmlzdGljcy9yZXF1aXJlbWVudHMgZm9yIGJlaW5nCiAgICAgLy8gYW4gaW5saW5lIGNhbmRpZGF0
ZT8KICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBleGVjdXRhYmxlLT5wcm9maWxlZENv
ZGVCbG9ja0ZvcihraW5kKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2spCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKICAgICBpZiAoIW1pZ2h0SW5saW5lRnVuY3Rpb25Gb3IocHJvZmlsZWRC
bG9jaywga2luZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTIyNTEsMTMgKzIy
NTQsNjEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpOworCiAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0R2xvYmFsVmFy
ID0gYWRkVG9HcmFwaCgKICAgICAgICAgICAgICAgICBHZXRHbG9iYWxWYXIsCi0gICAgICAgICAg
ICAgICAgT3BJbmZvKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KS0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5y
ZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5h
c3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lz
dGVyUG9pbnRlcikpLAogICAgICAgICAgICAgICAgIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAg
ICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0R2xvYmFsVmFy
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9nbG9iYWxfdmFyKTsKICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93
YXRjaGFibGU6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQ
cmVkaWN0aW9uKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIg
PSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IG1fY29k
ZUJsb2NrLT5pZGVudGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKS5nZXQoaWRlbnRp
Zmllci5pbXBsKCkpOworICAgICAgICAgICAgaWYgKCFlbnRyeS5jb3VsZEJlV2F0Y2hlZCgpKSB7
CisgICAgICAgICAgICAgICAgTm9kZUluZGV4IGdldEdsb2JhbFZhciA9IGFkZFRvR3JhcGgoCisg
ICAgICAgICAgICAgICAgICAgIEdldEdsb2JhbFZhciwKKyAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCwgZ2V0R2xvYmFsVmFyKTsKKyAgICAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBUaGUgd2F0Y2hwb2ludCBpcyBzdGlsbCBpbnRhY3QhIFRoaXMg
bWVhbnMgdGhhdCB3ZSB3aWxsIGdldCBub3RpZmllZCBpZiB0aGUKKyAgICAgICAgICAgIC8vIGN1
cnJlbnQgdmFsdWUgaW4gdGhlIGdsb2JhbCB2YXJpYWJsZSBjaGFuZ2VzLiBTbywgd2UgY2FuIGlu
bGluZSB0aGF0IHZhbHVlLgorICAgICAgICAgICAgLy8gTW9yZW92ZXIsIGN1cnJlbnRseSB3ZSBj
YW4gYXNzdW1lIHRoYXQgdGhpcyB2YWx1ZSBpcyBhIEpTRnVuY3Rpb24qLCB3aGljaAorICAgICAg
ICAgICAgLy8gaW1wbGllcyB0aGF0IGl0J3MgYSBjZWxsLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdz
LCBzaW5jZSBpbiBnZW5lcmFsIHdlJ2QgaGF2ZQorICAgICAgICAgICAgLy8gdG8gdXNlIGEgSlND
b25zdGFudCBmb3Igbm9uLWNlbGxzIGFuZCBhIFdlYWtKU0NvbnN0YW50IGZvciBjZWxscy4gU28g
aW5zdGVhZAorICAgICAgICAgICAgLy8gb2YgaGF2aW5nIGJvdGggY2FzZXMgd2UganVzdCBhc3Nl
cnQgdGhhdCB0aGUgdmFsdWUgaXMgYSBjZWxsLgorICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBOQi4gSWYgaXQgd2Fzbid0IGZvciBDU0UsIEdsb2JhbFZhcldhdGNocG9pbnQgd291bGQgaGF2
ZSBubyBuZWVkIGZvciB0aGUKKyAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHBvaW50ZXIuIEJ1dCBD
U0UgdHJhY2tzIGVmZmVjdHMgb24gZ2xvYmFsIHZhcmlhYmxlcyBieSBjb21wYXJpbmcKKyAgICAg
ICAgICAgIC8vIHJlZ2lzdGVyIHBvaW50ZXJzLiBCZWNhdXNlIENTRSBleGVjdXRlcyBtdWx0aXBs
ZSB0aW1lcyB3aGlsZSB0aGUgYmFja2VuZAorICAgICAgICAgICAgLy8gZXhlY3V0ZXMgb25jZSwg
d2UgdXNlIHRoZSBmb2xsb3dpbmcgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmOgorICAgICAgICAgICAg
Ly8gLSBUaGUgbm9kZSByZWZlcnMgZGlyZWN0bHkgdG8gdGhlIHJlZ2lzdGVyIHBvaW50ZXIgdG8g
bWFrZSBDU0Ugc3VwZXIgY2hlYXAuCisgICAgICAgICAgICAvLyAtIFRvIHBlcmZvcm0gYmFja2Vu
ZCBjb2RlIGdlbmVyYXRpb24sIHRoZSBub2RlIG9ubHkgY29udGFpbnMgdGhlIGlkZW50aWZpZXIK
KyAgICAgICAgICAgIC8vICAgbnVtYmVyLCBmcm9tIHdoaWNoIGl0IGlzIHBvc3NpYmxlIHRvIGdl
dCAodmlhIGEgZmV3IGF2ZXJhZ2UtdGltZSBPKDEpCisgICAgICAgICAgICAvLyAgIGxvb2t1cHMp
IHRvIHRoZSBXYXRjaHBvaW50U2V0LgorICAgICAgICAgICAgCisgICAgICAgICAgICBhZGRUb0dy
YXBoKAorICAgICAgICAgICAgICAgIEdsb2JhbFZhcldhdGNocG9pbnQsCisgICAgICAgICAgICAg
ICAgT3BJbmZvKGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICBP
cEluZm8oaWRlbnRpZmllck51bWJlcikpOworICAgICAgICAgICAgCisgICAgICAgICAgICBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBnbG9iYWxPYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5k
ZXgoKSkuZ2V0KCk7CisgICAgICAgICAgICBBU1NFUlQoc3BlY2lmaWNWYWx1ZS5pc0NlbGwoKSk7
CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKKyAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFdlYWtKU0NvbnN0YW50LCBPcEluZm8oc3BlY2lmaWNWYWx1
ZS5hc0NlbGwoKSkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
Z2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKQEAgLTIyNjgsNiArMjMxOSwyOCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9wdXRfZ2xvYmFsX3Zhcik7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrOiB7CisgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrOworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1Rv
cC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZF07Cisg
ICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBtX2NvZGVCbG9jay0+aWRlbnRpZmll
cihpZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCkuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKTsKKyAg
ICAgICAgICAgIGlmICghZW50cnkuY291bGRCZVdhdGNoZWQoKSkgeworICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoCisgICAgICAgICAgICAgICAgICAgIFB1dEdsb2JhbFZhciwKKyAgICAgICAg
ICAgICAgICAgICAgT3BJbmZvKGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09i
amVjdChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9n
bG9iYWxfdmFyX2NoZWNrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
CisgICAgICAgICAgICAgICAgUHV0R2xvYmFsVmFyQ2hlY2ssCisgICAgICAgICAgICAgICAgT3BJ
bmZvKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmpl
Y3QoY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAgICAg
ICAgICAgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLAorICAgICAgICAgICAgICAgIHZhbHVlKTsK
KyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8vID09PSBCbG9jayB0ZXJtaW5hdG9ycy4gPT09CiAKICAgICAgICAg
Y2FzZSBvcF9qbXA6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxI
ZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2Fs
bEhlbHBlcnMuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsMTIgQEAgcHVi
bGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CiAgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcyKTsKICAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzKFRydXN0ZWRJbW1QdHIgYXJnMSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3Vt
ZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKICAgICB7CkBAIC00MzMs
NiArNDM5LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjE+KGFyZzEsIGFyZzIpOwog
ICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3Rl
ZEltbVB0ciBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4
ZWNTdGF0ZSgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDI5IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgfQogICAgIAorICAgIGJvb2wgZ2xvYmFs
VmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQ
b2ludGVyKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7
IGktLTspIHsKKyAgICAgICAgICAgIE5vZGVJbmRleCBpbmRleCA9IG1fY3VycmVudEJsb2NrLT5h
dChpKTsKKyAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW2luZGV4XTsKKyAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNo
cG9pbnQ6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVn
aXN0ZXJQb2ludGVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAgICAg
ICAgICAgIGlmIChub2RlLnJlZ2lzdGVyUG9pbnRlcigpID09IHJlZ2lzdGVyUG9pbnRlcikKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmNsb2JiZXJzV29ybGQoaW5kZXgpKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCiAgICAgTm9kZUluZGV4IGdsb2JhbFZhclN0b3JlRWxpbWluYXRpb24oV3JpdGVCYXJy
aWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpCiAgICAgewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewpAQCAtMjI2LDYgKzI0OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUu
b3AoKSkgewogICAgICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgICAgICBjYXNl
IFB1dEdsb2JhbFZhckNoZWNrOgogICAgICAgICAgICAgICAgIGlmIChub2RlLnJlZ2lzdGVyUG9p
bnRlcigpID09IHJlZ2lzdGVyUG9pbnRlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu
ZGV4OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTg1LDcgKzEwMDksMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KGdsb2JhbFZhckxvYWRFbGltaW5hdGlvbihu
b2RlLnJlZ2lzdGVyUG9pbnRlcigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAgICAgICBpZiAoZ2xv
YmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkpKQorICAg
ICAgICAgICAgICAgIGVsaW1pbmF0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFy
Q2hlY2s6CiAgICAgICAgICAgICBpZiAobV9maXhwb2ludFN0YXRlID09IEZpeHBvaW50Tm90Q29u
dmVyZ2VkKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZWxpbWluYXRlKGds
b2JhbFZhclN0b3JlRWxpbWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAx
MjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlT3Bjb2RlKAogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
OgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ugb3Bf
Z2V0X2dsb2JhbF92YXI6CisgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6CiAg
ICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrOgogICAgIGNhc2Ugb3Bfam1wOgogICAgIGNhc2Ugb3BfbG9vcDoKICAgICBjYXNlIG9wX2p0
cnVlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw2ICs1Niw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIGlmICghYmxvY2stPmNmYUZvdW5kQ29uc3RhbnRzKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyAgICAg
ICAgICAgIGRhdGFMb2coIkNvbnN0YW50IGZvbGRpbmcgY29uc2lkZXJpbmcgQmxvY2sgIyV1Llxu
IiwgYmxvY2tJbmRleCk7CisjZW5kaWYKICAgICAgICAgICAgIHN0YXRlLmJlZ2luQmFzaWNCbG9j
ayhibG9jayk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4SW5CbG9jayA9IDA7IGlu
ZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFzdGF0ZS5pc1ZhbGlkKCkpCkBAIC05MCw3ICs5Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdGF0ZS5leGVjdXRlKGluZGV4SW5CbG9j
ayk7CiAgICAgICAgICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkKLSAgICAgICAg
ICAgICAgICAgICAgfHwgbV9ncmFwaC5jbG9iYmVyc1dvcmxkKG5vZGUpCisgICAgICAgICAgICAg
ICAgICAgIHx8IHN0YXRlLmRpZENsb2JiZXIoKQogICAgICAgICAgICAgICAgICAgICB8fCBub2Rl
Lmhhc0NvbnN0YW50KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGF0ZS5mb3JOb2RlKG5vZGVJbmRleCkudmFsdWUoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxl
SnVtcFBvaW50LmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYs
MTEgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogICAgIAorICAgIGJvb2wgaXNTZXQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fY29kZU9mZnNldCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCk7CisgICAgfQorICAgIAogICAgIHZvaWQgc3dpdGNoVG9MYXRlSnVtcChN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBjaGVjaykKICAgICB7CiAjaWZuZGVmIE5ERUJV
RwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJ
KHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCwxMSBAQCB2b2lkIEpJVENvbXBp
bGVyOjpsaW5rT1NSRXhpdHMoKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2Rl
QmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0cygpOyArK2kpIHsKICAgICAgICAgT1NSRXhpdCYgZXhp
dCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOwotICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlh
bEp1bXAoKS5saW5rKHRoaXMpOworICAgICAgICBBU1NFUlQoIWV4aXQubV9jaGVjay5pc1NldCgp
ID09IChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkpOworICAgICAgICBpZiAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9PSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAgICAgICBleGl0Lm1fY2hl
Y2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5zZXREZXN0aW5h
dGlvbihsYWJlbCgpKTsKICAgICAgICAgaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKICAg
ICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaSksICZnbG9iYWxEYXRhKCktPm9zckV4aXRJbmRl
eCk7CiAgICAgICAgIGV4aXQubV9jaGVjay5zd2l0Y2hUb0xhdGVKdW1wKHBhdGNoYWJsZUp1bXAo
KSk7CkBAIC0xOTAsNiArMTk0LDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVy
JiBsaW5rQgogICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7
CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhleGl0Lm1fY2hlY2subGF0ZUp1bXAoKSwgdGFyZ2V0
KTsKICAgICAgICAgZXhpdC5tX2NoZWNrLmNvcnJlY3RMYXRlSnVtcChsaW5rQnVmZmVyKTsKKyAg
ICAgICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQorICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhp
dC5tX3dhdGNocG9pbnRJbmRleCkuY29ycmVjdExhYmVscyhsaW5rQnVmZmVyKTsKICAgICB9CiAg
ICAgCiAgICAgY29kZUJsb2NrKCktPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTIwMTYyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzMCw5ICs0MzAsMjAgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87
CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEdsb2JhbFZhcldhdGNocG9pbnQgfHwgb3AoKSA9
PSBQdXRHbG9iYWxWYXJDaGVjazsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlckZvckNoZWNrKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNJZGVudGlmaWVyTnVt
YmVyRm9yQ2hlY2soKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzI7CisgICAgfQorICAgIAog
ICAgIGJvb2wgaGFzUmVnaXN0ZXJQb2ludGVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCgp
ID09IEdldEdsb2JhbFZhciB8fCBvcCgpID09IFB1dEdsb2JhbFZhcjsKKyAgICAgICAgcmV0dXJu
IG9wKCkgPT0gR2V0R2xvYmFsVmFyIHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyIHx8IG9wKCkgPT0g
R2xvYmFsVmFyV2F0Y2hwb2ludCB8fCBvcCgpID09IFB1dEdsb2JhbFZhckNoZWNrOwogICAgIH0K
ICAgICAKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcigpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMjAxNjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgbWFjcm8oUHV0U2NvcGVkVmFyLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29y
bGQpIFwKICAgICBtYWNybyhHZXRHbG9iYWxWYXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhQdXRHbG9iYWxWYXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICBtYWNybyhHbG9iYWxWYXJXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oUHV0R2xvYmFsVmFyQ2hlY2ssIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a0Z1bmN0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAogICAgIC8qIE9wdGltaXphdGlv
bnMgZm9yIGFycmF5IG11dGF0aW9uLiAqL1wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBP
U1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTCiAgICAgLCBtX2NvZGVPcmln
aW4oaml0LT5tX2NvZGVPcmlnaW5Gb3JPU1IpCiAgICAgLCBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJv
ZmlsZShtX2NvZGVPcmlnaW4pCiAgICAgLCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkK
KyAgICAsIG1fd2F0Y2hwb2ludEluZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKICAgICAsIG1fa2luZChraW5kKQogICAgICwgbV9jb3VudCgwKQogICAgICwgbV9hcmd1
bWVudHMoaml0LT5tX2FyZ3VtZW50cy5zaXplKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgc3Ry
dWN0IE9TUkV4aXQgewogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7
CiAgICAgCiAgICAgdW5zaWduZWQgbV9yZWNvdmVyeUluZGV4OworICAgIHVuc2lnbmVkIG1fd2F0
Y2hwb2ludEluZGV4OwogICAgIAogICAgIEV4aXRLaW5kIG1fa2luZDsKICAgICB1aW50MzJfdCBt
X2NvdW50OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjQsNiArOTI0LDExIEBAIHZvaWQqIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnMKICAgICByZXR1cm4gdmlydHVhbEZvcihl
eGVjQ2FsbGVlLCBDb2RlRm9yQ29uc3RydWN0KTsKIH0KIAordm9pZCBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5vdGlmeUdsb2JhbFZhcldyaXRlKFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQp
Cit7CisgICAgd2F0Y2hwb2ludFNldC0+bm90aWZ5V3JpdGUoKTsKK30KKwogRW5jb2RlZEpTVmFs
dWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSWRlbnRp
ZmllciogcHJvcGVydHlOYW1lKQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsNyBAQCB0eXBl
ZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0CiB0eXBlZGVmIHZvaWQgREZHX09Q
RVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VKSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIERGR19PUEVS
QVRJT04gKCpWX0RGR09wZXJhdGlvbl9FSlBQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9E
RkdPcGVyYXRpb25fRVBaSikoRXhlY1N0YXRlKiwgdm9pZCosIGludDMyX3QsIEVuY29kZWRKU1Zh
bHVlKTsKK3R5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fVykoV2F0
Y2hwb2ludFNldCopOwogdHlwZWRlZiB2b2lkKiBERkdfT1BFUkFUSU9OICgqUF9ERkdPcGVyYXRp
b25fRSkoRXhlY1N0YXRlKik7CiAKIC8vIFRoZXNlIHJvdXRpbmVzIGFyZSBwcm92aWRlIGNhbGxi
YWNrcyBvdXQgdG8gQysrIGltcGxlbWVudGF0aW9ucyBvZiBvcGVyYXRpb25zIHRvbyBjb21wbGV4
IHRvIEpJVC4KQEAgLTExNiw2ICsxMTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbkdlCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSWRlbnRpZmllciopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEN1c3Rv
bUdldHRlcihFeGVjU3RhdGUqLCBKU0NlbGwqLCBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYywg
SWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uQ2FsbEdldHRlcihFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7Cit2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5R2xvYmFsVmFyV3JpdGUo
V2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlKEV4ZWNTdGF0ZSosIElkZW50aWZpZXIq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJl
c29sdmVCYXNlKEV4ZWNTdGF0ZSosIElkZW50aWZpZXIqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmVCYXNlU3RyaWN0UHV0KEV4ZWNT
dGF0ZSosIElkZW50aWZpZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MSw3ICs0
OTEsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjogeworICAgICAgICBjYXNlIFB1dEdsb2Jh
bFZhcjoKKyAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazogewogICAgICAgICAgICAgY2hh
bmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC02NjksNiArNjcwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOgogICAgICAgICBjYXNlIENoZWNr
TnVtYmVyOgogICAgICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICAgICAg
Y2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURl
ZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OTYsNiArMzU5
Niw2MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6IHsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIAorICAg
ICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0ID0KKyAgICAgICAgICAgIG1faml0Lmds
b2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpLmdldCgKKyAgICAg
ICAgICAgICAgICBpZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpLT5p
bXBsKCkpLndhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisg
ICAgICAgICAgICBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVz
dDgoCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLAorICAgICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKHdhdGNocG9pbnRTZXQtPmFk
ZHJlc3NPZklzV2F0Y2hlZCgpKSksCisgICAgICAgICAgICAgICAgdGhpcywgb3BlcmF0aW9uTm90
aWZ5R2xvYmFsVmFyV3JpdGUsIE5vUmVzdWx0LCB3YXRjaHBvaW50U2V0KSk7CisgICAgICAgIAor
ICAgICAgICBpZiAoSGVhcDo6aXNXcml0ZUJhcnJpZXJFbmFibGVkKCkpIHsKKyAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hS
ZWcgPSBzY3JhdGNoLmdwcigpOworICAgICAgICAgICAgCisgICAgICAgICAgICB3cml0ZUJhcnJp
ZXIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiksIHZhbHVlLnRhZ0dQUigp
LCBub2RlLmNoaWxkMSgpLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcywgc2NyYXRjaFJl
Zyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogaWYgd2UgaGFwcGVuIHRvIGhhdmUg
YSBzcGFyZSByZWdpc3RlciAtIGFuZCBfT05MWV8gaWYgd2UgaGFwcGVuIHRvIGhhdmUKKyAgICAg
ICAgLy8gYSBzcGFyZSByZWdpc3RlciAtIGEgZ29vZCBvcHRpbWl6YXRpb24gd291bGQgYmUgdG8g
cHV0IHRoZSByZWdpc3RlciBwb2ludGVyIGludG8KKyAgICAgICAgLy8gYSByZWdpc3RlciBhbmQg
dGhlbiBkbyBhIHplcm8gb2Zmc2V0IHN0b3JlIGZvbGxvd2VkIGJ5IGEgZm91ci1vZmZzZXQgc3Rv
cmUgKG9yCisgICAgICAgIC8vIHZpY2UtdmVyc2EgZGVwZW5kaW5nIG9uIGVuZGlhbm5lc3MpLgor
ICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlLnRhZ0dQUigpLCBub2RlLnJlZ2lzdGVyUG9pbnRl
cigpLT50YWdQb2ludGVyKCkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlLnBheWxvYWRH
UFIoKSwgbm9kZS5yZWdpc3RlclBvaW50ZXIoKS0+cGF5bG9hZFBvaW50ZXIoKSk7CisKKyAgICAg
ICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
ICAgIAorICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDogeworICAgICAgICBtX2ppdC5nbG9i
YWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQoCisgICAgICAg
ICAgICBpZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpLT5pbXBsKCkp
LmFkZFdhdGNocG9pbnQoCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50KCkp
OworICAgICAgICAKKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAgICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CisgICAgICAgIG1faml0LmxvYWQzMihub2RlLnJlZ2lzdGVyUG9pbnRlcigpLT50YWdQ
b2ludGVyKCksIHNjcmF0Y2hHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RPSyA9
IG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzY3Jh
dGNoR1BSLAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkt
PmdldCgpLnRhZygpKSk7CisgICAgICAgIG1faml0LmxvYWQzMihub2RlLnJlZ2lzdGVyUG9pbnRl
cigpLT5wYXlsb2FkUG9pbnRlcigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgb2sgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVh
bCwgc2NyYXRjaEdQUiwKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihub2RlLnJlZ2lzdGVyUG9p
bnRlcigpLT5nZXQoKS5wYXlsb2FkKCkpKTsKKyAgICAgICAgbm90T0subGluaygmbV9qaXQpOwor
ICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAgIG9rLmxpbmsoJm1faml0KTsKKyNl
bmRpZgorICAgICAgICAKKyAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6IHsKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTIwMTYyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYxNSw2ICszNjE1LDUyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRH
bG9iYWxWYXJDaGVjazogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKKyAgICAgICAgCisgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRT
ZXQgPQorICAgICAgICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbikt
PnN5bWJvbFRhYmxlKCkuZ2V0KAorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVu
dGlmaWVyTnVtYmVyRm9yQ2hlY2soKSktPmltcGwoKSkud2F0Y2hwb2ludFNldCgpOworICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6Ok5vblplcm8sCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0
ZUFkZHJlc3Mod2F0Y2hwb2ludFNldC0+YWRkcmVzc09mSXNXYXRjaGVkKCkpKSwKKyAgICAgICAg
ICAgICAgICB0aGlzLCBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZSwgTm9SZXN1bHQsIHdh
dGNocG9pbnRTZXQpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmll
ckVuYWJsZWQoKSkgeworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Cisg
ICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHdyaXRlQmFycmllcihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5j
b2RlT3JpZ2luKSwgdmFsdWUuZ3ByKCksIG5vZGUuY2hpbGQxKCksIFdyaXRlQmFycmllckZvclZh
cmlhYmxlQWNjZXNzLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
bV9qaXQuc3RvcmVQdHIodmFsdWUuZ3ByKCksIG5vZGUucmVnaXN0ZXJQb2ludGVyKCkpOworCisg
ICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgICAgICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKKyAgICAgICAgbV9qaXQu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCkuZ2V0KAorICAg
ICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKS0+aW1w
bCgpKS5hZGRXYXRjaHBvaW50KAorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2lu
dCgpKTsKKyAgICAgICAgCisjaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQorICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOworICAgICAgICBtX2ppdC5sb2FkUHRyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCks
IHNjcmF0Y2hHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBvayA9IG1faml0LmJyYW5j
aFB0cigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgc2NyYXRjaEdQUiwKKyAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihKU1ZhbHVlOjplbmNvZGUo
bm9kZS5yZWdpc3RlclBvaW50ZXIoKS0+Z2V0KCkpKSkpOworICAgICAgICBtX2ppdC5icmVha3Bv
aW50KCk7CisgICAgICAgIG9rLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgICAgICAKKyAgICAg
ICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVy
ZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxNCw2ICsxNDE0LDExIEBA
IHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IFRydXN0ZWRJbW0zMihhcmcyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9ERkdPcGVyYXRpb25fVyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNo
cG9pbnRTZXQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1t
UHRyKHdhdGNocG9pbnRTZXQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKKyAgICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBB
cmd1bWVudFR5cGUxPgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rp
b25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJnMSkKICAgICB7
CkBAIC0xNjcyLDYgKzE2NzcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnM1Bh
eWxvYWQsIGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhvcGVyYXRpb24pOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFZfREZHT3BlcmF0aW9uX1cgb3BlcmF0aW9uLCBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50
U2V0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0cih3
YXRjaHBvaW50U2V0KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7Cisg
ICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQXJndW1l
bnRUeXBlMT4KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZ1bmN0aW9uVHlw
ZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5cGUxIGFyZzEpCiAgICAgewpAQCAt
MTc5Myw2ICsxODAzLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAgICAgICByZXR1
cm4gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25Q
dHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCiAgICAgewogICAg
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhmdW5jdGlvbik7CkBAIC0yMTkzLDYgKzIyMDgsMzIgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5
cGVzKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2Rl
VXNlLmluZGV4KCksIGp1bXBUb0ZhaWwsIHJlY292ZXJ5KTsKICAgICB9CisgICAgLy8gVXNlIHRo
aXMgbGlrZSB5b3Ugd291bGQgdXNlIHNwZWN1bGF0aW9uQ2hlY2soKSwgZXhjZXB0IHRoYXQgeW91
IGRvbid0IHBhc3MgaXQgYSBqdW1wCisgICAgLy8gKGJlY2F1c2UgeW91IGRvbid0IGhhdmUgdG8g
ZXhlY3V0ZSBhIGJyYW5jaDsgdGhhdCdzIGtpbmQgb2YgdGhlIHdob2xlIHBvaW50KSwgYW5kIHlv
dQorICAgIC8vIG11c3QgcmVnaXN0ZXIgdGhlIHJldHVybmVkIFdhdGNocG9pbnQgd2l0aCBzb21l
dGhpbmcgcmVsZXZhbnQuIEluIGdlbmVyYWwsIHRoaXMgc2hvdWxkCisgICAgLy8gYmUgdXNlZCB3
aXRoIGV4dHJlbWUgY2FyZS4gVXNlIHNwZWN1bGF0aW9uQ2hlY2soKSB1bmxlc3MgeW91J3ZlIGdv
dCBhbiBhbWF6aW5nIHJlYXNvbgorICAgIC8vIG5vdCB0by4KKyAgICBXYXRjaHBvaW50KiBzcGVj
dWxhdGlvbldhdGNocG9pbnQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291
cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NvbXBpbGVP
a2F5KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJ
bmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOworICAgICAgICBP
U1JFeGl0JiBleGl0ID0gbV9qaXQuY29kZUJsb2NrKCktPm9zckV4aXQoCisgICAgICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdCgKKyAgICAgICAgICAgICAgICBPU1JFeGl0
KGtpbmQsIGpzVmFsdWVTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFw
aCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wKCksIHRoaXMpKSk7CisgICAgICAgIGV4
aXQubV93YXRjaHBvaW50SW5kZXggPSBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kV2F0Y2hwb2lu
dCgKKyAgICAgICAgICAgIFdhdGNocG9pbnQobV9qaXQud2F0Y2hwb2ludExhYmVsKCkpKTsKKyAg
ICAgICAgcmV0dXJuICZtX2ppdC5jb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hw
b2ludEluZGV4KTsKKyAgICB9CisgICAgLy8gVGhlIGRlZmF1bHQgZm9yIHNwZWN1bGF0aW9uIHdh
dGNocG9pbnRzIGlzIHRoYXQgdGhleSdyZSB1bmNvdW50ZWQsIGJlY2F1c2UgdGhlCisgICAgLy8g
YWN0IG9mIGZpcmluZyBhIHdhdGNocG9pbnQgaW52YWxpZGF0ZXMgaXQuIFNvLCBmdXR1cmUgcmVj
b21waWxhdGlvbnMgd2lsbCBub3QKKyAgICAvLyBhdHRlbXB0IHRvIHNldCB0aGlzIHdhdGNocG9p
bnQgYWdhaW4uCisgICAgV2F0Y2hwb2ludCogc3BlY3VsYXRpb25XYXRjaHBvaW50KCkKKyAgICB7
CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbldhdGNocG9pbnQoVW5jb3VudGFibGVXYXRjaHBv
aW50LCBKU1ZhbHVlU291cmNlKCksIE5vTm9kZSk7CisgICAgfQogICAgIHZvaWQgZm9yd2FyZFNw
ZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNl
LCBOb2RlSW5kZXggbm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBj
b25zdCBWYWx1ZVJlY292ZXJ5JiB2YWx1ZVJlY292ZXJ5KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBl
cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
OSw2ICsyNTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IERFRklORV9PUChvcF9nZXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2FyZ3Vt
ZW50X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9wbmFtZSkKKyAgICAgICAg
REVGSU5FX09QKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSkKICAgICAgICAgREVGSU5FX09Q
KG9wX2dldF9nbG9iYWxfdmFyKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3BuYW1lcykKICAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZWRfdmFyKQpAQCAtMzI0LDYgKzMyNSw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRlcikKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9nbG9iYWxfdmFyKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2dsb2JhbF92YXJfY2hlY2spCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2NvcGVkX3ZhcikK
ICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmUpCiAgICAgICAgIERFRklORV9PUChvcF9yZXNv
bHZlX2Jhc2UpCkBAIC00ODEsNiArNDgzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cHV0X2dsb2JhbF92YXJfY2hlY2spOwogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVz
b2x2ZV9nbG9iYWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2Jh
bF9keW5hbWljKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcnNoaWZ0KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNyArNDYzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNNYXBwZWQoaW50IHZpcnR1YWxSZWdpc3Rlcklu
ZGV4KTsKICAgICAgICAgYm9vbCBnZXRNYXBwZWRQYXlsb2FkKGludCB2aXJ0dWFsUmVnaXN0ZXJJ
bmRleCwgUmVnaXN0ZXJJRCYgcGF5bG9hZCk7CiAgICAgICAgIGJvb2wgZ2V0TWFwcGVkVGFnKGlu
dCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCYgdGFnKTsKLQorICAgICAgICAKICAg
ICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoaW50IHZpcnR1YWxSZWdpc3Rl
ckluZGV4KTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoaW50IHZp
cnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIHRhZyk7CiAKQEAgLTU5OSw2ICs1OTksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudF9ieV92
YWwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9wbmFtZShJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2dsb2JhbF92YXIoSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZShJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24pIHsgZW1pdF9vcF9nZXRfZ2xvYmFsX3ZhcihpbnN0cnVjdGlv
bik7IH0KICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZWRfdmFyKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24qKTsKQEAgLTY2
Miw2ICs2NjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9i
eV92YWwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0
dGVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2so
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zY29wZWRfdmFyKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlX2Jhc2UoSW5zdHJ1Y3Rpb24qKTsKQEAgLTczOSw2
ICs3NDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wcmVf
aW5jKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlf
dmFsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX3Jlc29sdmVfZ2xvYmFsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfcnNoaWZ0KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDkwLDYgKzEwOTAsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2ds
b2JhbF92YXIoSW5zdHJ1YwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdU
SChvcF9wdXRfZ2xvYmFsX3ZhciksIHZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2ludGVyOworICAgIGludCB2YWx1ZSA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgCisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAKKyAg
ICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKKyAgICAKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3MoY3VycmVudEluc3RydWN0aW9uWzNd
LnUucHJlZGljYXRlUG9pbnRlcikpKTsKKyAgICAKKyAgICBpZiAoSGVhcDo6aXNXcml0ZUJhcnJp
ZXJFbmFibGVkKCkpIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCks
IHJlZ1QyKTsKKyAgICAgICAgZW1pdFdyaXRlQmFycmllcihnbG9iYWxPYmplY3QsIHJlZ1QxLCBy
ZWdUMywgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nl
c3MpOworICAgIH0KKyAgICAKKyAgICBzdG9yZTMyKHJlZ1QxLCByZWdpc3RlclBvaW50ZXItPnRh
Z1BvaW50ZXIoKSk7CisgICAgc3RvcmUzMihyZWdUMCwgcmVnaXN0ZXJQb2ludGVyLT5wYXlsb2Fk
UG9pbnRlcigpKTsKKyAgICB1bm1hcCgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7CisgICAgCisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3B1dF9nbG9i
YWxfdmFyX2NoZWNrKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSwgcmVnVDApOwor
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwuY2FsbCgpOworfQorCiB2b2lkIEpJVDo6cmVz
ZXRQYXRjaEdldEJ5SWQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvKQogewogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLT5j
YWxsUmV0dXJuTG9jYXRpb24sIGN0aV9vcF9nZXRfYnlfaWQpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDEyMDE2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDI3LDYgKzEwMjcsMjkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGdsb2JhbE9iamVj
dCwgcmVnVDAsIHJlZ1QyLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JW
YXJpYWJsZUFjY2Vzcyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisgICAg
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNzKGN1
cnJlbnRJbnN0cnVjdGlvblszXS51LnByZWRpY2F0ZVBvaW50ZXIpKSk7CisKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAg
IAorICAgIHN0b3JlUHRyKHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBv
aW50ZXIpOworICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQoKSkKKyAgICAgICAg
ZW1pdFdyaXRlQmFycmllcihnbG9iYWxPYmplY3QsIHJlZ1QwLCByZWdUMiwgU2hvdWxkRmlsdGVy
SW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOworfQorCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgCisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChyZWdUMCk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJ
bnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5jYWxsKCk7Cit9CisKIHZv
aWQgSklUOjpyZXNldFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmso
c3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9pZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzNzcsNiArMjM3NywxNSBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX25l
d19hCiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHN0YWNrRnJhbWUu
YXJnc1swXS5pbnQzMigpKSwgc3RhY2tGcmFtZS5hcmdzWzFdLmludDMyKCkpOwogfQogCitERUZJ
TkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKK3sKKyAgICBT
VFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CisgICAgCisgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgc3ltYm9sVGFibGVQdXQoY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSwgY2FsbEZyYW1lLCBjb2RlQmxvY2stPmlkZW50aWZpZXIoc3RhY2tG
cmFtZS5hcmdzWzFdLmludDMyKCkpLCBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLCB0cnVl
KTsKK30KKwogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3Jlc29sdmUp
CiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDUsNiArNDQ1
LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X2luZGV4
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQgSklUX1NUVUIg
Y3RpX29wX3B1dF9ieV92YWwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAg
ICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2dldHRlcl9zZXR0ZXIoU1RVQl9BUkdTX0RFQ0xB
UkFUSU9OKSBXVEZfSU5URVJOQUw7CisgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2soU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9p
ZCBKSVRfU1RVQiBjdGlfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbihTVFVCX0FSR1NfREVDTEFSQVRJ
T04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF90ZWFyX29mZl9hcmd1
bWVudHMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9pZCBKSVRf
U1RVQiBjdGlfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKFNUVUJfQVJHU19ERUNMQVJBVElPTikg
V1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTYsNiArODU2
LDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3cKICAgICBMTElO
VF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9nbG9iYWxf
dmFyX2NoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBzeW1ib2xUYWJsZVB1dChjb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbNF0udS5vcGVyYW5k
KSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIHRydWUpOworICAgIExMSU5UX0VORCgpOworfQor
CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogewogICAgIExMSU5U
X0JFR0lOKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsNyBAQCBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3JlCiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3dpdGhfYmFzZSk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2dsb2JhbF92YXJfY2hlY2spOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEwMzks
NyArMTAzOSw3IEBAIF9sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBkaXNwYXRjaCg0KQog
CiAKLV9sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKK21hY3JvIGdldEdsb2JhbFZhcihzaXplKQog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCA4W1BDXSwgdDAKICAgICBsb2FkaSA0W1BD
XSwgdDMKQEAgLTEwNDcsOSArMTA0NywxNyBAQCBfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CiAg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MF0sIHQxCiAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRb
Y2ZyLCB0MywgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAg
ICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZGkgKHNpemUgLSAxKSAqIDRbUENdLCB0MwogICAg
IHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQotICAgIGRpc3BhdGNoKDQpCisgICAgZGlzcGF0Y2go
c2l6ZSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgZ2V0R2xvYmFsVmFy
KDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKKyAgICBnZXRHbG9i
YWxWYXIoNSkKIAogCiBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CkBAIC0xMDYzLDYgKzEwNzEs
MjIgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xs
aW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkcCAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgYnRibnogW3QyXSwgLm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93CisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHdyaXRlQmFycmllcih0MiwgdDMpCisgICAg
c3RvcmVpIHQyLCBUYWdPZmZzZXRbdDBdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3Qw
XQorICAgIGRpc3BhdGNoKDUpCisub3BQdXRHbG9iYWxWYXJDaGVja1Nsb3c6CisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2dsb2JhbF92YXJfY2hlY2spCisgICAgZGlzcGF0
Y2goNSkKKworCiBfbGxpbnRfb3BfZ2V0X2J5X2lkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5k
IHdlIGRvIG5vdCBtb2RpZnkgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTIwMTYyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTg5MywxNSArODkzLDIzIEBAIF9sbGludF9vcF9wdXRfc2NvcGVk
X3ZhcjoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKK21h
Y3JvIGdldEdsb2JhbFZhcihzaXplKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCAx
NltQQiwgUEMsIDhdLCB0MAogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCiAgICAgbG9hZHAg
W3QwXSwgdDEKICAgICBzdG9yZXAgdDEsIFtjZnIsIHQzLCA4XQotICAgIGxvYWRwIDI0W1BCLCBQ
QywgOF0sIHQwCisgICAgbG9hZHAgKHNpemUgLSAxKSAqIDhbUEIsIFBDLCA4XSwgdDAKICAgICB2
YWx1ZVByb2ZpbGUodDEsIHQwKQotICAgIGRpc3BhdGNoKDQpCisgICAgZGlzcGF0Y2goc2l6ZSkK
K2VuZAorCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgZ2V0R2xvYmFsVmFyKDQpCisK
KworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZToKKyAgICBnZXRHbG9iYWxWYXIo
NSkKIAogCiBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CkBAIC05MTQsNiArOTIyLDIxIEBAIF9s
bGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9w
dXRfZ2xvYmFsX3Zhcl9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgMjRb
UEIsIFBDLCA4XSwgdDIKKyAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDEKKyAgICBsb2FkcCA4
W1BCLCBQQywgOF0sIHQwCisgICAgYnRibnogW3QyXSwgLm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQy
KQorICAgIHN0b3JlcCB0MiwgW3QwXQorICAgIGRpc3BhdGNoKDUpCisub3BQdXRHbG9iYWxWYXJD
aGVja1Nsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2dsb2JhbF92
YXJfY2hlY2spCisgICAgZGlzcGF0Y2goNSkKKworCiBfbGxpbnRfb3BfZ2V0X2J5X2lkOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lk
IGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwNCwyMiArNTA0LDI1IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rp
b25zRm9yRGUKICAgICBzdHJ1Y3R1cmUoKS0+c2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOwog
fQogCi12b2lkIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IFdU
Rjo6bm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgc2l6ZV90IG9mZnNldDsKICAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJlbW92ZVByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgaWYg
KG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJl
Y3RPZmZzZXQob2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAob2Zmc2V0ID09
IFdURjo6bm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHB1dFVu
ZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQpKTsKLSAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgIHB1dFVuZGVm
aW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CisgICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZv
dW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZz
ZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogTkVWRVJfSU5MSU5FIHZvaWQgSlNP
YmplY3Q6OmZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiBzbG90LCBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgdHJhbnNpdGlvblRvKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSopOwogCi0gICAgICAgIHZvaWQgcmVtb3ZlRGlyZWN0KEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIGJvb2wgcmVtb3ZlRGlyZWN0KEpTR2xvYmFs
RGF0YSYsIFByb3BlcnR5TmFtZSk7IC8vIFJldHVybiB0cnVlIGlmIGFueXRoaW5nIGlzIHJlbW92
ZWQuCiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuIHN0cnVjdHVy
ZSgpLT5kaWRUcmFuc2l0aW9uKCk7IH0KICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMo
KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDkgKzcyLDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KIGlu
bGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0g
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQor
ICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAg
ICBTeW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CisgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0g
aXRlci0+c2Vjb25kOworICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgIHNsb3Quc2V0
VmFsdWUob2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTgzLDkgKzg2LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJv
bFRhYmxlT2JqZWN0VHlwZT4KIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogICAgIFN5bWJv
bFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQorICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAgICBTeW1ib2xUYWJsZTo6aXRlcmF0b3Ig
aXRlciA9IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+c2Vjb25kOworICAgIEFTU0VS
VCghZW50cnkuaXNOdWxsKCkpOwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcigKICAgICAg
ICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpLCBlbnRyeS5nZXRB
dHRyaWJ1dGVzKCkgfCBEb250RGVsZXRlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk2LDkgKzEw
MiwxMiBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAgICBTeW1ib2xUYWJsZU9iamVj
dFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90LAogICAgIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
KyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CisgICAg
QVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QtPnJlZ2lz
dGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwogICAgIHNsb3RJc1dyaXRlYWJsZSA9ICFl
bnRyeS5pc1JlYWRPbmx5KCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTIsMTUgKzEyMSwyMSBA
QCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8
fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKG9iamVjdCkpOwogICAgIAotICAgIFN5
bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAgICBT
eW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCk7CisgICAgU3lt
Ym9sVGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpOworICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgeworICAgIGJvb2wg
d2FzRmF0OworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZmFzdEVudHJ5ID0gaXRlci0+c2Vj
b25kLmdldEZhc3Qod2FzRmF0KTsKKyAgICBBU1NFUlQoIWZhc3RFbnRyeS5pc051bGwoKSk7Cisg
ICAgaWYgKGZhc3RFbnRyeS5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgaWYgKHNob3VsZFRocm93
KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIG9iamVj
dC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5zZXQoZ2xvYmFsRGF0YSwgb2JqZWN0LCB2
YWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKHdhc0ZhdCkpCisgICAgICAgIGl0ZXItPnNlY29uZC5u
b3RpZnlXcml0ZSgpOworICAgIG9iamVjdC0+cmVnaXN0ZXJBdChmYXN0RW50cnkuZ2V0SW5kZXgo
KSkuc2V0KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0xMzYsNiArMTUxLDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmli
dXRlcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkg
PSBpdGVyLT5zZWNvbmQ7CiAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CisgICAgZW50cnku
bm90aWZ5V3JpdGUoKTsKICAgICBlbnRyeS5zZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAg
IG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5zZXQoZ2xvYmFsRGF0YSwgb2Jq
ZWN0LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK1N5bWJvbFRhYmxlRW50cnkmIFN5bWJvbFRhYmxlRW50cnk6
OmNvcHlTbG93KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQoreworICAgIEFTU0VSVChv
dGhlci5pc0ZhdCgpKTsKKyAgICBGYXRFbnRyeSogbmV3RmF0RW50cnkgPSBuZXcgRmF0RW50cnko
Km90aGVyLmZhdEVudHJ5KCkpOworICAgIGZyZWVGYXRFbnRyeSgpOworICAgIG1fYml0cyA9IGJp
dHdpc2VfY2FzdDxpbnRwdHJfdD4obmV3RmF0RW50cnkpIHwgRmF0RmxhZzsKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3ZvaWQgU3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdygpCit7
CisgICAgQVNTRVJUKGlzRmF0KCkpOworICAgIGRlbGV0ZSBmYXRFbnRyeSgpOworfQorCitib29s
IFN5bWJvbFRhYmxlRW50cnk6OmNvdWxkQmVXYXRjaGVkKCkKK3sKKyAgICBpZiAoIWlzRmF0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9
IGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CisgICAgaWYgKCF3YXRjaHBvaW50cykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB3YXRjaHBvaW50cy0+aXNTdGlsbFZh
bGlkKCk7Cit9CisKK3ZvaWQgU3ltYm9sVGFibGVFbnRyeTo6YXR0ZW1wdFRvV2F0Y2goKQorewor
ICAgIEZhdEVudHJ5KiBlbnRyeSA9IGluZmxhdGUoKTsKKyAgICBpZiAoIWVudHJ5LT5tX3dhdGNo
cG9pbnRzKSB7CisgICAgICAgIGVudHJ5LT5tX3dhdGNocG9pbnRzID0gYWRvcHRSZWYobmV3IFdh
dGNocG9pbnRTZXQoKSk7CisgICAgICAgIGVudHJ5LT5tX3dhdGNocG9pbnRzLT5zdGFydFdhdGNo
aW5nKCk7CisgICAgfQorfQorCitib29sKiBTeW1ib2xUYWJsZUVudHJ5OjphZGRyZXNzT2ZJc1dh
dGNoZWQoKQoreworICAgIEFTU0VSVChjb3VsZEJlV2F0Y2hlZCgpKTsKKyAgICByZXR1cm4gZmF0
RW50cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkcmVzc09mSXNXYXRjaGVkKCk7Cit9CisKK3ZvaWQg
U3ltYm9sVGFibGVFbnRyeTo6YWRkV2F0Y2hwb2ludChXYXRjaHBvaW50KiB3YXRjaHBvaW50KQor
eworICAgIEFTU0VSVChjb3VsZEJlV2F0Y2hlZCgpKTsKKyAgICBmYXRFbnRyeSgpLT5tX3dhdGNo
cG9pbnRzLT5hZGQod2F0Y2hwb2ludCk7Cit9CisKK3ZvaWQgU3ltYm9sVGFibGVFbnRyeTo6bm90
aWZ5V3JpdGVTbG93KCkKK3sKKyAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IGZhdEVu
dHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CisgICAgaWYgKCF3YXRjaHBvaW50cykKKyAgICAg
ICAgcmV0dXJuOworICAgIHdhdGNocG9pbnRzLT5ub3RpZnlXcml0ZSgpOworfQorCitTeW1ib2xU
YWJsZUVudHJ5OjpGYXRFbnRyeSogU3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZVNsb3coKQorewor
ICAgIEZhdEVudHJ5KiBlbnRyeSA9IG5ldyBGYXRFbnRyeShtX2JpdHMpOworICAgIG1fYml0cyA9
IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oZW50cnkpIHwgRmF0RmxhZzsKKyAgICByZXR1cm4gZW50
cnk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMxLDUzICszMSwxNjMgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvQWx3
YXlzSW5saW5lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKKyAgICBjbGFzcyBXYXRjaHBvaW50OworICAgIGNsYXNzIFdhdGNocG9pbnRTZXQ7CisK
ICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBpbnQgbWlzc2luZ1N5bWJvbE1hcmtlcigpIHsgcmV0
dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7IH0KIAogICAgIC8vIFRoZSBiaXQg
dHdpZGRsaW5nIGluIHRoaXMgY2xhc3MgYXNzdW1lcyB0aGF0IGV2ZXJ5IHJlZ2lzdGVyIGluZGV4
IGlzIGEKICAgICAvLyByZWFzb25hYmx5IHNtYWxsIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIG51bWJl
ciwgYW5kIHRoZXJlZm9yZSBoYXMgaXRzIGhpZ2gKICAgICAvLyBmb3VyIGJpdHMgYWxsIHNldCBv
ciBhbGwgdW5zZXQuCiAKKyAgICAvLyBJbiBhZGRpdGlvbiB0byBpbXBsZW1lbnRpbmcgc2VtYW50
aWNzLW1hbmRhdGVkIHZhcmlhYmxlIGF0dHJpYnV0ZXMgYW5kCisgICAgLy8gaW1wbGVtZW50YXRp
b24tbWFuZGF0ZWQgdmFyaWFibGUgaW5kZXhpbmcsIHRoaXMgY2xhc3MgYWxzbyBpbXBsZW1lbnRz
CisgICAgLy8gd2F0Y2hwb2ludHMgdG8gYmUgdXNlZCBmb3IgSklUIG9wdGltaXphdGlvbnMuIEJl
Y2F1c2Ugd2F0Y2hwb2ludHMgYXJlCisgICAgLy8gbWVhbnQgdG8gYmUgcmVsYXRpdmVseSByYXJl
LCB0aGlzIGNsYXNzIG9wdGltaXplcyBoZWF2aWx5IGZvciB0aGUgY2FzZQorICAgIC8vIHRoYXQg
dGhleSBhcmUgbm90IGJlaW5nIHVzZWQuIFRvIHRoYXQgZW5kLCB0aGlzIGNsYXNzIHVzZXMgdGhl
IHRoaW4tZmF0CisgICAgLy8gaWRpb206IGVpdGhlciBpdCBpcyB0aGluLCBpbiB3aGljaCBjYXNl
IGl0IGNvbnRhaW5zIGFuIGluLXBsYWNlIGVuY29kZWQKKyAgICAvLyB3b3JkIHRoYXQgY29uc2lz
dHMgb2YgYXR0cmlidXRlcywgdGhlIGluZGV4LCBhbmQgYSBiaXQgc2F5aW5nIHRoYXQgaXQgaXMK
KyAgICAvLyB0aGluOyBvciBpdCBpcyBmYXQsIGluIHdoaWNoIGNhc2UgaXQgY29udGFpbnMgYSBw
b2ludGVyIHRvIGEgbWFsbG9jJ2QKKyAgICAvLyBkYXRhIHN0cnVjdHVyZSBhbmQgYSBiaXQgc2F5
aW5nIHRoYXQgaXQgaXMgZmF0LiBUaGUgbWFsbG9jJ2QgZGF0YQorICAgIC8vIHN0cnVjdHVyZSB3
aWxsIGJlIG1hbGxvY2VkIGEgc2Vjb25kIHRpbWUgdXBvbiBjb3B5LCB0byBwcmVzZXJ2ZSB0aGUK
KyAgICAvLyBwcm9wZXJ0eSB0aGF0IGluLXBsYWNlIGVkaXRzIHRvIFN5bWJvbFRhYmxlRW50cnkg
ZG8gbm90IG1hbmlmZXN0IGluIGFueQorICAgIC8vIGNvcGllcy4gSG93ZXZlciwgdGhlIG1hbGxv
YydkIEZhdEVudHJ5IGRhdGEgc3RydWN0dXJlIGNvbnRhaW5zIGEgcmVmLQorICAgIC8vIGNvdW50
ZWQgcG9pbnRlciB0byBhIHNoYXJlZCBXYXRjaHBvaW50U2V0LiBUaHVzLCBpbi1wbGFjZSBlZGl0
cyBvZiB0aGUKKyAgICAvLyBXYXRjaHBvaW50U2V0IHdpbGwgbWFuaWZlc3QgaW4gYWxsIGNvcGll
cy4gSGVyZSdzIGEgcGljdHVyZToKKyAgICAvLworICAgIC8vIFN5bWJvbFRhYmxlRW50cnkgLS0+
IEZhdEVudHJ5IC0tPiBXYXRjaHBvaW50U2V0CisgICAgLy8KKyAgICAvLyBJZiB5b3UgbWFrZSBh
IGNvcHkgb2YgYSBTeW1ib2xUYWJsZUVudHJ5LCB5b3Ugd2lsbCBoYXZlOgorICAgIC8vCisgICAg
Ly8gb3JpZ2luYWw6IFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5IC0tPiBXYXRjaHBvaW50
U2V0CisgICAgLy8gY29weTogICAgIFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5IC0tLS0t
XgorCiAgICAgc3RydWN0IFN5bWJvbFRhYmxlRW50cnkgeworICAgICAgICAvLyBVc2UgdGhlIFN5
bWJvbFRhYmxlRW50cnk6OkZhc3QgY2xhc3MsIGVpdGhlciB2aWEgaW1wbGljaXQgY2FzdCBvciBi
eSBjYWxsaW5nCisgICAgICAgIC8vIGdldEZhc3QoKSwgd2hlbiB5b3UgKDEpIG9ubHkgY2FyZSBh
Ym91dCBpc051bGwoKSwgZ2V0SW5kZXgoKSwgYW5kIGlzUmVhZE9ubHkoKSwKKyAgICAgICAgLy8g
YW5kICgyKSB5b3UgYXJlIGluIGEgaG90IHBhdGggd2hlcmUgeW91IG5lZWQgdG8gbWluaW1pemUg
dGhlIG51bWJlciBvZiB0aW1lcworICAgICAgICAvLyB0aGF0IHlvdSBicmFuY2ggb24gaXNGYXQo
KSB3aGVuIGdldHRpbmcgdGhlIGJpdHMoKS4KKyAgICAgICAgY2xhc3MgRmFzdCB7CisgICAgICAg
IHB1YmxpYzoKKyAgICAgICAgICAgIEZhc3QoKQorICAgICAgICAgICAgICAgIDogbV9iaXRzKDAp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEFMV0FZU19JTkxJTkUgRmFzdChjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSkKKyAgICAg
ICAgICAgICAgICA6IG1fYml0cyhlbnRyeS5iaXRzKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdAorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAhbV9iaXRzOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpbnQgZ2V0SW5kZXgoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1fYml0cyA+PiBGbGFnQml0cyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29u
c3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9iaXRzICYgUmVhZE9u
bHlGbGFnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25l
ZCBnZXRBdHRyaWJ1dGVzKCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICAgICAgICAgICAgICBpZiAobV9iaXRzICYgUmVh
ZE9ubHlGbGFnKQorICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IFJlYWRPbmx5Owor
ICAgICAgICAgICAgICAgIGlmIChtX2JpdHMgJiBEb250RW51bUZsYWcpCisgICAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZXMgfD0gRG9udEVudW07CisgICAgICAgICAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZXM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJvb2wgaXNGYXQoKSBjb25z
dAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBGYXRGbGFn
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIHByaXZhdGU6CisgICAgICAg
ICAgICBmcmllbmQgc3RydWN0IFN5bWJvbFRhYmxlRW50cnk7CisgICAgICAgICAgICBpbnRwdHJf
dCBtX2JpdHM7CisgICAgICAgIH07CisKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSgpCiAgICAg
ICAgICAgICA6IG1fYml0cygwKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICBTeW1i
b2xUYWJsZUVudHJ5KGludCBpbmRleCkKKyAgICAgICAgICAgIDogbV9iaXRzKDApCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkSW5kZXgoaW5kZXgpKTsKICAgICAgICAgICAg
IHBhY2soaW5kZXgsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5KGludCBpbmRleCwgdW5zaWduZWQgYXR0cmlidXRlcykKKyAgICAgICAgICAgIDog
bV9iaXRzKDApCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkSW5kZXgoaW5k
ZXgpKTsKICAgICAgICAgICAgIHBhY2soaW5kZXgsIGF0dHJpYnV0ZXMgJiBSZWFkT25seSwgYXR0
cmlidXRlcyAmIERvbnRFbnVtKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgflN5bWJv
bFRhYmxlRW50cnkoKQorICAgICAgICB7CisgICAgICAgICAgICBmcmVlRmF0RW50cnkoKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeShjb25zdCBTeW1ib2xU
YWJsZUVudHJ5JiBvdGhlcikKKyAgICAgICAgICAgIDogbV9iaXRzKDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgICp0aGlzID0gb3RoZXI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkmIG9wZXJhdG9yPShjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKG90aGVyLmlzRmF0KCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBjb3B5U2xvdyhvdGhlcik7CisgICAgICAgICAgICBmcmVlRmF0
RW50cnkoKTsKKyAgICAgICAgICAgIG1fYml0cyA9IG90aGVyLm1fYml0czsKKyAgICAgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgYm9vbCBpc051bGwo
KSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIW1fYml0czsKKyAgICAgICAg
ICAgIHJldHVybiAhYml0cygpOwogICAgICAgICB9CiAKICAgICAgICAgaW50IGdldEluZGV4KCkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYml0cyA+PiBGbGFnQml0czsK
KyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJpdHMoKSA+PiBGbGFnQml0cyk7
CiAgICAgICAgIH0KLQorICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0IGdldEZh
c3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRmFzdCgqdGhpcyk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgRmFzdCBnZXRGYXN0KGJv
b2wmIHdhc0ZhdCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgRmFzdCByZXN1bHQ7Cisg
ICAgICAgICAgICB3YXNGYXQgPSBpc0ZhdCgpOworICAgICAgICAgICAgaWYgKHdhc0ZhdCkKKyAg
ICAgICAgICAgICAgICByZXN1bHQubV9iaXRzID0gZmF0RW50cnkoKS0+bV9iaXRzOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBtX2JpdHM7CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB1bnNp
Z25lZCBnZXRBdHRyaWJ1dGVzKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlcyA9IDA7Ci0gICAgICAgICAgICBpZiAobV9iaXRzICYgUmVhZE9ubHlGbGFn
KQotICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUmVhZE9ubHk7Ci0gICAgICAgICAgICBp
ZiAobV9iaXRzICYgRG9udEVudW1GbGFnKQotICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0g
RG9udEVudW07Ci0gICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlczsKKyAgICAgICAgICAgIHJl
dHVybiBnZXRGYXN0KCkuZ2V0QXR0cmlidXRlcygpOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBzZXRBdHRyaWJ1dGVzKHVuc2lnbmVkIGF0dHJpYnV0ZXMpCkBAIC04NywzMCArMTk3LDEyNSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdAogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9iaXRzICYgUmVhZE9ubHlGbGFnOworICAgICAg
ICAgICAgcmV0dXJuIGJpdHMoKSAmIFJlYWRPbmx5RmxhZzsKICAgICAgICAgfQotCisgICAgICAg
IAorICAgICAgICBib29sIGNvdWxkQmVXYXRjaGVkKCk7CisgICAgICAgIAorICAgICAgICAvLyBO
b3RpZnkgYW4gb3Bwb3J0dW5pdHkgdG8gY3JlYXRlIGEgd2F0Y2hwb2ludCBmb3IgYSB2YXJpYWJs
ZS4gVGhpcyBpcworICAgICAgICAvLyBpZGVtcG90ZW50IGFuZCBmYWlsLXNpbGVudC4gSXQgaXMg
aWRlbXBvdGVudCBpbiB0aGUgc2Vuc2UgdGhhdCBpZgorICAgICAgICAvLyBhIHdhdGNocG9pbnQg
c2V0IGhhZCBhbHJlYWR5IGJlZW4gY3JlYXRlZCwgdGhlbiBhbm90aGVyIG9uZSB3aWxsIG5vdAor
ICAgICAgICAvLyBiZSBjcmVhdGVkLiBIZW5jZSB0d28gY2FsbHMgdG8gdGhpcyBtZXRob2QgaGF2
ZSB0aGUgc2FtZSBlZmZlY3QgYXMKKyAgICAgICAgLy8gb25lIGNhbGwuIEl0IGlzIGFsc28gZmFp
bC1zaWxlbnQsIGluIHRoZSBzZW5zZSB0aGF0IGlmIGEgd2F0Y2hwb2ludAorICAgICAgICAvLyBz
ZXQgaGFkIGJlZW4gY3JlYXRlZCBhbmQgaGFkIGFscmVhZHkgYmVlbiBpbnZhbGlkYXRlZCwgdGhl
biB0aGlzIHdpbGwKKyAgICAgICAgLy8ganVzdCByZXR1cm4uIFRoaXMgbWVhbnMgdGhhdCBjb3Vs
ZEJlV2F0Y2hlZCgpIG1heSByZXR1cm4gZmFsc2UgZXZlbgorICAgICAgICAvLyBpbW1lZGlhdGVs
eSBhZnRlciBhIGNhbGwgdG8gYXR0ZW1wdFRvV2F0Y2goKS4KKyAgICAgICAgdm9pZCBhdHRlbXB0
VG9XYXRjaCgpOworICAgICAgICAKKyAgICAgICAgYm9vbCogYWRkcmVzc09mSXNXYXRjaGVkKCk7
CisgICAgICAgIAorICAgICAgICB2b2lkIGFkZFdhdGNocG9pbnQoV2F0Y2hwb2ludCopOworICAg
ICAgICAKKyAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLmdldCgpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5V3JpdGUo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFpc0ZhdCgpKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBub3RpZnlXcml0ZVNsb3coKTsKKyAgICAgICAg
fQorICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
UmVhZE9ubHlGbGFnID0gMHgxOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRG9udEVu
dW1GbGFnID0gMHgyOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm90TnVsbEZsYWcg
PSAweDQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBGbGFnQml0cyA9IDM7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBGYXRGbGFnID0gMHgxOworICAgICAgICBzdGF0aWMg
Y29uc3QgaW50cHRyX3QgUmVhZE9ubHlGbGFnID0gMHgyOworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50cHRyX3QgRG9udEVudW1GbGFnID0gMHg0OworICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRy
X3QgTm90TnVsbEZsYWcgPSAweDg7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBGbGFn
Qml0cyA9IDQ7CisgICAgICAgIAorICAgICAgICBjbGFzcyBGYXRFbnRyeSB7CisgICAgICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAg
RmF0RW50cnkoaW50cHRyX3QgYml0cykKKyAgICAgICAgICAgICAgICA6IG1fYml0cyhiaXRzIHwg
RmF0RmxhZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaW50cHRyX3QgbV9iaXRzOyAvLyBhbHdheXMgaGFzIEZhdEZsYWcgc2V0IGFuZCBl
eGFjdGx5IG1hdGNoZXMgd2hhdCB0aGUgYml0cyB3b3VsZCBoYXZlIGJlZW4gaWYgdGhpcyB3YXNu
J3QgZmF0LgorICAgICAgICAgICAgCisgICAgICAgICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4g
bV93YXRjaHBvaW50czsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIFN5bWJvbFRhYmxl
RW50cnkmIGNvcHlTbG93KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBub3RpZnlXcml0ZVNsb3coKTsKKyAgICAgICAgCisgICAgICAgIGJv
b2wgaXNGYXQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzICYg
RmF0RmxhZzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY29uc3QgRmF0RW50cnkqIGZh
dEVudHJ5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGlzRmF0KCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBGYXRFbnRyeSo+KG1fYml0cyAm
IH5GYXRGbGFnKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgRmF0RW50cnkqIGZhdEVu
dHJ5KCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGlzRmF0KCkpOworICAgICAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxGYXRFbnRyeSo+KG1fYml0cyAmIH5GYXRGbGFnKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgRmF0RW50cnkqIGluZmxhdGUoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoTElLRUxZKGlzRmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYXRFbnRyeSgpOworICAgICAgICAgICAgcmV0dXJuIGluZmxhdGVTbG93KCk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBpbmZsYXRlU2xvdygpOworICAgICAgICAK
KyAgICAgICAgQUxXQVlTX0lOTElORSBpbnRwdHJfdCBiaXRzKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGlzRmF0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5
KCktPm1fYml0czsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHM7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgaW50cHRyX3QmIGJpdHMoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoaXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmF0RW50cnko
KS0+bV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIG1fYml0czsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgdm9pZCBmcmVlRmF0RW50cnkoKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoTElLRUxZKCFpc0ZhdCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBmcmVlRmF0RW50cnlTbG93KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQg
ZnJlZUZhdEVudHJ5U2xvdygpOwogCiAgICAgICAgIHZvaWQgcGFjayhpbnQgaW5kZXgsIGJvb2wg
cmVhZE9ubHksIGJvb2wgZG9udEVudW0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYml0cyA9
IChpbmRleCA8PCBGbGFnQml0cykgfCBOb3ROdWxsRmxhZzsKKyAgICAgICAgICAgIGludHB0cl90
JiBiaXRzUmVmID0gYml0cygpOworICAgICAgICAgICAgYml0c1JlZiA9IChzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oaW5kZXgpIDw8IEZsYWdCaXRzKSB8IE5vdE51bGxGbGFnOwogICAgICAgICAgICAg
aWYgKHJlYWRPbmx5KQotICAgICAgICAgICAgICAgIG1fYml0cyB8PSBSZWFkT25seUZsYWc7Cisg
ICAgICAgICAgICAgICAgYml0c1JlZiB8PSBSZWFkT25seUZsYWc7CiAgICAgICAgICAgICBpZiAo
ZG9udEVudW0pCi0gICAgICAgICAgICAgICAgbV9iaXRzIHw9IERvbnRFbnVtRmxhZzsKKyAgICAg
ICAgICAgICAgICBiaXRzUmVmIHw9IERvbnRFbnVtRmxhZzsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgYm9vbCBpc1ZhbGlkSW5kZXgoaW50IGluZGV4KQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gKChpbmRleCA8PCBGbGFnQml0cykgPj4gRmxhZ0JpdHMpID09IGluZGV4Owor
ICAgICAgICAgICAgcmV0dXJuICgoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBGbGFn
Qml0cykgPj4gRmxhZ0JpdHMpID09IHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBpbnQgbV9iaXRzOworICAgICAgICBpbnRwdHJfdCBtX2JpdHM7CiAg
ICAgfTsKIAogICAgIHN0cnVjdCBTeW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0cyA6IEhhc2hUcmFp
dHM8U3ltYm9sVGFibGVFbnRyeT4gewpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDYt
MTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBERkcgc2hvdWxk
IGJlIGFibGUgdG8gc2V0IHdhdGNocG9pbnRzIG9uIGdsb2JhbCB2YXJpYWJsZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NjkyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAgIAorICAgICAgICBBZGRlZCBhYmls
aXR5IHRvIHNldCB0aGUgaW5saW5lIGNhcGFjaXR5IG9mIHNlZ21lbnRlZCB2ZWN0b3JzLgorCisg
ICAgICAgICogd3RmL1NlZ21lbnRlZFZlY3Rvci5oOgorICAgICAgICAoV1RGKToKKyAgICAgICAg
KFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6U2VnbWVudGVkVmVjdG9y
SXRlcmF0b3I6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlNlZ21lbnRlZFZlY3Rvckl0ZXJh
dG9yOjpTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcik6CisgICAgICAgIChTZWdtZW50ZWRWZWN0b3Ip
OgorCiAyMDEyLTA2LTEyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVHJ5IHRvIGZpeCB0aGUgYnVpbGQuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50
ZWRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3Iu
aAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQAogbmFtZXNwYWNlIFdURiB7CiAKICAg
ICAvLyBBbiBpdGVyYXRvciBmb3IgU2VnbWVudGVkVmVjdG9yLiBJdCBzdXBwb3J0cyBvbmx5IHRo
ZSBwcmUgKysgb3BlcmF0b3IKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21l
bnRTaXplPiBjbGFzcyBTZWdtZW50ZWRWZWN0b3I7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IgeworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXplX3QgSW5s
aW5lQ2FwYWNpdHkgPSAzMj4gY2xhc3MgU2VnbWVudGVkVmVjdG9yOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXplX3QgSW5saW5lQ2FwYWNpdHkg
PSAzMj4gY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IgewogICAgIHByaXZhdGU6Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemU+OworICAgICAg
ICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBh
Y2l0eT47CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3Rvckl0ZXJh
dG9yPFQsIFNlZ21lbnRTaXplPiBJdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRW
ZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+IEl0ZXJhdG9yOwog
CiAgICAgICAgIH5TZWdtZW50ZWRWZWN0b3JJdGVyYXRvcigpIHsgfQogCkBAIC03NSw3ICs3NSw3
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggIT0gb3RoZXIu
bV9pbmRleCB8fCBtX3NlZ21lbnQgIT0gb3RoZXIubV9zZWdtZW50IHx8ICZtX3ZlY3RvciAhPSAm
b3RoZXIubV92ZWN0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVy
YXRvciYgb3BlcmF0b3I9KGNvbnN0IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRT
aXplPiYgb3RoZXIpCisgICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yJiBvcGVyYXRvcj0o
Y29uc3QgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFj
aXR5PiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdmVjdG9yID0gb3RoZXIubV92
ZWN0b3I7CiAgICAgICAgICAgICBtX3NlZ21lbnQgPSBvdGhlci5tX3NlZ21lbnQ7CkBAIC04NCwy
NSArODQsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50
U2l6ZT4mIHZlY3Rvciwgc2l6ZV90IHNlZ21lbnQsIHNpemVfdCBpbmRleCkKKyAgICAgICAgU2Vn
bWVudGVkVmVjdG9ySXRlcmF0b3IoU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxp
bmVDYXBhY2l0eT4mIHZlY3Rvciwgc2l6ZV90IHNlZ21lbnQsIHNpemVfdCBpbmRleCkKICAgICAg
ICAgICAgIDogbV92ZWN0b3IodmVjdG9yKQogICAgICAgICAgICAgLCBtX3NlZ21lbnQoc2VnbWVu
dCkKICAgICAgICAgICAgICwgbV9pbmRleChpbmRleCkKICAgICAgICAgewogICAgICAgICB9CiAK
LSAgICAgICAgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPiYgbV92ZWN0b3I7CisgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+JiBtX3Zl
Y3RvcjsKICAgICAgICAgc2l6ZV90IG1fc2VnbWVudDsKICAgICAgICAgc2l6ZV90IG1faW5kZXg7
CiAgICAgfTsKIAogICAgIC8vIFNlZ21lbnRlZFZlY3RvciBpcyBqdXN0IGxpa2UgVmVjdG9yLCBi
dXQgaXQgZG9lc24ndCBtb3ZlIHRoZSB2YWx1ZXMKICAgICAvLyBzdG9yZWQgaW4gaXRzIGJ1ZmZl
ciB3aGVuIGl0IGdyb3dzLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8ga2VlcAotICAgIC8vIHBv
aW50ZXJzIGludG8gYSBTZWdtZW50ZWRWZWN0b3IuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVjdG9yIHsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPjsKKyAgICAv
LyBwb2ludGVycyBpbnRvIGEgU2VnbWVudGVkVmVjdG9yLiBUaGUgZGVmYXVsdCB0dW5pbmcgdmFs
dWVzIGFyZQorICAgIC8vIG9wdGltaXplZCBmb3Igc2VnbWVudGVkIHZlY3RvcnMgdGhhdCBnZXQg
bGFyZ2U7IHlvdSBtYXkgd2FudCB0byB1c2UKKyAgICAvLyBTZWdtZW50ZWRWZWN0b3I8dGhpbmd5
LCAxLCAwPiBpZiB5b3UgZG9uJ3QgZXhwZWN0IGEgbG90IG9mIGVudHJpZXMuCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZSwgc2l6ZV90IElubGluZUNhcGFjaXR5
PgorICAgIGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZWdt
ZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+OwogICAg
IHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdt
ZW50U2l6ZT4gSXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0
b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiBJdGVyYXRvcjsKIAogICAgICAgICBT
ZWdtZW50ZWRWZWN0b3IoKQogICAgICAgICAgICAgOiBtX3NpemUoMCkKQEAgLTI1MCw3ICsyNTMs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBzaXplX3QgbV9zaXplOwogICAgICAgICBT
ZWdtZW50IG1faW5saW5lU2VnbWVudDsKLSAgICAgICAgVmVjdG9yPFNlZ21lbnQqLCAzMj4gbV9z
ZWdtZW50czsKKyAgICAgICAgVmVjdG9yPFNlZ21lbnQqLCBJbmxpbmVDYXBhY2l0eT4gbV9zZWdt
ZW50czsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
MDE2MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIxIEBACisyMDEyLTA2LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIHNldCB3YXRjaHBvaW50cyBvbiBnbG9iYWwgdmFy
aWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODY5MgorCisgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAg
ICAKKyAgICAgICAgQWRkZWQgYSB0ZXN0IGZvciB3YXRjaHBvaW50cy4gQWxzbyB1cGRhdGVkIHRo
ZSBqc2MtdGVzdC1saXN0IHRvIGluY2x1ZGUgdGhlIGxhdGVzdAorICAgICAgICB0ZXN0cy4KKwor
ICAgICAgICAqIGZhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13
YXRjaHBvaW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvanNjLXRlc3QtbGlzdDoK
KyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0
Y2hwb2ludC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAoYmFyKToKKyAgICAg
ICAgKC5mb28pOgorCiAyMDEyLTA2LTEyICBFZGFlbmEgU2FsaW5hcyBKYXNzbyAgPGVkYWVuYUBh
cHBsZS5jb20+CiAKICAgICAgICAgQ2FuJ3Qgc2V0IGVsLnR5cGUgb24gYSA8YnV0dG9uPiBlbGVt
ZW50CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRj
aHBvaW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2Rm
Zy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRjaHBvaW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwOSBAQAorVGVzdHMgY29ycmVj
dG5lc3Mgb2YgZnVuY3Rpb24gY2FsbHMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgb3ZlcndyaXR0ZW4u
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA1CitQQVNT
IGJhcihpLCBpICsgMSkgaXMgNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDkKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAxMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEzCitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMTUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNworUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDE5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMwor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDI1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjcKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAyOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDMxCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMzMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAzNQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDM3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMzkKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyA0MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDQzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgNDUK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyA0NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDQ5CitQQVNT
IGJhcihpLCBpICsgMSkgaXMgNTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA1MworUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDU1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNTcKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyA1OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDYxCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgNjMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA2NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDY3
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNjkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA3MQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDczCitQQVNTIGJhcihpLCBpICsgMSkgaXMgNzUKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyA3NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDc5CitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgODEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA4MworUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDg1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgODcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA4
OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDkxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgOTMKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyA5NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDk3CitQQVNTIGJh
cihpLCBpICsgMSkgaXMgOTkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMDEKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAxMDMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMDUKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAxMDcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMDkKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyAxMTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMTMKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAxMTUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMTcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAx
MTkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMjEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMjMK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMjUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMjcKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyAxMjkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMzEKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAxMzMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMzUKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAxMzcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMzkKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAxNDEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNDMKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAxNDUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNDcKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyAxNDkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNTEKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAxNTMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNTUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAx
NTcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNTkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNjEK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNjMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNjUKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyAxNjcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNjkKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAxNzEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNzMKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAxNzUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxNzcKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAxNzkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxODEKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAxODMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxODUKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyAxODcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxODkKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAxOTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxOTMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAx
OTUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxOTcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxOTkK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMDEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMDMKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyAyMDUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMDcKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAyMDkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMTEKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAyMTMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMTUKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAyMTcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMTkKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAyMjEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMjMKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyAyMjUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMjcKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAyMjkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMzEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAy
MzMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMzUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMzcK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMzkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNDEKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyAyNDMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNDUKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAyNDcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNDkKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAyNTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNTMKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAyNTUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNTcKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAyNTkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNjEKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyAyNjMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNjUKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAyNjcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNjkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAy
NzEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNzMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNzUK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNzcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNzkKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyAyODEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyODMKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAyODUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyODcKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAyODkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyOTEKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAyOTMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyOTUKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAyOTcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyOTkKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
LTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsg
MSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlz
IC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0x
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAt
MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctY2Fs
bC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9p
bnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRjaHBvaW50
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvanNj
LXRlc3QtbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2pzYy10ZXN0LWxp
c3QJKHJldmlzaW9uIDEyMDE2MikKKysrIExheW91dFRlc3RzL2Zhc3QvanMvanNjLXRlc3QtbGlz
dAkod29ya2luZyBjb3B5KQpAQCAtNjQsMjMgKzY0LDQ1IEBAIGZhc3QvanMvZGVidWdnZXIKIGZh
c3QvanMvZGVjbGFyYXRpb24taW4tYmxvY2sKIGZhc3QvanMvZGVsZXRlLWdldHRlcnMtc2V0dGVy
cwogZmFzdC9qcy9kZWxldGUtdGhlbi1wdXQKLWZhc3QvanMvZGZnLWFyZ3VtZW50cy1vc3ItZXhp
dAotZmFzdC9qcy9kZmctYXJndW1lbnRzLW1peGVkLWFsaWFzCitmYXN0L2pzL2RmZy1hZGQtbm90
LW51bWJlcgorZmFzdC9qcy9kZmctYXJndW1lbnRzLWFsaWFzLWVzY2FwZQorZmFzdC9qcy9kZmct
YXJndW1lbnRzLWFsaWFzLW9uZS1ibG9jay1vc3ItZXhpdAorZmFzdC9qcy9kZmctYXJndW1lbnRz
LWFsaWFzLW9uZS1ibG9jay1vdmVyd3JpdGUtYXJndW1lbnRzCitmYXN0L2pzL2RmZy1hcmd1bWVu
dHMtYWxpYXMtb25lLWJsb2NrLW92ZXJ3cml0ZQorZmFzdC9qcy9kZmctYXJndW1lbnRzLWFsaWFz
LW9uZS1ibG9jaworZmFzdC9qcy9kZmctYXJndW1lbnRzLWFsaWFzCiBmYXN0L2pzL2RmZy1hcmd1
bWVudHMtY3Jvc3MtY29kZS1vcmlnaW4KK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1taXhlZC1hbGlh
cworZmFzdC9qcy9kZmctYXJndW1lbnRzLW9zci1leGl0CitmYXN0L2pzL2RmZy1hcmd1bWVudHMt
b3V0LW9mLWJvdW5kcwogZmFzdC9qcy9kZmctYXJndW1lbnRzLXVuZXhwZWN0ZWQtZXNjYXBlCi1m
YXN0L2pzL2RmZy1hcmd1bWVudHMtYWxpYXMKLWZhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcy1l
c2NhcGUKIGZhc3QvanMvZGZnLWFycmF5LWxlbmd0aC1kZWFkCitmYXN0L2pzL2RmZy1icmFuY2gt
bm90LWZhaWwKK2Zhc3QvanMvZGZnLWNoZWNrLXR3by1zdHJ1Y3R1cmVzCitmYXN0L2pzL2RmZy1j
b25zdGFudC1mb2xkLWZpcnN0LWxvY2FsLXJlYWQtYWZ0ZXItYmxvY2stbWVyZ2UKIGZhc3QvanMv
ZGZnLWNvbnZlcnQtdGhpcy1kb20td2luZG93CitmYXN0L2pzL2RmZy1jc2UtY2ZhLWRpc2NyZXBh
bmN5CitmYXN0L2pzL2RmZy1kZWFkLW1pbi1vbmUtYXJnCitmYXN0L2pzL2RmZy1kZWFkLW1pbi10
d28tYXJncworZmFzdC9qcy9kZmctZGVhZC1zcGVjdWxhdGlvbgorZmFzdC9qcy9kZmctZGVhZC12
YXJpYWJsZS1vbi1leGl0CitmYXN0L2pzL2RmZy1kb3VibGUtdXNlLW9mLXBvc3Qtc2ltcGxpZmlj
YXRpb24tZG91YmxlLXByZWRpY3Rpb24KIGZhc3QvanMvZGZnLWRvdWJsZS12b3RlLWZ1enoKIGZh
c3QvanMvZGZnLWV4Y2VwdGlvbgogZmFzdC9qcy9kZmctZmxvYXQzMmFycmF5CiBmYXN0L2pzL2Rm
Zy1mbG9hdDY0YXJyYXkKK2Zhc3QvanMvZGZnLWZsdXNoLWdldC1sb2NhbAogZmFzdC9qcy9kZmct
Z2V0LWJ5LXZhbC1jbG9iYmVyCiBmYXN0L2pzL2RmZy1nZXQtYnktdmFsLWdldHRlci1jc2UKIGZh
c3QvanMvZGZnLWdldHRlci10aHJvdwogZmFzdC9qcy9kZmctZ2V0dGVyCitmYXN0L2pzL2RmZy1p
bmxpbmUtYXJndW1lbnRzLWJlY29tZS1kb3VibGUKK2Zhc3QvanMvZGZnLWlubGluZS1hcmd1bWVu
dHMtYmVjb21lLWludDMyCiBmYXN0L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRzLWludDMyCitmYXN0
L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRzLW9zci1leGl0LWFuZC1jYXB0dXJlCitmYXN0L2pzL2Rm
Zy1pbmxpbmUtYXJndW1lbnRzLW91dC1vZi1ib3VuZHMKK2Zhc3QvanMvZGZnLWlubGluZS1hcmd1
bWVudHMtcmVzZXQtY2hhbmdldHlwZQorZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1yZXNl
dAogZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1zaW1wbGUKIGZhc3QvanMvZGZnLWlubGlu
ZS1hcmd1bWVudHMtdXNlLWRpcmVjdGx5LWZyb20taW5saW5lZC1jb2RlCiBmYXN0L2pzL2RmZy1p
bmxpbmUtYXJndW1lbnRzLXVzZS1mcm9tLWFsbC10aGUtcGxhY2VzLWJyb2tlbgpAQCAtOTYsNiAr
MTE4LDcgQEAgZmFzdC9qcy9kZmctaW5saW5lLXVudXNlZC10aGlzLW1ldGhvZC1jaAogZmFzdC9q
cy9kZmctaW5saW5lLXVudXNlZC10aGlzCiBmYXN0L2pzL2RmZy1pbmxpbmluZy1yZWctYWxsb2MK
IGZhc3QvanMvZGZnLWludDE2YXJyYXkKK2Zhc3QvanMvZGZnLWludDMyLXRvLWRvdWJsZS1vbi1r
bm93bi1udW1iZXIKIGZhc3QvanMvZGZnLWludDMyYXJyYXktb3ZlcmZsb3ctdmFsdWVzCiBmYXN0
L2pzL2RmZy1pbnQzMmFycmF5CiBmYXN0L2pzL2RmZy1pbnQ4YXJyYXkKQEAgLTEwNSwxNSArMTI4
LDI0IEBAIGZhc3QvanMvZGZnLWludHJpbnNpYy11bnVzZWQtdGhpcy1tZXRob2QKIGZhc3QvanMv
ZGZnLWludHJpbnNpYy11bnVzZWQtdGhpcwogZmFzdC9qcy9kZmctbWluLW1heAogZmFzdC9qcy9k
ZmctbXVsdGlwbHkKK2Zhc3QvanMvZGZnLW5lZ2F0aXZlLWFycmF5LWluZGV4CitmYXN0L2pzL2Rm
Zy1vYnZpb3VzLWNvbnN0YW50LWNmYQogZmFzdC9qcy9kZmctb3RoZXItYnJhbmNoCiBmYXN0L2pz
L2RmZy1wb2lzb24tZnV6egorZmFzdC9qcy9kZmctcHJvdG8tYWNjZXNzLWlubGluZS1vc3ItZXhp
dAorZmFzdC9qcy9kZmctcHV0LWJ5LWlkLXByb3RvdHlwZS1jaGVjaworZmFzdC9qcy9kZmctcHV0
Ynl2YWwtY2ZhLWNsb2JiZXIKIGZhc3QvanMvZGZnLXN0cmluZy1zdHJpY3RlcQorZmFzdC9qcy9k
ZmctdGVhci1vZmYtYXJndW1lbnRzLW5vdC1hY3RpdmF0aW9uCiBmYXN0L2pzL2RmZy11aW50MTZh
cnJheQotZmFzdC9qcy9kZmctdWludDMyYXJyYXktb3ZlcmZsb3ctdmFsdWVzCi1mYXN0L2pzL2Rm
Zy11aW50MzItdG8tbnVtYmVyCiBmYXN0L2pzL2RmZy11aW50MzItdG8tbnVtYmVyLW9uLWNhcHR1
cmVkLXZhcmlhYmxlCitmYXN0L2pzL2RmZy11aW50MzItdG8tbnVtYmVyCitmYXN0L2pzL2RmZy11
aW50MzJhcnJheS1vdmVyZmxvdy1jb25zdGFudAorZmFzdC9qcy9kZmctdWludDMyYXJyYXktb3Zl
cmZsb3ctdmFsdWVzCitmYXN0L2pzL2RmZy11aW50MzJhcnJheQogZmFzdC9qcy9kZmctdWludDhh
cnJheQogZmFzdC9qcy9kZmctdWludDhjbGFtcGVkYXJyYXkKK2Zhc3QvanMvZGZnLXdlYWstanMt
Y29uc3RhbnQtc2lsZW50LWZpbGwKIGZhc3QvanMvZGljdGlvbmFyeS1uby1jYWNoZQogZmFzdC9q
cy9kaWN0aW9uYXJ5LXByb3RvdHlwZS1jYWNoaW5nCiBmYXN0L2pzL2RvLXdoaWxlLXNlbWljb2xv
bgpAQCAtMTI2LDYgKzE1OCw3IEBAIGZhc3QvanMvZXZhbC12YXItZGVjbAogZmFzdC9qcy9leGNl
cHRpb24tZXhwcmVzc2lvbi1vZmZzZXQKIGZhc3QvanMvZXhjZXB0aW9uLWZvci1ub25vYmplY3QK
IGZhc3QvanMvZXhjZXB0aW9uLWxpbmVudW1zCitmYXN0L2pzL2V4Y2VwdGlvbi1wcm9wYWdhdGUt
ZnJvbS1kZmctdG8tbGxpbnQKIGZhc3QvanMvZXhjZXB0aW9uLXByb3BlcnRpZXMKIGZhc3QvanMv
ZXhjZXB0aW9uLXRyeS1maW5hbGx5LXNjb3BlLWVycm9yCiBmYXN0L2pzL2V4Y2VwdGlvbi13aXRo
LWhhbmRsZXItaW5zaWRlLWV2YWwtd2l0aC1keW5hbWljLXNjb3BlCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctY2Fs
bC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRjaHBvaW50Lmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitkZXNjcmlwdGlvbigKKyJUZXN0cyBjb3Jy
ZWN0bmVzcyBvZiBmdW5jdGlvbiBjYWxscyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBvdmVyd3JpdHRl
bi4iCispOworCitmdW5jdGlvbiBmb28oYSwgYikgeworICAgIHJldHVybiBhICsgYjsKK30KKwor
ZnVuY3Rpb24gYmFyKGEsIGIpIHsKKyAgICByZXR1cm4gZm9vKGEsIGIpOworfQorCitmb3IgKHZh
ciBpID0gMDsgaSA8IDIwMDsgKytpKSB7CisgICAgaWYgKGkgPT0gMTUwKQorICAgICAgICBmb28g
PSBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsgfQorICAgIHZhciBleHBlY3RlZDsKKyAg
ICBpZiAoaSA8IDE1MCkKKyAgICAgICAgZXhwZWN0ZWQgPSBpICsgaSArIDE7CisgICAgZWxzZQor
ICAgICAgICBleHBlY3RlZCA9IC0xOworICAgIHNob3VsZEJlKCJiYXIoaSwgaSArIDEpIiwgIiIg
KyBleHBlY3RlZCk7Cit9CisK
</data>
<flag name="commit-queue"
          id="154719"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147252</attachid>
            <date>2012-06-13 00:34:27 -0700</date>
            <delta_ts>2012-06-13 01:03:00 -0700</delta_ts>
            <desc>attempt to fix the compiler&apos;s failed attempts to be smart</desc>
            <filename>globalwatch_patch_17.diff</filename>
            <type>text/plain</type>
            <size>157172</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMCBA
QAorMjAxMi0wNi0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaW1wbGVtZW50cyBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgZm9sZGluZyBieSBhbGxv
d2luZyB0aGUgb3B0aW1pemluZworICAgICAgICBjb21waWxlciB0byBzZXQgYSAid2F0Y2hwb2lu
dCIgb24gZ2xvYmFscyB0aGF0IGl0IHdpc2hlcyB0byBjb25zdGFudCBmb2xkLgorICAgICAgICBJ
ZiB0aGUgd2F0Y2hwb2ludCBmaXJlcywgdGhlbiBhbiBPU1IgZXhpdCBpcyBmb3JjZWQgYnkgb3Zl
cndyaXRpbmcgdGhlCisgICAgICAgIG1hY2hpbmUgY29kZSB0aGF0IHRoZSBvcHRpbWl6aW5nIGNv
bXBpbGVyIGdlbmVyYXRlZCB3aXRoIGEganVtcC4KKyAgICAgICAgCisgICAgICAgIEFzIHN1Y2gs
IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHF1aXRlIGEgYml0IG9mIHN0dWZmOgorICAgICAgICAKKyAg
ICAgICAgLSBKdW1wIHJlcGxhY2VtZW50IG9uIHRob3NlIGhhcmR3YXJlIHRhcmdldHMgc3VwcG9y
dGVkIGJ5IHRoZSBvcHRpbWl6aW5nCisgICAgICAgICAgSklULiBJdCBpcyBub3cgcG9zc2libGUg
dG8gcGF0Y2ggaW4gYSBqdW1wIGluc3RydWN0aW9uIG92ZXIgYW55IHJlY29yZGVkCisgICAgICAg
ICAgd2F0Y2hwb2ludCBsYWJlbC4gVGhlIGp1bXAgbXVzdCBiZSAibG9jYWwiIGluIHRoZSBzZW5z
ZSB0aGF0IGl0IG11c3QgYmUKKyAgICAgICAgICB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBsYXJn
ZXN0IGp1bXAgZGlzdGFuY2Ugc3VwcG9ydGVkIGJ5IGEgb25lCisgICAgICAgICAgaW5zdHJ1Y3Rp
b24ganVtcC4KKyAgICAgICAgICAKKyAgICAgICAgLSBXYXRjaHBvaW50U2V0cyBhbmQgV2F0Y2hw
b2ludHMuIEEgV2F0Y2hwb2ludCBpcyBhIGRvdWJseS1saW5rZWQgbGlzdCBub2RlCisgICAgICAg
ICAgdGhhdCByZWNvcmRzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIGp1bXAgbXVzdCBiZSBpbnNlcnRl
ZCBhbmQgdGhlCisgICAgICAgICAgZGVzdGluYXRpb24gdG8gd2hpY2ggaXQgc2hvdWxkIGp1bXAu
IFdhdGNocG9pbnRzIGNhbiBiZSBhZGRlZCB0byBhCisgICAgICAgICAgV2F0Y2hwb2ludFNldC4g
VGhlIFdhdGNocG9pbnRTZXQgY2FuIGJlIGZpcmVkIGFsbCBhdCBvbmNlLCB3aGljaCBwbGFudHMK
KyAgICAgICAgICBhbGwganVtcHMuIFdhdGNocG9pbnRTZXQgYWxzbyByZW1lbWJlcnMgaWYgaXQg
aGFkIGV2ZXIgYmVlbiBpbnZhbGlkYXRlZCwKKyAgICAgICAgICB3aGljaCBhbGxvd3MgZm9yIG1v
bm90b25pY2l0eTogd2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8gb3B0aW1pemUgdXNpbmcKKyAg
ICAgICAgICB3YXRjaHBvaW50cyBvbiBzb21ldGhpbmcgZm9yIHdoaWNoIHdhdGNocG9pbnRzIGhh
ZCBwcmV2aW91c2x5IGZpcmVkLiBUaGUKKyAgICAgICAgICBhY3Qgb2Ygbm90aWZ5aW5nIGEgV2F0
Y2hwb2ludFNldCBoYXMgYSB0cml2aWFsIGZhc3QgcGF0aCBpbiBjYXNlIG5vCisgICAgICAgICAg
V2F0Y2hwb2ludHMgYXJlIHJlZ2lzdGVyZWQgKG9uZS1ieXRlIGxvYWQrYnJhbmNoKS4KKyAgICAg
ICAgCisgICAgICAgIC0gU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLiBJ
dCdzIGxpa2Ugc3BlY3VsYXRpb25DaGVjaygpLAorICAgICAgICAgIGV4Y2VwdCB0aGF0IHlvdSBk
b24ndCBoYXZlIHRvIGVtaXQgYnJhbmNoZXMuIEJ1dCwgeW91IG5lZWQgdG8ga25vdyB3aGF0Cisg
ICAgICAgICAgV2F0Y2hwb2ludFNldCB0byBhZGQgdGhlIHJlc3VsdGluZyBXYXRjaHBvaW50IHRv
LiBOb3QgZXZlcnl0aGluZyB0aGF0CisgICAgICAgICAgeW91IGNvdWxkIHdyaXRlIGEgc3BlY3Vs
YXRpb25DaGVjaygpIGZvciB3aWxsIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRoYXQKKyAgICAgICAg
ICB3b3VsZCBnZXQgbm90aWZpZWQgaWYgdGhlIGNvbmRpdGlvbiB5b3Ugd2VyZSBzcGVjdWxhdGlu
ZyBhZ2FpbnN0IGJlY2FtZQorICAgICAgICAgIGludmFsaWQuCisgICAgICAgICAgCisgICAgICAg
IC0gU3ltYm9sVGFibGVFbnRyeSBub3cgaGFzIHRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgV2F0
Y2hwb2ludFNldC4gSXQgY2FuCisgICAgICAgICAgZG8gc28gd2l0aG91dCBpbmN1cnJpbmcgYW55
IHNwYWNlIG92ZXJoZWFkIGZvciB0aG9zZSBlbnRyaWVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICBo
YXZlIFdhdGNocG9pbnRTZXRzLgorICAgICAgICAgIAorICAgICAgICAtIFRoZSBieXRlY29kZSBn
ZW5lcmF0b3IgaW5mZXJzIGFsbCBnbG9iYWwgZnVuY3Rpb24gdmFyaWFibGVzIHRvIGJlCisgICAg
ICAgICAgd2F0Y2hhYmxlLCBhbmQgbWFrZXMgYWxsIHN0b3JlcyBwZXJmb3JtIHRoZSBXYXRjaHBv
aW50U2V0J3Mgd3JpdGUgY2hlY2ssCisgICAgICAgICAgYW5kIG1hcmtzIGFsbCBsb2FkcyBhcyBi
ZWluZyBwb3RlbnRpYWxseSB3YXRjaGFibGUgKGkuZS4geW91IGNhbiBjb21waWxlCisgICAgICAg
ICAgdGhlbSB0byBhIHdhdGNocG9pbnQgYW5kIGEgY29uc3RhbnQpLgorICAgICAgICAKKyAgICAg
ICAgUHV0IHRvZ2V0aGVyLCB0aGlzIGFsbG93cyBmb3IgZnVsbHkgc2xlYXp5IGlubGluaW5nIG9m
IGNhbGxzIHRvIGdsb2JhbGx5CisgICAgICAgIGRlY2xhcmVkIGZ1bmN0aW9ucy4gVGhlIGlubGlu
ZSBwcm9sb2d1ZSB3aWxsIG5vIGxvbmdlciBjb250YWluIHRoZSBsb2FkIG9mCisgICAgICAgIHRo
ZSBmdW5jdGlvbiwgb3IgYW55IGNoZWNrcyBvZiB0aGUgZnVuY3Rpb24geW91J3JlIGNhbGxpbmcu
IEkuZS4gaXQncworICAgICAgICBwcmV0dHkgbXVjaCBsaWtlIHRoZSBraW5kIG9mIGlubGluaW5n
IHlvdSB3b3VsZCBzZWUgaW4gSmF2YSBvciBDKysuCisgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUg
d2F0Y2hwb2ludGluZyBmdW5jdGlvbmFsaXR5IGlzIGJ1aWx0IHRvIGJlIGZhaXJseSBnZW5lcmFs
LAorICAgICAgICBhbmQgc2hvdWxkIGFsbG93IHNldHRpbmcgd2F0Y2hwb2ludHMgb24gYWxsIHNv
cnRzIG9mIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHNsZWF6eSBpbmxpbmluZyBtZWFucyB0aGF0IHdlIHdpbGwgbm93IHNv
bWV0aW1lcyBpbmxpbmUgaW4gY29kZSBwYXRocworICAgICAgICB0aGF0IGhhdmUgbmV2ZXIgZXhl
Y3V0ZWQuIFByZXZpb3VzbHksIHRvIGlubGluZSB3ZSB3b3VsZCBoYXZlIGVpdGhlciBoYWQKKyAg
ICAgICAgdG8gaGF2ZSBleGVjdXRlZCB0aGUgY2FsbCAodG8gcmVhZCB0aGUgY2FsbCdzIGlubGlu
ZSBjYWNoZSkgb3IgaGF2ZQorICAgICAgICBleGVjdXRlZCB0aGUgbWV0aG9kIGNoZWNrICh0byBy
ZWFkIHRoZSBtZXRob2QgY2hlY2sncyBpbmxpbmUgY2FjaGUpLiBOb3csCisgICAgICAgIHdlIG1p
Z2h0IGlubGluZSB3aGVuIHRoZSBjYWxsZWUgaXMgYSB3YXRjaGVkIGdsb2JhbCB2YXJpYWJsZS4g
VGhpcworICAgICAgICByZXZlYWxlZCBzb21lIGh1bW9yb3VzIGJ1Z3MuIEZpcnN0LCBjb25zdGFu
dCBmb2xkaW5nIGRpc2FncmVlZCB3aXRoIENGQQorICAgICAgICBvdmVyIHdoYXQga2luZHMgb2Yg
b3BlcmF0aW9ucyBjYW4gY2xvYmJlciAoZXhhbXBsZTogY29kZSBwYXRoIEEgaXMgZGVhZAorICAg
ICAgICBidXQgc3RvcmVzIGEgU3RyaW5nIGludG8gdmFyaWFibGUgWCwgYWxsIG90aGVyIGNvZGUg
cGF0aHMgc3RvcmUgMCBpbnRvCisgICAgICAgIFgsIGFuZCB0aGVuIHlvdSBkbyBDb21wYXJlRXEo
WCwgMCkgLSBDRkEgd2lsbCBzYXkgdGhhdCB0aGlzIGlzIGEgbm9uLQorICAgICAgICBjbG9iYmVy
aW5nIGNvbnN0YW50LCBidXQgY29uc3RhbnQgZm9sZGluZyB0aG91Z2h0IGl0IHdhcyBjbG9iYmVy
aW5nCisgICAgICAgIGJlY2F1c2UgaXQgc2F3IHRoZSBTdHJpbmcgcHJlZGljdGlvbikuIFNlY29u
ZCwgaW5saW5pbmcgd291bGQgY3Jhc2ggaWYKKyAgICAgICAgdGhlIGlubGluZSBjYWxsZWUgaGFk
IG5vdCBiZWVuIGNvbXBpbGVkLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggYnVncywKKyAgICAgICAg
c2luY2Ugb3RoZXJ3aXNlIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyB3b3VsZCByZXBvcnQgcmVn
cmVzc2lvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJsZXIpOgor
ICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNdjdBc3NlbWJsZXIpOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6
QVJNdjdBc3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjptYXhKdW1wUmVw
bGFjZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgor
ICAgICAgICAoTGFiZWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjp3
YXRjaHBvaW50TGFiZWwpOgorICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2Vt
YmxlckFSTSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgor
ICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTXY3OjpicmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6Omp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjptYWtlQnJhbmNo
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3Jv
QXNzZW1ibGVyTUlQUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpyZXBsYWNlV2l0aEp1bXApOgor
ICAgICAgICAoTWFjcm9Bc3NlbWJsZXJTSDQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clNINDo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2XzY0OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcGJf
aW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnRlc3RiX2ltKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpsYWJlbEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0
aEp1bXApOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNp
emUpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVy
OjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRPU1JFeGl0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KToKKyAgICAgICAgKENvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kV2F0Y2hwb2ludCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZXYXRjaHBvaW50cyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6d2F0Y2hwb2ludCk6CisgICAgICAgIChERkdEYXRhKToKKyAgICAgICAgKiBi
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kVG9T
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kSXNDb3VudGFibGUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChJbnN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUv
T3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwYWRPcGNvZGVOYW1lKToK
KyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojp+V2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6
OldhdGNocG9pbnQ6OmNvcnJlY3RMYWJlbHMpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojpm
aXJlKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OldhdGNocG9pbnRTZXQ6On5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6
V2F0Y2hwb2ludFNldDo6YWRkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6bm90aWZ5
V3JpdGVTbG93KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbFdhdGNocG9p
bnRzKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50OjpX
YXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6c2V0RGVzdGluYXRpb24pOgor
ICAgICAgICAoV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Omlz
U3RpbGxWYWxpZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Omhhc0JlZW5JbnZhbGlk
YXRlZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OnN0YXJ0V2F0Y2hpbmcpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZSk6CisgICAgICAgIChKU0M6Oldh
dGNocG9pbnRTZXQ6OmFkZHJlc3NPZklzV2F0Y2hlZCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6Y2hl
Y2tWYWxpZGl0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxW
YXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1Zhcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhSZXNvbHZl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4UmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKToKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RT
dGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6Y2xvYmJl
clN0cnVjdHVyZXMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAg
IChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpkaWRD
bG9iYmVyKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDQ2Fs
bEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyV2F0Y2hwb2ludEVs
aW1pbmF0aW9uKToKKyAgICAgICAgKENTRVBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQ
aGFzZTo6Z2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NF
UGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZv
bGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6aXNTZXQpOgorICAg
ICAgICAoQ29ycmVjdGFibGVKdW1wUG9pbnQpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllck51bWJlckZvckNo
ZWNrKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlkZW50aWZp
ZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzUmVnaXN0ZXJQ
b2ludGVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6
Ok9TUkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgIChPU1JFeGl0
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2lu
dCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6
OkpJVFRodW5rczo6SklUVGh1bmtzKToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJ
T04pOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVHZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xU
YWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmNvcHlTbG93KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdyk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmNvdWxkQmVXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGVFbnRyeTo6YXR0ZW1wdFRvV2F0Y2gpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
OjphZGRyZXNzT2ZJc1dhdGNoZWQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojph
ZGRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3Jp
dGVTbG93KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZVNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChTeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEZhc3QpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5OjpGYXN0OjpGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6RmFzdDo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6
Z2V0SW5kZXgpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc1JlYWRP
bmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6Z2V0QXR0cmlidXRl
cyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzRmF0KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6On5TeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0SW5kZXgp
OgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRGYXN0KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmlzUmVhZE9ubHkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojp3YXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5
V3JpdGUpOgorICAgICAgICAoRmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVu
dHJ5OjpGYXRFbnRyeTo6RmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojppc0ZhdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmZhdEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZSk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmJpdHMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpm
cmVlRmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpwYWNrKToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNWYWxpZEluZGV4KToKKwogMjAxMi0wNi0x
MiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGZvciBBUk12NyBkZWJ1ZyBidWlsZHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgU0VUKEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogICAg
IGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKKyAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcAogCiAgICAgYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0yMzEsNiArMjMyLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1l
L1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwCiAg
ICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKyAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNw
cAogICAgIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuY3BwCiAgICAgcnVudGltZS9VU3RyaW5nLmNw
cAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2
aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmggXApAQCAtNjAzLDYgKzYwNSw3IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZXJtaW5hdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2MiwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUv
T3Bjb2RlLmNwcCBcCiAgICAgYnl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgXAot
ICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAgXAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAgXAorICAgIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
IFwKKyAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgXAog
ICAgIGhlYXAvQ29waWVkU3BhY2UuY3BwIFwKQEAgLTIzNiw2ICsyMzcsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIFwKICAgICBydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcCBcCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKKyAgICBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAgICAgcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAg
XAogICAgIHJ1bnRpbWUvVVN0cmluZy5jcHAgXAogICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcCBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNTQsNiArMTI1NCwxMCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFN5bWJvbFRhYmxl
LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5ccnVudGltZVxTeW1ib2xUYWJsZS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2ODEsNiAr
MTY4NSwxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcVmFsdWVQcm9maWxl
LmgiCiAJCQkJPgogCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGJ5dGVjb2RlXFdhdGNocG9pbnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxXYXRjaHBvaW50LmgiCisJCQkJPgorCQkJ
PC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgogCQkJTmFtZT0iZGVidWdnZXIiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOSBAQAogCQkwRjkxOUQwRDE1N0VFMEEyMDA0
QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9s
VGFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAg
Ki87IH07CiAJCTBGOTE5RDExMTU3RjMzMkMwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjkxOUQwRjE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTE5RDI1
MTU4NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRj
aHBvaW50LmNwcCAqLzsgfTsKKwkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5
RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8q
IFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOTE5RDI3MTU4NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgKi87IH07
CiAJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5MzE0Q0E3REMx
MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovOyB9OwogCQkwRjkzMzI5RTE0Q0E3REM1
MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0
YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGOTMzMjlGMTRDQTdEQ0EwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk1MTRDQTdEQzEwMDg1
RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTM3MCwxMCArMzczLDEwIEBACiAJ
CTdFNEVFNzBGMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwRTBFQkI3QTVCMDA1
OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovOyB9OwogCQk3RUZGMDA2NDBFQzA1QTlBMDBB
QTdDOTMgLyogTm9kZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFRkYwMDYzMEVDMDVBOUEwMEFBN0M5MyAvKiBOb2RlSW5mby5oICovOyB9Owog
CQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ2MEZBRkJBMkQw
MDAwMTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oICovOyB9OwotCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyB9OwotCQk4
NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUxMEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oICovOyB9OwotCQk4NjAxNjFFNjBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAv
KiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovOyB9OworCQk4NjAxNjFFMzBGM0E4M0MxMDBG
ODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJY
ODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2
MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDE2MUU1MEYzQTgzQzEwMEY4
NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAx
NjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjA0RjUwNTE0M0NF
MUMyMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjA0RjUwMzE0M0NFMUMxMDBCMjk1RjUgLyogSlNHbG9iYWxU
aGlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8q
IEludHJpbnNpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxMkU0Q0IxNTIyOTE4NDAw
QzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTQwMSwxMSArNDA0LDExIEBACiAJCTg2OUQwNEFGMTE5M0I1NEQw
MDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlEMDRBRTExOTNCNTREMDA4MDM0NzUg
LyogQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBS
ZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QTkwRUQwMEVFN0Q1MUYwMEFC
MzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGlj
LmNwcCAqLzsgfTsKLQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0
MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgfTsKLQkJODZBREQxNDYw
RkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAv
KiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IH07CisJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVD
MiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZBREQx
NDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBRTY0QTgxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNz
ZW1ibGVyU0g0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QUU2NEE1MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5jcHAgKi87
IH07Ci0JCTg2QUU2NEE5MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTYxMzVF
NUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggKi87IH07Ci0JCTg2QUU2NEFBMTM1
RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3Nl
bWJsZXIuaCAqLzsgfTsKKwkJODZBRTY0QTkxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1i
bGVyU0g0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkFFNjRBNjEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkFFNjRBQTEzNUU1RTFD
MDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkFFNjRBNzEzNUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZB
RTZDNEQxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2QzRCMTM2QTExRTQwMDk2MzAxMiAvKiBE
RkdGUFJJbmZvLmggKi87IH07CiAJCTg2QUU2QzRFMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFF
NkM0QzEzNkExMUU0MDA5NjMwMTIgLyogREZHR1BSSW5mby5oICovOyB9OwogCQk4NkI1ODI2NzE0
RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQ
cm9maWxlLmNwcCAqLzsgfTsKQEAgLTQxNCw4ICs0MTcsOCBAQAogCQk4NkJCMDlDMTEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAq
LzsgfTsKIAkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEy
ODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCAqLzsgfTsKLQkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQ
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwotCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1h
Y3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QzU2
OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyog
TUlQU0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2Q0EwMzJFMTAzOEU4NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0EwMzJEMTAzOEU4
NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCAqLzsgfTsKIAkJODZDQUZFRTMxMDM1RERFNjAw
MjhBNjA5IC8qIEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2Q0FGRUUyMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDQzg1QTEw
RUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0M4NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBK
SVRJbmxpbmVNZXRob2RzLmggKi87IH07CkBAIC00MjMsMTMgKzQyNiwxMyBAQAogCQk4NkNDODVD
NDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQzg1QzMwRUU3QTg5NDAwMjg4Njgy
IC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCAqLzsgfTsKIAkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3
RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEM0IyQzMxMDE1NkJERTAw
Mjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJCRjEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVy
LmNwcCAqLzsgfTsKLQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzAx
MDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oICovOyB9OwotCQk4NkQzQjJDNTEwMTU2
QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzExMDE1NkJERTAw
Mjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAqLzsgfTsKLQkJODZE
M0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1
RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCAqLzsgfTsKLQkJODZEM0IzQzMxMDE1OUQ3RjAwMjg2
NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2RDNCM0MxMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggKi87IH07
Ci0JCTg2RDNCM0M0MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjNDMjEwMTU5RDdGMDAy
ODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oICovOyB9OworCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1
RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzUx
MDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAxNTZC
REUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzYxMDE1NkJE
RTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9B
c3NlbWJsZXJBUk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAw
Mjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NkQzQjNDNDEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0Iz
QzIxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEg
LyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2REI2NDYzMEY5NUM2RkMwMEQ3RDkyMSAvKiBF
eGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwICovOyB9OwotCQk4NkUxMTZCMTBGRTc1
QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0
aW9uLmggKi87IH07CisJCTg2RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTExNkIw
MEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkU4NTUzOTExMUI5OTY4MDAxQUY1MUUgLyog
SlNTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi87
IH07CiAJCTg2RUJGMkZGMTU2MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQkYyRjkxNTYw
RjAzNjAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTg2RUJGMzAwMTU2
MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUJGMkZBMTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1l
Q29uc3RydWN0b3IuaCAqLzsgfTsKQEAgLTQ3NSw4ICs0NzgsOCBAQAogCQk5NUY2RTY5NTBFNUI1
Rjk3MDA5MUU4NjAgLyogSlNQcm9maWxlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpT
UHJvZmlsZXJQcml2YXRlLmNwcCAqLzsgfTsKIAkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8q
IExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi87IH07CiAJCTk2
MDYyNjk2MEZCOEVDMDIwMDk3OThBQiAvKiBKSVRTdHViQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTYwNjI2OTUwRkI4RUMwMjAwOTc5OEFCIC8q
IEpJVFN0dWJDYWxsLmggKi87IH07Ci0JCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3Nl
bWJsZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk2ODhDQjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLzsgfTsK
LQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2
NDlGIC8qIFg4NkFzc2VtYmxlci5oICovOyB9OworCQk5Njg4Q0IxNTBFRDEyQjRFMDAxRDY0OUYg
LyogQXNzZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTY4OENC
MTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4
NkFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjEwRUQx
Q0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggKi87IH07CiAJCTk2OUEwNzJBMEVE
MUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTY5QTA3MjcwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggKi87IH07
CiAJCTk2OUEwNzJCMEVEMUNFNjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyODBFRDFDRTY5MDBGMUY2
ODEgLyogUmVnaXN0ZXJJRC5oICovOyB9OwpAQCAtODM2LDYgKzgzOSw5IEBACiAJCTBGOTE5RDBB
MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3ltYm9sVGFibGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEUxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOTE5RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMjIxNTg1M0NERTAwNEE0
RTdEIC8qIFdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTE5RDIz
MTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5
MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxMaW5rU3RhdHVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2
IC8qIENhbGxMaW5rU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxMaW5rU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjk1MTRD
QTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdldEJ5SWRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA0NSw2ICsyMDUxLDcgQEAKIAkJCQk3RTRFRTcwRTBFQkI3QTVCMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uY3BwICovLAogCQkJCTdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAv
KiBTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOTA0MTQ3MEVCOTI1MDkwMEZFMjZGQSAvKiBT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCAqLywKKwkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRF
N0QgLyogU3ltYm9sVGFibGUuY3BwICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAv
KiBTeW1ib2xUYWJsZS5oICovLAogCQkJCTk3RjY5MDNBMTE2OURGN0YwMEE2QkI0NiAvKiBUZXJt
aW5hdG9yLmggKi8sCiAJCQkJMTRBNDJFM0QwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVj
a2VyLmNwcCAqLywKQEAgLTIyOTYsNiArMjMwMyw4IEBACiAJCQkJMEY5NjNCMzYxM0ZDNkZERTAw
MDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4
RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8sCiAJCQkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8q
IFZpcnR1YWxSZWdpc3Rlci5oICovLAorCQkJCTBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBX
YXRjaHBvaW50LmNwcCAqLywKKwkJCQkwRjkxOUQyMzE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hw
b2ludC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yNjcxLDYgKzI2ODAsNyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMy
NTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE5RDI2MTU4NTNDRTMwMDRB
NEU3RCAvKiBXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTMyNDUsNiArMzI1NSw4IEBA
CiAJCQkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRF
N0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjkxOUQyNTE1ODUzQ0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12
N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMs
MTIgQEAgcHVibGljOgogICAgICAgICBKdW1wTGlua1R5cGUgbV9saW5rVHlwZSA6IDg7CiAgICAg
ICAgIENvbmRpdGlvbiBtX2NvbmRpdGlvbiA6IDE2OwogICAgIH07CisgICAgCisgICAgQVJNdjdB
c3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisg
ICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICB7Cisg
ICAgfQogCiBwcml2YXRlOgogCkBAIC0xODIwLDEwICsxODI2LDI1IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDhJbW04KE9QX05PUF9UMSwgMCk7CiAgICAg
fQorICAgIAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgewor
ICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9p
bmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgp
OworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOwor
ICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQp
IDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxp
Z24oaW50IGFsaWdubWVudCkKQEAgLTIwNjcsNiArMjA4OCwzMCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7
CiAgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICBBU1NFUlQo
IShiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0bykgJiAxKSk7CisgICAgICAgIHVpbnQxNl90KiBw
dHIgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAyOwor
ICAgICAgICAKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UncmUgbm90IGluIG9uZSBvZiB0aG9z
ZSBlcnJhdGEtdHJpZ2dlcmluZyB0aGluZ2llcy4gSWYgd2UgYXJlLCB0aGVuCisgICAgICAgIC8v
IHByZXBlbmQgYSBub3AuCisgICAgICAgIGJvb2wgc3BhbnNUd280SyA9ICgocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4ocHRyKSAmIDB4ZmZmKSA9PSAweDAwMik7CisgICAgICAgIAorICAgICAg
ICBpZiAoc3BhbnNUd280SykgeworICAgICAgICAgICAgcHRyWy0yXSA9IE9QX05PUF9UMTsKKyAg
ICAgICAgICAgIHB0cisrOworICAgICAgICB9CisKKyAgICAgICAgbGlua0p1bXBUNChwdHIsIHRv
KTsKKyAgICAgICAgY2FjaGVGbHVzaChwdHIgLSAyLCBzaXplb2YodWludDE2X3QpICogMik7Cisg
ICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gNjsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBkZWJ1Z09m
ZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KIApAQCAtMjYwNCw2
ICsyNjQ5LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxMaW5rUmVjb3JkPiBtX2p1bXBzVG9M
aW5rOwogICAgIFZlY3RvcjxpbnQzMl90PiBtX29mZnNldHM7CisgICAgaW50IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEy
MDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBMaW5rQnVmZmVyOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKK2NsYXNzIFdhdGNocG9p
bnQ7CiBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENvcnJlY3RhYmxlSnVtcFBvaW50OwogfQpAQCAt
NzAsNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgdXNl
ZCBhcyBvcGVyYW5kcyB0byBNYWNyb0Fzc2VtYmxlciBvcGVyYXRpb25zLAogICAgIC8vIGRlc2Ny
aWJpbmcgaW1tZWRpYXRlICBhbmQgbWVtb3J5IG9wZXJhbmRzIHRvIHRoZSBpbnN0cnVjdGlvbnMg
dG8gYmUgcGxhbnRlZC4KIAotCiAgICAgZW51bSBTY2FsZSB7CiAgICAgICAgIFRpbWVzT25lLAog
ICAgICAgICBUaW1lc1R3bywKQEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKdW1wOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOwogICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFdhdGNocG9pbnQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIExhYmVsKCkKQEAgLTU1OSw2
ICs1NjAsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAgfQog
ICAgIAorICAgIExhYmVsIHdhdGNocG9pbnRMYWJlbCgpCisgICAgeworICAgICAgICBMYWJlbCBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2xhYmVsID0gbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRj
aHBvaW50KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIExhYmVs
IGFsaWduKCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFsaWduKDE2KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAko
cmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3Nl
bWJsZXJCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBFTkFC
TEUoQVNTRU1CTEVSKQogCisjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkpJVENvbXBpbGF0aW9uRWZmb3J0LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAj
aW5jbHVkZSAic3RkaW50LmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8aml0L0V4
ZWN1dGFibGVBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk0uaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEwLDYgKzEwMTAs
MTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRp
b24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHBy
b3RlY3RlZDoKICAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMjAx
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4Niw2ICsxMTg2LDE2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29k
ZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBUk12N0Fzc2VtYmxl
cjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRlc3Rp
bmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBBUk12N0Fz
c2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KIAogICAgIC8vIEZvcndh
cmRzIC8gZXh0ZXJuYWwgY29udHJvbCBmbG93IG9wZXJhdGlvbnM6CiAgICAgLy8KQEAgLTEzNTYs
NiArMTM2NiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzayk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hUZXN0
OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRy
ZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFU
ZW1wUmVnaXN0ZXIuIDotLworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0
ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkOChBZGRyZXNzKGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrKTsKKyAgICB9CisKICAgICB2
b2lkIGp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5i
eCh0YXJnZXQpOwpAQCAtMTY3OSwxMiArMTY5NywxNCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgQUxXQVlTX0lOTElORSBKdW1wIGp1bXAoKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bGFiZWwoKTsgLy8gRm9yY2Ugbm9wLXBhZGRpbmcgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBh
IHdhdGNocG9pbnQuCiAgICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMy
KDApLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIu
YngoZGF0YVRlbXBSZWdpc3RlciksIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBBUk12N0Fzc2VtYmxl
cjo6SnVtcE5vQ29uZGl0aW9uRml4ZWRTaXplIDogQVJNdjdBc3NlbWJsZXI6Okp1bXBOb0NvbmRp
dGlvbik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKdW1wIG1ha2VCcmFuY2goQVJNdjdB
c3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGFi
ZWwoKTsgLy8gRm9yY2Ugbm9wLXBhZGRpbmcgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdh
dGNocG9pbnQuCiAgICAgICAgIG1fYXNzZW1ibGVyLml0KGNvbmQsIHRydWUsIHRydWUpOwogICAg
ICAgICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0
ZXIpLCBtX21ha2VKdW1wUGF0Y2hhYmxlID8gQVJNdjdBc3NlbWJsZXI6Okp1bXBDb25kaXRpb25G
aXhlZFNpemUgOiBBUk12N0Fzc2VtYmxlcjo6SnVtcENvbmRpdGlvbiwgY29uZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NjgsNiArMTg2OCwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0
PHZvaWQoKikoKT4oTUlQU0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRp
b24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgLy8gSWYgbV9maXhlZFdpZHRoIGlzIHRydWUsIHdlIHdpbGwgZ2VuZXJhdGUg
YSBmaXhlZCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zLgogICAgIC8vIE90aGVyd2lzZSwgd2UgY2Fu
IGVtaXQgYW55IG51bWJlciBvZiBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCShyZXZpc2lvbiAx
MjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
U0g0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NzEsNiArMTk3MSwxNyBAQCB2b2lkIG9yMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzCiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oU0g0QXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChj
YWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VX
aXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25M
YWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFNINEFzc2VtYmxlcjo6Q29uZGl0aW9uIFNINENv
bmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2
aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZERvdWJsZTsKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmVEb3VibGU7CiAgICAgdXNpbmcgTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmNvbnZlcnRJbnQzMlRvRG91YmxlOworICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0ODsKIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xNjUs
NiArMTY2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9pMzJyKGluaXRp
YWxWYWx1ZS5hc0ludHB0cigpLCBkZXN0KTsKICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0
aGlzKTsKICAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24g
Y29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtYXNrLm1fdmFsdWUgPj0gLTEyOCAm
JiBtYXNrLm1fdmFsdWUgPD0gMjU1KTsKKyAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGJfaW0oMCwgYWRkcmVzcy5tX3B0cik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RiX2ltKG1hc2subV92YWx1ZSwg
YWRkcmVzcy5tX3B0cik7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsKKyAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBk
YXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRy
KDApKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDEyMDE2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwOCw2ICsxNDA4LDE2IEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhK
dW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVs
IGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1
bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6
Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTEzLDYgKzUxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjptb3ZlKGFkZHIsIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQmFzZUluZGV4KHNjcmF0Y2hS
ZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBUaW1lc09uZSksIG1hc2spOwogICAgIH0KKyAgICAKKyAg
ICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlciksIG1h
c2spOworICAgIH0KIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpIHsg
cmV0dXJuIHRydWU7IH0KICAgICAvLyBTZWUgY29tbWVudCBvbiBNYWNyb0Fzc2VtYmxlckFSTXY3
OjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMDE2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI0Nyw2ICsyNDcsOCBAQCBwcml2YXRlOgogcHVibGljOgogCiAgICAgWDg2QXNzZW1i
bGVyKCkKKyAgICAgICAgOiBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAg
ICAsIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAgICAgewogICAgIH0K
IApAQCAtNzk4LDYgKzgwMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQorICAg
IAorI2lmIENQVShYODYpCisgICAgdm9pZCBjbXBiX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIs
IEdST1VQMV9PUF9DTVAsIGFkZHIpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgfQorI2VuZGlmCiAKICAgICB2b2lkIGNtcGxfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewpA
QCAtOTQ4LDYgKzk1OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTgoaW1tKTsKICAgICB9CiAKKyNpZiBDUFUoWDg2KQorICAgIHZvaWQgdGVzdGJfaW0oaW50IGlt
bSwgY29uc3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDNfRWJJYiwgR1JPVVAzX09QX1RFU1QsIGFkZHIpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIHRlc3RsX2kz
Mm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAzX0V2SXosIEdST1VQM19PUF9URVNULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CkBA
IC0xNzAyLDEwICsxNzIwLDI1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Zv
cm1hdHRlci5jb2RlU2l6ZSgpOwogICAgIH0KKyAgICAKKyAgICBBc3NlbWJsZXJMYWJlbCBsYWJl
bEZvcldhdGNocG9pbnQoKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0g
bV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVzdWx0
Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCkKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGxhYmVsKCk7CisgICAgICAgIG1faW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1f
b2Zmc2V0OworICAgICAgICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5t
X29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0
ID0gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAgICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19j
YXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50
KSkgeworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtX2Zvcm1hdHRl
ci5sYWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAg
ICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkKQEAgLTE3ODcsNiArMTgyMCwy
MCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4od2hl
cmUpWy0xXTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgeworICAgICAgICB1aW50OF90KiBwdHIg
PSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyAgICAgICAg
dWludDhfdCogZHN0UHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odG8pOworICAgICAg
ICBpbnRwdHJfdCBkaXN0YW5jZSA9IChpbnRwdHJfdCkoZHN0UHRyIC0gKHB0ciArIDUpKTsKKyAg
ICAgICAgcHRyWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oT1BfSk1QX3JlbDMyKTsKKyAgICAg
ICAgKnJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHB0ciArIDEpID0gc3RhdGljX2Nhc3Q8aW50
MzJfdD4oZGlzdGFuY2UpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1
bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDU7CisgICAgfQorICAg
IAogICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVs
IGNhbGwpCiAgICAgewogICAgICAgICBBU1NFUlQoY2FsbC5pc1NldCgpKTsKQEAgLTIzMzksNiAr
MjM4Niw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVyOwog
ICAgIH0gbV9mb3JtYXR0ZXI7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OworICAg
IGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjgsMTIgKzkyOCwyOCBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBpdCsrOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zh
cl93YXRjaGFibGU6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytp
dCktPnUucmVnaXN0ZXJQb2ludGVyOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZ2V0X2ds
b2JhbF92YXJfd2F0Y2hhYmxlXHQgJXMsIGclZCglcClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5h
bWUoZXhlYywgcjApLmRhdGEoKSwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJl
Z2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlcik7CisgICAgICAgICAgICBpdCsrOworICAg
ICAgICAgICAgaXQrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfcHV0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJlZ2lzdGVyUG9pbnRlcjsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgZGF0YUxvZygiWyU0
ZF0gcHV0X2dsb2JhbF92YXJcdCBnJWQoJXApLCAlc1xuIiwgbG9jYXRpb24sIG1fZ2xvYmFsT2Jq
ZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdpc3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIs
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6IHsKKyAgICAgICAg
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gKCsraXQpLT51LnJl
Z2lzdGVyUG9pbnRlcjsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gcHV0X2dsb2JhbF92YXJfY2hlY2tcdCBnJWQoJXAp
LCAlc1xuIiwgbG9jYXRpb24sIG1fZ2xvYmFsT2JqZWN0LT5maW5kUmVnaXN0ZXJJbmRleChyZWdp
c3RlclBvaW50ZXIpLCByZWdpc3RlclBvaW50ZXIsIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGl0Kys7CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2Jhc2U6IHsKICAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTMwNiw3ICsxMzIyLDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY2Fs
bF9wdXRfcmVzdWx0OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIG9wX2NhbGxfcHV0X3Jlc3VsdFx0XHQgJXNcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBjYWxsX3B1dF9yZXN1bHRcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAKICNp
bmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFsaXplci5oIgog
I2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2Uu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMjczLDEwICsyNzQsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICB2b2lkIGFwcGVuZE9TUkV4aXQoY29uc3QgREZHOjpPU1JFeGl0JiBvc3JF
eGl0KQorICAgICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IERGRzo6T1NSRXhpdCYg
b3NyRXhpdCkKICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5
KCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPm9zckV4aXQuc2l6
ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT5vc3JFeGl0LmFwcGVuZChvc3JFeGl0KTsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERG
Rzo6T1NSRXhpdCYgbGFzdE9TUkV4aXQoKQpAQCAtMjg0LDEwICsyODcsMjAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5vc3JFeGl0Lmxhc3QoKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5
KGNvbnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisgICAgICAgIHVuc2ln
bmVkIGFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292
ZXJ5JiByZWNvdmVyeSkKICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVj
ZXNzYXJ5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPnNwZWN1
bGF0aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICAgICAgbV9kZmdEYXRhLT5zcGVjdWxhdGlv
blJlY292ZXJ5LmFwcGVuZChyZWNvdmVyeSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhcHBlbmRXYXRjaHBvaW50KGNv
bnN0IFdhdGNocG9pbnQmIHdhdGNocG9pbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0
ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9k
ZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgICAgICBtX2RmZ0RhdGEtPndhdGNo
cG9pbnRzLmFwcGVuZCh3YXRjaHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQpA
QCAtMzA0LDYgKzMxNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBt
X2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVjb3Zlcnkuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICB1bnNpZ25lZCBudW1iZXJPZldhdGNocG9pbnRzKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFtX2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT53YXRjaHBvaW50cy5zaXplKCk7CisgICAgICAgIH0K
KyAgICAgICAgCiAgICAgICAgIERGRzo6T1NSRXhpdCYgb3NyRXhpdCh1bnNpZ25lZCBpbmRleCkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdFtpbmRleF07
CkBAIC0zMTQsNiArMzM0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeVtpbmRleF07CiAgICAgICAgIH0KICAgICAg
ICAgCisgICAgICAgIFdhdGNocG9pbnQmIHdhdGNocG9pbnQodW5zaWduZWQgaW5kZXgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRzW2luZGV4XTsK
KyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVmZXJlbmNlKEpT
Q2VsbCogdGFyZ2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNl
c3NhcnkoKTsKQEAgLTEyMzgsNiArMTI2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKICAgICAgICAgICAgIFNlZ21l
bnRlZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgICAgICAgICBWZWN0b3I8
REZHOjpTcGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OworICAgICAgICAg
ICAgU2VnbWVudGVkVmVjdG9yPFdhdGNocG9pbnQsIDEsIDA+IHdhdGNocG9pbnRzOwogICAgICAg
ICAgICAgVmVjdG9yPFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uPiB0cmFuc2l0aW9uczsKICAgICAg
ICAgICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPiA+IHdlYWtSZWZlcmVuY2VzOwogICAg
ICAgICAgICAgYm9vbCBtYXlCZUV4ZWN1dGluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNiArNDEsNyBAQCBlbnVtIEV4aXRLaW5kIHsKICAgICBJbmFkZXF1YXRlQ292
ZXJhZ2UsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuZGVkIHVwIGluIGNvZGUgdGhhdCBkaWRu
J3QgaGF2ZSBwcm9maWxpbmcgY292ZXJhZ2UuCiAgICAgQXJndW1lbnRzRXNjYXBlZCwgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2UgYXJndW1lbnRzIGVzY2FwZWQgYnV0IHdlIGRpZG4ndCBleHBlY3QgdGhl
bSB0by4KICAgICBVbmNvdW50YWJsZSwgLy8gV2UgZXhpdGVkIGZvciBub25lIG9mIHRoZSBhYm92
ZSByZWFzb25zLCBhbmQgd2Ugc2hvdWxkIG5vdCBjb3VudCBpdC4gTW9zdCB1c2VzIG9mIHRoaXMg
c2hvdWxkIGJlIHZpZXdlZCBhcyBhIEZJWE1FLgorICAgIFVuY291bnRhYmxlV2F0Y2hwb2ludCAv
LyBXZSBleGl0ZWQgYmVjYXVzZSBvZiBhIHdhdGNocG9pbnQsIHdoaWNoIGlzbid0IGNvdW50ZWQg
YmVjYXVzZSB3YXRjaHBvaW50cyBkbyB0cmFja2luZyB0aGVtc2VsdmVzLgogfTsKIAogaW5saW5l
IGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2luZCkKQEAgLTU4LDYgKzU5
LDEyIEBAIGlubGluZSBjb25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXQKICAgICAgICAg
cmV0dXJuICJOZWdhdGl2ZVplcm8iOwogICAgIGNhc2UgSW5hZGVxdWF0ZUNvdmVyYWdlOgogICAg
ICAgICByZXR1cm4gIkluYWRlcXVhdGVDb3ZlcmFnZSI7CisgICAgY2FzZSBBcmd1bWVudHNFc2Nh
cGVkOgorICAgICAgICByZXR1cm4gIkFyZ3VtZW50c0VzY2FwZWQiOworICAgIGNhc2UgVW5jb3Vu
dGFibGU6CisgICAgICAgIHJldHVybiAiVW5jb3VudGFibGUiOworICAgIGNhc2UgVW5jb3VudGFi
bGVXYXRjaHBvaW50OgorICAgICAgICByZXR1cm4gIlVuY291bnRhYmxlV2F0Y2hwb2ludCI7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuICJVbmtub3duIjsKICAgICB9CkBAIC03MCw2ICs3
Nyw3IEBAIGlubGluZSBib29sIGV4aXRLaW5kSXNDb3VudGFibGUoRXhpdEtpbmQKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBCYWRUeXBlOgogICAgIGNhc2UgVW5jb3Vu
dGFibGU6CisgICAgY2FzZSBVbmNvdW50YWJsZVdhdGNocG9pbnQ6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMjAxNjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkzLDYgKzE5Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0
cnVjdGlvbihWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQog
ICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdp
c3RlclBvaW50ZXIpIHsgdS5yZWdpc3RlclBvaW50ZXIgPSByZWdpc3RlclBvaW50ZXI7IH0KKyAg
ICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKGJvb2wqIHByZWRpY2F0ZVBvaW50ZXIpIHsgdS5w
cmVkaWNhdGVQb2ludGVyID0gcHJlZGljYXRlUG9pbnRlcjsgfQogCiAgICAgICAgIHVuaW9uIHsK
ICAgICAgICAgICAgIE9wY29kZSBvcGNvZGU7CkBAIC0yMDUsNiArMjA3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvOwogICAg
ICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOwogICAgICAgICAgICAgdm9pZCogcG9pbnRl
cjsKKyAgICAgICAgICAgIGJvb2wqIHByZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAg
ICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfc2NvcGVkX3ZhciwgNSkgLyogaGFzIHZhbHVl
IHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9zY29wZWRfdmFyLCA0KSBcCiAg
ICAgICAgIG1hY3JvKG9wX2dldF9nbG9iYWxfdmFyLCA0KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5n
ICovIFwKKyAgICAgICAgbWFjcm8ob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlLCA1KSAvKiBo
YXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2dsb2JhbF92YXIs
IDMpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2dsb2JhbF92YXJfY2hlY2ssIDUpIFwKICAgICAg
ICAgbWFjcm8ob3BfcmVzb2x2ZV9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwK
ICAgICAgICAgbWFjcm8ob3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cywgMykgXAogICAgICAgICBt
YWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9p
bnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgorCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworV2F0Y2hwb2ludDo6fldhdGNocG9pbnQoKQoreworICAgIGlmIChp
c09uTGlzdCgpKQorICAgICAgICByZW1vdmUoKTsKK30KKwordm9pZCBXYXRjaHBvaW50Ojpjb3Jy
ZWN0TGFiZWxzKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCit7CisgICAgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIGxhYmVsOworICAgIGxhYmVsLm1fbGFiZWwubV9vZmZzZXQgPSBtX3NvdXJjZTsKKyAg
ICBtX3NvdXJjZSA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxpbmtCdWZmZXIubG9jYXRpb25P
ZihsYWJlbCkuZGF0YUxvY2F0aW9uKCkpOworICAgIGxhYmVsLm1fbGFiZWwubV9vZmZzZXQgPSBt
X2Rlc3RpbmF0aW9uOworICAgIG1fZGVzdGluYXRpb24gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobGFiZWwpLmRhdGFMb2NhdGlvbigpKTsKK30KKwordm9p
ZCBXYXRjaHBvaW50OjpmaXJlKCkKK3sKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KG1fc291
cmNlKSksCisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4obV9k
ZXN0aW5hdGlvbikpKTsKKyAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgcmVtb3ZlKCk7Cit9
CisKK1dhdGNocG9pbnRTZXQ6OldhdGNocG9pbnRTZXQoKQorICAgIDogbV9pc1dhdGNoZWQoZmFs
c2UpCisgICAgLCBtX2lzSW52YWxpZGF0ZWQoZmFsc2UpCit7Cit9CisKK1dhdGNocG9pbnRTZXQ6
On5XYXRjaHBvaW50U2V0KCkKK3sKKyAgICAvLyBGaXJlIGFsbCB3YXRjaHBvaW50cy4gVGhpcyBp
cyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBpcyBwb3NzaWJsZSwgc2F5IHdpdGgKKyAgICAvLyBzdHJ1
Y3R1cmUgd2F0Y2hwb2ludHMsIGZvciB0aGUgd2F0Y2hwb2ludCBzZXQgb3duZXIgdG8gZGllIHdo
aWxlIHRoZQorICAgIC8vIHdhdGNocG9pbnQgb3duZXJzIGFyZSBzdGlsbCBsaXZlLgorICAgIGZp
cmVBbGxXYXRjaHBvaW50cygpOworfQorCit2b2lkIFdhdGNocG9pbnRTZXQ6OmFkZChXYXRjaHBv
aW50KiB3YXRjaHBvaW50KQoreworICAgIGlmICghd2F0Y2hwb2ludCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fc2V0LnB1c2god2F0Y2hwb2ludCk7CisgICAgbV9pc1dhdGNoZWQgPSB0cnVlOwor
fQorCit2b2lkIFdhdGNocG9pbnRTZXQ6Om5vdGlmeVdyaXRlU2xvdygpCit7CisgICAgQVNTRVJU
KG1faXNXYXRjaGVkKTsKKyAgICAKKyAgICBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKKyAgICBtX2lz
V2F0Y2hlZCA9IGZhbHNlOworICAgIG1faXNJbnZhbGlkYXRlZCA9IHRydWU7Cit9CisKK3ZvaWQg
V2F0Y2hwb2ludFNldDo6ZmlyZUFsbFdhdGNocG9pbnRzKCkKK3sKKyAgICB3aGlsZSAoIW1fc2V0
LmlzRW1wdHkoKSkKKyAgICAgICAgbV9zZXQuYmVnaW4oKS0+ZmlyZSgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNo
cG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1dhdGNocG9pbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2F0
Y2hwb2ludF9oCisjZGVmaW5lIFdhdGNocG9pbnRfaAorCisjaW5jbHVkZSAiQ29kZUxvY2F0aW9u
LmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIFdhdGNocG9pbnQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0
Y2hwb2ludD4geworcHVibGljOgorICAgIFdhdGNocG9pbnQoTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IHNvdXJjZSkKKyAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UubV9sYWJlbC5tX29mZnNldCkKKyAg
ICAgICAgLCBtX2Rlc3RpbmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludHB0cl90Pjo6bWF4
KCkpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldERlc3RpbmF0aW9uKE1hY3JvQXNz
ZW1ibGVyOjpMYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIG1fZGVzdGluYXRpb24g
PSBkZXN0aW5hdGlvbi5tX2xhYmVsLm1fb2Zmc2V0OworICAgIH0KKyAgICAKKyAgICB2b2lkIGNv
cnJlY3RMYWJlbHMoTGlua0J1ZmZlciYpOworICAgIAorICAgIH5XYXRjaHBvaW50KCk7CisgICAg
CisgICAgdm9pZCBmaXJlKCk7CisgICAgCitwcml2YXRlOgorICAgIHVpbnRwdHJfdCBtX3NvdXJj
ZTsKKyAgICB1aW50cHRyX3QgbV9kZXN0aW5hdGlvbjsKK307CisKK2NsYXNzIFdhdGNocG9pbnRT
ZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXYXRjaHBvaW50U2V0PiB7CitwdWJsaWM6CisgICAgV2F0
Y2hwb2ludFNldCgpOworICAgIH5XYXRjaHBvaW50U2V0KCk7CisgICAgCisgICAgYm9vbCBpc1N0
aWxsVmFsaWQoKSBjb25zdCB7IHJldHVybiAhbV9pc0ludmFsaWRhdGVkOyB9CisgICAgYm9vbCBo
YXNCZWVuSW52YWxpZGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW52YWxpZGF0ZWQ7IH0KKyAg
ICAKKyAgICAvLyBBcyBhIGNvbnZlbmllbmNlLCB0aGlzIHdpbGwgaWdub3JlIDAuIFRoYXQncyBi
ZWNhdXNlIGNvZGUgcGF0aHMgaW4gdGhlIERGRworICAgIC8vIHRoYXQgY3JlYXRlIHNwZWN1bGF0
aW9uIHdhdGNocG9pbnRzIG1heSBjaG9vc2UgdG8gYmFpbCBvdXQgaWYgc3BlY3VsYXRpb24KKyAg
ICAvLyBoYWQgYWxyZWFkeSBiZWVuIHRlcm1pbmF0ZWQuCisgICAgdm9pZCBhZGQoV2F0Y2hwb2lu
dCopOworICAgIAorICAgIC8vIEZvcmNlIHRoZSB3YXRjaHBvaW50IHNldCB0byBiZWhhdmUgYXMg
aWYgaXQgd2FzIGJlaW5nIHdhdGNoZWQgZXZlbiBpZiBubworICAgIC8vIHdhdGNocG9pbnRzIGhh
dmUgYmVlbiBpbnN0YWxsZWQuIFRoaXMgd2lsbCByZXN1bHQgaW4gaW52YWxpZGF0aW9uIGlmIHRo
ZQorICAgIC8vIHdhdGNocG9pbnQgd291bGQgaGF2ZSBmaXJlZC4gVGhhdCdzIGEgcHJldHR5IGdv
b2QgaW5kaWNhdGlvbiB0aGF0IHlvdQorICAgIC8vIHByb2JhYmx5IGRvbid0IHdhbnQgdG8gc2V0
IHdhdGNocG9pbnRzLCBzaW5jZSB3ZSB0eXBpY2FsbHkgZG9uJ3Qgd2FudCB0bworICAgIC8vIHNl
dCB3YXRjaHBvaW50cyB0aGF0IHdlIGJlbGlldmUgd2lsbCBhY3R1YWxseSBiZSBmaXJlZC4KKyAg
ICB2b2lkIHN0YXJ0V2F0Y2hpbmcoKSB7IG1faXNXYXRjaGVkID0gdHJ1ZTsgfQorICAgIAorICAg
IHZvaWQgbm90aWZ5V3JpdGUoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2lzV2F0Y2hlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbm90aWZ5V3JpdGVTbG93KCk7CisgICAgfQorICAg
IAorICAgIGJvb2wqIGFkZHJlc3NPZklzV2F0Y2hlZCgpIHsgcmV0dXJuICZtX2lzV2F0Y2hlZDsg
fQorICAgIAorICAgIHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7IC8vIENhbGwgb25seSBpZiB5b3Un
dmUgY2hlY2tlZCBpc1dhdGNoZWQuCisgICAgCitwcml2YXRlOgorICAgIHZvaWQgZmlyZUFsbFdh
dGNocG9pbnRzKCk7CisgICAgCisgICAgU2VudGluZWxMaW5rZWRMaXN0PFdhdGNocG9pbnQsIEJh
c2ljUmF3U2VudGluZWxOb2RlPFdhdGNocG9pbnQ+ID4gbV9zZXQ7CisgICAgYm9vbCBtX2lzV2F0
Y2hlZDsKKyAgICBib29sIG1faXNJbnZhbGlkYXRlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gV2F0Y2hwb2ludF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZp
c2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCw3IEBAIHZvaWQg
UmVzb2x2ZVJlc3VsdDo6Y2hlY2tWYWxpZGl0eSgpCiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEluZGV4ZWRHbG9iYWw6CiAgICAgY2FzZSBSZWFkT25seUluZGV4ZWRHbG9iYWw6CisgICAgY2Fz
ZSBXYXRjaGVkSW5kZXhlZEdsb2JhbDoKICAgICBjYXNlIER5bmFtaWNJbmRleGVkR2xvYmFsOgog
ICAgIGNhc2UgRHluYW1pY1JlYWRPbmx5SW5kZXhlZEdsb2JhbDoKICAgICAgICAgQVNTRVJUKG1f
aW5kZXggIT0gbWlzc2luZ1N5bWJvbE1hcmtlcigpKTsKQEAgLTIxNiwxMyArMjE3LDE5IEBAIGJv
b2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcihjb25zdCBJZGUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotaW50IEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIGJvb2wgaXNDb25zdGFudCkKK2ludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xv
YmFsVmFyKAorICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBDb25zdGFudE1vZGUgY29uc3Rh
bnRNb2RlLCBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQogeworICAgIFVOVVNFRF9QQVJBTShm
dW5jdGlvbk1vZGUpOwogICAgIGludCBpbmRleCA9IHN5bWJvbFRhYmxlKCkuc2l6ZSgpOwotICAg
IFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkoaW5kZXgsIGlzQ29uc3RhbnQgPyBSZWFkT25seSA6
IDApOworICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkoaW5kZXgsIChjb25zdGFudE1vZGUg
PT0gSXNDb25zdGFudCkgPyBSZWFkT25seSA6IDApOworICAgIGlmIChmdW5jdGlvbk1vZGUgPT0g
SXNGdW5jdGlvblRvU3BlY2lhbGl6ZSkKKyAgICAgICAgbmV3RW50cnkuYXR0ZW1wdFRvV2F0Y2go
KTsKICAgICBTeW1ib2xUYWJsZTo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRk
KGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwotICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZC5ub3RpZnlXcml0ZSgpOwogICAgICAgICBpbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kLmdldEluZGV4KCk7CisgICAgfQogICAgIHJldHVybiBpbmRleDsKIH0KIApAQCAtMjg5LDE3
ICsyOTYsMjMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFBybwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvblN0YWNrLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uID0gZnVuY3Rpb25TdGFja1tpXTsKLSAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5yZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24t
PmlkZW50KCkpOyAvLyBOZXdseSBkZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4aXN0aW5n
IHByb3BlcnRpZXMuCi0KKyAgICAgICAgYm9vbCBwcm9wZXJ0eURpZEV4aXN0ID0gCisgICAgICAg
ICAgICBnbG9iYWxPYmplY3QtPnJlbW92ZURpcmVjdCgqbV9nbG9iYWxEYXRhLCBmdW5jdGlvbi0+
aWRlbnQoKSk7IC8vIE5ld2x5IGRlY2xhcmVkIGZ1bmN0aW9ucyBvdmVyd3JpdGUgZXhpc3Rpbmcg
cHJvcGVydGllcy4KKyAgICAgICAgCiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUoZXhlYywgbWFrZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uKSwgc2NvcGVDaGFpbik7
Ci0gICAgICAgIGludCBpbmRleCA9IGFkZEdsb2JhbFZhcihmdW5jdGlvbi0+aWRlbnQoKSwgZmFs
c2UpOworICAgICAgICBpbnQgaW5kZXggPSBhZGRHbG9iYWxWYXIoCisgICAgICAgICAgICBmdW5j
dGlvbi0+aWRlbnQoKSwgSXNWYXJpYWJsZSwKKyAgICAgICAgICAgICFwcm9wZXJ0eURpZEV4aXN0
ID8gSXNGdW5jdGlvblRvU3BlY2lhbGl6ZSA6IE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxl
KTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZWdpc3RlckF0KGluZGV4KS5zZXQoKm1fZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB2YXJTdGFjay5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5oYXNQcm9wZXJ0eShleGVjLCAqdmFyU3RhY2tbaV0uZmlyc3QpKQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGFkZEdsb2JhbFZhcigqdmFyU3RhY2tbaV0uZmlyc3QsIHZhclN0YWNr
W2ldLnNlY29uZCAmIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KTsKKyAgICAgICAgYWRk
R2xvYmFsVmFyKAorICAgICAgICAgICAgKnZhclN0YWNrW2ldLmZpcnN0LAorICAgICAgICAgICAg
KHZhclN0YWNrW2ldLnNlY29uZCAmIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KSA/IElz
Q29uc3RhbnQgOiBJc1ZhcmlhYmxlLAorICAgICAgICAgICAgTm90RnVuY3Rpb25Pck5vdFNwZWNp
YWxpemFibGUpOwogICAgIH0KIH0KIApAQCAtMTIwMiw3ICsxMjE1LDkgQEAgUmVzb2x2ZVJlc3Vs
dCBCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZQogICAgICAgICAgICAgaWYgKCsraXRlciA9PSBl
bmQpIHsKICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBSZXNvbHZlUmVzdWx0OjpEeW5hbWlj
RmxhZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmR5bmFtaWNJ
bmRleGVkR2xvYmFsUmVzb2x2ZShlbnRyeS5nZXRJbmRleCgpLCBkZXB0aCwgY3VycmVudFNjb3Bl
LCBmbGFncyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmluZGV4ZWRH
bG9iYWxSZXNvbHZlKGVudHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29wZSwgZmxhZ3MpOworICAg
ICAgICAgICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjppbmRleGVkR2xvYmFsUmVzb2x2ZSgK
KyAgICAgICAgICAgICAgICAgICAgZW50cnkuZ2V0SW5kZXgoKSwgY3VycmVudFNjb3BlLAorICAg
ICAgICAgICAgICAgICAgICBmbGFncyB8IChlbnRyeS5jb3VsZEJlV2F0Y2hlZCgpID8gUmVzb2x2
ZVJlc3VsdDo6V2F0Y2hlZEZsYWcgOiAwKSk7CiAgICAgICAgICAgICB9CiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAgICAgaWYgKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGpzRHlu
YW1pY0Nhc3Q8SlNBY3RpdmF0aW9uKj4oY3VycmVudFZhcmlhYmxlT2JqZWN0KSkKQEAgLTEyOTYs
NyArMTMxMSw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OnNob3VsZEF2b2lkUmVzb2wKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZShSZWdpc3RlcklEKiBkc3Qs
IGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5KQogewogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpCi0gICAgICAgIHJl
dHVybiBlbWl0R2V0U3RhdGljVmFyKGRzdCwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIHJldHVy
biBlbWl0R2V0U3RhdGljVmFyKGRzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgIAog
ICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzR2xvYmFsKCkgJiYgIXNob3VsZEF2b2lkUmVzb2x2ZUds
b2JhbCgpKSB7CiAjaWYgRU5BQkxFKEpJVCkKQEAgLTEzNzksNyArMTM5NCw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKIAogICAgICAgICBpZiAocmVzb2x2ZVJl
c3VsdC5pc1N0YXRpYygpKSB7CiAgICAgICAgICAgICAvLyBEaXJlY3RseSBpbmRleCB0aGUgcHJv
cGVydHkgbG9va3VwIGFjcm9zcyBtdWx0aXBsZSBzY29wZXMuCi0gICAgICAgICAgICBlbWl0R2V0
U3RhdGljVmFyKHByb3BEc3QsIHJlc29sdmVSZXN1bHQpOworICAgICAgICAgICAgZW1pdEdldFN0
YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICBy
ZXR1cm4gYmFzZURzdDsKICAgICAgICAgfQogCkBAIC0xNDE4LDcgKzE0MzMsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiB7CiAgICAgaWYgKHJlc29sdmVSZXN1
bHQuaXNTdGF0aWMoKSkgewogICAgICAgICBlbWl0TG9hZChiYXNlRHN0LCBqc1VuZGVmaW5lZCgp
KTsKLSAgICAgICAgZW1pdEdldFN0YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0KTsKKyAg
ICAgICAgZW1pdEdldFN0YXRpY1Zhcihwcm9wRHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7
CiAgICAgICAgIHJldHVybiBiYXNlRHN0OwogICAgIH0KIApAQCAtMTQzNiw3ICsxNDUxLDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIHJldHVybiBlbWl0
UmVzb2x2ZShwcm9wRHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0eSk7CiB9CiAKLVJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwg
Y29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCkKK1JlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2
ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsK
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAwOwogCkBAIC0xNDcyLDEzICsxNDg3LDI0IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0U3QKICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgICAgICByZXR1cm4gZHN0OwogCisgICAgY2Fz
ZSBSZXNvbHZlUmVzdWx0OjpXYXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAgLy8gU2tpcCB0
aGUgcGVlcGhvbGUgZm9yIG5vdy4gSXQncyBub3QgY2xlYXIgdGhhdCBpdCdzIHByb2ZpdGFibGUg
Z2l2ZW4KKyAgICAgICAgLy8gdGhlIERGRydzIGNhcGFiaWxpdGllcywgYW5kIHRoZSBmYWN0IHRo
YXQgaWYgaXQncyB3YXRjaGFibGUgdGhlbiB3ZQorICAgICAgICAvLyBkb24ndCBleHBlY3QgdG8g
c2VlIGFueSBwdXRfZ2xvYmFsX3ZhcidzIGFueXdheS4KKyAgICAgICAgcHJvZmlsZSA9IGVtaXRQ
cm9maWxlZE9wY29kZShvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHJlc29sdmVSZXN1bHQucmVnaXN0ZXJQb2ludGVyKCkpOworICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOyAvLyBGb3IgdGhlIGJlbmVm
aXQgb2YgdGhlIERGRy4KKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwor
ICAgICAgICByZXR1cm4gZHN0OworCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTdGF0aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVz
b2x2ZVJlc3VsdCwgUmVnaXN0ZXJJRCogdmFsdWUpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFB1dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAg
ICBzd2l0Y2ggKHJlc29sdmVSZXN1bHQudHlwZSgpKSB7CiAgICAgY2FzZSBSZXNvbHZlUmVzdWx0
OjpSZWdpc3RlcjoKQEAgLTE0OTksNiArMTUyNSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dFN0CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZl
UmVzdWx0LnJlZ2lzdGVyUG9pbnRlcigpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHZhbHVlLT5pbmRleCgpKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAKKyAgICBj
YXNlIFJlc29sdmVSZXN1bHQ6OldhdGNoZWRJbmRleGVkR2xvYmFsOgorICAgICAgICBlbWl0T3Bj
b2RlKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHJlc29sdmVSZXN1bHQucmVnaXN0ZXJQb2ludGVyKCkpOworICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoanNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ocmVzb2x2ZVJlc3VsdC5nbG9iYWxPYmplY3QoKSkt
PnN5bWJvbFRhYmxlKCkuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKS5hZGRyZXNzT2ZJc1dhdGNoZWQo
KSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChpZGVudGlmaWVy
KSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTIwMTYyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAvLyBUaGUgcmVzb2x2ZWQgYmluZGluZyBpcyBpbW11dGFibGUuCiAgICAgICAgICAgICBS
ZWFkT25seUZsYWcgPSAweDIwLAogICAgICAgICAgICAgLy8gVGhlIGJhc2Ugb2JqZWN0IGlzIHRo
ZSBnbG9iYWwgb2JqZWN0LgotICAgICAgICAgICAgR2xvYmFsRmxhZyA9IDB4NDAKKyAgICAgICAg
ICAgIEdsb2JhbEZsYWcgPSAweDQwLAorICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5IGlzIGJl
aW5nIHdhdGNoZWQsIHNvIHdyaXRlcyBzaG91bGQgYmUgc3BlY2lhbC4KKyAgICAgICAgICAgIFdh
dGNoZWRGbGFnID0gMHg4MAogICAgICAgICB9OwogICAgICAgICBlbnVtIFR5cGUgewogICAgICAg
ICAgICAgLy8gVGhlIHByb3BlcnR5IGlzIGxvY2FsLCBhbmQgc3RvcmVkIGluIGEgcmVnaXN0ZXIu
CkBAIC0xMzEsNiArMTMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAvLyBiaW5k
aW5nIGNyZWF0ZWQgd2l0aCAidmFyIiBhdCB0aGUgdG9wIGxldmVsLiBBdCBydW50aW1lIHdlJ2xs
CiAgICAgICAgICAgICAvLyBqdXN0IGluZGV4IGludG8gdGhlIGdsb2JhbCBvYmplY3QuCiAgICAg
ICAgICAgICBJbmRleGVkR2xvYmFsID0gSW5kZXhlZEZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGlj
RmxhZywKKyAgICAgICAgICAgIC8vIExpa2UgSW5kZXhlZEdsb2JhbCwgYnV0IHRoZSBwcm9wZXJ0
eSBpcyBiZWluZyB3YXRjaGVkLgorICAgICAgICAgICAgV2F0Y2hlZEluZGV4ZWRHbG9iYWwgPSBJ
bmRleGVkRmxhZyB8IEdsb2JhbEZsYWcgfCBTdGF0aWNGbGFnIHwgV2F0Y2hlZEZsYWcsCiAgICAg
ICAgICAgICAvLyBMaWtlIEluZGV4ZWRHbG9iYWwsIGJ1dCB0aGUgcHJvcGVydHkgaXMgYWxzbyBy
ZWFkLW9ubHksIGxpa2UgTmFOLAogICAgICAgICAgICAgLy8gSW5maW5pdHksIG9yIHVuZGVmaW5l
ZC4KICAgICAgICAgICAgIFJlYWRPbmx5SW5kZXhlZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgUmVh
ZE9ubHlGbGFnIHwgR2xvYmFsRmxhZyB8IFN0YXRpY0ZsYWcsCkBAIC00NDEsOCArNDQ1LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUeXBlT2YoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRVbmFyeU9wKG9wX3R5cGVvZiwg
ZHN0LCBzcmMpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbihSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBiYXNlKSB7IHJldHVybiBlbWl0Qmlu
YXJ5T3Aob3BfaW4sIGRzdCwgcHJvcGVydHksIGJhc2UsIE9wZXJhbmRUeXBlcygpKTsgfQogCi0g
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRTdGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBjb25z
dCBSZXNvbHZlUmVzdWx0Jik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRTdGF0aWNWYXIo
Y29uc3QgUmVzb2x2ZVJlc3VsdCYsIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1
bHQmLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRTdGF0
aWNWYXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImLCBSZWdpc3RlcklE
KiB2YWx1ZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmUoUmVnaXN0ZXJJRCog
ZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZUJhc2UoUmVnaXN0ZXJJRCogZHN0LCBjb25z
dCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwpAQCAtNTc0LDcg
KzU3OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgLy8gUmV0dXJu
cyB0aGUgaW5kZXggb2YgdGhlIGFkZGVkIHZhci4KLSAgICAgICAgaW50IGFkZEdsb2JhbFZhcihj
b25zdCBJZGVudGlmaWVyJiwgYm9vbCBpc0NvbnN0YW50KTsKKyAgICAgICAgZW51bSBDb25zdGFu
dE1vZGUgeyBJc0NvbnN0YW50LCBJc1ZhcmlhYmxlIH07CisgICAgICAgIGVudW0gRnVuY3Rpb25N
b2RlIHsgSXNGdW5jdGlvblRvU3BlY2lhbGl6ZSwgTm90RnVuY3Rpb25Pck5vdFNwZWNpYWxpemFi
bGUgfTsKKyAgICAgICAgaW50IGFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiwgQ29uc3Rh
bnRNb2RlLCBGdW5jdGlvbk1vZGUpOwogCiAgICAgICAgIHZvaWQgYWRkUGFyYW1ldGVyKGNvbnN0
IElkZW50aWZpZXImLCBpbnQgcGFyYW1ldGVySW5kZXgpOwogICAgICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJ
KHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDcgKzQzMCw3IEBAIFJlZ2lz
dGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWkKICAgICBpZiAocmVzb2x2ZVJlc3Vs
dC5pc1N0YXRpYygpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMo
Z2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1Zhcihm
dW5jLmdldCgpLCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRTdGF0
aWNWYXIoZnVuYy5nZXQoKSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgp
KTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbk9ySWdub3JlZChkc3QsIGZ1bmMuZ2V0KCkpLCBmdW5jLmdldCgpLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CiAgICAgfQpAQCAtNjE4
LDcgKzYxOCw3IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGUKICAg
ICB9CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0
LmlzUmVhZE9ubHkoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJlc29sdmVS
ZXN1bHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dEdldFN0YXRpY1ZhcihnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJlc29sdmVSZXN1bHQsIG1f
aWRlbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBvbGRWYWx1ZTsKICAgICAgICAgaWYgKGRzdCA9
PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgICAgICBvbGRWYWx1ZSA9IDA7
CkBAIC02MjYsNyArNjI2LDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeFJlc29sdmVOb2RlOjplbWl0
Qnl0ZQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgb2xkVmFsdWUgPSBlbWl0UG9zdElu
Y09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUu
Z2V0KCksIG1fb3BlcmF0b3IpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHZhbHVlLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgdmFsdWUuZ2V0KCkpOwog
ICAgICAgICByZXR1cm4gb2xkVmFsdWU7CiAgICAgfQogICAgIApAQCAtODAzLDkgKzgwMyw5IEBA
IFJlZ2lzdGVySUQqIFByZWZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICB9CiAKICAgICBp
ZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHko
KSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci5lbWl0
R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3Vs
dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wRHN0ID0gZ2VuZXJhdG9yLmVtaXRH
ZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVzdWx0
LCBtX2lkZW50KTsKICAgICAgICAgZW1pdFByZUluY09yRGVjKGdlbmVyYXRvciwgcHJvcERzdC5n
ZXQoKSwgbV9vcGVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJl
c29sdmVSZXN1bHQsIHByb3BEc3QuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0
YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCBwcm9wRHN0LmdldCgpKTsKICAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5n
ZXQoKSk7CiAgICAgfQogCkBAIC0xMjI2LDkgKzEyMjYsOSBAQCBSZWdpc3RlcklEKiBSZWFkTW9k
aWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAgfQogCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNT
dGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3VsdC5pc1JlYWRPbmx5KCkpIHsKLSAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIG1fcmln
aHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBt
X3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRT
dGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgcmVzdWx0KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgcmVzdWx0KTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEyNTYsNyArMTI1Niw3IEBAIFJlZ2lzdGVySUQqIEFz
c2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpKQogICAgICAgICAgICAgZHN0ID0gMDsKICAgICAgICAgUmVnaXN0ZXJJ
RCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3JpZ2h0KTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgdmFsdWUpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1ZSk7
CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKQEAgLTEzNjEsNyArMTM2MSw3IEBAIFJl
Z2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2wKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBtX2luaXQgPyBnZW5lcmF0b3IuZW1pdE5vZGUobV9pbml0KSA6IGdlbmVy
YXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKIAogICAgIGlmIChyZXNvbHZlUmVzdWx0
LmlzU3RhdGljKCkpCi0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1Zhcihy
ZXNvbHZlUmVzdWx0LCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1p
dFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1ZS5nZXQoKSk7CiAgICAg
CiAgICAgaWYgKGdlbmVyYXRvci5jb2RlVHlwZSgpICE9IEV2YWxDb2RlKQogICAgICAgICByZXR1
cm4gdmFsdWUuZ2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsy
MTksOSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiB7CiAgICAg
QVNTRVJUKG1fYmxvY2spOwogICAgIEFTU0VSVChtX2lzVmFsaWQpOwotICAgICAgICAKKyAgICAK
KyAgICBtX2RpZENsb2JiZXIgPSBmYWxzZTsKKyAgICAKICAgICBOb2RlSW5kZXggbm9kZUluZGV4
ID0gbV9ibG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtu
b2RlSW5kZXhdOwogICAgICAgICAKQEAgLTIzNyw4ICsyMzksMTIgQEAgYm9vbCBBYnN0cmFjdFN0
YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRMb2Nh
bDogewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5v
ZGUudmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEt
PnByZWRpY3Rpb24oKSA9PSBTcGVjTm9uZSkgeworICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFs
c2U7CisgICAgICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogICAgICAgICBib29sIGNhbkV4aXQgPSBmYWxzZTsKLSAgICAgICAgY2Fu
RXhpdCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKSA9PSBTcGVjTm9uZTsKICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9IG1fdmFyaWFibGVzLm9wZXJhbmQodmFyaWFibGVB
Y2Nlc3NEYXRhLT5sb2NhbCgpKTsKICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlz
Q2FwdHVyZWQoKSkgewogICAgICAgICAgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkKQEAgLTE0NzYs
NyArMTQ4Miw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Z1bmN0aW9uKTsKICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0aGUgZmFjdCB0aGF0IHdl
IGtub3cgd2hhdCB0aGUgZnVuY3Rpb24gaXMuCiAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
CisgICAgICAgIAogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAg
ICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKQEAgLTE0ODgsOCArMTQ5NCwxMyBAQCBib29s
IEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIG5vZGUuc2V0Q2Fu
RXhpdChmYWxzZSk7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAg
ICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAg
ICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
ICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOgogICAg
ICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAg
IApAQCAtMTU3OCw2ICsxNTg5LDcgQEAgaW5saW5lIHZvaWQgQWJzdHJhY3RTdGF0ZTo6Y2xvYmJl
clN0cnVjdAogICAgIGZvciAoc2l6ZV90IGkgPSBtX3ZhcmlhYmxlcy5udW1iZXJPZkxvY2Fscygp
OyBpLS07KQogICAgICAgICBtX3ZhcmlhYmxlcy5sb2NhbChpKS5jbG9iYmVyU3RydWN0dXJlcygp
OwogICAgIG1faGF2ZVN0cnVjdHVyZXMgPSBmYWxzZTsKKyAgICBtX2RpZENsb2JiZXIgPSB0cnVl
OwogfQogCiBpbmxpbmUgYm9vbCBBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKEFic3Ry
YWN0VmFsdWUmIGRlc3RpbmF0aW9uLCBBYnN0cmFjdFZhbHVlJiBpblZhcmlhYmxlLCBOb2RlSW5k
ZXggbm9kZUluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFN0YXRlLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDkgQEAg
cHVibGljOgogICAgIC8vIG9mIFRocm93LgogICAgIGJvb2wgZXhlY3V0ZSh1bnNpZ25lZCk7CiAg
ICAgCisgICAgLy8gRGlkIHRoZSBsYXN0IGV4ZWN1dGVkIG5vZGUgY2xvYmJlciB0aGUgd29ybGQ/
CisgICAgYm9vbCBkaWRDbG9iYmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaWRDbG9iYmVyOyB9Cisg
ICAgCiAgICAgLy8gSXMgdGhlIGV4ZWN1dGlvbiBzdGF0ZSBzdGlsbCB2YWxpZD8gVGhpcyB3aWxs
IGJlIGZhbHNlIGlmIGV4ZWN1dGUoKSBoYXMKICAgICAvLyByZXR1cm5lZCBmYWxzZSBwcmV2aW91
c2x5LgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQpAQCAt
Mjc0LDYgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZvdW5kQ29uc3RhbnRzOwogICAg
IAogICAgIGJvb2wgbV9pc1ZhbGlkOworICAgIGJvb2wgbV9kaWRDbG9iYmVyOwogICAgIAogICAg
IEJyYW5jaERpcmVjdGlvbiBtX2JyYW5jaERpcmVjdGlvbjsgLy8gVGhpcyBpcyBvbmx5IHNldCBm
b3IgYmxvY2tzIHRoYXQgZW5kIGluIEJyYW5jaCBhbmQgdGhhdCBleGVjdXRlIHRvIGNvbXBsZXRp
b24gKGkuZS4gbV9pc1ZhbGlkID09IHRydWUpLgogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIzNCw2ICsxMjM0LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoYm9vbAogICAgIC8vIERvZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRo
ZSBoZXVyaXN0aWNzL3JlcXVpcmVtZW50cyBmb3IgYmVpbmcKICAgICAvLyBhbiBpbmxpbmUgY2Fu
ZGlkYXRlPwogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGV4ZWN1dGFibGUtPnByb2Zp
bGVkQ29kZUJsb2NrRm9yKGtpbmQpOworICAgIGlmICghcHJvZmlsZWRCbG9jaykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAogICAgIGlmICghbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihwcm9m
aWxlZEJsb2NrLCBraW5kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMjI1MSwx
MyArMjI1NCw2MSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisKICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRHbG9i
YWxWYXIgPSBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgIEdldEdsb2JhbFZhciwKLSAgICAg
ICAgICAgICAgICBPcEluZm8obV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmpl
Y3QtPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
cmVnaXN0ZXJQb2ludGVyKSksCiAgICAgICAgICAgICAgICAgT3BJbmZvKHByZWRpY3Rpb24pKTsK
ICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRHbG9i
YWxWYXIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2dsb2JhbF92YXIpOwogICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBjYXNlIG9wX2dldF9nbG9iYWxf
dmFyX3dhdGNoYWJsZTogeworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9
IGdldFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmRdOworICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0g
bV9jb2RlQmxvY2stPmlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICBT
eW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmdldChp
ZGVudGlmaWVyLmltcGwoKSk7CisgICAgICAgICAgICBpZiAoIWVudHJ5LmNvdWxkQmVXYXRjaGVk
KCkpIHsKKyAgICAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0R2xvYmFsVmFyID0gYWRkVG9HcmFw
aCgKKyAgICAgICAgICAgICAgICAgICAgR2V0R2xvYmFsVmFyLAorICAgICAgICAgICAgICAgICAg
ICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0KGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAgICAgICAg
ICBPcEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOworICAgICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoZSB3YXRjaHBvaW50IGlzIHN0aWxsIGludGFjdCEg
VGhpcyBtZWFucyB0aGF0IHdlIHdpbGwgZ2V0IG5vdGlmaWVkIGlmIHRoZQorICAgICAgICAgICAg
Ly8gY3VycmVudCB2YWx1ZSBpbiB0aGUgZ2xvYmFsIHZhcmlhYmxlIGNoYW5nZXMuIFNvLCB3ZSBj
YW4gaW5saW5lIHRoYXQgdmFsdWUuCisgICAgICAgICAgICAvLyBNb3Jlb3ZlciwgY3VycmVudGx5
IHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIHZhbHVlIGlzIGEgSlNGdW5jdGlvbiosIHdoaWNoCisg
ICAgICAgICAgICAvLyBpbXBsaWVzIHRoYXQgaXQncyBhIGNlbGwuIFRoaXMgc2ltcGxpZmllcyB0
aGluZ3MsIHNpbmNlIGluIGdlbmVyYWwgd2UnZCBoYXZlCisgICAgICAgICAgICAvLyB0byB1c2Ug
YSBKU0NvbnN0YW50IGZvciBub24tY2VsbHMgYW5kIGEgV2Vha0pTQ29uc3RhbnQgZm9yIGNlbGxz
LiBTbyBpbnN0ZWFkCisgICAgICAgICAgICAvLyBvZiBoYXZpbmcgYm90aCBjYXNlcyB3ZSBqdXN0
IGFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhIGNlbGwuCisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIE5CLiBJZiBpdCB3YXNuJ3QgZm9yIENTRSwgR2xvYmFsVmFyV2F0Y2hwb2ludCB3b3Vs
ZCBoYXZlIG5vIG5lZWQgZm9yIHRoZQorICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcG9pbnRlci4g
QnV0IENTRSB0cmFja3MgZWZmZWN0cyBvbiBnbG9iYWwgdmFyaWFibGVzIGJ5IGNvbXBhcmluZwor
ICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcG9pbnRlcnMuIEJlY2F1c2UgQ1NFIGV4ZWN1dGVzIG11
bHRpcGxlIHRpbWVzIHdoaWxlIHRoZSBiYWNrZW5kCisgICAgICAgICAgICAvLyBleGVjdXRlcyBv
bmNlLCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBwZXJmb3JtYW5jZSB0cmFkZS1vZmY6CisgICAgICAg
ICAgICAvLyAtIFRoZSBub2RlIHJlZmVycyBkaXJlY3RseSB0byB0aGUgcmVnaXN0ZXIgcG9pbnRl
ciB0byBtYWtlIENTRSBzdXBlciBjaGVhcC4KKyAgICAgICAgICAgIC8vIC0gVG8gcGVyZm9ybSBi
YWNrZW5kIGNvZGUgZ2VuZXJhdGlvbiwgdGhlIG5vZGUgb25seSBjb250YWlucyB0aGUgaWRlbnRp
ZmllcgorICAgICAgICAgICAgLy8gICBudW1iZXIsIGZyb20gd2hpY2ggaXQgaXMgcG9zc2libGUg
dG8gZ2V0ICh2aWEgYSBmZXcgYXZlcmFnZS10aW1lIE8oMSkKKyAgICAgICAgICAgIC8vICAgbG9v
a3VwcykgdG8gdGhlIFdhdGNocG9pbnRTZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoCisgICAgICAgICAgICAgICAgR2xvYmFsVmFyV2F0Y2hwb2ludCwKKyAgICAgICAg
ICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5UaGlzT2JqZWN0
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAgICAgICAgICAg
ICAgIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5n
ZXRJbmRleCgpKS5nZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChzcGVjaWZpY1ZhbHVlLmlzQ2Vs
bCgpKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAor
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhzcGVjaWZp
Y1ZhbHVlLmFzQ2VsbCgpKSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpOworICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBvcF9wdXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwpAQCAtMjI2OCw2ICsyMzE5LDI4IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX3B1dF9nbG9iYWxfdmFyKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ug
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6IHsKKyAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9
IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CisgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0
YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5k
XTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IG1fY29kZUJsb2NrLT5pZGVu
dGlmaWVyKGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKS5nZXQoaWRlbnRpZmllci5pbXBsKCkp
OworICAgICAgICAgICAgaWYgKCFlbnRyeS5jb3VsZEJlV2F0Y2hlZCgpKSB7CisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICAgICAgUHV0R2xvYmFsVmFyLAorICAg
ICAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3RlcklzSW5U
aGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcikpLAorICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
cHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRkVG9H
cmFwaCgKKyAgICAgICAgICAgICAgICBQdXRHbG9iYWxWYXJDaGVjaywKKyAgICAgICAgICAgICAg
ICBPcEluZm8oY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhp
c09iamVjdChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAg
ICAgICAgICAgICBPcEluZm8oaWRlbnRpZmllck51bWJlciksCisgICAgICAgICAgICAgICAgdmFs
dWUpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOwor
ICAgICAgICB9CisKICAgICAgICAgLy8gPT09IEJsb2NrIHRlcm1pbmF0b3JzLiA9PT0KIAogICAg
ICAgICBjYXNlIG9wX2ptcDogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
Q2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKICAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzIpOwogICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxs
QXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CiAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQogICAgIHsKQEAg
LTQzMyw2ICs0MzksMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc2V0dXBUd29TdHViQXJn
czxHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMT4oYXJnMSwgYXJn
Mik7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhU
cnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzRXhlY1N0YXRlKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMjkgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9CiAgICAgCisgICAgYm9vbCBn
bG9iYWxWYXJXYXRjaHBvaW50RWxpbWluYXRpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdp
c3RlclBvaW50ZXIpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5C
bG9jazsgaS0tOykgeworICAgICAgICAgICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJyZW50Qmxv
Y2stPmF0KGkpOworICAgICAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOworICAg
ICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAgICAgIGNhc2UgR2xvYmFsVmFy
V2F0Y2hwb2ludDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9
PSByZWdpc3RlclBvaW50ZXIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVy
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2xvYmJlcnNXb3JsZChpbmRleCkpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICAKICAgICBOb2RlSW5kZXggZ2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbihXcml0
ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcikKICAgICB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CkBAIC0yMjYsNiArMjQ5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAgICAgICAg
IGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUucmVnaXN0
ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaW5kZXg7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05ODUsNyArMTAwOSwxMyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoZ2xvYmFsVmFyTG9hZEVsaW1pbmF0
aW9uKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAgIGlm
IChnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkp
CisgICAgICAgICAgICAgICAgZWxpbWluYXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAgICAgY2FzZSBQdXRHbG9i
YWxWYXJDaGVjazoKICAgICAgICAgICAgIGlmIChtX2ZpeHBvaW50U3RhdGUgPT0gRml4cG9pbnRO
b3RDb252ZXJnZWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBlbGltaW5h
dGUoZ2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbihub2RlLnJlZ2lzdGVyUG9pbnRlcigpKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlz
aW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGVPcGNvZGUoCiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2Fz
ZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJs
ZToKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgorICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92
YXJfY2hlY2s6CiAgICAgY2FzZSBvcF9qbXA6CiAgICAgY2FzZSBvcF9sb29wOgogICAgIGNhc2Ug
b3BfanRydWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDYgKzU2LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhRm91bmRDb25zdGFudHMpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQor
ICAgICAgICAgICAgZGF0YUxvZygiQ29uc3RhbnQgZm9sZGluZyBjb25zaWRlcmluZyBCbG9jayAj
JXUuXG4iLCBibG9ja0luZGV4KTsKKyNlbmRpZgogICAgICAgICAgICAgc3RhdGUuYmVnaW5CYXNp
Y0Jsb2NrKGJsb2NrKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJsb2NrID0g
MDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKICAgICAg
ICAgICAgICAgICBpZiAoIXN0YXRlLmlzVmFsaWQoKSkKQEAgLTkwLDcgKzkzLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0YXRlLmV4ZWN1dGUoaW5kZXhJ
bkJsb2NrKTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKQotICAg
ICAgICAgICAgICAgICAgICB8fCBtX2dyYXBoLmNsb2JiZXJzV29ybGQobm9kZSkKKyAgICAgICAg
ICAgICAgICAgICAgfHwgc3RhdGUuZGlkQ2xvYmJlcigpCiAgICAgICAgICAgICAgICAgICAgIHx8
IG5vZGUuaGFzQ29uc3RhbnQoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLmZvck5vZGUobm9kZUluZGV4KS52YWx1
ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQ
b2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVj
dGFibGVKdW1wUG9pbnQuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2
ICs2NiwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgYm9vbCBpc1NldCgp
CisgICAgeworICAgICAgICByZXR1cm4gbV9jb2RlT2Zmc2V0ICE9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzd2l0Y2hUb0xhdGVK
dW1wKE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGNoZWNrKQogICAgIHsKICNpZm5kZWYg
TkRFQlVHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDExIEBAIHZvaWQgSklU
Q29tcGlsZXI6OmxpbmtPU1JFeGl0cygpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7ICsraSkgewogICAgICAgICBPU1JFeGl0
JiBleGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7Ci0gICAgICAgIGV4aXQubV9jaGVjay5p
bml0aWFsSnVtcCgpLmxpbmsodGhpcyk7CisgICAgICAgIEFTU0VSVCghZXhpdC5tX2NoZWNrLmlz
U2V0KCkgPT0gKGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKSk7CisgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID09
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIGV4aXQu
bV9jaGVjay5pbml0aWFsSnVtcCgpLmxpbmsodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLnNldERl
c3RpbmF0aW9uKGxhYmVsKCkpOwogICAgICAgICBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgp
OwogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpKSwgJmdsb2JhbERhdGEoKS0+b3NyRXhp
dEluZGV4KTsKICAgICAgICAgZXhpdC5tX2NoZWNrLnN3aXRjaFRvTGF0ZUp1bXAocGF0Y2hhYmxl
SnVtcCgpKTsKQEAgLTE5MCw2ICsxOTQsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtC
dWZmZXImIGxpbmtCCiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhp
dChpKTsKICAgICAgICAgbGlua0J1ZmZlci5saW5rKGV4aXQubV9jaGVjay5sYXRlSnVtcCgpLCB0
YXJnZXQpOwogICAgICAgICBleGl0Lm1fY2hlY2suY29ycmVjdExhdGVKdW1wKGxpbmtCdWZmZXIp
OworICAgICAgICBpZiAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAgICAgICBjb2RlQmxvY2soKS0+d2F0Y2hwb2lu
dChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5jb3JyZWN0TGFiZWxzKGxpbmtCdWZmZXIpOwogICAg
IH0KICAgICAKICAgICBjb2RlQmxvY2soKS0+c2hyaW5rVG9GaXQoQ29kZUJsb2NrOjpMYXRlU2hy
aW5rKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMjAx
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMwLDkgKzQzMCwyMCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29w
SW5mbzsKICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNJZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2so
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hwb2ludCB8fCBv
cCgpID09IFB1dEdsb2JhbFZhckNoZWNrOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyRm9yQ2hlY2soKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0lkZW50aWZp
ZXJOdW1iZXJGb3JDaGVjaygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMjsKKyAgICB9Cisg
ICAgCiAgICAgYm9vbCBoYXNSZWdpc3RlclBvaW50ZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG9wKCkgPT0gR2V0R2xvYmFsVmFyIHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyOworICAgICAgICBy
ZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXIgfHwgb3Ao
KSA9PSBHbG9iYWxWYXJXYXRjaHBvaW50IHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyQ2hlY2s7CiAg
ICAgfQogICAgIAogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEy
MDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhQdXRTY29wZWRWYXIsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJl
cnNXb3JsZCkgXAogICAgIG1hY3JvKEdldEdsb2JhbFZhciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dEdsb2JhbFZhciwgTm9kZU11c3RHZW5lcmF0ZSkg
XAorICAgIG1hY3JvKEdsb2JhbFZhcldhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICBtYWNybyhQdXRHbG9iYWxWYXJDaGVjaywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCiAgICAgLyogT3B0aW1p
emF0aW9ucyBmb3IgYXJyYXkgbXV0YXRpb24uICovXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3
IEBAIE9TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVMKICAgICAsIG1fY29k
ZU9yaWdpbihqaXQtPm1fY29kZU9yaWdpbkZvck9TUikKICAgICAsIG1fY29kZU9yaWdpbkZvckV4
aXRQcm9maWxlKG1fY29kZU9yaWdpbikKICAgICAsIG1fcmVjb3ZlcnlJbmRleChyZWNvdmVyeUlu
ZGV4KQorICAgICwgbV93YXRjaHBvaW50SW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICwgbV9raW5kKGtpbmQpCiAgICAgLCBtX2NvdW50KDApCiAgICAgLCBt
X2FyZ3VtZW50cyhqaXQtPm1fYXJndW1lbnRzLnNpemUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBA
QCBzdHJ1Y3QgT1NSRXhpdCB7CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJv
ZmlsZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CisgICAgdW5zaWduZWQg
bV93YXRjaHBvaW50SW5kZXg7CiAgICAgCiAgICAgRXhpdEtpbmQgbV9raW5kOwogICAgIHVpbnQz
Ml90IG1fY291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNCw2ICs5MjQsMTEgQEAgdm9p
ZCogREZHX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29ucwogICAgIHJldHVybiB2aXJ0dWFs
Rm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCit2b2lkIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uTm90aWZ5R2xvYmFsVmFyV3JpdGUoV2F0Y2hwb2ludFNldCogd2F0Y2hwb2lu
dFNldCkKK3sKKyAgICB3YXRjaHBvaW50U2V0LT5ub3RpZnlXcml0ZSgpOworfQorCiBFbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBJ
ZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
ID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBA
IHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXQKIHR5cGVkZWYgdm9pZCBE
RkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgREZH
X09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VKUFApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCopOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04g
KCpWX0RGR09wZXJhdGlvbl9FUFpKKShFeGVjU3RhdGUqLCB2b2lkKiwgaW50MzJfdCwgRW5jb2Rl
ZEpTVmFsdWUpOwordHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9X
KShXYXRjaHBvaW50U2V0Kik7CiB0eXBlZGVmIHZvaWQqIERGR19PUEVSQVRJT04gKCpQX0RGR09w
ZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIAogLy8gVGhlc2Ugcm91dGluZXMgYXJlIHByb3ZpZGUg
Y2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRpb25zIG9mIG9wZXJhdGlvbnMgdG9vIGNv
bXBsZXggdG8gSklULgpAQCAtMTE2LDYgKzExNyw3IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uR2UKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKikg
V1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25DYWxs
Q3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jLCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBvcGVyYXRpb25DYWxsR2V0dGVyKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJX
cml0ZShXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmUoRXhlY1N0YXRlKiwgSWRlbnRp
ZmllciopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uUmVzb2x2ZUJhc2UoRXhlY1N0YXRlKiwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZUJhc2VTdHJpY3RQdXQo
RXhlY1N0YXRlKiwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkx
LDcgKzQ5MSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOiB7CisgICAgICAgIGNhc2UgUHV0
R2xvYmFsVmFyOgorICAgICAgICBjYXNlIFB1dEdsb2JhbFZhckNoZWNrOiB7CiAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFz
VmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY2OSw2ICs2NzAsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFRlYXJPZmZBcmd1bWVudHM6CiAgICAgICAgIGNhc2Ug
Q2hlY2tOdW1iZXI6CiAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOgorICAg
ICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlRGVmYXVsdEZsYWdzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5Niw2
ICszNTk2LDYyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazogeworICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAg
CisgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQgPQorICAgICAgICAgICAgbV9q
aXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCkuZ2V0KAor
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2so
KSktPmltcGwoKSkud2F0Y2hwb2ludFNldCgpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hUZXN0OCgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCisgICAg
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3Mod2F0Y2hwb2ludFNl
dC0+YWRkcmVzc09mSXNXYXRjaGVkKCkpKSwKKyAgICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRp
b25Ob3RpZnlHbG9iYWxWYXJXcml0ZSwgTm9SZXN1bHQsIHdhdGNocG9pbnRTZXQpKTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQoKSkgeworICAgICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgc2Ny
YXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdyaXRl
QmFycmllcihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKSwgdmFsdWUudGFn
R1BSKCksIG5vZGUuY2hpbGQxKCksIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzLCBzY3Jh
dGNoUmVnKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBpZiB3ZSBoYXBwZW4gdG8g
aGF2ZSBhIHNwYXJlIHJlZ2lzdGVyIC0gYW5kIF9PTkxZXyBpZiB3ZSBoYXBwZW4gdG8gaGF2ZQor
ICAgICAgICAvLyBhIHNwYXJlIHJlZ2lzdGVyIC0gYSBnb29kIG9wdGltaXphdGlvbiB3b3VsZCBi
ZSB0byBwdXQgdGhlIHJlZ2lzdGVyIHBvaW50ZXIgaW50bworICAgICAgICAvLyBhIHJlZ2lzdGVy
IGFuZCB0aGVuIGRvIGEgemVybyBvZmZzZXQgc3RvcmUgZm9sbG93ZWQgYnkgYSBmb3VyLW9mZnNl
dCBzdG9yZSAob3IKKyAgICAgICAgLy8gdmljZS12ZXJzYSBkZXBlbmRpbmcgb24gZW5kaWFubmVz
cykuCisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUudGFnR1BSKCksIG5vZGUucmVnaXN0ZXJQ
b2ludGVyKCktPnRhZ1BvaW50ZXIoKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUucGF5
bG9hZEdQUigpLCBub2RlLnJlZ2lzdGVyUG9pbnRlcigpLT5wYXlsb2FkUG9pbnRlcigpKTsKKwor
ICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICAgICAgCisgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OiB7CisgICAgICAgIG1faml0
Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpLmdldCgKKyAg
ICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKSktPmlt
cGwoKSkuYWRkV2F0Y2hwb2ludCgKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9p
bnQoKSk7CisgICAgICAgIAorI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkt
PnRhZ1BvaW50ZXIoKSwgc2NyYXRjaEdQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dE9LID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWws
IHNjcmF0Y2hHUFIsCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIobm9kZS5yZWdpc3RlclBvaW50
ZXIoKS0+Z2V0KCkudGFnKCkpKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKG5vZGUucmVnaXN0ZXJQ
b2ludGVyKCktPnBheWxvYWRQb2ludGVyKCksIHNjcmF0Y2hHUFIpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBvayA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKG5vZGUucmVnaXN0
ZXJQb2ludGVyKCktPmdldCgpLnBheWxvYWQoKSkpOworICAgICAgICBub3RPSy5saW5rKCZtX2pp
dCk7CisgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgb2subGluaygmbV9qaXQp
OworI2VuZGlmCisgICAgICAgIAorICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZTogewogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjAx
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNjE1LDYgKzM2MTUsNTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IFB1dEdsb2JhbFZhckNoZWNrOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOworICAgICAgICAKKyAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hw
b2ludFNldCA9CisgICAgICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3Jp
Z2luKS0+c3ltYm9sVGFibGUoKS5nZXQoCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcihub2Rl
LmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKS0+aW1wbCgpKS53YXRjaHBvaW50U2V0KCk7Cisg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFi
c29sdXRlQWRkcmVzcyh3YXRjaHBvaW50U2V0LT5hZGRyZXNzT2ZJc1dhdGNoZWQoKSkpLAorICAg
ICAgICAgICAgICAgIHRoaXMsIG9wZXJhdGlvbk5vdGlmeUdsb2JhbFZhcldyaXRlLCBOb1Jlc3Vs
dCwgd2F0Y2hwb2ludFNldCkpOworICAgICAgICAKKyAgICAgICAgaWYgKEhlYXA6OmlzV3JpdGVC
YXJyaWVyRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0Lmdsb2JhbE9iamVjdEZvcihu
b2RlLmNvZGVPcmlnaW4pLCB2YWx1ZS5ncHIoKSwgbm9kZS5jaGlsZDEoKSwgV3JpdGVCYXJyaWVy
Rm9yVmFyaWFibGVBY2Nlc3MsIHNjcmF0Y2hSZWcpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBtX2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIoKSwgbm9kZS5yZWdpc3RlclBvaW50ZXIoKSk7
CisKKyAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgICAgIAorICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDogeworICAgICAgICBt
X2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQo
CisgICAgICAgICAgICBpZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkp
LT5pbXBsKCkpLmFkZFdhdGNocG9pbnQoCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25XYXRj
aHBvaW50KCkpOworICAgICAgICAKKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgIG1faml0LmxvYWRQdHIobm9kZS5yZWdpc3RlclBvaW50
ZXIoKSwgc2NyYXRjaEdQUik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG9rID0gbV9qaXQu
YnJhbmNoUHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCBzY3JhdGNoR1BSLAor
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KEpTVmFsdWU6OmVu
Y29kZShub2RlLnJlZ2lzdGVyUG9pbnRlcigpLT5nZXQoKSkpKSk7CisgICAgICAgIG1faml0LmJy
ZWFrcG9pbnQoKTsKKyAgICAgICAgb2subGluaygmbV9qaXQpOworI2VuZGlmCisgICAgICAgIAor
ICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3Ry
dWN0dXJlKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDE0LDYgKzE0MTQs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9XIG9wZXJhdGlvbiwgV2F0Y2hwb2ludFNldCog
d2F0Y2hwb2ludFNldCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKFRydXN0
ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOworICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVu
YW1lIEFyZ3VtZW50VHlwZTE+CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihG
dW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBhcmcxKQog
ICAgIHsKQEAgLTE2NzIsNiArMTY3NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBh
cmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9ERkdPcGVyYXRpb25fVyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNo
cG9pbnRTZXQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1t
UHRyKHdhdGNocG9pbnRTZXQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKKyAgICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBB
cmd1bWVudFR5cGUxPgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rp
b25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJnMSkKICAgICB7
CkBAIC0xNzkzLDYgKzE4MDMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5tb3ZlKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbChjb25zdCBGdW5jdGlvblB0ciYgZnVu
Y3Rpb24pCisgICAgeworICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CisgICAgICAg
IHJldHVybiBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5j
dGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQxLCBHUFJSZWcgcmVzdWx0MikKICAgICB7
CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKGZ1bmN0aW9uKTsKQEAgLTIxOTMsNiArMjIwOCwzMiBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3Vt
ZW50VHlwZXMpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2Us
IG5vZGVVc2UuaW5kZXgoKSwganVtcFRvRmFpbCwgcmVjb3ZlcnkpOwogICAgIH0KKyAgICAvLyBV
c2UgdGhpcyBsaWtlIHlvdSB3b3VsZCB1c2Ugc3BlY3VsYXRpb25DaGVjaygpLCBleGNlcHQgdGhh
dCB5b3UgZG9uJ3QgcGFzcyBpdCBhIGp1bXAKKyAgICAvLyAoYmVjYXVzZSB5b3UgZG9uJ3QgaGF2
ZSB0byBleGVjdXRlIGEgYnJhbmNoOyB0aGF0J3Mga2luZCBvZiB0aGUgd2hvbGUgcG9pbnQpLCBh
bmQgeW91CisgICAgLy8gbXVzdCByZWdpc3RlciB0aGUgcmV0dXJuZWQgV2F0Y2hwb2ludCB3aXRo
IHNvbWV0aGluZyByZWxldmFudC4gSW4gZ2VuZXJhbCwgdGhpcyBzaG91bGQKKyAgICAvLyBiZSB1
c2VkIHdpdGggZXh0cmVtZSBjYXJlLiBVc2Ugc3BlY3VsYXRpb25DaGVjaygpIHVubGVzcyB5b3Un
dmUgZ290IGFuIGFtYXppbmcgcmVhc29uCisgICAgLy8gbm90IHRvLgorICAgIFdhdGNocG9pbnQq
IHNwZWN1bGF0aW9uV2F0Y2hwb2ludChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFs
dWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgeworICAgICAgICBpZiAoIW1fY29t
cGlsZU9rYXkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgQVNTRVJUKGF0KG1fY29t
cGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CisgICAg
ICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdC5jb2RlQmxvY2soKS0+b3NyRXhpdCgKKyAgICAgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0KAorICAgICAgICAgICAgICAgIE9T
UkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faml0
LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAoKSwgdGhpcykpKTsKKyAgICAg
ICAgZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9IG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRXYXRj
aHBvaW50KAorICAgICAgICAgICAgV2F0Y2hwb2ludChtX2ppdC53YXRjaHBvaW50TGFiZWwoKSkp
OworICAgICAgICByZXR1cm4gJm1faml0LmNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93
YXRjaHBvaW50SW5kZXgpOworICAgIH0KKyAgICAvLyBUaGUgZGVmYXVsdCBmb3Igc3BlY3VsYXRp
b24gd2F0Y2hwb2ludHMgaXMgdGhhdCB0aGV5J3JlIHVuY291bnRlZCwgYmVjYXVzZSB0aGUKKyAg
ICAvLyBhY3Qgb2YgZmlyaW5nIGEgd2F0Y2hwb2ludCBpbnZhbGlkYXRlcyBpdC4gU28sIGZ1dHVy
ZSByZWNvbXBpbGF0aW9ucyB3aWxsIG5vdAorICAgIC8vIGF0dGVtcHQgdG8gc2V0IHRoaXMgd2F0
Y2hwb2ludCBhZ2Fpbi4KKyAgICBXYXRjaHBvaW50KiBzcGVjdWxhdGlvbldhdGNocG9pbnQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uV2F0Y2hwb2ludChVbmNvdW50YWJsZVdh
dGNocG9pbnQsIEpTVmFsdWVTb3VyY2UoKSwgTm9Ob2RlKTsKKyAgICB9CiAgICAgdm9pZCBmb3J3
YXJkU3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVT
b3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0Zh
aWwsIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHZhbHVlUmVjb3ZlcnkpCiAgICAgewogICAgICAgICBB
U1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVu
dFR5cGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEyMDE2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjU5LDYgKzI1OSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRf
YXJndW1lbnRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3BuYW1lKQorICAg
ICAgICBERUZJTkVfT1Aob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZ2V0X2dsb2JhbF92YXIpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcG5hbWVz
KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Njb3BlZF92YXIpCkBAIC0zMjQsNiArMzI1LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyKQog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dsb2JhbF92YXIpCisgICAgICAgIERFRklORV9PUChv
cF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zY29wZWRf
dmFyKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzb2x2ZSkKICAgICAgICAgREVGSU5FX09QKG9w
X3Jlc29sdmVfYmFzZSkKQEAgLTQ4MSw2ICs0ODMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVTbG93Q2FzZXMoKQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9yZXNvbHZlX2dsb2JhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVf
Z2xvYmFsX2R5bmFtaWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yc2hpZnQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw3ICs0NjMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc01hcHBlZChpbnQgdmlydHVhbFJlZ2lz
dGVySW5kZXgpOwogICAgICAgICBib29sIGdldE1hcHBlZFBheWxvYWQoaW50IHZpcnR1YWxSZWdp
c3RlckluZGV4LCBSZWdpc3RlcklEJiBwYXlsb2FkKTsKICAgICAgICAgYm9vbCBnZXRNYXBwZWRU
YWcoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEJiB0YWcpOwotCisgICAgICAg
IAogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJl
Z2lzdGVySW5kZXgpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChp
bnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgdGFnKTsKIApAQCAtNTk5LDYgKzU5
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50
X2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3BuYW1l
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZ2xvYmFsX3ZhcihJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxl
KEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikgeyBlbWl0X29wX2dldF9nbG9iYWxfdmFyKGluc3Ry
dWN0aW9uKTsgfQogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiopOwpA
QCAtNjYyLDYgKzY2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRl
cl9zZXR0ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nbG9iYWxf
dmFyKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9j
aGVjayhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3Njb3BlZF92YXIo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmUoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfYmFzZShJbnN0cnVjdGlvbiopOwpAQCAt
NzM5LDYgKzc0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X3ByZV9pbmMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1
dF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9yc2hpZnQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyMDE2MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOTAsNiArMTA5MCwzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiAgICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVf
TEVOR1RIKG9wX3B1dF9nbG9iYWxfdmFyKSwgdmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3Zv
aWQgSklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50
ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBvaW50ZXI7CisgICAgaW50IHZh
bHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICAKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAg
IAorICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOworICAgIAorICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFic29sdXRlQWRkcmVzcyhjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5wcmVkaWNhdGVQb2ludGVyKSkpOworICAgIAorICAgIGlmIChIZWFwOjppc1dyaXRl
QmFycmllckVuYWJsZWQoKSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2Jq
ZWN0KSwgcmVnVDIpOworICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGdsb2JhbE9iamVjdCwgcmVn
VDEsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJs
ZUFjY2Vzcyk7CisgICAgfQorICAgIAorICAgIHN0b3JlMzIocmVnVDEsIHJlZ2lzdGVyUG9pbnRl
ci0+dGFnUG9pbnRlcigpKTsKKyAgICBzdG9yZTMyKHJlZ1QwLCByZWdpc3RlclBvaW50ZXItPnBh
eWxvYWRQb2ludGVyKCkpOworICAgIHVubWFwKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKKyAgICAKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2spOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxLCByZWdU
MCk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVj
dGlvbls0XS51Lm9wZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklU
OjpyZXNldFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1Yklu
Zm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9pZCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24g
MTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjcsNiArMTAyNywyOSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiAgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFs
T2JqZWN0LCByZWdUMCwgcmVnVDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmll
ckZvclZhcmlhYmxlQWNjZXNzKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92
YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsK
KyAgICAKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJl
c3MoY3VycmVudEluc3RydWN0aW9uWzNdLnUucHJlZGljYXRlUG9pbnRlcikpKTsKKworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgCisgICAgc3RvcmVQdHIocmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lz
dGVyUG9pbnRlcik7CisgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKQorICAg
ICAgICBlbWl0V3JpdGVCYXJyaWVyKGdsb2JhbE9iamVjdCwgcmVnVDAsIHJlZ1QyLCBTaG91bGRG
aWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7Cit9CisKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
eworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICAKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2Fs
bCh0aGlzLCBjdGlfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KHJlZ1QwKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3Vy
cmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNhbGwoKTsKK30K
Kwogdm9pZCBKSVQ6OnJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZm
ZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJl
bGluayhzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMjAxNjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjM3Nyw2ICsyMzc3LDE1IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwg
b3BfbmV3X2EKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoc3RhY2tGcmFtZS5jYWxsRnJhbWUs
IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIoc3RhY2tG
cmFtZS5hcmdzWzBdLmludDMyKCkpLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIoKSk7CiB9CiAK
K0RFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQorewor
ICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKyAgICAKKyAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBzeW1ib2xUYWJsZVB1dChjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLCBjYWxsRnJhbWUsIGNvZGVCbG9jay0+aWRlbnRpZmllcihz
dGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIoKSksIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCks
IHRydWUpOworfQorCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVz
b2x2ZSkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSw2
ICs0NDUsNyBAQCBleHRlcm4gIkMiIHsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfYnlf
aW5kZXgoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9pZCBKSVRf
U1RVQiBjdGlfb3BfcHV0X2J5X3ZhbChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5B
TDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfZ2V0dGVyX3NldHRlcihTVFVCX0FSR1Nf
REVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKKyAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRf
Z2xvYmFsX3Zhcl9jaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAg
ICB2b2lkIEpJVF9TVFVCIGN0aV9vcF90ZWFyX29mZl9hY3RpdmF0aW9uKFNUVUJfQVJHU19ERUNM
QVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3RlYXJfb2Zm
X2FyZ3VtZW50cyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lk
IEpJVF9TVFVCIGN0aV9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3IoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1Niw2
ICs4NTYsMTQgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfdwogICAg
IExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2ds
b2JhbF92YXJfY2hlY2spCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIHN5bWJvbFRhYmxlUHV0KGNvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCksIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1s0XS51Lm9w
ZXJhbmQpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgdHJ1ZSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiB7CiAgICAg
TExJTlRfQkVHSU4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBA
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmUKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF9iYXNlKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAt
MTAzOSw3ICsxMDM5LDcgQEAgX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgogICAgIGRpc3BhdGNo
KDQpCiAKIAotX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorbWFjcm8gZ2V0R2xvYmFsVmFyKHNp
emUpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRwIDhbUENdLCB0MAogICAgIGxvYWRp
IDRbUENdLCB0MwpAQCAtMTA0Nyw5ICsxMDQ3LDE3IEBAIF9sbGludF9vcF9nZXRfZ2xvYmFsX3Zh
cjoKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwXSwgdDEKICAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQotICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQz
CiAgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDMpCi0gICAgZGlzcGF0Y2goNCkKKyAgICBkaXNw
YXRjaChzaXplKQorZW5kCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICBnZXRHbG9i
YWxWYXIoNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOgorICAgIGdl
dEdsb2JhbFZhcig1KQogCiAKIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKQEAgLTEwNjMsNiAr
MTA3MSwyMiBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgZGlzcGF0Y2goMykKIAog
CitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRwIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBidGJueiBbdDJdLCAub3BQdXRHbG9iYWxWYXJDaGVja1Nsb3cKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykK
KyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbdDBdCisgICAgZGlzcGF0Y2goNSkKKy5vcFB1dEdsb2JhbFZhckNoZWNrU2xvdzoKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKKyAgICBk
aXNwYXRjaCg1KQorCisKIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93
LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxMjAx
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODkzLDE1ICs4OTMsMjMgQEAgX2xsaW50X29wX3B1dF9z
Y29wZWRfdmFyOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX2dldF9nbG9iYWxfdmFy
OgorbWFjcm8gZ2V0R2xvYmFsVmFyKHNpemUpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxv
YWRwIDE2W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDMKICAgICBs
b2FkcCBbdDBdLCB0MQogICAgIHN0b3JlcCB0MSwgW2NmciwgdDMsIDhdCi0gICAgbG9hZHAgMjRb
UEIsIFBDLCA4XSwgdDAKKyAgICBsb2FkcCAoc2l6ZSAtIDEpICogOFtQQiwgUEMsIDhdLCB0MAog
ICAgIHZhbHVlUHJvZmlsZSh0MSwgdDApCi0gICAgZGlzcGF0Y2goNCkKKyAgICBkaXNwYXRjaChz
aXplKQorZW5kCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICBnZXRHbG9iYWxWYXIo
NCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOgorICAgIGdldEdsb2Jh
bFZhcig1KQogCiAKIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKQEAgLTkxNCw2ICs5MjIsMjEg
QEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50
X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
cCAyNFtQQiwgUEMsIDhdLCB0MgorICAgIGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MQorICAgIGxv
YWRwIDhbUEIsIFBDLCA4XSwgdDAKKyAgICBidGJueiBbdDJdLCAub3BQdXRHbG9iYWxWYXJDaGVj
a1Nsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MikKKyAgICB3cml0ZUJhcnJp
ZXIodDIpCisgICAgc3RvcmVwIHQyLCBbdDBdCisgICAgZGlzcGF0Y2goNSkKKy5vcFB1dEdsb2Jh
bFZhckNoZWNrU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2xv
YmFsX3Zhcl9jaGVjaykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGludF9vcF9nZXRfYnlfaWQ6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRf
YnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyMDE2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTA0LDIyICs1MDQsMjUgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNG
dW5jdGlvbnNGb3JEZQogICAgIHN0cnVjdHVyZSgpLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVk
KCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpyZW1vdmVE
aXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewogICAgIGlmIChzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkg
PT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwotICAgICAg
ICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgICAgICBwdXRVbmRlZmluZWRB
dERpcmVjdE9mZnNldChvZmZzZXQpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChvZmZz
ZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIFN0cnVjdHVyZTo6cmVtb3Zl
UHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUs
IG9mZnNldCkpOwotICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcHV0
VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICBpZiAob2Zmc2V0ID09IFdURjo6
bm90Rm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwdXRVbmRlZmluZWRBdERpcmVj
dE9mZnNldChvZmZzZXQpOworICAgIHJldHVybiB0cnVlOwogfQogCiBORVZFUl9JTkxJTkUgdm9p
ZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmIHNsb3QsIFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyAr
MTc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgdm9pZCByZW1vdmVEaXJlY3QoSlNH
bG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsKKyAgICAgICAgYm9vbCByZW1vdmVEaXJlY3QoSlNH
bG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lKTsgLy8gUmV0dXJuIHRydWUgaWYgYW55dGhpbmcgaXMg
cmVtb3ZlZC4KICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3Ry
dWN0dXJlKCktPmRpZFRyYW5zaXRpb24oKTsgfQogICAgICAgICBib29sIGhhc0dldHRlclNldHRl
clByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllcygpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNzIsOSArNzIsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBl
PgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGVPYmplY3RUeXBl
KiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlu
bGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxs
KCkpCisgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgp
OworICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50
cnkgPSBpdGVyLT5zZWNvbmQ7CisgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgc2xv
dC5zZXRWYWx1ZShvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtODMsOSArODYsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
U3ltYm9sVGFibGVPYmplY3RUeXBlPgogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAg
U3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
KyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CisgICAg
QVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKAog
ICAgICAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCksIGVudHJ5
LmdldEF0dHJpYnV0ZXMoKSB8IERvbnREZWxldGUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtOTYs
OSArMTAyLDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogICAgIFN5bWJvbFRhYmxl
T2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QsCiAgICAgYm9vbCYgc2xvdElzV3JpdGVhYmxlKQogewotICAgIFN5bWJvbFRhYmxl
RW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAgICBTeW1ib2xUYWJs
ZSYgc3ltYm9sVGFibGUgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCk7CisgICAgU3ltYm9sVGFibGU6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOworICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNlY29uZDsK
KyAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICBzbG90LnNldFZhbHVlKG9iamVjdC0+
cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CiAgICAgc2xvdElzV3JpdGVhYmxl
ID0gIWVudHJ5LmlzUmVhZE9ubHkoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMiwxNSArMTIx
LDIxIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAob2JqZWN0KSk7CiAgICAgCi0g
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQor
ICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAg
ICBTeW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CisgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CisgICAg
Ym9vbCB3YXNGYXQ7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBmYXN0RW50cnkgPSBpdGVy
LT5zZWNvbmQuZ2V0RmFzdCh3YXNGYXQpOworICAgIEFTU0VSVCghZmFzdEVudHJ5LmlzTnVsbCgp
KTsKKyAgICBpZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHkoKSkgewogICAgICAgICBpZiAoc2hvdWxk
VGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAg
b2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCBvYmpl
Y3QsIHZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkod2FzRmF0KSkKKyAgICAgICAgaXRlci0+c2Vj
b25kLm5vdGlmeVdyaXRlKCk7CisgICAgb2JqZWN0LT5yZWdpc3RlckF0KGZhc3RFbnRyeS5nZXRJ
bmRleCgpKS5zZXQoZ2xvYmFsRGF0YSwgb2JqZWN0LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTEzNiw2ICsxNTEsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhB
dHRyaWJ1dGVzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5JiBl
bnRyeSA9IGl0ZXItPnNlY29uZDsKICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICBl
bnRyeS5ub3RpZnlXcml0ZSgpOwogICAgIGVudHJ5LnNldEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7
CiAgICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRh
LCBvYmplY3QsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTeW1ib2xUYWJs
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU3ltYm9sVGFibGVFbnRyeSYgU3ltYm9sVGFibGVF
bnRyeTo6Y29weVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgb3RoZXIpCit7CisgICAgQVNT
RVJUKG90aGVyLmlzRmF0KCkpOworICAgIEZhdEVudHJ5KiBuZXdGYXRFbnRyeSA9IG5ldyBGYXRF
bnRyeSgqb3RoZXIuZmF0RW50cnkoKSk7CisgICAgZnJlZUZhdEVudHJ5KCk7CisgICAgbV9iaXRz
ID0gYml0d2lzZV9jYXN0PGludHB0cl90PihuZXdGYXRFbnRyeSkgfCBGYXRGbGFnOworICAgIHJl
dHVybiAqdGhpczsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5OjpmcmVlRmF0RW50cnlTbG93
KCkKK3sKKyAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAgZGVsZXRlIGZhdEVudHJ5KCk7Cit9CisK
K2Jvb2wgU3ltYm9sVGFibGVFbnRyeTo6Y291bGRCZVdhdGNoZWQoKQoreworICAgIGlmICghaXNG
YXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9p
bnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICBpZiAoIXdhdGNocG9p
bnRzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHdhdGNocG9pbnRzLT5pc1N0
aWxsVmFsaWQoKTsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5OjphdHRlbXB0VG9XYXRjaCgp
Cit7CisgICAgRmF0RW50cnkqIGVudHJ5ID0gaW5mbGF0ZSgpOworICAgIGlmICghZW50cnktPm1f
d2F0Y2hwb2ludHMpIHsKKyAgICAgICAgZW50cnktPm1fd2F0Y2hwb2ludHMgPSBhZG9wdFJlZihu
ZXcgV2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgZW50cnktPm1fd2F0Y2hwb2ludHMtPnN0YXJ0
V2F0Y2hpbmcoKTsKKyAgICB9Cit9CisKK2Jvb2wqIFN5bWJvbFRhYmxlRW50cnk6OmFkZHJlc3NP
ZklzV2F0Y2hlZCgpCit7CisgICAgQVNTRVJUKGNvdWxkQmVXYXRjaGVkKCkpOworICAgIHJldHVy
biBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLT5hZGRyZXNzT2ZJc1dhdGNoZWQoKTsKK30KKwor
dm9pZCBTeW1ib2xUYWJsZUVudHJ5OjphZGRXYXRjaHBvaW50KFdhdGNocG9pbnQqIHdhdGNocG9p
bnQpCit7CisgICAgQVNTRVJUKGNvdWxkQmVXYXRjaGVkKCkpOworICAgIGZhdEVudHJ5KCktPm1f
d2F0Y2hwb2ludHMtPmFkZCh3YXRjaHBvaW50KTsKK30KKwordm9pZCBTeW1ib2xUYWJsZUVudHJ5
Ojpub3RpZnlXcml0ZVNsb3coKQoreworICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0g
ZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICBpZiAoIXdhdGNocG9pbnRzKQor
ICAgICAgICByZXR1cm47CisgICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdyaXRlKCk7Cit9CisKK1N5
bWJvbFRhYmxlRW50cnk6OkZhdEVudHJ5KiBTeW1ib2xUYWJsZUVudHJ5OjppbmZsYXRlU2xvdygp
Cit7CisgICAgRmF0RW50cnkqIGVudHJ5ID0gbmV3IEZhdEVudHJ5KG1fYml0cyk7CisgICAgbV9i
aXRzID0gYml0d2lzZV9jYXN0PGludHB0cl90PihlbnRyeSkgfCBGYXRGbGFnOworICAgIHJldHVy
biBlbnRyeTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzEsNTMgKzMxLDE2MyBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNp
bmNsdWRlICJVU3RyaW5nLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0
Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorICAgIGNsYXNzIFdhdGNocG9pbnQ7CisgICAgY2xhc3MgV2F0Y2hwb2ludFNl
dDsKKwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGludCBtaXNzaW5nU3ltYm9sTWFya2VyKCkg
eyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsgfQogCiAgICAgLy8gVGhl
IGJpdCB0d2lkZGxpbmcgaW4gdGhpcyBjbGFzcyBhc3N1bWVzIHRoYXQgZXZlcnkgcmVnaXN0ZXIg
aW5kZXggaXMgYQogICAgIC8vIHJlYXNvbmFibHkgc21hbGwgcG9zaXRpdmUgb3IgbmVnYXRpdmUg
bnVtYmVyLCBhbmQgdGhlcmVmb3JlIGhhcyBpdHMgaGlnaAogICAgIC8vIGZvdXIgYml0cyBhbGwg
c2V0IG9yIGFsbCB1bnNldC4KIAorICAgIC8vIEluIGFkZGl0aW9uIHRvIGltcGxlbWVudGluZyBz
ZW1hbnRpY3MtbWFuZGF0ZWQgdmFyaWFibGUgYXR0cmlidXRlcyBhbmQKKyAgICAvLyBpbXBsZW1l
bnRhdGlvbi1tYW5kYXRlZCB2YXJpYWJsZSBpbmRleGluZywgdGhpcyBjbGFzcyBhbHNvIGltcGxl
bWVudHMKKyAgICAvLyB3YXRjaHBvaW50cyB0byBiZSB1c2VkIGZvciBKSVQgb3B0aW1pemF0aW9u
cy4gQmVjYXVzZSB3YXRjaHBvaW50cyBhcmUKKyAgICAvLyBtZWFudCB0byBiZSByZWxhdGl2ZWx5
IHJhcmUsIHRoaXMgY2xhc3Mgb3B0aW1pemVzIGhlYXZpbHkgZm9yIHRoZSBjYXNlCisgICAgLy8g
dGhhdCB0aGV5IGFyZSBub3QgYmVpbmcgdXNlZC4gVG8gdGhhdCBlbmQsIHRoaXMgY2xhc3MgdXNl
cyB0aGUgdGhpbi1mYXQKKyAgICAvLyBpZGlvbTogZWl0aGVyIGl0IGlzIHRoaW4sIGluIHdoaWNo
IGNhc2UgaXQgY29udGFpbnMgYW4gaW4tcGxhY2UgZW5jb2RlZAorICAgIC8vIHdvcmQgdGhhdCBj
b25zaXN0cyBvZiBhdHRyaWJ1dGVzLCB0aGUgaW5kZXgsIGFuZCBhIGJpdCBzYXlpbmcgdGhhdCBp
dCBpcworICAgIC8vIHRoaW47IG9yIGl0IGlzIGZhdCwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlu
cyBhIHBvaW50ZXIgdG8gYSBtYWxsb2MnZAorICAgIC8vIGRhdGEgc3RydWN0dXJlIGFuZCBhIGJp
dCBzYXlpbmcgdGhhdCBpdCBpcyBmYXQuIFRoZSBtYWxsb2MnZCBkYXRhCisgICAgLy8gc3RydWN0
dXJlIHdpbGwgYmUgbWFsbG9jZWQgYSBzZWNvbmQgdGltZSB1cG9uIGNvcHksIHRvIHByZXNlcnZl
IHRoZQorICAgIC8vIHByb3BlcnR5IHRoYXQgaW4tcGxhY2UgZWRpdHMgdG8gU3ltYm9sVGFibGVF
bnRyeSBkbyBub3QgbWFuaWZlc3QgaW4gYW55CisgICAgLy8gY29waWVzLiBIb3dldmVyLCB0aGUg
bWFsbG9jJ2QgRmF0RW50cnkgZGF0YSBzdHJ1Y3R1cmUgY29udGFpbnMgYSByZWYtCisgICAgLy8g
Y291bnRlZCBwb2ludGVyIHRvIGEgc2hhcmVkIFdhdGNocG9pbnRTZXQuIFRodXMsIGluLXBsYWNl
IGVkaXRzIG9mIHRoZQorICAgIC8vIFdhdGNocG9pbnRTZXQgd2lsbCBtYW5pZmVzdCBpbiBhbGwg
Y29waWVzLiBIZXJlJ3MgYSBwaWN0dXJlOgorICAgIC8vCisgICAgLy8gU3ltYm9sVGFibGVFbnRy
eSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKyAgICAvLworICAgIC8vIElmIHlvdSBt
YWtlIGEgY29weSBvZiBhIFN5bWJvbFRhYmxlRW50cnksIHlvdSB3aWxsIGhhdmU6CisgICAgLy8K
KyAgICAvLyBvcmlnaW5hbDogU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNo
cG9pbnRTZXQKKyAgICAvLyBjb3B5OiAgICAgU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkg
LS0tLS1eCisKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7CisgICAgICAgIC8vIFVzZSB0
aGUgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBjbGFzcywgZWl0aGVyIHZpYSBpbXBsaWNpdCBjYXN0
IG9yIGJ5IGNhbGxpbmcKKyAgICAgICAgLy8gZ2V0RmFzdCgpLCB3aGVuIHlvdSAoMSkgb25seSBj
YXJlIGFib3V0IGlzTnVsbCgpLCBnZXRJbmRleCgpLCBhbmQgaXNSZWFkT25seSgpLAorICAgICAg
ICAvLyBhbmQgKDIpIHlvdSBhcmUgaW4gYSBob3QgcGF0aCB3aGVyZSB5b3UgbmVlZCB0byBtaW5p
bWl6ZSB0aGUgbnVtYmVyIG9mIHRpbWVzCisgICAgICAgIC8vIHRoYXQgeW91IGJyYW5jaCBvbiBp
c0ZhdCgpIHdoZW4gZ2V0dGluZyB0aGUgYml0cygpLgorICAgICAgICBjbGFzcyBGYXN0IHsKKyAg
ICAgICAgcHVibGljOgorICAgICAgICAgICAgRmFzdCgpCisgICAgICAgICAgICAgICAgOiBtX2Jp
dHMoMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgQUxXQVlTX0lOTElORSBGYXN0KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5KQor
ICAgICAgICAgICAgICAgIDogbV9iaXRzKGVudHJ5LmJpdHMoKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0Cisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFtX2JpdHM7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGludCBnZXRJbmRleCgpIGNvbnN0CisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9iaXRzID4+IEZsYWdCaXRz
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBib29sIGlzUmVhZE9ubHko
KSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBS
ZWFkT25seUZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVu
c2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOworICAgICAgICAgICAgICAgIGlmIChtX2JpdHMg
JiBSZWFkT25seUZsYWcpCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUmVhZE9u
bHk7CisgICAgICAgICAgICAgICAgaWYgKG1fYml0cyAmIERvbnRFbnVtRmxhZykKKyAgICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBEb250RW51bTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gYXR0cmlidXRlczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBpc0ZhdCgp
IGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIEZh
dEZsYWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgcHJpdmF0ZToKKyAg
ICAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeTsKKyAgICAgICAgICAgIGlu
dHB0cl90IG1fYml0czsKKyAgICAgICAgfTsKKwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KCkK
ICAgICAgICAgICAgIDogbV9iaXRzKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAg
IFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4KQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAg
ICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAg
ICAgICAgcGFjayhpbmRleCwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkoaW50IGluZGV4LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgICAgICAg
ICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRl
eChpbmRleCkpOwogICAgICAgICAgICAgcGFjayhpbmRleCwgYXR0cmlidXRlcyAmIFJlYWRPbmx5
LCBhdHRyaWJ1dGVzICYgRG9udEVudW0pOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB+
U3ltYm9sVGFibGVFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZyZWVGYXRFbnRyeSgp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGNvbnN0IFN5
bWJvbFRhYmxlRW50cnkmIG90aGVyKQorICAgICAgICAgICAgOiBtX2JpdHMoMCkKKyAgICAgICAg
eworICAgICAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgU3ltYm9sVGFibGVFbnRyeSYgb3BlcmF0b3I9KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90
aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkob3RoZXIuaXNGYXQoKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHlTbG93KG90aGVyKTsKKyAgICAgICAgICAgIGZy
ZWVGYXRFbnRyeSgpOworICAgICAgICAgICAgbV9iaXRzID0gb3RoZXIubV9iaXRzOworICAgICAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBib29sIGlz
TnVsbCgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhbV9iaXRzOworICAg
ICAgICAgICAgcmV0dXJuICFiaXRzKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgZ2V0SW5k
ZXgoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9iaXRzID4+IEZsYWdC
aXRzOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYml0cygpID4+IEZsYWdC
aXRzKTsKICAgICAgICAgfQotCisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3Qg
Z2V0RmFzdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBGYXN0KCp0aGlz
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBGYXN0IGdldEZh
c3QoYm9vbCYgd2FzRmF0KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBGYXN0IHJlc3Vs
dDsKKyAgICAgICAgICAgIHdhc0ZhdCA9IGlzRmF0KCk7CisgICAgICAgICAgICBpZiAod2FzRmF0
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBmYXRFbnRyeSgpLT5tX2JpdHM7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0czsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAg
IHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKLSAgICAgICAgICAgIGlmIChtX2JpdHMgJiBSZWFkT25s
eUZsYWcpCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBSZWFkT25seTsKLSAgICAgICAg
ICAgIGlmIChtX2JpdHMgJiBEb250RW51bUZsYWcpCi0gICAgICAgICAgICAgICAgYXR0cmlidXRl
cyB8PSBEb250RW51bTsKLSAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgICAgICAg
ICAgcmV0dXJuIGdldEZhc3QoKS5nZXRBdHRyaWJ1dGVzKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICB2b2lkIHNldEF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmlidXRlcykKQEAgLTg3LDMwICsxOTcs
MTI1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBSZWFkT25seUZsYWc7Cisg
ICAgICAgICAgICByZXR1cm4gYml0cygpICYgUmVhZE9ubHlGbGFnOwogICAgICAgICB9Ci0KKyAg
ICAgICAgCisgICAgICAgIGJvb2wgY291bGRCZVdhdGNoZWQoKTsKKyAgICAgICAgCisgICAgICAg
IC8vIE5vdGlmeSBhbiBvcHBvcnR1bml0eSB0byBjcmVhdGUgYSB3YXRjaHBvaW50IGZvciBhIHZh
cmlhYmxlLiBUaGlzIGlzCisgICAgICAgIC8vIGlkZW1wb3RlbnQgYW5kIGZhaWwtc2lsZW50LiBJ
dCBpcyBpZGVtcG90ZW50IGluIHRoZSBzZW5zZSB0aGF0IGlmCisgICAgICAgIC8vIGEgd2F0Y2hw
b2ludCBzZXQgaGFkIGFscmVhZHkgYmVlbiBjcmVhdGVkLCB0aGVuIGFub3RoZXIgb25lIHdpbGwg
bm90CisgICAgICAgIC8vIGJlIGNyZWF0ZWQuIEhlbmNlIHR3byBjYWxscyB0byB0aGlzIG1ldGhv
ZCBoYXZlIHRoZSBzYW1lIGVmZmVjdCBhcworICAgICAgICAvLyBvbmUgY2FsbC4gSXQgaXMgYWxz
byBmYWlsLXNpbGVudCwgaW4gdGhlIHNlbnNlIHRoYXQgaWYgYSB3YXRjaHBvaW50CisgICAgICAg
IC8vIHNldCBoYWQgYmVlbiBjcmVhdGVkIGFuZCBoYWQgYWxyZWFkeSBiZWVuIGludmFsaWRhdGVk
LCB0aGVuIHRoaXMgd2lsbAorICAgICAgICAvLyBqdXN0IHJldHVybi4gVGhpcyBtZWFucyB0aGF0
IGNvdWxkQmVXYXRjaGVkKCkgbWF5IHJldHVybiBmYWxzZSBldmVuCisgICAgICAgIC8vIGltbWVk
aWF0ZWx5IGFmdGVyIGEgY2FsbCB0byBhdHRlbXB0VG9XYXRjaCgpLgorICAgICAgICB2b2lkIGF0
dGVtcHRUb1dhdGNoKCk7CisgICAgICAgIAorICAgICAgICBib29sKiBhZGRyZXNzT2ZJc1dhdGNo
ZWQoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgYWRkV2F0Y2hwb2ludChXYXRjaHBvaW50Kik7
CisgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlX
cml0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG5vdGlmeVdyaXRlU2xvdygpOworICAg
ICAgICB9CisgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBSZWFkT25seUZsYWcgPSAweDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBE
b250RW51bUZsYWcgPSAweDI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb3ROdWxs
RmxhZyA9IDB4NDsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEZsYWdCaXRzID0gMzsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IEZhdEZsYWcgPSAweDE7CisgICAgICAgIHN0
YXRpYyBjb25zdCBpbnRwdHJfdCBSZWFkT25seUZsYWcgPSAweDI7CisgICAgICAgIHN0YXRpYyBj
b25zdCBpbnRwdHJfdCBEb250RW51bUZsYWcgPSAweDQ7CisgICAgICAgIHN0YXRpYyBjb25zdCBp
bnRwdHJfdCBOb3ROdWxsRmxhZyA9IDB4ODsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90
IEZsYWdCaXRzID0gNDsKKyAgICAgICAgCisgICAgICAgIGNsYXNzIEZhdEVudHJ5IHsKKyAgICAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBwdWJsaWM6CisgICAgICAg
ICAgICBGYXRFbnRyeShpbnRwdHJfdCBiaXRzKQorICAgICAgICAgICAgICAgIDogbV9iaXRzKGJp
dHMgfCBGYXRGbGFnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBpbnRwdHJfdCBtX2JpdHM7IC8vIGFsd2F5cyBoYXMgRmF0RmxhZyBzZXQg
YW5kIGV4YWN0bHkgbWF0Y2hlcyB3aGF0IHRoZSBiaXRzIHdvdWxkIGhhdmUgYmVlbiBpZiB0aGlz
IHdhc24ndCBmYXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlZlB0cjxXYXRjaHBvaW50
U2V0PiBtX3dhdGNocG9pbnRzOworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSYgY29weVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOworICAgICAgICAKKyAgICAg
ICAgYm9vbCBpc0ZhdCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2Jp
dHMgJiBGYXRGbGFnOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBGYXRFbnRy
eSogZmF0RW50cnkoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQo
KSk7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IEZhdEVudHJ5Kj4obV9i
aXRzICYgfkZhdEZsYWcpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSog
ZmF0RW50cnkoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CisgICAg
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZhdEVudHJ5Kj4obV9iaXRzICYgfkZhdEZsYWcp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogaW5mbGF0ZSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoaXNGYXQoKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhdEVudHJ5KCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbGF0ZVNsb3coKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgRmF0RW50cnkqIGluZmxhdGVTbG93KCk7CisgICAg
ICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90IGJpdHMoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoaXNGYXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmF0
RW50cnkoKS0+bV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIG1fYml0czsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBpbnRwdHJfdCYgYml0cygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYXRF
bnRyeSgpLT5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB2b2lkIGZyZWVGYXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGZyZWVGYXRFbnRyeVNsb3coKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dm9pZCBmcmVlRmF0RW50cnlTbG93KCk7CiAKICAgICAgICAgdm9pZCBwYWNrKGludCBpbmRleCwg
Ym9vbCByZWFkT25seSwgYm9vbCBkb250RW51bSkKICAgICAgICAgewotICAgICAgICAgICAgbV9i
aXRzID0gKGluZGV4IDw8IEZsYWdCaXRzKSB8IE5vdE51bGxGbGFnOworICAgICAgICAgICAgaW50
cHRyX3QmIGJpdHNSZWYgPSBiaXRzKCk7CisgICAgICAgICAgICBiaXRzUmVmID0gKHN0YXRpY19j
YXN0PGludHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMpIHwgTm90TnVsbEZsYWc7CiAgICAgICAg
ICAgICBpZiAocmVhZE9ubHkpCi0gICAgICAgICAgICAgICAgbV9iaXRzIHw9IFJlYWRPbmx5Rmxh
ZzsKKyAgICAgICAgICAgICAgICBiaXRzUmVmIHw9IFJlYWRPbmx5RmxhZzsKICAgICAgICAgICAg
IGlmIChkb250RW51bSkKLSAgICAgICAgICAgICAgICBtX2JpdHMgfD0gRG9udEVudW1GbGFnOwor
ICAgICAgICAgICAgICAgIGJpdHNSZWYgfD0gRG9udEVudW1GbGFnOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBib29sIGlzVmFsaWRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAoKGluZGV4IDw8IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gaW5k
ZXg7CisgICAgICAgICAgICByZXR1cm4gKChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8
IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KTsK
ICAgICAgICAgfQogCi0gICAgICAgIGludCBtX2JpdHM7CisgICAgICAgIGludHB0cl90IG1fYml0
czsKICAgICB9OwogCiAgICAgc3RydWN0IFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzIDogSGFz
aFRyYWl0czxTeW1ib2xUYWJsZUVudHJ5PiB7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTYyKQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAx
Mi0wNi0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBz
aG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IGFiaWxpdHkgdG8gc2V0IHRoZSBpbmxpbmUgY2FwYWNpdHkgb2Ygc2VnbWVudGVkIHZlY3RvcnMu
CisKKyAgICAgICAgKiB3dGYvU2VnbWVudGVkVmVjdG9yLmg6CisgICAgICAgIChXVEYpOgorICAg
ICAgICAoU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpTZWdtZW50ZWRW
ZWN0b3JJdGVyYXRvcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6U2VnbWVudGVkVmVjdG9y
SXRlcmF0b3I6OlNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKToKKyAgICAgICAgKFNlZ21lbnRlZFZl
Y3Rvcik6CisKIDIwMTItMDYtMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBUcnkgdG8gZml4IHRoZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Nl
Z21lbnRlZFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZl
Y3Rvci5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0LDEyIEBACiBuYW1lc3BhY2UgV1RGIHsK
IAogICAgIC8vIEFuIGl0ZXJhdG9yIGZvciBTZWdtZW50ZWRWZWN0b3IuIEl0IHN1cHBvcnRzIG9u
bHkgdGhlIHByZSArKyBvcGVyYXRvcgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
U2VnbWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3RvcjsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplPiBjbGFzcyBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvciB7
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZSA9IDgsIHNpemVf
dCBJbmxpbmVDYXBhY2l0eSA9IDMyPiBjbGFzcyBTZWdtZW50ZWRWZWN0b3I7CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZSA9IDgsIHNpemVfdCBJbmxpbmVDYXBh
Y2l0eSA9IDMyPiBjbGFzcyBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgZnJpZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZT47Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemUsIElubGlu
ZUNhcGFjaXR5PjsKICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9y
SXRlcmF0b3I8VCwgU2VnbWVudFNpemU+IEl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIFNlZ21l
bnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4gSXRlcmF0
b3I7CiAKICAgICAgICAgflNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKCkgeyB9CiAKQEAgLTc1LDcg
Kzc1LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCAhPSBv
dGhlci5tX2luZGV4IHx8IG1fc2VnbWVudCAhPSBvdGhlci5tX3NlZ21lbnQgfHwgJm1fdmVjdG9y
ICE9ICZvdGhlci5tX3ZlY3RvcjsKICAgICAgICAgfQogCi0gICAgICAgIFNlZ21lbnRlZFZlY3Rv
ckl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2Vn
bWVudFNpemU+JiBvdGhlcikKKyAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3ImIG9wZXJh
dG9yPShjb25zdCBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5l
Q2FwYWNpdHk+JiBvdGhlcikKICAgICAgICAgewogICAgICAgICAgICAgbV92ZWN0b3IgPSBvdGhl
ci5tX3ZlY3RvcjsKICAgICAgICAgICAgIG1fc2VnbWVudCA9IG90aGVyLm1fc2VnbWVudDsKQEAg
LTg0LDI1ICs4NCwyOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoU2VnbWVudGVkVmVjdG9yPFQsIFNl
Z21lbnRTaXplPiYgdmVjdG9yLCBzaXplX3Qgc2VnbWVudCwgc2l6ZV90IGluZGV4KQorICAgICAg
ICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcihTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemUs
IElubGluZUNhcGFjaXR5PiYgdmVjdG9yLCBzaXplX3Qgc2VnbWVudCwgc2l6ZV90IGluZGV4KQog
ICAgICAgICAgICAgOiBtX3ZlY3Rvcih2ZWN0b3IpCiAgICAgICAgICAgICAsIG1fc2VnbWVudChz
ZWdtZW50KQogICAgICAgICAgICAgLCBtX2luZGV4KGluZGV4KQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemU+JiBtX3ZlY3RvcjsK
KyAgICAgICAgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4m
IG1fdmVjdG9yOwogICAgICAgICBzaXplX3QgbV9zZWdtZW50OwogICAgICAgICBzaXplX3QgbV9p
bmRleDsKICAgICB9OwogCiAgICAgLy8gU2VnbWVudGVkVmVjdG9yIGlzIGp1c3QgbGlrZSBWZWN0
b3IsIGJ1dCBpdCBkb2Vzbid0IG1vdmUgdGhlIHZhbHVlcwogICAgIC8vIHN0b3JlZCBpbiBpdHMg
YnVmZmVyIHdoZW4gaXQgZ3Jvd3MuIFRoZXJlZm9yZSwgaXQgaXMgc2FmZSB0byBrZWVwCi0gICAg
Ly8gcG9pbnRlcnMgaW50byBhIFNlZ21lbnRlZFZlY3Rvci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplPiBjbGFzcyBTZWdtZW50ZWRWZWN0b3IgewotICAgICAg
ICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+Owor
ICAgIC8vIHBvaW50ZXJzIGludG8gYSBTZWdtZW50ZWRWZWN0b3IuIFRoZSBkZWZhdWx0IHR1bmlu
ZyB2YWx1ZXMgYXJlCisgICAgLy8gb3B0aW1pemVkIGZvciBzZWdtZW50ZWQgdmVjdG9ycyB0aGF0
IGdldCBsYXJnZTsgeW91IG1heSB3YW50IHRvIHVzZQorICAgIC8vIFNlZ21lbnRlZFZlY3Rvcjx0
aGluZ3ksIDEsIDA+IGlmIHlvdSBkb24ndCBleHBlY3QgYSBsb3Qgb2YgZW50cmllcy4KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplLCBzaXplX3QgSW5saW5lQ2Fw
YWNpdHk+CisgICAgY2xhc3MgU2VnbWVudGVkVmVjdG9yIHsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT47
CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQs
IFNlZ21lbnRTaXplPiBJdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJ
dGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+IEl0ZXJhdG9yOwogCiAgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcigpCiAgICAgICAgICAgICA6IG1fc2l6ZSgwKQpAQCAtMjUwLDcg
KzI1Myw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAgIHNpemVfdCBtX3NpemU7CiAgICAg
ICAgIFNlZ21lbnQgbV9pbmxpbmVTZWdtZW50OwotICAgICAgICBWZWN0b3I8U2VnbWVudCosIDMy
PiBtX3NlZ21lbnRzOworICAgICAgICBWZWN0b3I8U2VnbWVudCosIElubGluZUNhcGFjaXR5PiBt
X3NlZ21lbnRzOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTIwMTYyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTItMDYtMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
KworICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gc2V0IHdhdGNocG9pbnRzIG9uIGdsb2Jh
bCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4NjkyCisKKyAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisg
ICAgICAgIAorICAgICAgICBBZGRlZCBhIHRlc3QgZm9yIHdhdGNocG9pbnRzLiBBbHNvIHVwZGF0
ZWQgdGhlIGpzYy10ZXN0LWxpc3QgdG8gaW5jbHVkZSB0aGUgbGF0ZXN0CisgICAgICAgIHRlc3Rz
LgorCisgICAgICAgICogZmFzdC9qcy9kZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24t
aGl0LXdhdGNocG9pbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9qc2MtdGVzdC1s
aXN0OgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1jYWxsLWZ1bmN0aW9uLWhp
dC13YXRjaHBvaW50LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChiYXIpOgor
ICAgICAgICAoLmZvbyk6CisKIDIwMTItMDYtMTIgIEVkYWVuYSBTYWxpbmFzIEphc3NvICA8ZWRh
ZW5hQGFwcGxlLmNvbT4KIAogICAgICAgICBDYW4ndCBzZXQgZWwudHlwZSBvbiBhIDxidXR0b24+
IGVsZW1lbnQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0
LXdhdGNocG9pbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0Y2hw
b2ludC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA5IEBACitUZXN0cyBj
b3JyZWN0bmVzcyBvZiBmdW5jdGlvbiBjYWxscyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBvdmVyd3Jp
dHRlbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyAxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDUK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyA3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgOQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDExCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTMKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAxNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE3CitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMTkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyMQorUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDIzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNwor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDI5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMzEKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAzMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDM1CitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMzcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAzOQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDQxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgNDMKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyA0NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDQ3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNDkK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyA1MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDUzCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgNTUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA1NworUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDU5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNjEKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyA2MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDY1CitQQVNTIGJhcihpLCBpICsgMSkg
aXMgNjcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA2OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDcx
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNzMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA3NQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDc3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNzkKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyA4MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDgzCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgODUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA4NworUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDg5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgOTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA5
MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDk1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgOTcKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyA5OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEwMQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDEwMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEwNQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDEwNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEwOQorUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDExMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDExMworUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDExNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDExNworUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDExOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEyMQorUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDEyMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEyNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEy
NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEyOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEzMQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDEzMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEzNQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDEzNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDEzOQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDE0MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE0MworUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDE0NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE0NworUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDE0OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE1MQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDE1MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE1NQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDE1NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE1OQorUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDE2MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE2MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE2
NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE2NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE2OQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDE3MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE3MworUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDE3NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE3NworUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDE3OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE4MQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDE4MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE4NQorUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDE4NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE4OQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDE5MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE5MworUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDE5NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE5NworUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDE5OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIwMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIw
MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIwNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIwNwor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDIwOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIxMQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDIxMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIxNQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDIxNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIxOQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDIyMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIyMworUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDIyNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIyNworUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDIyOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIzMQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDIzMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIzNQorUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDIzNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIzOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI0
MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI0MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI0NQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDI0NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI0OQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDI1MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI1MworUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDI1NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI1NworUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDI1OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI2MQorUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDI2MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI2NQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDI2NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI2OQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDI3MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI3MworUEFTUyBiYXIoaSwgaSArIDEpIGlz
IDI3NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI3NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI3
OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI4MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI4Mwor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDI4NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI4NworUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDI4OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI5MQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDI5MworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI5NQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDI5NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDI5OQorUEFTUyBiYXIoaSwg
aSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
LTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsg
MSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlz
IC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0x
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2Rm
Zy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRjaHBvaW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9kZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0
Y2hwb2ludC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNo
cG9pbnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9qc2MtdGVzdC1saXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvanNjLXRl
c3QtbGlzdAkocmV2aXNpb24gMTIwMTYyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9qc2MtdGVz
dC1saXN0CSh3b3JraW5nIGNvcHkpCkBAIC02NCwyMyArNjQsNDUgQEAgZmFzdC9qcy9kZWJ1Z2dl
cgogZmFzdC9qcy9kZWNsYXJhdGlvbi1pbi1ibG9jawogZmFzdC9qcy9kZWxldGUtZ2V0dGVycy1z
ZXR0ZXJzCiBmYXN0L2pzL2RlbGV0ZS10aGVuLXB1dAotZmFzdC9qcy9kZmctYXJndW1lbnRzLW9z
ci1leGl0Ci1mYXN0L2pzL2RmZy1hcmd1bWVudHMtbWl4ZWQtYWxpYXMKK2Zhc3QvanMvZGZnLWFk
ZC1ub3QtbnVtYmVyCitmYXN0L2pzL2RmZy1hcmd1bWVudHMtYWxpYXMtZXNjYXBlCitmYXN0L2pz
L2RmZy1hcmd1bWVudHMtYWxpYXMtb25lLWJsb2NrLW9zci1leGl0CitmYXN0L2pzL2RmZy1hcmd1
bWVudHMtYWxpYXMtb25lLWJsb2NrLW92ZXJ3cml0ZS1hcmd1bWVudHMKK2Zhc3QvanMvZGZnLWFy
Z3VtZW50cy1hbGlhcy1vbmUtYmxvY2stb3ZlcndyaXRlCitmYXN0L2pzL2RmZy1hcmd1bWVudHMt
YWxpYXMtb25lLWJsb2NrCitmYXN0L2pzL2RmZy1hcmd1bWVudHMtYWxpYXMKIGZhc3QvanMvZGZn
LWFyZ3VtZW50cy1jcm9zcy1jb2RlLW9yaWdpbgorZmFzdC9qcy9kZmctYXJndW1lbnRzLW1peGVk
LWFsaWFzCitmYXN0L2pzL2RmZy1hcmd1bWVudHMtb3NyLWV4aXQKK2Zhc3QvanMvZGZnLWFyZ3Vt
ZW50cy1vdXQtb2YtYm91bmRzCiBmYXN0L2pzL2RmZy1hcmd1bWVudHMtdW5leHBlY3RlZC1lc2Nh
cGUKLWZhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcwotZmFzdC9qcy9kZmctYXJndW1lbnRzLWFs
aWFzLWVzY2FwZQogZmFzdC9qcy9kZmctYXJyYXktbGVuZ3RoLWRlYWQKK2Zhc3QvanMvZGZnLWJy
YW5jaC1ub3QtZmFpbAorZmFzdC9qcy9kZmctY2hlY2stdHdvLXN0cnVjdHVyZXMKK2Zhc3QvanMv
ZGZnLWNvbnN0YW50LWZvbGQtZmlyc3QtbG9jYWwtcmVhZC1hZnRlci1ibG9jay1tZXJnZQogZmFz
dC9qcy9kZmctY29udmVydC10aGlzLWRvbS13aW5kb3cKK2Zhc3QvanMvZGZnLWNzZS1jZmEtZGlz
Y3JlcGFuY3kKK2Zhc3QvanMvZGZnLWRlYWQtbWluLW9uZS1hcmcKK2Zhc3QvanMvZGZnLWRlYWQt
bWluLXR3by1hcmdzCitmYXN0L2pzL2RmZy1kZWFkLXNwZWN1bGF0aW9uCitmYXN0L2pzL2RmZy1k
ZWFkLXZhcmlhYmxlLW9uLWV4aXQKK2Zhc3QvanMvZGZnLWRvdWJsZS11c2Utb2YtcG9zdC1zaW1w
bGlmaWNhdGlvbi1kb3VibGUtcHJlZGljdGlvbgogZmFzdC9qcy9kZmctZG91YmxlLXZvdGUtZnV6
egogZmFzdC9qcy9kZmctZXhjZXB0aW9uCiBmYXN0L2pzL2RmZy1mbG9hdDMyYXJyYXkKIGZhc3Qv
anMvZGZnLWZsb2F0NjRhcnJheQorZmFzdC9qcy9kZmctZmx1c2gtZ2V0LWxvY2FsCiBmYXN0L2pz
L2RmZy1nZXQtYnktdmFsLWNsb2JiZXIKIGZhc3QvanMvZGZnLWdldC1ieS12YWwtZ2V0dGVyLWNz
ZQogZmFzdC9qcy9kZmctZ2V0dGVyLXRocm93CiBmYXN0L2pzL2RmZy1nZXR0ZXIKK2Zhc3QvanMv
ZGZnLWlubGluZS1hcmd1bWVudHMtYmVjb21lLWRvdWJsZQorZmFzdC9qcy9kZmctaW5saW5lLWFy
Z3VtZW50cy1iZWNvbWUtaW50MzIKIGZhc3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMtaW50MzIK
K2Zhc3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMtb3NyLWV4aXQtYW5kLWNhcHR1cmUKK2Zhc3Qv
anMvZGZnLWlubGluZS1hcmd1bWVudHMtb3V0LW9mLWJvdW5kcworZmFzdC9qcy9kZmctaW5saW5l
LWFyZ3VtZW50cy1yZXNldC1jaGFuZ2V0eXBlCitmYXN0L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRz
LXJlc2V0CiBmYXN0L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRzLXNpbXBsZQogZmFzdC9qcy9kZmct
aW5saW5lLWFyZ3VtZW50cy11c2UtZGlyZWN0bHktZnJvbS1pbmxpbmVkLWNvZGUKIGZhc3QvanMv
ZGZnLWlubGluZS1hcmd1bWVudHMtdXNlLWZyb20tYWxsLXRoZS1wbGFjZXMtYnJva2VuCkBAIC05
Niw2ICsxMTgsNyBAQCBmYXN0L2pzL2RmZy1pbmxpbmUtdW51c2VkLXRoaXMtbWV0aG9kLWNoCiBm
YXN0L2pzL2RmZy1pbmxpbmUtdW51c2VkLXRoaXMKIGZhc3QvanMvZGZnLWlubGluaW5nLXJlZy1h
bGxvYwogZmFzdC9qcy9kZmctaW50MTZhcnJheQorZmFzdC9qcy9kZmctaW50MzItdG8tZG91Ymxl
LW9uLWtub3duLW51bWJlcgogZmFzdC9qcy9kZmctaW50MzJhcnJheS1vdmVyZmxvdy12YWx1ZXMK
IGZhc3QvanMvZGZnLWludDMyYXJyYXkKIGZhc3QvanMvZGZnLWludDhhcnJheQpAQCAtMTA1LDE1
ICsxMjgsMjQgQEAgZmFzdC9qcy9kZmctaW50cmluc2ljLXVudXNlZC10aGlzLW1ldGhvZAogZmFz
dC9qcy9kZmctaW50cmluc2ljLXVudXNlZC10aGlzCiBmYXN0L2pzL2RmZy1taW4tbWF4CiBmYXN0
L2pzL2RmZy1tdWx0aXBseQorZmFzdC9qcy9kZmctbmVnYXRpdmUtYXJyYXktaW5kZXgKK2Zhc3Qv
anMvZGZnLW9idmlvdXMtY29uc3RhbnQtY2ZhCiBmYXN0L2pzL2RmZy1vdGhlci1icmFuY2gKIGZh
c3QvanMvZGZnLXBvaXNvbi1mdXp6CitmYXN0L2pzL2RmZy1wcm90by1hY2Nlc3MtaW5saW5lLW9z
ci1leGl0CitmYXN0L2pzL2RmZy1wdXQtYnktaWQtcHJvdG90eXBlLWNoZWNrCitmYXN0L2pzL2Rm
Zy1wdXRieXZhbC1jZmEtY2xvYmJlcgogZmFzdC9qcy9kZmctc3RyaW5nLXN0cmljdGVxCitmYXN0
L2pzL2RmZy10ZWFyLW9mZi1hcmd1bWVudHMtbm90LWFjdGl2YXRpb24KIGZhc3QvanMvZGZnLXVp
bnQxNmFycmF5Ci1mYXN0L2pzL2RmZy11aW50MzJhcnJheS1vdmVyZmxvdy12YWx1ZXMKLWZhc3Qv
anMvZGZnLXVpbnQzMi10by1udW1iZXIKIGZhc3QvanMvZGZnLXVpbnQzMi10by1udW1iZXItb24t
Y2FwdHVyZWQtdmFyaWFibGUKK2Zhc3QvanMvZGZnLXVpbnQzMi10by1udW1iZXIKK2Zhc3QvanMv
ZGZnLXVpbnQzMmFycmF5LW92ZXJmbG93LWNvbnN0YW50CitmYXN0L2pzL2RmZy11aW50MzJhcnJh
eS1vdmVyZmxvdy12YWx1ZXMKK2Zhc3QvanMvZGZnLXVpbnQzMmFycmF5CiBmYXN0L2pzL2RmZy11
aW50OGFycmF5CiBmYXN0L2pzL2RmZy11aW50OGNsYW1wZWRhcnJheQorZmFzdC9qcy9kZmctd2Vh
ay1qcy1jb25zdGFudC1zaWxlbnQtZmlsbAogZmFzdC9qcy9kaWN0aW9uYXJ5LW5vLWNhY2hlCiBm
YXN0L2pzL2RpY3Rpb25hcnktcHJvdG90eXBlLWNhY2hpbmcKIGZhc3QvanMvZG8td2hpbGUtc2Vt
aWNvbG9uCkBAIC0xMjYsNiArMTU4LDcgQEAgZmFzdC9qcy9ldmFsLXZhci1kZWNsCiBmYXN0L2pz
L2V4Y2VwdGlvbi1leHByZXNzaW9uLW9mZnNldAogZmFzdC9qcy9leGNlcHRpb24tZm9yLW5vbm9i
amVjdAogZmFzdC9qcy9leGNlcHRpb24tbGluZW51bXMKK2Zhc3QvanMvZXhjZXB0aW9uLXByb3Bh
Z2F0ZS1mcm9tLWRmZy10by1sbGludAogZmFzdC9qcy9leGNlcHRpb24tcHJvcGVydGllcwogZmFz
dC9qcy9leGNlcHRpb24tdHJ5LWZpbmFsbHktc2NvcGUtZXJyb3IKIGZhc3QvanMvZXhjZXB0aW9u
LXdpdGgtaGFuZGxlci1pbnNpZGUtZXZhbC13aXRoLWR5bmFtaWMtc2NvcGUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRjaHBv
aW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2Rm
Zy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRjaHBvaW50LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9p
bnQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK2Rlc2NyaXB0aW9uKAorIlRlc3Rz
IGNvcnJlY3RuZXNzIG9mIGZ1bmN0aW9uIGNhbGxzIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIG92ZXJ3
cml0dGVuLiIKKyk7CisKK2Z1bmN0aW9uIGZvbyhhLCBiKSB7CisgICAgcmV0dXJuIGEgKyBiOwor
fQorCitmdW5jdGlvbiBiYXIoYSwgYikgeworICAgIHJldHVybiBmb28oYSwgYik7Cit9CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpIHsKKyAgICBpZiAoaSA9PSAxNTApCisgICAgICAg
IGZvbyA9IGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgLSBiOyB9CisgICAgdmFyIGV4cGVjdGVk
OworICAgIGlmIChpIDwgMTUwKQorICAgICAgICBleHBlY3RlZCA9IGkgKyBpICsgMTsKKyAgICBl
bHNlCisgICAgICAgIGV4cGVjdGVkID0gLTE7CisgICAgc2hvdWxkQmUoImJhcihpLCBpICsgMSki
LCAiIiArIGV4cGVjdGVkKTsKK30KKwo=
</data>
<flag name="commit-queue"
          id="154722"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147255</attachid>
            <date>2012-06-13 01:03:00 -0700</date>
            <delta_ts>2012-06-13 12:41:43 -0700</delta_ts>
            <desc>fix link errors on Windows</desc>
            <filename>globalwatch_patch_18.diff</filename>
            <type>text/plain</type>
            <size>157867</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMCBA
QAorMjAxMi0wNi0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaW1wbGVtZW50cyBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgZm9sZGluZyBieSBhbGxv
d2luZyB0aGUgb3B0aW1pemluZworICAgICAgICBjb21waWxlciB0byBzZXQgYSAid2F0Y2hwb2lu
dCIgb24gZ2xvYmFscyB0aGF0IGl0IHdpc2hlcyB0byBjb25zdGFudCBmb2xkLgorICAgICAgICBJ
ZiB0aGUgd2F0Y2hwb2ludCBmaXJlcywgdGhlbiBhbiBPU1IgZXhpdCBpcyBmb3JjZWQgYnkgb3Zl
cndyaXRpbmcgdGhlCisgICAgICAgIG1hY2hpbmUgY29kZSB0aGF0IHRoZSBvcHRpbWl6aW5nIGNv
bXBpbGVyIGdlbmVyYXRlZCB3aXRoIGEganVtcC4KKyAgICAgICAgCisgICAgICAgIEFzIHN1Y2gs
IHRoaXMgcGF0Y2ggaXMgYWRkaW5nIHF1aXRlIGEgYml0IG9mIHN0dWZmOgorICAgICAgICAKKyAg
ICAgICAgLSBKdW1wIHJlcGxhY2VtZW50IG9uIHRob3NlIGhhcmR3YXJlIHRhcmdldHMgc3VwcG9y
dGVkIGJ5IHRoZSBvcHRpbWl6aW5nCisgICAgICAgICAgSklULiBJdCBpcyBub3cgcG9zc2libGUg
dG8gcGF0Y2ggaW4gYSBqdW1wIGluc3RydWN0aW9uIG92ZXIgYW55IHJlY29yZGVkCisgICAgICAg
ICAgd2F0Y2hwb2ludCBsYWJlbC4gVGhlIGp1bXAgbXVzdCBiZSAibG9jYWwiIGluIHRoZSBzZW5z
ZSB0aGF0IGl0IG11c3QgYmUKKyAgICAgICAgICB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBsYXJn
ZXN0IGp1bXAgZGlzdGFuY2Ugc3VwcG9ydGVkIGJ5IGEgb25lCisgICAgICAgICAgaW5zdHJ1Y3Rp
b24ganVtcC4KKyAgICAgICAgICAKKyAgICAgICAgLSBXYXRjaHBvaW50U2V0cyBhbmQgV2F0Y2hw
b2ludHMuIEEgV2F0Y2hwb2ludCBpcyBhIGRvdWJseS1saW5rZWQgbGlzdCBub2RlCisgICAgICAg
ICAgdGhhdCByZWNvcmRzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIGp1bXAgbXVzdCBiZSBpbnNlcnRl
ZCBhbmQgdGhlCisgICAgICAgICAgZGVzdGluYXRpb24gdG8gd2hpY2ggaXQgc2hvdWxkIGp1bXAu
IFdhdGNocG9pbnRzIGNhbiBiZSBhZGRlZCB0byBhCisgICAgICAgICAgV2F0Y2hwb2ludFNldC4g
VGhlIFdhdGNocG9pbnRTZXQgY2FuIGJlIGZpcmVkIGFsbCBhdCBvbmNlLCB3aGljaCBwbGFudHMK
KyAgICAgICAgICBhbGwganVtcHMuIFdhdGNocG9pbnRTZXQgYWxzbyByZW1lbWJlcnMgaWYgaXQg
aGFkIGV2ZXIgYmVlbiBpbnZhbGlkYXRlZCwKKyAgICAgICAgICB3aGljaCBhbGxvd3MgZm9yIG1v
bm90b25pY2l0eTogd2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8gb3B0aW1pemUgdXNpbmcKKyAg
ICAgICAgICB3YXRjaHBvaW50cyBvbiBzb21ldGhpbmcgZm9yIHdoaWNoIHdhdGNocG9pbnRzIGhh
ZCBwcmV2aW91c2x5IGZpcmVkLiBUaGUKKyAgICAgICAgICBhY3Qgb2Ygbm90aWZ5aW5nIGEgV2F0
Y2hwb2ludFNldCBoYXMgYSB0cml2aWFsIGZhc3QgcGF0aCBpbiBjYXNlIG5vCisgICAgICAgICAg
V2F0Y2hwb2ludHMgYXJlIHJlZ2lzdGVyZWQgKG9uZS1ieXRlIGxvYWQrYnJhbmNoKS4KKyAgICAg
ICAgCisgICAgICAgIC0gU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpLiBJ
dCdzIGxpa2Ugc3BlY3VsYXRpb25DaGVjaygpLAorICAgICAgICAgIGV4Y2VwdCB0aGF0IHlvdSBk
b24ndCBoYXZlIHRvIGVtaXQgYnJhbmNoZXMuIEJ1dCwgeW91IG5lZWQgdG8ga25vdyB3aGF0Cisg
ICAgICAgICAgV2F0Y2hwb2ludFNldCB0byBhZGQgdGhlIHJlc3VsdGluZyBXYXRjaHBvaW50IHRv
LiBOb3QgZXZlcnl0aGluZyB0aGF0CisgICAgICAgICAgeW91IGNvdWxkIHdyaXRlIGEgc3BlY3Vs
YXRpb25DaGVjaygpIGZvciB3aWxsIGhhdmUgYSBXYXRjaHBvaW50U2V0IHRoYXQKKyAgICAgICAg
ICB3b3VsZCBnZXQgbm90aWZpZWQgaWYgdGhlIGNvbmRpdGlvbiB5b3Ugd2VyZSBzcGVjdWxhdGlu
ZyBhZ2FpbnN0IGJlY2FtZQorICAgICAgICAgIGludmFsaWQuCisgICAgICAgICAgCisgICAgICAg
IC0gU3ltYm9sVGFibGVFbnRyeSBub3cgaGFzIHRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgV2F0
Y2hwb2ludFNldC4gSXQgY2FuCisgICAgICAgICAgZG8gc28gd2l0aG91dCBpbmN1cnJpbmcgYW55
IHNwYWNlIG92ZXJoZWFkIGZvciB0aG9zZSBlbnRyaWVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICBo
YXZlIFdhdGNocG9pbnRTZXRzLgorICAgICAgICAgIAorICAgICAgICAtIFRoZSBieXRlY29kZSBn
ZW5lcmF0b3IgaW5mZXJzIGFsbCBnbG9iYWwgZnVuY3Rpb24gdmFyaWFibGVzIHRvIGJlCisgICAg
ICAgICAgd2F0Y2hhYmxlLCBhbmQgbWFrZXMgYWxsIHN0b3JlcyBwZXJmb3JtIHRoZSBXYXRjaHBv
aW50U2V0J3Mgd3JpdGUgY2hlY2ssCisgICAgICAgICAgYW5kIG1hcmtzIGFsbCBsb2FkcyBhcyBi
ZWluZyBwb3RlbnRpYWxseSB3YXRjaGFibGUgKGkuZS4geW91IGNhbiBjb21waWxlCisgICAgICAg
ICAgdGhlbSB0byBhIHdhdGNocG9pbnQgYW5kIGEgY29uc3RhbnQpLgorICAgICAgICAKKyAgICAg
ICAgUHV0IHRvZ2V0aGVyLCB0aGlzIGFsbG93cyBmb3IgZnVsbHkgc2xlYXp5IGlubGluaW5nIG9m
IGNhbGxzIHRvIGdsb2JhbGx5CisgICAgICAgIGRlY2xhcmVkIGZ1bmN0aW9ucy4gVGhlIGlubGlu
ZSBwcm9sb2d1ZSB3aWxsIG5vIGxvbmdlciBjb250YWluIHRoZSBsb2FkIG9mCisgICAgICAgIHRo
ZSBmdW5jdGlvbiwgb3IgYW55IGNoZWNrcyBvZiB0aGUgZnVuY3Rpb24geW91J3JlIGNhbGxpbmcu
IEkuZS4gaXQncworICAgICAgICBwcmV0dHkgbXVjaCBsaWtlIHRoZSBraW5kIG9mIGlubGluaW5n
IHlvdSB3b3VsZCBzZWUgaW4gSmF2YSBvciBDKysuCisgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUg
d2F0Y2hwb2ludGluZyBmdW5jdGlvbmFsaXR5IGlzIGJ1aWx0IHRvIGJlIGZhaXJseSBnZW5lcmFs
LAorICAgICAgICBhbmQgc2hvdWxkIGFsbG93IHNldHRpbmcgd2F0Y2hwb2ludHMgb24gYWxsIHNv
cnRzIG9mIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgVGhlIHNsZWF6eSBpbmxpbmluZyBtZWFucyB0aGF0IHdlIHdpbGwgbm93IHNv
bWV0aW1lcyBpbmxpbmUgaW4gY29kZSBwYXRocworICAgICAgICB0aGF0IGhhdmUgbmV2ZXIgZXhl
Y3V0ZWQuIFByZXZpb3VzbHksIHRvIGlubGluZSB3ZSB3b3VsZCBoYXZlIGVpdGhlciBoYWQKKyAg
ICAgICAgdG8gaGF2ZSBleGVjdXRlZCB0aGUgY2FsbCAodG8gcmVhZCB0aGUgY2FsbCdzIGlubGlu
ZSBjYWNoZSkgb3IgaGF2ZQorICAgICAgICBleGVjdXRlZCB0aGUgbWV0aG9kIGNoZWNrICh0byBy
ZWFkIHRoZSBtZXRob2QgY2hlY2sncyBpbmxpbmUgY2FjaGUpLiBOb3csCisgICAgICAgIHdlIG1p
Z2h0IGlubGluZSB3aGVuIHRoZSBjYWxsZWUgaXMgYSB3YXRjaGVkIGdsb2JhbCB2YXJpYWJsZS4g
VGhpcworICAgICAgICByZXZlYWxlZCBzb21lIGh1bW9yb3VzIGJ1Z3MuIEZpcnN0LCBjb25zdGFu
dCBmb2xkaW5nIGRpc2FncmVlZCB3aXRoIENGQQorICAgICAgICBvdmVyIHdoYXQga2luZHMgb2Yg
b3BlcmF0aW9ucyBjYW4gY2xvYmJlciAoZXhhbXBsZTogY29kZSBwYXRoIEEgaXMgZGVhZAorICAg
ICAgICBidXQgc3RvcmVzIGEgU3RyaW5nIGludG8gdmFyaWFibGUgWCwgYWxsIG90aGVyIGNvZGUg
cGF0aHMgc3RvcmUgMCBpbnRvCisgICAgICAgIFgsIGFuZCB0aGVuIHlvdSBkbyBDb21wYXJlRXEo
WCwgMCkgLSBDRkEgd2lsbCBzYXkgdGhhdCB0aGlzIGlzIGEgbm9uLQorICAgICAgICBjbG9iYmVy
aW5nIGNvbnN0YW50LCBidXQgY29uc3RhbnQgZm9sZGluZyB0aG91Z2h0IGl0IHdhcyBjbG9iYmVy
aW5nCisgICAgICAgIGJlY2F1c2UgaXQgc2F3IHRoZSBTdHJpbmcgcHJlZGljdGlvbikuIFNlY29u
ZCwgaW5saW5pbmcgd291bGQgY3Jhc2ggaWYKKyAgICAgICAgdGhlIGlubGluZSBjYWxsZWUgaGFk
IG5vdCBiZWVuIGNvbXBpbGVkLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggYnVncywKKyAgICAgICAg
c2luY2Ugb3RoZXJ3aXNlIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyB3b3VsZCByZXBvcnQgcmVn
cmVzc2lvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoQVJNdjdBc3NlbWJsZXIpOgor
ICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNdjdBc3NlbWJsZXIpOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6bGFiZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6
QVJNdjdBc3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjptYXhKdW1wUmVw
bGFjZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgor
ICAgICAgICAoTGFiZWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjp3
YXRjaHBvaW50TGFiZWwpOgorICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChNYWNyb0Fzc2Vt
YmxlckFSTSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgor
ICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNdjc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTXY3OjpicmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6Omp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjptYWtlQnJhbmNo
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKE1hY3Jv
QXNzZW1ibGVyTUlQUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpyZXBsYWNlV2l0aEp1bXApOgor
ICAgICAgICAoTWFjcm9Bc3NlbWJsZXJTSDQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clNINDo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2XzY0OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcGJf
aW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnRlc3RiX2ltKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpsYWJlbEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0
aEp1bXApOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNp
emUpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVy
OjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRPU1JFeGl0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphcHBlbmRTcGVjdWxhdGlvblJlY292ZXJ5KToKKyAgICAgICAgKENvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kV2F0Y2hwb2ludCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZXYXRjaHBvaW50cyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6d2F0Y2hwb2ludCk6CisgICAgICAgIChERkdEYXRhKToKKyAgICAgICAgKiBi
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kVG9T
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kSXNDb3VudGFibGUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChJbnN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUv
T3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwYWRPcGNvZGVOYW1lKToK
KyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojp+V2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6
OldhdGNocG9pbnQ6OmNvcnJlY3RMYWJlbHMpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50Ojpm
aXJlKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldCk6CisgICAg
ICAgIChKU0M6OldhdGNocG9pbnRTZXQ6On5XYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6
V2F0Y2hwb2ludFNldDo6YWRkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6bm90aWZ5
V3JpdGVTbG93KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbFdhdGNocG9p
bnRzKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50OjpX
YXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6c2V0RGVzdGluYXRpb24pOgor
ICAgICAgICAoV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Omlz
U3RpbGxWYWxpZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6Omhhc0JlZW5JbnZhbGlk
YXRlZCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OnN0YXJ0V2F0Y2hpbmcpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZSk6CisgICAgICAgIChKU0M6Oldh
dGNocG9pbnRTZXQ6OmFkZHJlc3NPZklzV2F0Y2hlZCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVJlc3VsdDo6Y2hl
Y2tWYWxpZGl0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxW
YXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldFN0YXRpY1Zhcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhSZXNvbHZl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4UmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKToKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RT
dGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6Y2xvYmJl
clN0cnVjdHVyZXMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAg
IChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpkaWRD
bG9iYmVyKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDQ2Fs
bEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2xvYmFsVmFyV2F0Y2hwb2ludEVs
aW1pbmF0aW9uKToKKyAgICAgICAgKENTRVBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQ
aGFzZTo6Z2xvYmFsVmFyU3RvcmVFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NF
UGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZv
bGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6aXNTZXQpOgorICAg
ICAgICAoQ29ycmVjdGFibGVKdW1wUG9pbnQpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllck51bWJlckZvckNo
ZWNrKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlkZW50aWZp
ZXJOdW1iZXJGb3JDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzUmVnaXN0ZXJQ
b2ludGVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6
Ok9TUkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgIChPU1JFeGl0
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2lu
dCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKToK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2Jh
bF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6
OkpJVFRodW5rczo6SklUVGh1bmtzKToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJ
T04pOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9T
TE9XX1BBVEhfREVDTCk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpyZW1vdmVEaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAg
ICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVHZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xU
YWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmNvcHlTbG93KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdyk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmNvdWxkQmVXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGVFbnRyeTo6YXR0ZW1wdFRvV2F0Y2gpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
OjphZGRyZXNzT2ZJc1dhdGNoZWQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojph
ZGRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3Jp
dGVTbG93KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZVNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChTeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEZhc3QpOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZUVudHJ5OjpGYXN0OjpGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6RmFzdDo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6
Z2V0SW5kZXgpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpGYXN0Ojppc1JlYWRP
bmx5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6Z2V0QXR0cmlidXRl
cyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzRmF0KToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6U3ltYm9sVGFibGVFbnRyeSk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6On5TeW1ib2xUYWJsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVF
bnRyeTo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0SW5kZXgp
OgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpnZXRGYXN0KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6Z2V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OmlzUmVhZE9ubHkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojp3YXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5
V3JpdGUpOgorICAgICAgICAoRmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVu
dHJ5OjpGYXRFbnRyeTo6RmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojppc0ZhdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmZhdEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0ZSk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmJpdHMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpm
cmVlRmF0RW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpwYWNrKToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNWYWxpZEluZGV4KToKKwogMjAxMi0wNi0x
MiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGZvciBBUk12NyBkZWJ1ZyBidWlsZHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgU0VUKEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogICAg
IGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKKyAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcAogCiAgICAgYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0yMzEsNiArMjMyLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1l
L1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwCiAg
ICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKyAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNw
cAogICAgIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuY3BwCiAgICAgcnVudGltZS9VU3RyaW5nLmNw
cAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2
aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmggXApAQCAtNjAzLDYgKzYwNSw3IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZXJtaW5hdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2MiwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUv
T3Bjb2RlLmNwcCBcCiAgICAgYnl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgXAot
ICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAgXAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAgXAorICAgIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
IFwKKyAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgXAog
ICAgIGhlYXAvQ29waWVkU3BhY2UuY3BwIFwKQEAgLTIzNiw2ICsyMzcsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIFwKICAgICBydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcCBcCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKKyAgICBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAgICAgcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAg
XAogICAgIHJ1bnRpbWUvVVN0cmluZy5jcHAgXAogICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcCBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtp
bmcgY29weSkKQEAgLTI0Niw2ICsyNDYsNyBAQCBFWFBPUlRTCiAgICAgP25hbWVASlNGdW5jdGlv
bkBKU0NAQFFBRUFCVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9uZXV0ZXJAQXJy
YXlCdWZmZXJWaWV3QFdURkBATUFFWFhaCiAgICAgP25ld1VuaW5pdGlhbGl6ZWRAQ1N0cmluZ0BX
VEZAQFNBP0FWMTJASUFBUEFEQFoKKyAgICA/bm90aWZ5V3JpdGVTbG93QFN5bWJvbFRhYmxlRW50
cnlASlNDQEBBQUVYWFoKICAgICA/bnVsbHB0ckBAM1ZudWxscHRyX3RAc3RkQEBBCiAgICAgP251
bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQE5JSUBaCiAgICAgP251bWJlckBVU3RyaW5nQEpTQ0BA
U0E/QVYxMkBIQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI1NCw2ICsxMjU0LDEwIEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVc
U3ltYm9sVGFibGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxydW50aW1lXFN5bWJvbFRhYmxlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpA
QCAtMTY4MSw2ICsxNjg1LDE0IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxW
YWx1ZVByb2ZpbGUuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cLi5cYnl0ZWNvZGVcV2F0Y2hwb2ludC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXFdhdGNocG9pbnQuaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCiAJCQlOYW1lPSJkZWJ1
Z2dlciIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjAxNjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw5IEBACiAJCTBGOTE5RDBE
MTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0Qg
LyogSlNTeW1ib2xUYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0LmNwcCAqLzsgfTsKIAkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOTE5RDBGMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY5MTlEMjUxNTg1M0NFMDAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMjIxNTg1M0NERTAwNEE0
RTdEIC8qIFdhdGNocG9pbnQuY3BwICovOyB9OworCQkwRjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0Qg
LyogV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5MTlEMjMxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjkxOUQyODE1ODU2Nzcz
MDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxl
LmNwcCAqLzsgfTsKIAkJMEY5MzMyOUQxNENBN0RDMzAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMz
MjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi87IH07CiAJCTBGOTMz
MjlFMTRDQTdEQzUwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8q
IENhbGxMaW5rU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY5MzMyOUYxNENBN0RDQTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTUx
NENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovOyB9OwpAQCAtMzcwLDEwICsz
NzMsMTAgQEAKIAkJN0U0RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzBF
MEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgKi87IH07CiAJCTdFRkYwMDY0
MEVDMDVBOUEwMEFBN0M5MyAvKiBOb2RlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0VGRjAwNjMwRUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZv
LmggKi87IH07CiAJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3JhcHBl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwODk0
RDYwRkFGQkEyRDAwMDAxODY1IC8qIEpTQVBJVmFsdWVXcmFwcGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODYwMTYxRTMwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmggKi87IH07Ci0JCTg2MDE2MUU0MEYzQTgzQzEwMEY4NDcxMCAvKiBN
YWNyb0Fzc2VtYmxlclg4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Lmgg
Ki87IH07Ci0JCTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82
NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYx
RTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi87IH07Ci0JCTg2
MDE2MUU2MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTIwRjNBODND
MTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggKi87IH07CisJCTg2MDE2MUUz
MEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3
MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDE2MUU0MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNy
b0Fzc2VtYmxlclg4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYwMTYxRTUw
RjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAg
LyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4NjAxNjFFNjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2
MDRGNTA1MTQzQ0UxQzIwMEIyOTVGNSAvKiBKU0dsb2JhbFRoaXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDRGNTAzMTQzQ0UxQzEwMEIyOTVGNSAv
KiBKU0dsb2JhbFRoaXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjBCRDgwMTE0OEVBNkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJGNjQyQTE0OERCMkI1
MDA0REUzNkEgLyogSW50cmluc2ljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjEyRTRD
QjE1MjI5MTg0MDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDAxLDExICs0MDQsMTEgQEAKIAkJODY5RDA0
QUYxMTkzQjU0RDAwODAzNDc1IC8qIENhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUQwNEFFMTE5M0I1
NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5RUJDQjcwRThDNkQ0QTAw
ODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2OUVCQ0I2MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBOTBFRDAw
RUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBOTBFQ0YwRUU3RDUxRjAwQUIzNTBEIC8qIEpJ
VEFyaXRobWV0aWMuY3BwICovOyB9OwotCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJN
djdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyB9Owot
CQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5
ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgfTsKKwkJODZBREQxNDUwRkRE
RUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdB
c3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQxNDQwRkRE
RUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFFNjRBODEzNUU1RTFDMDA5NjMwMTIg
LyogTWFjcm9Bc3NlbWJsZXJTSDQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZBRTY0QTUxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVy
U0g0LmNwcCAqLzsgfTsKLQkJODZBRTY0QTkxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1i
bGVyU0g0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkFFNjRBNjEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLzsgfTsKLQkJ
ODZBRTY0QUExMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTcxMzVFNUUxQzAwOTYzMDEy
IC8qIFNINEFzc2VtYmxlci5oICovOyB9OworCQk4NkFFNjRBOTEzNUU1RTFDMDA5NjMwMTIgLyog
TWFjcm9Bc3NlbWJsZXJTSDQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QUU2NEE2MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QUU2
NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBT
SDRBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkFFNkM0RDEzNkExMUU0MDA5NjMwMTIgLyogREZHRlBSSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTZDNEIxMzZBMTFFNDAw
OTYzMDEyIC8qIERGR0ZQUkluZm8uaCAqLzsgfTsKIAkJODZBRTZDNEUxMzZBMTFFNDAwOTYzMDEy
IC8qIERGR0dQUkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2QUU2QzRDMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJbmZvLmggKi87IH07CiAJ
CTg2QjU4MjY3MTREMjc5NkMwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI1ODIyRTE0RDIzNzNCMDBBOUMz
MDYgLyogQ29kZVByb2ZpbGUuY3BwICovOyB9OwpAQCAtNDE0LDggKzQxNyw4IEBACiAJCTg2QkIw
OUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZH
UmVwYXRjaC5oICovOyB9OwogCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3
RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3Nl
bWJsZXJBUk0uY3BwICovOyB9OwotCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9B
c3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87
IH07Ci0JCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VF
MDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyB9OworCQk4NkM1NjhFMTExQTIxM0VFMDAw
N0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3Nl
bWJsZXJNSVBTLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUw
MDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDQTAzMkUxMDM4RTg0NDAwMjhBNjA5IC8qIEV4ZWN1dGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZD
QTAzMkQxMDM4RTg0NDAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuY3BwICovOyB9OwogCQk4NkNBRkVF
MzEwMzVEREU2MDAyOEE2MDkgLyogRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQUZFRTIxMDM1RERFNjAwMjhBNjA5IC8qIEV4ZWN1
dGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lTWV0aG9kcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQzg1QTAwRUU3OUE0NzAw
Mjg4NjgyIC8qIEpJVElubGluZU1ldGhvZHMuaCAqLzsgfTsKQEAgLTQyMywxMyArNDI2LDEzIEBA
CiAJCTg2Q0M4NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVDMzBFRTdB
ODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3BwICovOyB9OwogCQk4NkNDRUZERTBG
NDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZDQ0VGREQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkQzQjJD
MzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkJGMTAxNTZCREUwMDI4NjVFNyAvKiBB
Uk1Bc3NlbWJsZXIuY3BwICovOyB9OwotCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJN
QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi87IH07Ci0JCTg2
RDNCMkM1MTAxNTZCREUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29s
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJD
MTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oICov
OyB9OwotCQk4NkQzQjJDNjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMyMTAx
NTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5oICovOyB9OwotCQk4NkQzQjNDMzEw
MTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZm
ZXIuaCAqLzsgfTsKLQkJODZEM0IzQzQxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCM0My
MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggKi87IH07CisJCTg2RDNCMkM0MTAx
NTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMwMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3Nl
bWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk4NkQzQjJDNTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50
UG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZE
M0IyQzExMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkQz
QjJDNjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMyMTAxNTZCREUwMDI4NjVF
NyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg2RDNCM0MzMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjND
MTEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2RDNCM0M0MTAxNTlEN0YwMDI4NjVFNyAvKiBS
ZXBhdGNoQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkQzQjNDMjEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2REI2NDY0MEY5NUM2
RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEQjY0NjMwRjk1QzZGQzAw
RDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgKi87IH07Ci0JCTg2
RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAv
KiBDb2RlTG9jYXRpb24uaCAqLzsgfTsKKwkJODZFMTE2QjEwRkU3NUFDODAwQjUxMkJDIC8qIENv
ZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZFMTE2QjAwRkU3NUFDODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2RTg1NTM5MTExQjk5Njgw
MDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTg1NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1
aWxkZXIuaCAqLzsgfTsKIAkJODZFQkYyRkYxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkVCRjJGOTE1NjBGMDM2MDA4RTkyMjIgLyogTmFtZUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJ
ODZFQkYzMDAxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQkYyRkExNTYwRjAzNjAwOEU5
MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5oICovOyB9OwpAQCAtNDc1LDggKzQ3OCw4IEBACiAJCTk1
RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTk4OEJBOTBFNDc3QkVDMDBE
MjhENEQgLyogSlNQcm9maWxlclByaXZhdGUuY3BwICovOyB9OwogCQk5NjAwOTdBNjBFQkFCQjU4
MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTYwMDk3QTUwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCAq
LzsgfTsKIAkJOTYwNjI2OTYwRkI4RUMwMjAwOTc5OEFCIC8qIEpJVFN0dWJDYWxsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjA2MjY5NTBGQjhFQzAy
MDA5Nzk4QUIgLyogSklUU3R1YkNhbGwuaCAqLzsgfTsKLQkJOTY4OENCMTUwRUQxMkI0RTAwMUQ2
NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTY4OENCMTMwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZl
ci5oICovOyB9OwotCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBF
RDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggKi87IH07CisJCTk2ODhDQjE1MEVEMTJC
NEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2ODhDQjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJs
ZXJCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRFMDAx
RDY0OUYgLyogWDg2QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NjlBMDcyMTBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCAqLzsgfTsKIAkJ
OTY5QTA3MkEwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyNzBFRDFDRTY5MDBGMUY2ODEgLyogTGFi
ZWwuaCAqLzsgfTsKIAkJOTY5QTA3MkIwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzI4MEVE
MUNFNjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggKi87IH07CkBAIC04MzYsNiArODM5LDkgQEAK
IAkJMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY5MTlEMEYxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQyMjE1
ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY5MTlEMjMxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sVGFibGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExp
bmtTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbExp
bmtTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMzI5NDE0Q0E3
REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FsbExpbmtTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0QnlJZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ1LDYgKzIwNTEsNyBAQAogCQkJCTdFNEVFNzBFMEVCQjdB
NUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgKi8sCiAJCQkJN0U0RUU3MDgwRUJCNzk2
MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggKi8sCiAJCQkJQkM5MDQxNDcwRUI5MjUwOTAw
RkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oICovLAorCQkJCTBGOTE5RDI3MTU4
NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgKi8sCiAJCQkJMTRBMzk2QTYwQ0QyOTMz
MTAwQjVCNEZGIC8qIFN5bWJvbFRhYmxlLmggKi8sCiAJCQkJOTdGNjkwM0ExMTY5REY3RjAwQTZC
QjQ2IC8qIFRlcm1pbmF0b3IuaCAqLywKIAkJCQkxNEE0MkUzRDBGNEY2MEVFMDA1OTkwOTkgLyog
VGltZW91dENoZWNrZXIuY3BwICovLApAQCAtMjI5Niw2ICsyMzAzLDggQEAKIAkJCQkwRjk2M0Iz
NjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJMEY0MjZBNDUxNDYw
Q0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLywKIAkJCQkwRjQyNkE0NjE0NjBDQkFC
MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8sCisJCQkJMEY5MTlEMjIxNTg1M0NERTAw
NEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAorCQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3
RCAvKiBXYXRjaHBvaW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGJ5dGVjb2RlOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2NzEsNiArMjY4MCw3IEBACiAJCQkJMEYxNjAxNUUx
NTYxOThDOTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxl
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQxMTE1N0YzMzJDMDA0QTRFN0QgLyog
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5MTlEMjYx
NTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzI0NSw2
ICszMjU1LDggQEAKIAkJCQlDMjVGOEJDRDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxT
d2VlcGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTE5RDBDMTU3RUUwOUYwMDRBNEU3RCAv
KiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTE5RDEwMTU3
RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGOTE5RDI1MTU4NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGOTE5RDI4MTU4NTY3NzMwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNdjdBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDgzLDYgKzQ4MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIEp1bXBMaW5rVHlwZSBtX2xpbmtUeXBl
IDogODsKICAgICAgICAgQ29uZGl0aW9uIG1fY29uZGl0aW9uIDogMTY7CiAgICAgfTsKKyAgICAK
KyAgICBBUk12N0Fzc2VtYmxlcigpCisgICAgICAgIDogbV9pbmRleE9mTGFzdFdhdGNocG9pbnQo
SU5UX01JTikKKyAgICAgICAgLCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlO
KQorICAgIHsKKyAgICB9CiAKIHByaXZhdGU6CiAKQEAgLTE4MjAsMTAgKzE4MjYsMjUgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOEltbTgoT1BfTk9QX1Qx
LCAwKTsKICAgICB9CisgICAgCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50
KCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxh
YmVsKCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkgIT0g
bV9pbmRleE9mTGFzdFdhdGNocG9pbnQpCisgICAgICAgICAgICByZXN1bHQgPSBsYWJlbCgpOwor
ICAgICAgICBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldDsKKyAgICAg
ICAgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQgKyBtYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAg
ICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZm9ybWF0
dGVyLmxhYmVsKCk7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fZm9ybWF0dGVy
LmxhYmVsKCk7CisgICAgICAgIHdoaWxlIChVTkxJS0VMWShzdGF0aWNfY2FzdDxpbnQ+KHJlc3Vs
dC5tX29mZnNldCkgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkpIHsKKyAgICAgICAg
ICAgIG5vcCgpOworICAgICAgICAgICAgcmVzdWx0ID0gbV9mb3JtYXR0ZXIubGFiZWwoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBBc3NlbWJs
ZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQpAQCAtMjA2Nyw2ICsyMDg4LDMwIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWFkSW50
MzIod2hlcmUpKTsKICAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1w
KHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAxKSk7CisgICAg
ICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRvKSAmIDEpKTsKKyAgICAgICAg
dWludDE2X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbnN0cnVjdGlvblN0
YXJ0KSArIDI7CisgICAgICAgIAorICAgICAgICAvLyBFbnN1cmUgdGhhdCB3ZSdyZSBub3QgaW4g
b25lIG9mIHRob3NlIGVycmF0YS10cmlnZ2VyaW5nIHRoaW5naWVzLiBJZiB3ZSBhcmUsIHRoZW4K
KyAgICAgICAgLy8gcHJlcGVuZCBhIG5vcC4KKyAgICAgICAgYm9vbCBzcGFuc1R3bzRLID0gKChy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihwdHIpICYgMHhmZmYpID09IDB4MDAyKTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChzcGFuc1R3bzRLKSB7CisgICAgICAgICAgICBwdHJbLTJdID0gT1Bf
Tk9QX1QxOworICAgICAgICAgICAgcHRyKys7CisgICAgICAgIH0KKworICAgICAgICBsaW5rSnVt
cFQ0KHB0ciwgdG8pOworICAgICAgICBjYWNoZUZsdXNoKHB0ciAtIDIsIHNpemVvZih1aW50MTZf
dCkgKiAyKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiA2OworICAgIH0KIAogICAgIHVuc2ln
bmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9mb3JtYXR0ZXIuZGVidWdPZmZzZXQoKTsgfQog
CkBAIC0yNjA0LDYgKzI2NDksOCBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPExpbmtSZWNvcmQ+
IG1fanVtcHNUb0xpbms7CiAgICAgVmVjdG9yPGludDMyX3Q+IG1fb2Zmc2V0czsKKyAgICBpbnQg
bV9pbmRleE9mTGFzdFdhdGNocG9pbnQ7CisgICAgaW50IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRj
aHBvaW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAko
cmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIExpbmtCdWZmZXI7CiBjbGFzcyBSZXBhdGNoQnVmZmVyOworY2xh
c3MgV2F0Y2hwb2ludDsKIG5hbWVzcGFjZSBERkcgewogY2xhc3MgQ29ycmVjdGFibGVKdW1wUG9p
bnQ7CiB9CkBAIC03MCw3ICs3MSw2IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIHR5
cGVzIGFyZSB1c2VkIGFzIG9wZXJhbmRzIHRvIE1hY3JvQXNzZW1ibGVyIG9wZXJhdGlvbnMsCiAg
ICAgLy8gZGVzY3JpYmluZyBpbW1lZGlhdGUgIGFuZCBtZW1vcnkgb3BlcmFuZHMgdG8gdGhlIGlu
c3RydWN0aW9ucyB0byBiZSBwbGFudGVkLgogCi0KICAgICBlbnVtIFNjYWxlIHsKICAgICAgICAg
VGltZXNPbmUsCiAgICAgICAgIFRpbWVzVHdvLApAQCAtMjc5LDYgKzI3OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEp1bXA7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOworICAgICAg
ICBmcmllbmQgY2xhc3MgV2F0Y2hwb2ludDsKIAogICAgIHB1YmxpYzoKICAgICAgICAgTGFiZWwo
KQpAQCAtNTU5LDYgKzU2MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBMYWJlbCh0aGlz
KTsKICAgICB9CiAgICAgCisgICAgTGFiZWwgd2F0Y2hwb2ludExhYmVsKCkKKyAgICB7CisgICAg
ICAgIExhYmVsIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBtX2Fzc2VtYmxlci5s
YWJlbEZvcldhdGNocG9pbnQoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
CiAgICAgTGFiZWwgYWxpZ24oKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWxpZ24oMTYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxl
ckJ1ZmZlci5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxMSArMjgsMTEgQEAK
IAogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAKKyNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiSklUQ29tcGlsYXRpb25FZmZvcnQuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bERhdGEuaCIKICNpbmNsdWRlICJzdGRpbnQuaCIKICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNs
dWRlIDxqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTS5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
MTAsNiArMTAxMCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQoKikoKT4oQVJNQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxs
LmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKwogcHJvdGVjdGVkOgogICAgIEFSTUFzc2VtYmxlcjo6Q29uZGl0aW9uIEFSTUNvbmRp
dGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHJl
dmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg2LDYgKzExODYsMTYgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQorICAgIAorICAg
IHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlv
blN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFS
TXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRp
b24oKSwgZGVzdGluYXRpb24uZGF0YUxvY2F0aW9uKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0
aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEFSTXY3QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgfQogCiAg
ICAgLy8gRm9yd2FyZHMgLyBleHRlcm5hbCBjb250cm9sIGZsb3cgb3BlcmF0aW9uczoKICAgICAv
LwpAQCAtMTM1Niw2ICsxMzY2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaFRl
c3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrKTsKICAgICB9CiAKKyAgICBKdW1w
IGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVz
cywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAg
Ly8gdXNlIGFkZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0OCB3ZSBjYWxs
IHVzZXMgZGF0YVRlbXBSZWdpc3Rlci4gOi0vCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihh
ZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQ4KEFkZHJl
c3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2spOworICAg
IH0KKwogICAgIHZvaWQganVtcChSZWdpc3RlcklEIHRhcmdldCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmJ4KHRhcmdldCk7CkBAIC0xNjc5LDEyICsxNjk3LDE0IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBBTFdBWVNfSU5MSU5FIEp1bXAganVtcCgpCiAgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sYWJlbCgpOyAvLyBGb3JjZSBub3AtcGFkZGluZyBpZiB3ZSdyZSBpbiB0aGUg
bWlkZGxlIG9mIGEgd2F0Y2hwb2ludC4KICAgICAgICAgbW92ZUZpeGVkV2lkdGhFbmNvZGluZyhU
cnVzdGVkSW1tMzIoMCksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKSwgbV9tYWtlSnVtcFBhdGNoYWJsZSA/IEFS
TXY3QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb25GaXhlZFNpemUgOiBBUk12N0Fzc2VtYmxlcjo6
SnVtcE5vQ29uZGl0aW9uKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEp1bXAgbWFrZUJy
YW5jaChBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQpCiAgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sYWJlbCgpOyAvLyBGb3JjZSBub3AtcGFkZGluZyBpZiB3ZSdyZSBpbiB0aGUgbWlk
ZGxlIG9mIGEgd2F0Y2hwb2ludC4KICAgICAgICAgbV9hc3NlbWJsZXIuaXQoY29uZCwgdHJ1ZSwg
dHJ1ZSk7CiAgICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMyKDApLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuYngoZGF0
YVRlbXBSZWdpc3RlciksIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBBUk12N0Fzc2VtYmxlcjo6SnVt
cENvbmRpdGlvbkZpeGVkU2l6ZSA6IEFSTXY3QXNzZW1ibGVyOjpKdW1wQ29uZGl0aW9uLCBjb25k
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlck1JUFMuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2
OCw2ICsxODY4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihNSVBTQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxs
LmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKwogcHJpdmF0ZToKICAgICAvLyBJZiBtX2ZpeGVkV2lkdGggaXMgdHJ1ZSwgd2Ugd2ls
bCBnZW5lcmF0ZSBhIGZpeGVkIG51bWJlciBvZiBpbnN0cnVjdGlvbnMuCiAgICAgLy8gT3RoZXJ3
aXNlLCB3ZSBjYW4gZW1pdCBhbnkgbnVtYmVyIG9mIGluc3RydWN0aW9ucy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJ
KHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJTSDQuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3MSw2ICsxOTcxLDE3IEBAIHZv
aWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHMKICAgICAgICAgcmV0dXJuIEZ1
bmN0aW9uUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCgqKSgpPihTSDRBc3NlbWJsZXI6OnJlYWRD
YWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENv
ZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxh
Y2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU0g0QXNzZW1ibGVyOjpDb25k
aXRpb24gU0g0Q29uZGl0aW9uKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Ni5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRG91YmxlOwog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZURvdWJsZTsKICAgICB1c2lu
ZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydEludDMyVG9Eb3VibGU7CisgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4OwogCiAgICAgdm9pZCBhZGQz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKQEAgLTE2NSw2ICsxNjYsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Zs
X2kzMnIoaW5pdGlhbFZhbHVlLmFzSW50cHRyKCksIGRlc3QpOwogICAgICAgICByZXR1cm4gRGF0
YUxhYmVsUHRyKHRoaXMpOwogICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1h
c2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1hc2subV92YWx1
ZSA+PSAtMTI4ICYmIG1hc2subV92YWx1ZSA8PSAyNTUpOworICAgICAgICBpZiAobWFzay5tX3Zh
bHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wYl9pbSgwLCBhZGRyZXNzLm1f
cHRyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaW0obWFz
ay5tX3ZhbHVlLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KIAogICAgIEp1bXAgYnJhbmNoUHRy
V2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRh
TGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRy
dXN0ZWRJbW1QdHIoMCkpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24g
MTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDA4LDYgKzE0MDgsMTYgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxv
Y2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJl
cGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3Rp
bmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4
NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KKwogcHJvdGVjdGVk
OgogICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTIwMTYyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01MTMsNiArNTEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246Om1vdmUoYWRkciwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBCYXNlSW5k
ZXgoc2NyYXRjaFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UsIFRpbWVzT25lKSwgbWFzayk7CiAgICAg
fQorICAgIAorICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29s
dXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkp
CisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJl
Z2lzdGVyKSwgbWFzayk7CisgICAgfQogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGlu
Z1BvaW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIC8vIFNlZSBjb21tZW50IG9uIE1hY3JvQXNz
ZW1ibGVyQVJNdjc6OnN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24g
MTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjQ3LDYgKzI0Nyw4IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAKICAg
ICBYODZBc3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9N
SU4pCisgICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAg
ICB7CiAgICAgfQogCkBAIC03OTgsNiArODAwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQ01QLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
ICAgICB9CisgICAgCisjaWYgQ1BVKFg4NikKKyAgICB2b2lkIGNtcGJfaW0oaW50IGltbSwgY29u
c3Qgdm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisjZW5kaWYKIAogICAgIHZvaWQgY21wbF9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKICAgICB7CkBAIC05NDgsNiArOTU4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KIAorI2lmIENQVShYODYpCisgICAgdm9pZCB0ZXN0
Yl9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYkliLCBHUk9VUDNfT1BfVEVTVCwgYWRkcik7CisgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZv
aWQgdGVzdGxfaTMybShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKQEAgLTE3MDIsMTAgKzE3MjAsMjUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fZm9ybWF0dGVyLmNvZGVTaXplKCk7CiAgICAgfQorICAgIAorICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgeworICAgICAgICBBc3NlbWJsZXJMYWJl
bCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KQorICAgICAg
ICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQg
PSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50
ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBBc3NlbWJsZXJM
YWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICB3aGlsZSAoVU5MSUtF
TFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFz
dFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQpAQCAtMTc4
Nyw2ICsxODIwLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPih3aGVyZSlbLTFdOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIHVp
bnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQp
OworICAgICAgICB1aW50OF90KiBkc3RQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0
byk7CisgICAgICAgIGludHB0cl90IGRpc3RhbmNlID0gKGludHB0cl90KShkc3RQdHIgLSAocHRy
ICsgNSkpOworICAgICAgICBwdHJbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihPUF9KTVBfcmVs
MzIpOworICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocHRyICsgMSkgPSBzdGF0
aWNfY2FzdDxpbnQzMl90PihkaXN0YW5jZSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gNTsK
KyAgICB9CisgICAgCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNz
ZW1ibGVyTGFiZWwgY2FsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjYWxsLmlzU2V0KCkpOwpA
QCAtMjMzOSw2ICsyMzg2LDggQEAgcHJpdmF0ZToKIAogICAgICAgICBBc3NlbWJsZXJCdWZmZXIg
bV9idWZmZXI7CiAgICAgfSBtX2Zvcm1hdHRlcjsKKyAgICBpbnQgbV9pbmRleE9mTGFzdFdhdGNo
cG9pbnQ7CisgICAgaW50IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyOCwxMiArOTI4LDI4
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAg
IGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2dl
dF9nbG9iYWxfdmFyX3dhdGNoYWJsZTogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9p
bnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CisgICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSBnZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGVcdCAlcywgZyVkKCVwKVxuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBtX2dsb2JhbE9iamVjdC0+ZmluZFJlZ2lz
dGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyKTsKKyAgICAgICAgICAg
IGl0Kys7CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytpdCktPnUucmVnaXN0ZXJQb2ludGVy
OwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBwdXRfZ2xvYmFsX3Zhclx0IGclZCglcCksICVzXG4iLCBsb2NhdGlvbiwg
bV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lz
dGVyUG9pbnRlciwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazog
eworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAo
KytpdCktPnUucmVnaXN0ZXJQb2ludGVyOworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfZ2xvYmFsX3Zhcl9jaGVj
a1x0IGclZCglcCksICVzXG4iLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3Rl
ckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgaXQrKzsKKyAgICAgICAgICAgIGl0Kys7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfYmFz
ZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xMzA2LDcgKzEzMjIsNyBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9jYWxsX3B1dF9yZXN1bHQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gb3BfY2FsbF9wdXRfcmVzdWx0
XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNhbGxfcHV0X3Jlc3VsdFx0XHQgJXNcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAgICBpdCsrOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiAr
NjIsNyBAQAogI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJVbmNvbmRpdGlvbmFsRmlu
YWxpemVyLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSAiV2F0Y2hwb2lu
dC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC0yNzMsMTAgKzI3
NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgYXBwZW5kT1NSRXhpdChjb25zdCBERkc6Ok9T
UkV4aXQmIG9zckV4aXQpCisgICAgICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgREZH
OjpPU1JFeGl0JiBvc3JFeGl0KQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVERkdEYXRh
SWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fZGZnRGF0YS0+
b3NyRXhpdC5zaXplKCk7CiAgICAgICAgICAgICBtX2RmZ0RhdGEtPm9zckV4aXQuYXBwZW5kKG9z
ckV4aXQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgREZHOjpPU1JFeGl0JiBsYXN0T1NSRXhpdCgpCkBAIC0yODQsMTAgKzI4NywyMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPm9zckV4aXQu
bGFzdCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIGFwcGVuZFNwZWN1bGF0
aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNvdmVyeSkKKyAg
ICAgICAgdW5zaWduZWQgYXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShjb25zdCBERkc6OlNwZWN1
bGF0aW9uUmVjb3ZlcnkmIHJlY292ZXJ5KQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVhdGVE
RkdEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fZGZn
RGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5zaXplKCk7CiAgICAgICAgICAgICBtX2RmZ0RhdGEt
PnNwZWN1bGF0aW9uUmVjb3ZlcnkuYXBwZW5kKHJlY292ZXJ5KTsKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIGFwcGVuZFdh
dGNocG9pbnQoY29uc3QgV2F0Y2hwb2ludCYgd2F0Y2hwb2ludCkKKyAgICAgICAgeworICAgICAg
ICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBtX2RmZ0RhdGEtPndhdGNocG9pbnRzLnNpemUoKTsKKyAgICAgICAgICAgIG1fZGZn
RGF0YS0+d2F0Y2hwb2ludHMuYXBwZW5kKHdhdGNocG9pbnQpOworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZP
U1JFeGl0cygpCkBAIC0zMDQsNiArMzE3LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5zaXplKCk7CiAgICAgICAg
IH0KICAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mV2F0Y2hwb2ludHMoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fZGZnRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRzLnNpemUoKTsK
KyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgREZHOjpPU1JFeGl0JiBvc3JFeGl0KHVuc2ln
bmVkIGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5vc3JF
eGl0W2luZGV4XTsKQEAgLTMxNCw2ICszMzQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5W2luZGV4XTsKICAgICAg
ICAgfQogICAgICAgICAKKyAgICAgICAgV2F0Y2hwb2ludCYgd2F0Y2hwb2ludCh1bnNpZ25lZCBp
bmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+d2F0Y2hwb2lu
dHNbaW5kZXhdOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2b2lkIGFwcGVuZFdlYWtS
ZWZlcmVuY2UoSlNDZWxsKiB0YXJnZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNyZWF0ZURG
R0RhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTIzOCw2ICsxMjYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5OwogICAgICAg
ICAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICAgICAg
ICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7
CisgICAgICAgICAgICBTZWdtZW50ZWRWZWN0b3I8V2F0Y2hwb2ludCwgMSwgMD4gd2F0Y2hwb2lu
dHM7CiAgICAgICAgICAgICBWZWN0b3I8V2Vha1JlZmVyZW5jZVRyYW5zaXRpb24+IHRyYW5zaXRp
b25zOwogICAgICAgICAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+ID4gd2Vha1JlZmVy
ZW5jZXM7CiAgICAgICAgICAgICBib29sIG1heUJlRXhlY3V0aW5nOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDEy
MDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gRXhpdEtpbmQgewogICAgIElu
YWRlcXVhdGVDb3ZlcmFnZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5kZWQgdXAgaW4gY29k
ZSB0aGF0IGRpZG4ndCBoYXZlIHByb2ZpbGluZyBjb3ZlcmFnZS4KICAgICBBcmd1bWVudHNFc2Nh
cGVkLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhcmd1bWVudHMgZXNjYXBlZCBidXQgd2UgZGlkbid0
IGV4cGVjdCB0aGVtIHRvLgogICAgIFVuY291bnRhYmxlLCAvLyBXZSBleGl0ZWQgZm9yIG5vbmUg
b2YgdGhlIGFib3ZlIHJlYXNvbnMsIGFuZCB3ZSBzaG91bGQgbm90IGNvdW50IGl0LiBNb3N0IHVz
ZXMgb2YgdGhpcyBzaG91bGQgYmUgdmlld2VkIGFzIGEgRklYTUUuCisgICAgVW5jb3VudGFibGVX
YXRjaHBvaW50IC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIGEgd2F0Y2hwb2ludCwgd2hpY2ggaXNu
J3QgY291bnRlZCBiZWNhdXNlIHdhdGNocG9pbnRzIGRvIHRyYWNraW5nIHRoZW1zZWx2ZXMuCiB9
OwogCiBpbmxpbmUgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0cmluZyhFeGl0S2luZCBraW5kKQpA
QCAtNTgsNiArNTksMTIgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhp
dAogICAgICAgICByZXR1cm4gIk5lZ2F0aXZlWmVybyI7CiAgICAgY2FzZSBJbmFkZXF1YXRlQ292
ZXJhZ2U6CiAgICAgICAgIHJldHVybiAiSW5hZGVxdWF0ZUNvdmVyYWdlIjsKKyAgICBjYXNlIEFy
Z3VtZW50c0VzY2FwZWQ6CisgICAgICAgIHJldHVybiAiQXJndW1lbnRzRXNjYXBlZCI7CisgICAg
Y2FzZSBVbmNvdW50YWJsZToKKyAgICAgICAgcmV0dXJuICJVbmNvdW50YWJsZSI7CisgICAgY2Fz
ZSBVbmNvdW50YWJsZVdhdGNocG9pbnQ6CisgICAgICAgIHJldHVybiAiVW5jb3VudGFibGVXYXRj
aHBvaW50IjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gIlVua25vd24iOwogICAgIH0K
QEAgLTcwLDYgKzc3LDcgQEAgaW5saW5lIGJvb2wgZXhpdEtpbmRJc0NvdW50YWJsZShFeGl0S2lu
ZAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjYXNlIEJhZFR5cGU6CiAgICAg
Y2FzZSBVbmNvdW50YWJsZToKKyAgICBjYXNlIFVuY291bnRhYmxlV2F0Y2hwb2ludDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlz
aW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEluc3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBw
cm9maWxlOyB9CiAgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihXcml0ZUJhcnJpZXI8VW5r
bm93bj4qIHJlZ2lzdGVyUG9pbnRlcikgeyB1LnJlZ2lzdGVyUG9pbnRlciA9IHJlZ2lzdGVyUG9p
bnRlcjsgfQorICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oYm9vbCogcHJlZGljYXRlUG9p
bnRlcikgeyB1LnByZWRpY2F0ZVBvaW50ZXIgPSBwcmVkaWNhdGVQb2ludGVyOyB9CiAKICAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZTsKQEAgLTIwNSw2ICsyMDcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7CiAgICAgICAgICAgICB2
b2lkKiBwb2ludGVyOworICAgICAgICAgICAgYm9vbCogcHJlZGljYXRlUG9pbnRlcjsKICAgICAg
ICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9zY29wZWRfdmFyLCA1KSAv
KiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X3Njb3BlZF92
YXIsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2dsb2JhbF92YXIsIDQpIC8qIGhhcyB2YWx1
ZSBwcm9maWxpbmcgKi8gXAorICAgICAgICBtYWNybyhvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFi
bGUsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9wdXRf
Z2xvYmFsX3ZhciwgMykgXAorICAgICAgICBtYWNybyhvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaywg
NSkgXAogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX2Jhc2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9m
aWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzLCAzKSBc
CiAgICAgICAgIG1hY3JvKG9wX3Jlc29sdmVfd2l0aF9iYXNlLCA1KSAvKiBoYXMgdmFsdWUgcHJv
ZmlsaW5nICovIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBv
aW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCisKKyNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitXYXRjaHBvaW50Ojp+V2F0Y2hwb2ludCgpCit7
CisgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgIHJlbW92ZSgpOworfQorCit2b2lkIFdhdGNo
cG9pbnQ6OmNvcnJlY3RMYWJlbHMoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKK3sKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgbGFiZWw7CisgICAgbGFiZWwubV9sYWJlbC5tX29mZnNldCA9IG1f
c291cmNlOworICAgIG1fc291cmNlID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZl
ci5sb2NhdGlvbk9mKGxhYmVsKS5kYXRhTG9jYXRpb24oKSk7CisgICAgbGFiZWwubV9sYWJlbC5t
X29mZnNldCA9IG1fZGVzdGluYXRpb247CisgICAgbV9kZXN0aW5hdGlvbiA9IGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KGxpbmtCdWZmZXIubG9jYXRpb25PZihsYWJlbCkuZGF0YUxvY2F0aW9uKCkp
OworfQorCit2b2lkIFdhdGNocG9pbnQ6OmZpcmUoKQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBsYWNlV2l0aEp1bXAoCisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2
b2lkKj4obV9zb3VyY2UpKSwKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0
PHZvaWQqPihtX2Rlc3RpbmF0aW9uKSkpOworICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICBy
ZW1vdmUoKTsKK30KKworV2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNldCgpCisgICAgOiBtX2lz
V2F0Y2hlZChmYWxzZSkKKyAgICAsIG1faXNJbnZhbGlkYXRlZChmYWxzZSkKK3sKK30KKworV2F0
Y2hwb2ludFNldDo6fldhdGNocG9pbnRTZXQoKQoreworICAgIC8vIEZpcmUgYWxsIHdhdGNocG9p
bnRzLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGlzIHBvc3NpYmxlLCBzYXkgd2l0aAor
ICAgIC8vIHN0cnVjdHVyZSB3YXRjaHBvaW50cywgZm9yIHRoZSB3YXRjaHBvaW50IHNldCBvd25l
ciB0byBkaWUgd2hpbGUgdGhlCisgICAgLy8gd2F0Y2hwb2ludCBvd25lcnMgYXJlIHN0aWxsIGxp
dmUuCisgICAgZmlyZUFsbFdhdGNocG9pbnRzKCk7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludFNldDo6
YWRkKFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCit7CisgICAgaWYgKCF3YXRjaHBvaW50KQorICAg
ICAgICByZXR1cm47CisgICAgbV9zZXQucHVzaCh3YXRjaHBvaW50KTsKKyAgICBtX2lzV2F0Y2hl
ZCA9IHRydWU7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludFNldDo6bm90aWZ5V3JpdGVTbG93KCkKK3sK
KyAgICBBU1NFUlQobV9pc1dhdGNoZWQpOworICAgIAorICAgIGZpcmVBbGxXYXRjaHBvaW50cygp
OworICAgIG1faXNXYXRjaGVkID0gZmFsc2U7CisgICAgbV9pc0ludmFsaWRhdGVkID0gdHJ1ZTsK
K30KKwordm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hwb2ludHMoKQoreworICAgIHdo
aWxlICghbV9zZXQuaXNFbXB0eSgpKQorICAgICAgICBtX3NldC5iZWdpbigpLT5maXJlKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXYXRjaHBvaW50X2gKKyNkZWZpbmUgV2F0Y2hwb2ludF9oCisKKyNpbmNsdWRlICJD
b2RlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2F0Y2hwb2ludCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxXYXRjaHBvaW50PiB7CitwdWJsaWM6CisgICAgV2F0Y2hwb2ludChNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgc291cmNlKQorICAgICAgICA6IG1fc291cmNlKHNvdXJjZS5tX2xhYmVsLm1f
b2Zmc2V0KQorICAgICAgICAsIG1fZGVzdGluYXRpb24oc3RkOjpudW1lcmljX2xpbWl0czx1aW50
cHRyX3Q+OjptYXgoKSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0RGVzdGluYXRp
b24oTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgbV9k
ZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uLm1fbGFiZWwubV9vZmZzZXQ7CisgICAgfQorICAgIAor
ICAgIHZvaWQgY29ycmVjdExhYmVscyhMaW5rQnVmZmVyJik7CisgICAgCisgICAgfldhdGNocG9p
bnQoKTsKKyAgICAKKyAgICB2b2lkIGZpcmUoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgdWludHB0
cl90IG1fc291cmNlOworICAgIHVpbnRwdHJfdCBtX2Rlc3RpbmF0aW9uOworfTsKKworY2xhc3Mg
V2F0Y2hwb2ludFNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdhdGNocG9pbnRTZXQ+IHsKK3B1Ymxp
YzoKKyAgICBXYXRjaHBvaW50U2V0KCk7CisgICAgfldhdGNocG9pbnRTZXQoKTsKKyAgICAKKyAg
ICBib29sIGlzU3RpbGxWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICFtX2lzSW52YWxpZGF0ZWQ7IH0K
KyAgICBib29sIGhhc0JlZW5JbnZhbGlkYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnZhbGlk
YXRlZDsgfQorICAgIAorICAgIC8vIEFzIGEgY29udmVuaWVuY2UsIHRoaXMgd2lsbCBpZ25vcmUg
MC4gVGhhdCdzIGJlY2F1c2UgY29kZSBwYXRocyBpbiB0aGUgREZHCisgICAgLy8gdGhhdCBjcmVh
dGUgc3BlY3VsYXRpb24gd2F0Y2hwb2ludHMgbWF5IGNob29zZSB0byBiYWlsIG91dCBpZiBzcGVj
dWxhdGlvbgorICAgIC8vIGhhZCBhbHJlYWR5IGJlZW4gdGVybWluYXRlZC4KKyAgICB2b2lkIGFk
ZChXYXRjaHBvaW50Kik7CisgICAgCisgICAgLy8gRm9yY2UgdGhlIHdhdGNocG9pbnQgc2V0IHRv
IGJlaGF2ZSBhcyBpZiBpdCB3YXMgYmVpbmcgd2F0Y2hlZCBldmVuIGlmIG5vCisgICAgLy8gd2F0
Y2hwb2ludHMgaGF2ZSBiZWVuIGluc3RhbGxlZC4gVGhpcyB3aWxsIHJlc3VsdCBpbiBpbnZhbGlk
YXRpb24gaWYgdGhlCisgICAgLy8gd2F0Y2hwb2ludCB3b3VsZCBoYXZlIGZpcmVkLiBUaGF0J3Mg
YSBwcmV0dHkgZ29vZCBpbmRpY2F0aW9uIHRoYXQgeW91CisgICAgLy8gcHJvYmFibHkgZG9uJ3Qg
d2FudCB0byBzZXQgd2F0Y2hwb2ludHMsIHNpbmNlIHdlIHR5cGljYWxseSBkb24ndCB3YW50IHRv
CisgICAgLy8gc2V0IHdhdGNocG9pbnRzIHRoYXQgd2UgYmVsaWV2ZSB3aWxsIGFjdHVhbGx5IGJl
IGZpcmVkLgorICAgIHZvaWQgc3RhcnRXYXRjaGluZygpIHsgbV9pc1dhdGNoZWQgPSB0cnVlOyB9
CisgICAgCisgICAgdm9pZCBub3RpZnlXcml0ZSgpCisgICAgeworICAgICAgICBpZiAoIW1faXNX
YXRjaGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBub3RpZnlXcml0ZVNsb3coKTsK
KyAgICB9CisgICAgCisgICAgYm9vbCogYWRkcmVzc09mSXNXYXRjaGVkKCkgeyByZXR1cm4gJm1f
aXNXYXRjaGVkOyB9CisgICAgCisgICAgdm9pZCBub3RpZnlXcml0ZVNsb3coKTsgLy8gQ2FsbCBv
bmx5IGlmIHlvdSd2ZSBjaGVja2VkIGlzV2F0Y2hlZC4KKyAgICAKK3ByaXZhdGU6CisgICAgdm9p
ZCBmaXJlQWxsV2F0Y2hwb2ludHMoKTsKKyAgICAKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8V2F0
Y2hwb2ludCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4gPiBtX3NldDsKKyAgICBi
b29sIG1faXNXYXRjaGVkOworICAgIGJvb2wgbV9pc0ludmFsaWRhdGVkOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBXYXRjaHBvaW50X2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4
LDcgQEAgdm9pZCBSZXNvbHZlUmVzdWx0OjpjaGVja1ZhbGlkaXR5KCkKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgSW5kZXhlZEdsb2JhbDoKICAgICBjYXNlIFJlYWRPbmx5SW5kZXhlZEdsb2Jh
bDoKKyAgICBjYXNlIFdhdGNoZWRJbmRleGVkR2xvYmFsOgogICAgIGNhc2UgRHluYW1pY0luZGV4
ZWRHbG9iYWw6CiAgICAgY2FzZSBEeW5hbWljUmVhZE9ubHlJbmRleGVkR2xvYmFsOgogICAgICAg
ICBBU1NFUlQobV9pbmRleCAhPSBtaXNzaW5nU3ltYm9sTWFya2VyKCkpOwpAQCAtMjE2LDEzICsy
MTcsMTkgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKGNvbnN0IElkZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1pbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZhcihjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgYm9vbCBpc0NvbnN0YW50KQoraW50IEJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRHbG9iYWxWYXIoCisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIENvbnN0YW50
TW9kZSBjb25zdGFudE1vZGUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKGZ1bmN0aW9uTW9kZSk7CiAgICAgaW50IGluZGV4ID0gc3ltYm9sVGFibGUoKS5z
aXplKCk7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/
IFJlYWRPbmx5IDogMCk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgKGNv
bnN0YW50TW9kZSA9PSBJc0NvbnN0YW50KSA/IFJlYWRPbmx5IDogMCk7CisgICAgaWYgKGZ1bmN0
aW9uTW9kZSA9PSBJc0Z1bmN0aW9uVG9TcGVjaWFsaXplKQorICAgICAgICBuZXdFbnRyeS5hdHRl
bXB0VG9XYXRjaCgpOwogICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9s
VGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7Ci0gICAgaWYgKCFyZXN1bHQuaXNO
ZXdFbnRyeSkKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kLm5vdGlmeVdyaXRlKCk7CiAgICAgICAgIGluZGV4ID0gcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQuZ2V0SW5kZXgoKTsKKyAgICB9CiAgICAgcmV0dXJuIGluZGV4OwogfQog
CkBAIC0yODksMTcgKzI5NiwyMyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoUHJvCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uU3RhY2suc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24gPSBmdW5jdGlvblN0
YWNrW2ldOwotICAgICAgICBnbG9iYWxPYmplY3QtPnJlbW92ZURpcmVjdCgqbV9nbG9iYWxEYXRh
LCBmdW5jdGlvbi0+aWRlbnQoKSk7IC8vIE5ld2x5IGRlY2xhcmVkIGZ1bmN0aW9ucyBvdmVyd3Jp
dGUgZXhpc3RpbmcgcHJvcGVydGllcy4KLQorICAgICAgICBib29sIHByb3BlcnR5RGlkRXhpc3Qg
PSAKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERhdGEs
IGZ1bmN0aW9uLT5pZGVudCgpKTsgLy8gTmV3bHkgZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3cml0
ZSBleGlzdGluZyBwcm9wZXJ0aWVzLgorICAgICAgICAKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBtYWtlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb24pLCBz
Y29wZUNoYWluKTsKLSAgICAgICAgaW50IGluZGV4ID0gYWRkR2xvYmFsVmFyKGZ1bmN0aW9uLT5p
ZGVudCgpLCBmYWxzZSk7CisgICAgICAgIGludCBpbmRleCA9IGFkZEdsb2JhbFZhcigKKyAgICAg
ICAgICAgIGZ1bmN0aW9uLT5pZGVudCgpLCBJc1ZhcmlhYmxlLAorICAgICAgICAgICAgIXByb3Bl
cnR5RGlkRXhpc3QgPyBJc0Z1bmN0aW9uVG9TcGVjaWFsaXplIDogTm90RnVuY3Rpb25Pck5vdFNw
ZWNpYWxpemFibGUpOwogICAgICAgICBnbG9iYWxPYmplY3QtPnJlZ2lzdGVyQXQoaW5kZXgpLnNl
dCgqbV9nbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICB9CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHZhclN0YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChn
bG9iYWxPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsICp2YXJTdGFja1tpXS5maXJzdCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYWRkR2xvYmFsVmFyKCp2YXJTdGFja1tpXS5maXJz
dCwgdmFyU3RhY2tbaV0uc2Vjb25kICYgRGVjbGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQpOwor
ICAgICAgICBhZGRHbG9iYWxWYXIoCisgICAgICAgICAgICAqdmFyU3RhY2tbaV0uZmlyc3QsCisg
ICAgICAgICAgICAodmFyU3RhY2tbaV0uc2Vjb25kICYgRGVjbGFyYXRpb25TdGFja3M6OklzQ29u
c3RhbnQpID8gSXNDb25zdGFudCA6IElzVmFyaWFibGUsCisgICAgICAgICAgICBOb3RGdW5jdGlv
bk9yTm90U3BlY2lhbGl6YWJsZSk7CiAgICAgfQogfQogCkBAIC0xMjAyLDcgKzEyMTUsOSBAQCBS
ZXNvbHZlUmVzdWx0IEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlCiAgICAgICAgICAgICBpZiAo
KytpdGVyID09IGVuZCkgewogICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFJlc29sdmVSZXN1
bHQ6OkR5bmFtaWNGbGFnKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3Vs
dDo6ZHluYW1pY0luZGV4ZWRHbG9iYWxSZXNvbHZlKGVudHJ5LmdldEluZGV4KCksIGRlcHRoLCBj
dXJyZW50U2NvcGUsIGZsYWdzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x2ZVJlc3Vs
dDo6aW5kZXhlZEdsb2JhbFJlc29sdmUoZW50cnkuZ2V0SW5kZXgoKSwgY3VycmVudFNjb3BlLCBm
bGFncyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmluZGV4ZWRHbG9i
YWxSZXNvbHZlKAorICAgICAgICAgICAgICAgICAgICBlbnRyeS5nZXRJbmRleCgpLCBjdXJyZW50
U2NvcGUsCisgICAgICAgICAgICAgICAgICAgIGZsYWdzIHwgKGVudHJ5LmNvdWxkQmVXYXRjaGVk
KCkgPyBSZXNvbHZlUmVzdWx0OjpXYXRjaGVkRmxhZyA6IDApKTsKICAgICAgICAgICAgIH0KICNp
ZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAoSlNBY3RpdmF0aW9uKiBhY3RpdmF0
aW9uID0ganNEeW5hbWljQ2FzdDxKU0FjdGl2YXRpb24qPihjdXJyZW50VmFyaWFibGVPYmplY3Qp
KQpAQCAtMTI5Niw3ICsxMzExLDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6c2hvdWxkQXZv
aWRSZXNvbAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKFJlZ2lz
dGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHkpCiB7CiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkK
LSAgICAgICAgcmV0dXJuIGVtaXRHZXRTdGF0aWNWYXIoZHN0LCByZXNvbHZlUmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGVtaXRHZXRTdGF0aWNWYXIoZHN0LCByZXNvbHZlUmVzdWx0LCBwcm9wZXJ0
eSk7CiAgICAgCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNHbG9iYWwoKSAmJiAhc2hvdWxkQXZv
aWRSZXNvbHZlR2xvYmFsKCkpIHsKICNpZiBFTkFCTEUoSklUKQpAQCAtMTM3OSw3ICsxMzk0LDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogCiAgICAgICAgIGlm
IChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpIHsKICAgICAgICAgICAgIC8vIERpcmVjdGx5IGlu
ZGV4IHRoZSBwcm9wZXJ0eSBsb29rdXAgYWNyb3NzIG11bHRpcGxlIHNjb3Blcy4KLSAgICAgICAg
ICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgICAg
ICBlbWl0R2V0U3RhdGljVmFyKHByb3BEc3QsIHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsKICAg
ICAgICAgICAgIHJldHVybiBiYXNlRHN0OwogICAgICAgICB9CiAKQEAgLTE0MTgsNyArMTQzMyw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKIHsKICAgICBpZiAo
cmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKSB7CiAgICAgICAgIGVtaXRMb2FkKGJhc2VEc3QsIGpz
VW5kZWZpbmVkKCkpOwotICAgICAgICBlbWl0R2V0U3RhdGljVmFyKHByb3BEc3QsIHJlc29sdmVS
ZXN1bHQpOworICAgICAgICBlbWl0R2V0U3RhdGljVmFyKHByb3BEc3QsIHJlc29sdmVSZXN1bHQs
IHByb3BlcnR5KTsKICAgICAgICAgcmV0dXJuIGJhc2VEc3Q7CiAgICAgfQogCkBAIC0xNDM2LDcg
KzE0NTEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAgICAg
cmV0dXJuIGVtaXRSZXNvbHZlKHByb3BEc3QsIHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsKIH0K
IAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRTdGF0aWNWYXIoUmVnaXN0
ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0KQorUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRTdGF0aWNWYXIoUmVnaXN0ZXJJRCogZHN0LCBj
b25zdCBSZXNvbHZlUmVzdWx0JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQogewogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IDA7CiAKQEAgLTE0NzIsMTMg
KzE0ODcsMjQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRTdAogICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CiAgICAgICAgIHJldHVybiBkc3Q7
CiAKKyAgICBjYXNlIFJlc29sdmVSZXN1bHQ6OldhdGNoZWRJbmRleGVkR2xvYmFsOgorICAgICAg
ICAvLyBTa2lwIHRoZSBwZWVwaG9sZSBmb3Igbm93LiBJdCdzIG5vdCBjbGVhciB0aGF0IGl0J3Mg
cHJvZml0YWJsZSBnaXZlbgorICAgICAgICAvLyB0aGUgREZHJ3MgY2FwYWJpbGl0aWVzLCBhbmQg
dGhlIGZhY3QgdGhhdCBpZiBpdCdzIHdhdGNoYWJsZSB0aGVuIHdlCisgICAgICAgIC8vIGRvbid0
IGV4cGVjdCB0byBzZWUgYW55IHB1dF9nbG9iYWxfdmFyJ3MgYW55d2F5LgorICAgICAgICBwcm9m
aWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSk7Cisg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJlc3VsdC5yZWdpc3RlclBvaW50ZXIoKSk7CisgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChpZGVudGlmaWVyKSk7IC8vIEZv
ciB0aGUgYmVuZWZpdCBvZiB0aGUgREZHLgorICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
cHJvZmlsZSk7CisgICAgICAgIHJldHVybiBkc3Q7CisKICAgICBkZWZhdWx0OgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCi1SZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZl
UmVzdWx0JiByZXNvbHZlUmVzdWx0LCBSZWdpc3RlcklEKiB2YWx1ZSkKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmIHJl
c29sdmVSZXN1bHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIFJlZ2lzdGVySUQqIHZh
bHVlKQogewogICAgIHN3aXRjaCAocmVzb2x2ZVJlc3VsdC50eXBlKCkpIHsKICAgICBjYXNlIFJl
c29sdmVSZXN1bHQ6OlJlZ2lzdGVyOgpAQCAtMTQ5OSw2ICsxNTI1LDE0IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U3QKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHJlc29sdmVSZXN1bHQucmVnaXN0ZXJQb2ludGVyKCkpOwogICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgICAgICByZXR1cm4gdmFsdWU7CisgICAg
ICAgIAorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6V2F0Y2hlZEluZGV4ZWRHbG9iYWw6CisgICAg
ICAgIGVtaXRPcGNvZGUob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOworICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJlc3VsdC5yZWdpc3RlclBvaW50ZXIoKSk7CisgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihyZXNvbHZlUmVzdWx0Lmdsb2Jh
bE9iamVjdCgpKS0+c3ltYm9sVGFibGUoKS5nZXQoaWRlbnRpZmllci5pbXBsKCkpLmFkZHJlc3NP
ZklzV2F0Y2hlZCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
KGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAx
MjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIC8vIFRoZSByZXNvbHZlZCBiaW5kaW5nIGlzIGltbXV0YWJsZS4KICAg
ICAgICAgICAgIFJlYWRPbmx5RmxhZyA9IDB4MjAsCiAgICAgICAgICAgICAvLyBUaGUgYmFzZSBv
YmplY3QgaXMgdGhlIGdsb2JhbCBvYmplY3QuCi0gICAgICAgICAgICBHbG9iYWxGbGFnID0gMHg0
MAorICAgICAgICAgICAgR2xvYmFsRmxhZyA9IDB4NDAsCisgICAgICAgICAgICAvLyBUaGUgcHJv
cGVydHkgaXMgYmVpbmcgd2F0Y2hlZCwgc28gd3JpdGVzIHNob3VsZCBiZSBzcGVjaWFsLgorICAg
ICAgICAgICAgV2F0Y2hlZEZsYWcgPSAweDgwCiAgICAgICAgIH07CiAgICAgICAgIGVudW0gVHlw
ZSB7CiAgICAgICAgICAgICAvLyBUaGUgcHJvcGVydHkgaXMgbG9jYWwsIGFuZCBzdG9yZWQgaW4g
YSByZWdpc3Rlci4KQEAgLTEzMSw2ICsxMzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIC8vIGJpbmRpbmcgY3JlYXRlZCB3aXRoICJ2YXIiIGF0IHRoZSB0b3AgbGV2ZWwuIEF0IHJ1
bnRpbWUgd2UnbGwKICAgICAgICAgICAgIC8vIGp1c3QgaW5kZXggaW50byB0aGUgZ2xvYmFsIG9i
amVjdC4KICAgICAgICAgICAgIEluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxhZyB8IEdsb2JhbEZs
YWcgfCBTdGF0aWNGbGFnLAorICAgICAgICAgICAgLy8gTGlrZSBJbmRleGVkR2xvYmFsLCBidXQg
dGhlIHByb3BlcnR5IGlzIGJlaW5nIHdhdGNoZWQuCisgICAgICAgICAgICBXYXRjaGVkSW5kZXhl
ZEdsb2JhbCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFsRmxhZyB8IFN0YXRpY0ZsYWcgfCBXYXRjaGVk
RmxhZywKICAgICAgICAgICAgIC8vIExpa2UgSW5kZXhlZEdsb2JhbCwgYnV0IHRoZSBwcm9wZXJ0
eSBpcyBhbHNvIHJlYWQtb25seSwgbGlrZSBOYU4sCiAgICAgICAgICAgICAvLyBJbmZpbml0eSwg
b3IgdW5kZWZpbmVkLgogICAgICAgICAgICAgUmVhZE9ubHlJbmRleGVkR2xvYmFsID0gSW5kZXhl
ZEZsYWcgfCBSZWFkT25seUZsYWcgfCBHbG9iYWxGbGFnIHwgU3RhdGljRmxhZywKQEAgLTQ0MSw4
ICs0NDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFR5cGVP
ZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5T3Ao
b3BfdHlwZW9mLCBkc3QsIHNyYyk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpIHsgcmV0
dXJuIGVtaXRCaW5hcnlPcChvcF9pbiwgZHN0LCBwcm9wZXJ0eSwgYmFzZSwgT3BlcmFuZFR5cGVz
KCkpOyB9CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklE
KiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1
dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3Qg
UmVzb2x2ZVJlc3VsdCYsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFB1dFN0YXRpY1Zhcihjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmllciYs
IFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZShS
ZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQmFzZShSZWdpc3RlcklE
KiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7
CkBAIC01NzQsNyArNTc4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgYWRkZWQgdmFyLgotICAgICAgICBpbnQgYWRk
R2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImLCBib29sIGlzQ29uc3RhbnQpOworICAgICAgICBl
bnVtIENvbnN0YW50TW9kZSB7IElzQ29uc3RhbnQsIElzVmFyaWFibGUgfTsKKyAgICAgICAgZW51
bSBGdW5jdGlvbk1vZGUgeyBJc0Z1bmN0aW9uVG9TcGVjaWFsaXplLCBOb3RGdW5jdGlvbk9yTm90
U3BlY2lhbGl6YWJsZSB9OworICAgICAgICBpbnQgYWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZp
ZXImLCBDb25zdGFudE1vZGUsIEZ1bmN0aW9uTW9kZSk7CiAKICAgICAgICAgdm9pZCBhZGRQYXJh
bWV0ZXIoY29uc3QgSWRlbnRpZmllciYsIGludCBwYXJhbWV0ZXJJbmRleCk7CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzAsNyArNDMw
LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaQogICAgIGlmIChy
ZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1
bmMgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
U3RhdGljVmFyKGZ1bmMuZ2V0KCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEdldFN0YXRpY1ZhcihmdW5jLmdldCgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpz
VW5kZWZpbmVkKCkpOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uT3JJZ25vcmVkKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0KCks
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKICAg
ICB9CkBAIC02MTgsNyArNjE4LDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeFJlc29sdmVOb2RlOjpl
bWl0Qnl0ZQogICAgIH0KIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkgJiYgIXJl
c29sdmVSZXN1bHQuaXNSZWFkT25seSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmVzb2x2
ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlOwogICAgICAg
ICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgICAgIG9s
ZFZhbHVlID0gMDsKQEAgLTYyNiw3ICs2MjYsNyBAQCBSZWdpc3RlcklEKiBQb3N0Zml4UmVzb2x2
ZU5vZGU6OmVtaXRCeXRlCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBvbGRWYWx1ZSA9
IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgICAgIH0KLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgdmFsdWUuZ2V0KCkpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCB2YWx1
ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKICAgICB9CiAgICAgCkBAIC04MDMs
OSArODAzLDkgQEAgUmVnaXN0ZXJJRCogUHJlZml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlYwogICAg
IH0KIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkgJiYgIXJlc29sdmVSZXN1bHQu
aXNSZWFkT25seSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wRHN0ID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBy
ZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5l
cmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJl
c29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBlbWl0UHJlSW5jT3JEZWMoZ2VuZXJhdG9y
LCBwcm9wRHN0LmdldCgpLCBtX29wZXJhdG9yKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRT
dGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgcHJvcERzdC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIG1faWRlbnQsIHByb3BEc3QuZ2V0KCkp
OwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0
LCBwcm9wRHN0LmdldCgpKTsKICAgICB9CiAKQEAgLTEyMjYsOSArMTIyNiw5IEBAIFJlZ2lzdGVy
SUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIKICAgICB9CiAKICAgICBpZiAocmVzb2x2
ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9ubHkoKSkgewotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFy
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5n
ZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25v
d25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCByZXN1bHQpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBtX2lkZW50LCByZXN1bHQpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTI1Niw3ICsxMjU2LDcgQEAgUmVn
aXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlYwogICAgICAgICBpZiAoZHN0ID09
IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgICAgICBkc3QgPSAwOwogICAgICAg
ICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCB2YWx1ZSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIG1faWRl
bnQsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIApAQCAtMTM2MSw3ICsx
MzYxLDcgQEAgUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6ZW1pdENvZGVTaW5nbAogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG1faW5pdCA/IGdlbmVyYXRvci5lbWl0Tm9kZShtX2lu
aXQpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgaWYgKHJl
c29sdmVSZXN1bHQuaXNTdGF0aWMoKSkKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0
U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIHZhbHVlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1bHQsIG1faWRlbnQsIHZhbHVlLmdl
dCgpKTsKICAgICAKICAgICBpZiAoZ2VuZXJhdG9yLmNvZGVUeXBlKCkgIT0gRXZhbENvZGUpCiAg
ICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE5LDcgKzIxOSw5IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBp
bmQKIHsKICAgICBBU1NFUlQobV9ibG9jayk7CiAgICAgQVNTRVJUKG1faXNWYWxpZCk7Ci0gICAg
ICAgIAorICAgIAorICAgIG1fZGlkQ2xvYmJlciA9IGZhbHNlOworICAgIAogICAgIE5vZGVJbmRl
eCBub2RlSW5kZXggPSBtX2Jsb2NrLT5hdChpbmRleEluQmxvY2spOwogICAgIE5vZGUmIG5vZGUg
PSBtX2dyYXBoW25vZGVJbmRleF07CiAgICAgICAgIApAQCAtMjM3LDggKzIzOSwxMiBAQCBib29s
IEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgICAgICAKICAgICBj
YXNlIEdldExvY2FsOiB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nl
c3NEYXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgaWYgKHZhcmlhYmxl
QWNjZXNzRGF0YS0+cHJlZGljdGlvbigpID09IFNwZWNOb25lKSB7CisgICAgICAgICAgICBtX2lz
VmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGJvb2wgY2FuRXhpdCA9IGZhbHNlOwot
ICAgICAgICBjYW5FeGl0IHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdGlvbigpID09IFNw
ZWNOb25lOwogICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlID0gbV92YXJpYWJsZXMub3BlcmFu
ZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkpOwogICAgICAgICBpZiAoIXZhcmlhYmxlQWNj
ZXNzRGF0YS0+aXNDYXB0dXJlZCgpKSB7CiAgICAgICAgICAgICBpZiAodmFsdWUuaXNDbGVhcigp
KQpAQCAtMTQ3Niw3ICsxNDgyLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2ln
bmVkIGluZAogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjRnVuY3Rp
b24pOwogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUgdG8gcHJvcGFnYXRlIHRoZSBm
YWN0IHRoYXQgd2Uga25vdyB3aGF0IHRoZSBmdW5jdGlvbiBpcy4KICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAKKyAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJ
ZERpcmVjdDoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOwpAQCAtMTQ4OCw4ICsxNDk0
LDEzIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAg
bm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VU
b3AoKTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hw
b2ludDoKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgIGNhc2UgUHV0R2xvYmFsVmFy
Q2hlY2s6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgCkBAIC0xNTc4LDYgKzE1ODksNyBAQCBpbmxpbmUgdm9pZCBBYnN0cmFjdFN0
YXRlOjpjbG9iYmVyU3RydWN0CiAgICAgZm9yIChzaXplX3QgaSA9IG1fdmFyaWFibGVzLm51bWJl
ck9mTG9jYWxzKCk7IGktLTspCiAgICAgICAgIG1fdmFyaWFibGVzLmxvY2FsKGkpLmNsb2JiZXJT
dHJ1Y3R1cmVzKCk7CiAgICAgbV9oYXZlU3RydWN0dXJlcyA9IGZhbHNlOworICAgIG1fZGlkQ2xv
YmJlciA9IHRydWU7CiB9CiAKIGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVB
dFRhaWwoQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24sIEFic3RyYWN0VmFsdWUmIGluVmFyaWFi
bGUsIE5vZGVJbmRleCBub2RlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2
ICsxOTMsOSBAQCBwdWJsaWM6CiAgICAgLy8gb2YgVGhyb3cuCiAgICAgYm9vbCBleGVjdXRlKHVu
c2lnbmVkKTsKICAgICAKKyAgICAvLyBEaWQgdGhlIGxhc3QgZXhlY3V0ZWQgbm9kZSBjbG9iYmVy
IHRoZSB3b3JsZD8KKyAgICBib29sIGRpZENsb2JiZXIoKSBjb25zdCB7IHJldHVybiBtX2RpZENs
b2JiZXI7IH0KKyAgICAKICAgICAvLyBJcyB0aGUgZXhlY3V0aW9uIHN0YXRlIHN0aWxsIHZhbGlk
PyBUaGlzIHdpbGwgYmUgZmFsc2UgaWYgZXhlY3V0ZSgpIGhhcwogICAgIC8vIHJldHVybmVkIGZh
bHNlIHByZXZpb3VzbHkuCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Zh
bGlkOyB9CkBAIC0yNzQsNiArMjc3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZm91bmRDb25z
dGFudHM7CiAgICAgCiAgICAgYm9vbCBtX2lzVmFsaWQ7CisgICAgYm9vbCBtX2RpZENsb2JiZXI7
CiAgICAgCiAgICAgQnJhbmNoRGlyZWN0aW9uIG1fYnJhbmNoRGlyZWN0aW9uOyAvLyBUaGlzIGlz
IG9ubHkgc2V0IGZvciBibG9ja3MgdGhhdCBlbmQgaW4gQnJhbmNoIGFuZCB0aGF0IGV4ZWN1dGUg
dG8gY29tcGxldGlvbiAoaS5lLiBtX2lzVmFsaWQgPT0gdHJ1ZSkuCiB9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM0LDYgKzEyMzQsOSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgLy8gRG9lcyB0aGUgY29kZSBibG9jaydzIHNp
emUgbWF0Y2ggdGhlIGhldXJpc3RpY3MvcmVxdWlyZW1lbnRzIGZvciBiZWluZwogICAgIC8vIGFu
IGlubGluZSBjYW5kaWRhdGU/CiAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrID0gZXhlY3V0
YWJsZS0+cHJvZmlsZWRDb2RlQmxvY2tGb3Ioa2luZCk7CisgICAgaWYgKCFwcm9maWxlZEJsb2Nr
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgaWYgKCFtaWdodElubGluZUZ1bmN0
aW9uRm9yKHByb2ZpbGVkQmxvY2ssIGtpbmQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
CkBAIC0yMjUxLDEzICsyMjU0LDYxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKICAgICAgICAgICAg
IAorICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKwogICAgICAgICAgICAgTm9kZUlu
ZGV4IGdldEdsb2JhbFZhciA9IGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgR2V0R2xvYmFs
VmFyLAotICAgICAgICAgICAgICAgIE9wSW5mbyhtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCktPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudElu
c3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAgICAgICAgICAgT3BJbmZv
KGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIpKSwKICAgICAgICAgICAgICAgICBPcEluZm8ocHJl
ZGljdGlvbikpOwogICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQsIGdldEdsb2JhbFZhcik7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZ2xvYmFs
X3Zhcik7CiAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGNhc2Ugb3Bf
Z2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07CisgICAgICAgICAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKTsKKyAg
ICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxPYmplY3QtPnN5bWJvbFRh
YmxlKCkuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICAgICAgICAgIGlmICghZW50cnkuY291
bGRCZVdhdGNoZWQoKSkgeworICAgICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRHbG9iYWxWYXIg
PSBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBHZXRHbG9iYWxWYXIsCisgICAgICAg
ICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJblRoaXNP
YmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAg
ICAgICAgICAgICAgIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAgc2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdldEdsb2JhbFZhcik7CisgICAgICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGhlIHdhdGNocG9pbnQgaXMgc3Rp
bGwgaW50YWN0ISBUaGlzIG1lYW5zIHRoYXQgd2Ugd2lsbCBnZXQgbm90aWZpZWQgaWYgdGhlCisg
ICAgICAgICAgICAvLyBjdXJyZW50IHZhbHVlIGluIHRoZSBnbG9iYWwgdmFyaWFibGUgY2hhbmdl
cy4gU28sIHdlIGNhbiBpbmxpbmUgdGhhdCB2YWx1ZS4KKyAgICAgICAgICAgIC8vIE1vcmVvdmVy
LCBjdXJyZW50bHkgd2UgY2FuIGFzc3VtZSB0aGF0IHRoaXMgdmFsdWUgaXMgYSBKU0Z1bmN0aW9u
Kiwgd2hpY2gKKyAgICAgICAgICAgIC8vIGltcGxpZXMgdGhhdCBpdCdzIGEgY2VsbC4gVGhpcyBz
aW1wbGlmaWVzIHRoaW5ncywgc2luY2UgaW4gZ2VuZXJhbCB3ZSdkIGhhdmUKKyAgICAgICAgICAg
IC8vIHRvIHVzZSBhIEpTQ29uc3RhbnQgZm9yIG5vbi1jZWxscyBhbmQgYSBXZWFrSlNDb25zdGFu
dCBmb3IgY2VsbHMuIFNvIGluc3RlYWQKKyAgICAgICAgICAgIC8vIG9mIGhhdmluZyBib3RoIGNh
c2VzIHdlIGp1c3QgYXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGEgY2VsbC4KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gTkIuIElmIGl0IHdhc24ndCBmb3IgQ1NFLCBHbG9iYWxWYXJXYXRj
aHBvaW50IHdvdWxkIGhhdmUgbm8gbmVlZCBmb3IgdGhlCisgICAgICAgICAgICAvLyByZWdpc3Rl
ciBwb2ludGVyLiBCdXQgQ1NFIHRyYWNrcyBlZmZlY3RzIG9uIGdsb2JhbCB2YXJpYWJsZXMgYnkg
Y29tcGFyaW5nCisgICAgICAgICAgICAvLyByZWdpc3RlciBwb2ludGVycy4gQmVjYXVzZSBDU0Ug
ZXhlY3V0ZXMgbXVsdGlwbGUgdGltZXMgd2hpbGUgdGhlIGJhY2tlbmQKKyAgICAgICAgICAgIC8v
IGV4ZWN1dGVzIG9uY2UsIHdlIHVzZSB0aGUgZm9sbG93aW5nIHBlcmZvcm1hbmNlIHRyYWRlLW9m
ZjoKKyAgICAgICAgICAgIC8vIC0gVGhlIG5vZGUgcmVmZXJzIGRpcmVjdGx5IHRvIHRoZSByZWdp
c3RlciBwb2ludGVyIHRvIG1ha2UgQ1NFIHN1cGVyIGNoZWFwLgorICAgICAgICAgICAgLy8gLSBU
byBwZXJmb3JtIGJhY2tlbmQgY29kZSBnZW5lcmF0aW9uLCB0aGUgbm9kZSBvbmx5IGNvbnRhaW5z
IHRoZSBpZGVudGlmaWVyCisgICAgICAgICAgICAvLyAgIG51bWJlciwgZnJvbSB3aGljaCBpdCBp
cyBwb3NzaWJsZSB0byBnZXQgKHZpYSBhIGZldyBhdmVyYWdlLXRpbWUgTygxKQorICAgICAgICAg
ICAgLy8gICBsb29rdXBzKSB0byB0aGUgV2F0Y2hwb2ludFNldC4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgICAgICBHbG9iYWxWYXJXYXRjaHBvaW50
LAorICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJlZ2lzdGVySXNJ
blRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzJdLnUucmVnaXN0ZXJQb2ludGVyKSksCisg
ICAgICAgICAgICAgICAgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT5yZWdpc3Rl
ckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpOworICAgICAgICAgICAgQVNTRVJUKHNwZWNpZmlj
VmFsdWUuaXNDZWxsKCkpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQsCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChXZWFrSlNDb25zdGFudCwgT3BJ
bmZvKHNwZWNpZmljVmFsdWUuYXNDZWxsKCkpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSk7CisgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXgg
dmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC0yMjY4LDYg
KzIzMTksMjggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2dsb2JhbF92YXIpOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazogeworICAgICAgICAgICAgTm9kZUlu
ZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
azsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvbls0
XS51Lm9wZXJhbmRdOworICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gbV9jb2Rl
QmxvY2stPmlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmdldChpZGVudGlm
aWVyLmltcGwoKSk7CisgICAgICAgICAgICBpZiAoIWVudHJ5LmNvdWxkQmVXYXRjaGVkKCkpIHsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgICAgICBQdXRHbG9i
YWxWYXIsCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhnbG9iYWxPYmplY3QtPmFzc2VydFJl
Z2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2lu
dGVyKSksCisgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBhZGRUb0dyYXBoKAorICAgICAgICAgICAgICAgIFB1dEdsb2JhbFZhckNoZWNrLAorICAg
ICAgICAgICAgICAgIE9wSW5mbyhjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hc3NlcnRSZWdp
c3RlcklzSW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRl
cikpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwKKyAgICAgICAg
ICAgICAgICB2YWx1ZSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjayk7CisgICAgICAgIH0KKwogICAgICAgICAvLyA9PT0gQmxvY2sgdGVybWluYXRvcnMu
ID09PQogCiAgICAgICAgIGNhc2Ugb3Bfam1wOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0
LDYgKzk0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwogICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwor
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgp
CiAgICAgewpAQCAtNDMzLDYgKzQzOSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzZXR1
cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
PihhcmcxLCBhcmcyKTsKICAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzKFRydXN0ZWRJbW1QdHIgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYg
KzIxNywyOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgIH0KICAgICAK
KyAgICBib29sIGdsb2JhbFZhcldhdGNocG9pbnRFbGltaW5hdGlvbihXcml0ZUJhcnJpZXI8VW5r
bm93bj4qIHJlZ2lzdGVyUG9pbnRlcikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CisgICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBt
X2N1cnJlbnRCbG9jay0+YXQoaSk7CisgICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtp
bmRleF07CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAgICAgICAgICAgY2Fz
ZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAgICAgICAgICAgICAgIGlmIChub2RlLnJlZ2lzdGVy
UG9pbnRlcigpID09IHJlZ2lzdGVyUG9pbnRlcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFB1dEdsb2Jh
bFZhcjoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdp
c3RlclBvaW50ZXIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9ncmFwaC5jbG9iYmVyc1dvcmxk
KGluZGV4KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAogICAgIE5vZGVJbmRleCBnbG9iYWxWYXJTdG9yZUVsaW1p
bmF0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKQogICAgIHsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKQEAgLTIyNiw2
ICsyNDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgor
ICAgICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTk4NSw3ICsx
MDA5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChnbG9iYWxWYXJM
b2FkRWxpbWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAg
ICAgICAgICAgaWYgKGdsb2JhbFZhcldhdGNocG9pbnRFbGltaW5hdGlvbihub2RlLnJlZ2lzdGVy
UG9pbnRlcigpKSkKKyAgICAgICAgICAgICAgICBlbGltaW5hdGUoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAgICBj
YXNlIFB1dEdsb2JhbFZhckNoZWNrOgogICAgICAgICAgICAgaWYgKG1fZml4cG9pbnRTdGF0ZSA9
PSBGaXhwb2ludE5vdENvbnZlcmdlZCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGVsaW1pbmF0ZShnbG9iYWxWYXJTdG9yZUVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2lu
dGVyKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw5IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZSgKICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgorICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92
YXJfd2F0Y2hhYmxlOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CisgICAgY2FzZSBvcF9w
dXRfZ2xvYmFsX3Zhcl9jaGVjazoKICAgICBjYXNlIG9wX2ptcDoKICAgICBjYXNlIG9wX2xvb3A6
CiAgICAgY2FzZSBvcF9qdHJ1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICBpZiAoIWJsb2NrLT5jZmFGb3VuZENvbnN0YW50cykKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCisgICAgICAgICAgICBkYXRhTG9nKCJDb25zdGFudCBmb2xkaW5nIGNvbnNpZGVy
aW5nIEJsb2NrICMldS5cbiIsIGJsb2NrSW5kZXgpOworI2VuZGlmCiAgICAgICAgICAgICBzdGF0
ZS5iZWdpbkJhc2ljQmxvY2soYmxvY2spOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRl
eEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9j
aykgewogICAgICAgICAgICAgICAgIGlmICghc3RhdGUuaXNWYWxpZCgpKQpAQCAtOTAsNyArOTMs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RhdGUuZXhl
Y3V0ZShpbmRleEluQmxvY2spOwogICAgICAgICAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5l
cmF0ZSgpCi0gICAgICAgICAgICAgICAgICAgIHx8IG1fZ3JhcGguY2xvYmJlcnNXb3JsZChub2Rl
KQorICAgICAgICAgICAgICAgICAgICB8fCBzdGF0ZS5kaWRDbG9iYmVyKCkKICAgICAgICAgICAg
ICAgICAgICAgfHwgbm9kZS5oYXNDb25zdGFudCgpKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUuZm9yTm9kZShub2Rl
SW5kZXgpLnZhbHVlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJl
Y3RhYmxlSnVtcFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDYgKzY2LDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KICAgICAKKyAgICBi
b29sIGlzU2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvZGVPZmZzZXQgIT0gc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOworICAgIH0KKyAgICAKICAgICB2b2lkIHN3
aXRjaFRvTGF0ZUp1bXAoTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgY2hlY2spCiAgICAg
ewogI2lmbmRlZiBOREVCVUcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsMTEg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKIHsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMoKTsgKytpKSB7CiAgICAg
ICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhpdChpKTsKLSAgICAgICAgZXhp
dC5tX2NoZWNrLmluaXRpYWxKdW1wKCkubGluayh0aGlzKTsKKyAgICAgICAgQVNTRVJUKCFleGl0
Lm1fY2hlY2suaXNTZXQoKSA9PSAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCAhPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICAgICAgaWYgKGV4aXQubV93YXRjaHBv
aW50SW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgICAg
ICAgICAgZXhpdC5tX2NoZWNrLmluaXRpYWxKdW1wKCkubGluayh0aGlzKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhpdC5tX3dhdGNocG9pbnRJ
bmRleCkuc2V0RGVzdGluYXRpb24obGFiZWwoKSk7CiAgICAgICAgIGppdEFzc2VydEhhc1ZhbGlk
Q2FsbEZyYW1lKCk7CiAgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGkpLCAmZ2xvYmFsRGF0
YSgpLT5vc3JFeGl0SW5kZXgpOwogICAgICAgICBleGl0Lm1fY2hlY2suc3dpdGNoVG9MYXRlSnVt
cChwYXRjaGFibGVKdW1wKCkpOwpAQCAtMTkwLDYgKzE5NCw4IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9j
aygpLT5vc3JFeGl0KGkpOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZXhpdC5tX2NoZWNrLmxh
dGVKdW1wKCksIHRhcmdldCk7CiAgICAgICAgIGV4aXQubV9jaGVjay5jb3JyZWN0TGF0ZUp1bXAo
bGlua0J1ZmZlcik7CisgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ICE9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIGNvZGVCbG9jaygp
LT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLmNvcnJlY3RMYWJlbHMobGlua0J1
ZmZlcik7CiAgICAgfQogICAgIAogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2RlQmxv
Y2s6OkxhdGVTaHJpbmspOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJl
dmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MzAsOSArNDMwLDIwIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAg
cmV0dXJuIG1fb3BJbmZvOwogICAgIH0KICAgICAKKyAgICBib29sIGhhc0lkZW50aWZpZXJOdW1i
ZXJGb3JDaGVjaygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBHbG9iYWxWYXJXYXRj
aHBvaW50IHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyQ2hlY2s7CisgICAgfQorICAgIAorICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpCisgICAgeworICAgICAgICBBU1NFUlQo
aGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8y
OworICAgIH0KKyAgICAKICAgICBib29sIGhhc1JlZ2lzdGVyUG9pbnRlcigpCiAgICAgewotICAg
ICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXI7
CisgICAgICAgIHJldHVybiBvcCgpID09IEdldEdsb2JhbFZhciB8fCBvcCgpID09IFB1dEdsb2Jh
bFZhciB8fCBvcCgpID09IEdsb2JhbFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBQdXRHbG9iYWxW
YXJDaGVjazsKICAgICB9CiAgICAgCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3Rl
clBvaW50ZXIoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
cmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dFNjb3BlZFZhciwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oR2V0R2xvYmFsVmFyLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2xvYmFsVmFyV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKFB1dEdsb2JhbFZhckNoZWNrLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAg
ICAvKiBPcHRpbWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9cCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDYgKzUxLDcgQEAgT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlUwog
ICAgICwgbV9jb2RlT3JpZ2luKGppdC0+bV9jb2RlT3JpZ2luRm9yT1NSKQogICAgICwgbV9jb2Rl
T3JpZ2luRm9yRXhpdFByb2ZpbGUobV9jb2RlT3JpZ2luKQogICAgICwgbV9yZWNvdmVyeUluZGV4
KHJlY292ZXJ5SW5kZXgpCisgICAgLCBtX3dhdGNocG9pbnRJbmRleChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgLCBtX2tpbmQoa2luZCkKICAgICAsIG1fY291bnQo
MCkKICAgICAsIG1fYXJndW1lbnRzKGppdC0+bV9hcmd1bWVudHMuc2l6ZSgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
Niw2ICs5Niw3IEBAIHN0cnVjdCBPU1JFeGl0IHsKICAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdp
bkZvckV4aXRQcm9maWxlOwogICAgIAogICAgIHVuc2lnbmVkIG1fcmVjb3ZlcnlJbmRleDsKKyAg
ICB1bnNpZ25lZCBtX3dhdGNocG9pbnRJbmRleDsKICAgICAKICAgICBFeGl0S2luZCBtX2tpbmQ7
CiAgICAgdWludDMyX3QgbV9jb3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI0LDYgKzky
NCwxMSBAQCB2b2lkKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDb25zCiAgICAgcmV0
dXJuIHZpcnR1YWxGb3IoZXhlY0NhbGxlZSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKK3ZvaWQg
REZHX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZShXYXRjaHBvaW50U2V0
KiB3YXRjaHBvaW50U2V0KQoreworICAgIHdhdGNocG9pbnRTZXQtPm5vdGlmeVdyaXRlKCk7Cit9
CisKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZShFeGVjU3Rh
dGUqIGV4ZWMsIElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAs
NiArMTAwLDcgQEAgdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdAogdHlw
ZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FSkpKKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVk
ZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpQUCkoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB2b2lkKik7CiB0eXBlZGVmIHZvaWQgREZH
X09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQz
Ml90LCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZH
T3BlcmF0aW9uX1cpKFdhdGNocG9pbnRTZXQqKTsKIHR5cGVkZWYgdm9pZCogREZHX09QRVJBVElP
TiAoKlBfREZHT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogCiAvLyBUaGVzZSByb3V0aW5lcyBh
cmUgcHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0
aW9ucyB0b28gY29tcGxleCB0byBKSVQuCkBAIC0xMTYsNiArMTE3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElk
ZW50aWZpZXIqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNhbGxDdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiwgSlNDZWxsKiwgUHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmMsIElkZW50aWZpZXIqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxHZXR0ZXIoRXhlY1N0YXRlKiwgSlNDZWxsKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwordm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5vdGlm
eUdsb2JhbFZhcldyaXRlKFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZShFeGVjU3Rh
dGUqLCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBvcGVyYXRpb25SZXNvbHZlQmFzZShFeGVjU3RhdGUqLCBJZGVudGlmaWVyKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlQmFz
ZVN0cmljdFB1dChFeGVjU3RhdGUqLCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OTEsNyArNDkxLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6IHsKKyAgICAg
ICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6IHsK
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdz
KE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjY5
LDYgKzY3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50czoKICAg
ICAgICAgY2FzZSBDaGVja051bWJlcjoKICAgICAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENy
ZWF0ZWQ6CisgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTk2LDYgKzM1OTYsNjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dEdsb2JhbFZhckNo
ZWNrOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OworICAgICAgICAKKyAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCA9CisgICAg
ICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFi
bGUoKS5nZXQoCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1i
ZXJGb3JDaGVjaygpKS0+aW1wbCgpKS53YXRjaHBvaW50U2V0KCk7CisgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9u
WmVybywKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyh3
YXRjaHBvaW50U2V0LT5hZGRyZXNzT2ZJc1dhdGNoZWQoKSkpLAorICAgICAgICAgICAgICAgIHRo
aXMsIG9wZXJhdGlvbk5vdGlmeUdsb2JhbFZhcldyaXRlLCBOb1Jlc3VsdCwgd2F0Y2hwb2ludFNl
dCkpOworICAgICAgICAKKyAgICAgICAgaWYgKEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgp
KSB7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAg
IEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgd3JpdGVCYXJyaWVyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4p
LCB2YWx1ZS50YWdHUFIoKSwgbm9kZS5jaGlsZDEoKSwgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVB
Y2Nlc3MsIHNjcmF0Y2hSZWcpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IGlmIHdl
IGhhcHBlbiB0byBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIgLSBhbmQgX09OTFlfIGlmIHdlIGhhcHBl
biB0byBoYXZlCisgICAgICAgIC8vIGEgc3BhcmUgcmVnaXN0ZXIgLSBhIGdvb2Qgb3B0aW1pemF0
aW9uIHdvdWxkIGJlIHRvIHB1dCB0aGUgcmVnaXN0ZXIgcG9pbnRlciBpbnRvCisgICAgICAgIC8v
IGEgcmVnaXN0ZXIgYW5kIHRoZW4gZG8gYSB6ZXJvIG9mZnNldCBzdG9yZSBmb2xsb3dlZCBieSBh
IGZvdXItb2Zmc2V0IHN0b3JlIChvcgorICAgICAgICAvLyB2aWNlLXZlcnNhIGRlcGVuZGluZyBv
biBlbmRpYW5uZXNzKS4KKyAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS50YWdHUFIoKSwgbm9k
ZS5yZWdpc3RlclBvaW50ZXIoKS0+dGFnUG9pbnRlcigpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUz
Mih2YWx1ZS5wYXlsb2FkR1BSKCksIG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPnBheWxvYWRQb2lu
dGVyKCkpOworCisgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKKyAg
ICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxl
KCkuZ2V0KAorICAgICAgICAgICAgaWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JD
aGVjaygpKS0+aW1wbCgpKS5hZGRXYXRjaHBvaW50KAorICAgICAgICAgICAgICAgIHNwZWN1bGF0
aW9uV2F0Y2hwb2ludCgpKTsKKyAgICAgICAgCisjaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQor
ICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgICAgICBtX2ppdC5sb2FkMzIobm9kZS5yZWdpc3Rl
clBvaW50ZXIoKS0+dGFnUG9pbnRlcigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgbm90T0sgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihub2RlLnJl
Z2lzdGVyUG9pbnRlcigpLT5nZXQoKS50YWcoKSkpOworICAgICAgICBtX2ppdC5sb2FkMzIobm9k
ZS5yZWdpc3RlclBvaW50ZXIoKS0+cGF5bG9hZFBvaW50ZXIoKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBK
SVRDb21waWxlcjo6RXF1YWwsIHNjcmF0Y2hHUFIsCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIo
bm9kZS5yZWdpc3RlclBvaW50ZXIoKS0+Z2V0KCkucGF5bG9hZCgpKSk7CisgICAgICAgIG5vdE9L
LmxpbmsoJm1faml0KTsKKyAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAgICAgICBvay5s
aW5rKCZtX2ppdCk7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIG5vUmVzdWx0KG1fY29tcGls
ZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDaGVja0hhc0luc3Rh
bmNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGls
ZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MTUsNiArMzYxNSw1MiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50
U2V0KiB3YXRjaHBvaW50U2V0ID0KKyAgICAgICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihu
b2RlLmNvZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpLmdldCgKKyAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpLT5pbXBsKCkpLndhdGNocG9p
bnRTZXQoKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICBzbG93
UGF0aENhbGwoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLAorICAgICAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKHdhdGNocG9pbnRTZXQtPmFkZHJlc3NPZklzV2F0Y2hl
ZCgpKSksCisgICAgICAgICAgICAgICAgdGhpcywgb3BlcmF0aW9uTm90aWZ5R2xvYmFsVmFyV3Jp
dGUsIE5vUmVzdWx0LCB3YXRjaHBvaW50U2V0KSk7CisgICAgICAgIAorICAgICAgICBpZiAoSGVh
cDo6aXNXcml0ZUJhcnJpZXJFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdw
cigpOworICAgICAgICAgICAgCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiksIHZhbHVlLmdwcigpLCBub2RlLmNoaWxkMSgpLCBX
cml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcywgc2NyYXRjaFJlZyk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIG1faml0LnN0b3JlUHRyKHZhbHVlLmdwcigpLCBub2RlLnJlZ2lzdGVy
UG9pbnRlcigpKTsKKworICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OiB7
CisgICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5zeW1ib2xU
YWJsZSgpLmdldCgKKyAgICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVy
Rm9yQ2hlY2soKSktPmltcGwoKSkuYWRkV2F0Y2hwb2ludCgKKyAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbldhdGNocG9pbnQoKSk7CisgICAgICAgIAorI2lmIERGR19FTkFCTEUoSklUX0FTU0VS
VCkKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihub2RlLnJl
Z2lzdGVyUG9pbnRlcigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
b2sgPSBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHNj
cmF0Y2hHUFIsCisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
SlNWYWx1ZTo6ZW5jb2RlKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPmdldCgpKSkpKTsKKyAgICAg
ICAgbV9qaXQuYnJlYWtwb2ludCgpOworICAgICAgICBvay5saW5rKCZtX2ppdCk7CisjZW5kaWYK
KyAgICAgICAgCisgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOiB7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
MTQsNiArMTQxNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJnMikpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX1cgb3BlcmF0aW9uLCBXYXRj
aHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHMoVHJ1c3RlZEltbVB0cih3YXRjaHBvaW50U2V0KSk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9u
VHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMT4KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5vUmVzdWx0VGFnLCBBcmd1bWVudFR5
cGUxIGFyZzEpCiAgICAgewpAQCAtMTY3Miw2ICsxNjc3LDExIEBAIHB1YmxpYzoKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRf
RFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9XIG9wZXJhdGlvbiwgV2F0Y2hwb2lu
dFNldCogd2F0Y2hwb2ludFNldCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
KFRydXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOworICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUs
IHR5cGVuYW1lIEFyZ3VtZW50VHlwZTE+CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBOb1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBh
cmcxKQogICAgIHsKQEAgLTE3OTMsNiArMTgwMywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0
Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBj
YWxsOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsKGNvbnN0IEZ1bmN0
aW9uUHRyJiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwo
KTsKKyAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOworICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdDEsIEdQUlJlZyByZXN1
bHQyKQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwpAQCAtMjE5Myw2ICsyMjA4LDMyIEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0No
ZWNraW5nQXJndW1lbnRUeXBlcyk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soa2luZCwganNW
YWx1ZVNvdXJjZSwgbm9kZVVzZS5pbmRleCgpLCBqdW1wVG9GYWlsLCByZWNvdmVyeSk7CiAgICAg
fQorICAgIC8vIFVzZSB0aGlzIGxpa2UgeW91IHdvdWxkIHVzZSBzcGVjdWxhdGlvbkNoZWNrKCks
IGV4Y2VwdCB0aGF0IHlvdSBkb24ndCBwYXNzIGl0IGEganVtcAorICAgIC8vIChiZWNhdXNlIHlv
dSBkb24ndCBoYXZlIHRvIGV4ZWN1dGUgYSBicmFuY2g7IHRoYXQncyBraW5kIG9mIHRoZSB3aG9s
ZSBwb2ludCksIGFuZCB5b3UKKyAgICAvLyBtdXN0IHJlZ2lzdGVyIHRoZSByZXR1cm5lZCBXYXRj
aHBvaW50IHdpdGggc29tZXRoaW5nIHJlbGV2YW50LiBJbiBnZW5lcmFsLCB0aGlzIHNob3VsZAor
ICAgIC8vIGJlIHVzZWQgd2l0aCBleHRyZW1lIGNhcmUuIFVzZSBzcGVjdWxhdGlvbkNoZWNrKCkg
dW5sZXNzIHlvdSd2ZSBnb3QgYW4gYW1hemluZyByZWFzb24KKyAgICAvLyBub3QgdG8uCisgICAg
V2F0Y2hwb2ludCogc3BlY3VsYXRpb25XYXRjaHBvaW50KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVT
b3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAg
IGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBBU1NF
UlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5
cGVzKTsKKyAgICAgICAgT1NSRXhpdCYgZXhpdCA9IG1faml0LmNvZGVCbG9jaygpLT5vc3JFeGl0
KAorICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoCisgICAgICAg
ICAgICAgICAgT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJ
bmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCgpLCB0aGlz
KSkpOworICAgICAgICBleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID0gbV9qaXQuY29kZUJsb2NrKCkt
PmFwcGVuZFdhdGNocG9pbnQoCisgICAgICAgICAgICBXYXRjaHBvaW50KG1faml0LndhdGNocG9p
bnRMYWJlbCgpKSk7CisgICAgICAgIHJldHVybiAmbV9qaXQuY29kZUJsb2NrKCktPndhdGNocG9p
bnQoZXhpdC5tX3dhdGNocG9pbnRJbmRleCk7CisgICAgfQorICAgIC8vIFRoZSBkZWZhdWx0IGZv
ciBzcGVjdWxhdGlvbiB3YXRjaHBvaW50cyBpcyB0aGF0IHRoZXkncmUgdW5jb3VudGVkLCBiZWNh
dXNlIHRoZQorICAgIC8vIGFjdCBvZiBmaXJpbmcgYSB3YXRjaHBvaW50IGludmFsaWRhdGVzIGl0
LiBTbywgZnV0dXJlIHJlY29tcGlsYXRpb25zIHdpbGwgbm90CisgICAgLy8gYXR0ZW1wdCB0byBz
ZXQgdGhpcyB3YXRjaHBvaW50IGFnYWluLgorICAgIFdhdGNocG9pbnQqIHNwZWN1bGF0aW9uV2F0
Y2hwb2ludCgpCisgICAgeworICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25XYXRjaHBvaW50KFVu
Y291bnRhYmxlV2F0Y2hwb2ludCwgSlNWYWx1ZVNvdXJjZSgpLCBOb05vZGUpOworICAgIH0KICAg
ICB2b2lkIGZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3Vy
Y2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAganVtcFRvRmFpbCwgY29uc3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVSZWNvdmVyeSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVj
a2luZ0FyZ3VtZW50VHlwZXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2
aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTksNiArMjU5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKICAgICAgICAgREVGSU5F
X09QKG9wX2dldF9hcmd1bWVudF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlf
cG5hbWUpCisgICAgICAgIERFRklORV9PUChvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUpCiAg
ICAgICAgIERFRklORV9PUChvcF9nZXRfZ2xvYmFsX3ZhcikKICAgICAgICAgREVGSU5FX09QKG9w
X2dldF9wbmFtZXMpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfc2NvcGVkX3ZhcikKQEAgLTMy
NCw2ICszMjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IERFRklORV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRl
cl9zZXR0ZXIpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3ZhcikKKyAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X3Njb3BlZF92YXIpCiAgICAgICAgIERFRklORV9PUChvcF9yZXNvbHZlKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcmVzb2x2ZV9iYXNlKQpAQCAtNDgxLDYgKzQ4Myw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3JzaGlmdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTIwMTYyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYz
LDcgKzQ2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzTWFwcGVkKGludCB2
aXJ0dWFsUmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIGJvb2wgZ2V0TWFwcGVkUGF5bG9hZChpbnQg
dmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQmIHBheWxvYWQpOwogICAgICAgICBib29s
IGdldE1hcHBlZFRhZyhpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQmIHRhZyk7
Ci0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGlu
dCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCB0YWcpOwogCkBA
IC01OTksNiArNTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfYXJndW1lbnRfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9nbG9i
YWxfdmFyKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZ2xvYmFsX3Zh
cl93YXRjaGFibGUoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKSB7IGVtaXRfb3BfZ2V0X2dsb2Jh
bF92YXIoaW5zdHJ1Y3Rpb24pOyB9CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfc2NvcGVkX3Zh
cihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5pdF9sYXp5X3JlZyhJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKEluc3Ry
dWN0aW9uKik7CkBAIC02NjIsNiArNjYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9wdXRfZ2V0dGVyX3NldHRlcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2dsb2JhbF92YXIoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9n
bG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRf
c2NvcGVkX3ZhcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZShJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV9iYXNlKEluc3RydWN0
aW9uKik7CkBAIC03MzksNiArNzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfcHJlX2luYyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVj
ayhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9yZXNv
bHZlX2dsb2JhbF9keW5hbWljKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3JzaGlmdChJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNp
b24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5MCw2ICsxMDkwLDM3IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWMKICAgICBtYXAobV9ieXRlY29kZU9mZnNl
dCArIE9QQ09ERV9MRU5HVEgob3BfcHV0X2dsb2JhbF92YXIpLCB2YWx1ZSwgcmVnVDEsIHJlZ1Qw
KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJl
Z2lzdGVyUG9pbnRlciA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnJlZ2lzdGVyUG9pbnRlcjsK
KyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIAor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgCisgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CisgICAgCisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNzKGN1cnJl
bnRJbnN0cnVjdGlvblszXS51LnByZWRpY2F0ZVBvaW50ZXIpKSk7CisgICAgCisgICAgaWYgKEhl
YXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpKSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihnbG9iYWxPYmplY3QpLCByZWdUMik7CisgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFs
T2JqZWN0LCByZWdUMSwgcmVnVDMsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmll
ckZvclZhcmlhYmxlQWNjZXNzKTsKKyAgICB9CisgICAgCisgICAgc3RvcmUzMihyZWdUMSwgcmVn
aXN0ZXJQb2ludGVyLT50YWdQb2ludGVyKCkpOworICAgIHN0b3JlMzIocmVnVDAsIHJlZ2lzdGVy
UG9pbnRlci0+cGF5bG9hZFBvaW50ZXIoKSk7CisgICAgdW5tYXAoKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIAorICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMs
IGN0aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
cmVnVDEsIHJlZ1QwKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3Vy
cmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNhbGwoKTsKK30K
Kwogdm9pZCBKSVQ6OnJlc2V0UGF0Y2hHZXRCeUlkKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZm
ZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJl
bGluayhzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CShyZXZpc2lvbiAxMjAxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNyw2ICsxMDI3LDI5IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWMKICAgICAgICAgZW1pdFdyaXRlQmFy
cmllcihnbG9iYWxPYmplY3QsIHJlZ1QwLCByZWdUMiwgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywg
V3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCwgcmVnVDApOworICAgIAorICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFi
c29sdXRlQWRkcmVzcyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5wcmVkaWNhdGVQb2ludGVyKSkp
OworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKTsKKyAgICAKKyAgICBzdG9yZVB0cihyZWdUMCwgY3VycmVudEluc3RydWN0aW9u
WzFdLnUucmVnaXN0ZXJQb2ludGVyKTsKKyAgICBpZiAoSGVhcDo6aXNXcml0ZUJhcnJpZXJFbmFi
bGVkKCkpCisgICAgICAgIGVtaXRXcml0ZUJhcnJpZXIoZ2xvYmFsT2JqZWN0LCByZWdUMCwgcmVn
VDIsIFNob3VsZEZpbHRlckltbWVkaWF0ZXMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNz
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIAorICAgIEpJVFN0dWJD
YWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0
ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwu
Y2FsbCgpOworfQorCiB2b2lkIEpJVDo6cmVzZXRQYXRjaEdldEJ5SWQoUmVwYXRjaEJ1ZmZlciYg
cmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewogICAgIHJlcGF0
Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGN0aV9vcF9nZXRf
YnlfaWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlz
aW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzc3LDYgKzIzNzcsMTUgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
SlNPYmplY3QqLCBvcF9uZXdfYQogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShzdGFja0ZyYW1l
LmNhbGxGcmFtZSwgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1
ZmZlcihzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKSksIHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQz
MigpKTsKIH0KIAorREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2dsb2JhbF92YXJf
Y2hlY2spCit7CisgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOworICAgIAor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIHN5bWJvbFRh
YmxlUHV0KGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGNhbGxGcmFtZSwgY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpKSwgc3RhY2tGcmFtZS5hcmdzWzBd
LmpzVmFsdWUoKSwgdHJ1ZSk7Cit9CisKIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1Zh
bHVlLCBvcF9yZXNvbHZlKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1l
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDEyMDE2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQ1LDYgKzQ0NSw3IEBAIGV4dGVybiAiQyIgewogICAgIHZvaWQgSklUX1NUVUIgY3Rp
X29wX3B1dF9ieV9pbmRleChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAg
ICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfYnlfdmFsKFNUVUJfQVJHU19ERUNMQVJBVElPTikg
V1RGX0lOVEVSTkFMOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1dF9nZXR0ZXJfc2V0dGVy
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOworICAgIHZvaWQgSklUX1NUVUIg
Y3RpX29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lO
VEVSTkFMOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3RlYXJfb2ZmX2FjdGl2YXRpb24oU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlf
b3BfdGVhcl9vZmZfYXJndW1lbnRzKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFM
OwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcihTVFVCX0FS
R1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTIwMTYyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODU2LDYgKzg1NiwxNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVz
b2x2ZV93CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgc3ltYm9sVGFibGVQ
dXQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVy
KHBjWzRdLnUub3BlcmFuZCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCB0cnVlKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9p
ZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcs
NiArMTQ3LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZQogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lbnN1cmVfcHJvcGVydHlfZXhpc3Rz
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX2Jh
c2UpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3dpdGhf
dGhpcyk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9nbG9iYWxf
dmFyX2NoZWNrKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5
X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50
c19sZW5ndGgpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDM5LDcgKzEwMzksNyBAQCBfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CiAg
ICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CittYWNybyBnZXRH
bG9iYWxWYXIoc2l6ZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgOFtQQ10sIHQw
CiAgICAgbG9hZGkgNFtQQ10sIHQzCkBAIC0xMDQ3LDkgKzEwNDcsMTcgQEAgX2xsaW50X29wX2dl
dF9nbG9iYWxfdmFyOgogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDBdLCB0MQogICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdCi0gICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRpIChzaXplIC0gMSkg
KiA0W1BDXSwgdDMKICAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKLSAgICBkaXNwYXRjaCg0
KQorICAgIGRpc3BhdGNoKHNpemUpCitlbmQKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgor
ICAgIGdldEdsb2JhbFZhcig0KQorCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFi
bGU6CisgICAgZ2V0R2xvYmFsVmFyKDUpCiAKIAogX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgpA
QCAtMTA2Myw2ICsxMDcxLDIyIEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBkaXNw
YXRjaCgzKQogCiAKK19sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZHAgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGJ0Ym56IFt0Ml0sIC5vcFB1dEdsb2JhbFZhckNoZWNrU2xv
dworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICB3cml0ZUJhcnJp
ZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwXQorICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFt0MF0KKyAgICBkaXNwYXRjaCg1KQorLm9wUHV0R2xvYmFsVmFyQ2hlY2tT
bG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9nbG9iYWxfdmFyX2No
ZWNrKQorICAgIGRpc3BhdGNoKDUpCisKKwogX2xsaW50X29wX2dldF9ieV9pZDoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNo
aW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJl
dmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04OTMsMTUgKzg5MywyMyBAQCBfbGxp
bnRfb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfZ2V0
X2dsb2JhbF92YXI6CittYWNybyBnZXRHbG9iYWxWYXIoc2l6ZSkKICAgICB0cmFjZUV4ZWN1dGlv
bigpCiAgICAgbG9hZHAgMTZbUEIsIFBDLCA4XSwgdDAKICAgICBsb2FkaXMgOFtQQiwgUEMsIDhd
LCB0MwogICAgIGxvYWRwIFt0MF0sIHQxCiAgICAgc3RvcmVwIHQxLCBbY2ZyLCB0MywgOF0KLSAg
ICBsb2FkcCAyNFtQQiwgUEMsIDhdLCB0MAorICAgIGxvYWRwIChzaXplIC0gMSkgKiA4W1BCLCBQ
QywgOF0sIHQwCiAgICAgdmFsdWVQcm9maWxlKHQxLCB0MCkKLSAgICBkaXNwYXRjaCg0KQorICAg
IGRpc3BhdGNoKHNpemUpCitlbmQKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIGdl
dEdsb2JhbFZhcig0KQorCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6Cisg
ICAgZ2V0R2xvYmFsVmFyKDUpCiAKIAogX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgpAQCAtOTE0
LDYgKzkyMiwyMSBAQCBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgZGlzcGF0Y2goMykK
IAogCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIDI0W1BCLCBQQywgOF0sIHQyCisgICAgbG9hZGlzIDE2W1BCLCBQQywgOF0s
IHQxCisgICAgbG9hZHAgOFtQQiwgUEMsIDhdLCB0MAorICAgIGJ0Ym56IFt0Ml0sIC5vcFB1dEds
b2JhbFZhckNoZWNrU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyKQorICAg
IHdyaXRlQmFycmllcih0MikKKyAgICBzdG9yZXAgdDIsIFt0MF0KKyAgICBkaXNwYXRjaCg1KQor
Lm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQorICAgIGRpc3BhdGNoKDUpCisKKwogX2xsaW50X29w
X2dldF9ieV9pZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgIyBXZSBvbmx5IGRvIG1vbm9t
b3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRo
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2
aXNpb24gMTIwMTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsMjIgKzUwNCwyNSBAQCB2b2lkIEpTT2JqZWN0Ojpy
ZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgc3RydWN0dXJlKCktPnNldFN0YXRpY0Z1bmN0
aW9uc1JlaWZpZWQoKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmpl
Y3Q6OnJlbW92ZURpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgICAgIHB1
dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCksIHBy
b3BlcnR5TmFtZSwgb2Zmc2V0KSk7Ci0gICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQot
ICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOworICAgIGlmIChvZmZz
ZXQgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHB1dFVuZGVm
aW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIE5FVkVS
X0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xv
dCYgc2xvdCwgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24pCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEyMDE2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3Niw3ICsxNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRyYW5z
aXRpb25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92
ZURpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOworICAgICAgICBib29sIHJlbW92
ZURpcmVjdChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOyAvLyBSZXR1cm4gdHJ1ZSBpZiBh
bnl0aGluZyBpcyByZW1vdmVkLgogICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7
IHJldHVybiBzdHJ1Y3R1cmUoKS0+ZGlkVHJhbnNpdGlvbigpOyB9CiAgICAgICAgIGJvb2wgaGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkocmV2aXNpb24gMTIwMTYyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Miw5ICs3MiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJs
ZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAgICBTeW1ib2xUYWJs
ZU9iamVjdFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJv
bFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChl
bnRyeS5pc051bGwoKSkKKyAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBvYmplY3QtPnN5
bWJvbFRhYmxlKCk7CisgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJs
ZS5maW5kKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIGlmIChpdGVyID09IHN5bWJv
bFRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgU3ltYm9sVGFibGVFbnRy
eTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNlY29uZDsKKyAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgp
KTsKICAgICBzbG90LnNldFZhbHVlKG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgp
KS5nZXQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04Myw5ICs4NiwxMiBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+CiBpbmxpbmUgYm9vbCBzeW1ib2xUYWJs
ZUdldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAgICBTeW1i
b2xUYWJsZSYgc3ltYm9sVGFibGUgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCk7CisgICAgU3ltYm9s
VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOworICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNl
Y29uZDsKKyAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICBkZXNjcmlwdG9yLnNldERl
c2NyaXB0b3IoCiAgICAgICAgIG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5n
ZXQoKSwgZW50cnkuZ2V0QXR0cmlidXRlcygpIHwgRG9udERlbGV0ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC05Niw5ICsxMDIsMTIgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAg
U3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCwKICAgICBib29sJiBzbG90SXNXcml0ZWFibGUpCiB7Ci0gICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQo
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQorICAg
IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAgICBT
eW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRl
ci0+c2Vjb25kOworICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgIHNsb3Quc2V0VmFs
dWUob2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpKTsKICAgICBzbG90
SXNXcml0ZWFibGUgPSAhZW50cnkuaXNSZWFkT25seSgpOwogICAgIHJldHVybiB0cnVlOwpAQCAt
MTEyLDE1ICsxMjEsMjEgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIEFTU0VSVCghSGVh
cDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3Qp
KTsKICAgICAKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJs
ZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnku
aXNOdWxsKCkpCisgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xU
YWJsZSgpOworICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmlu
ZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJs
ZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5
KCkpIHsKKyAgICBib29sIHdhc0ZhdDsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGZhc3RF
bnRyeSA9IGl0ZXItPnNlY29uZC5nZXRGYXN0KHdhc0ZhdCk7CisgICAgQVNTRVJUKCFmYXN0RW50
cnkuaXNOdWxsKCkpOworICAgIGlmIChmYXN0RW50cnkuaXNSZWFkT25seSgpKSB7CiAgICAgICAg
IGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KLSAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0KGdsb2Jh
bERhdGEsIG9iamVjdCwgdmFsdWUpOworICAgIGlmIChVTkxJS0VMWSh3YXNGYXQpKQorICAgICAg
ICBpdGVyLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsKKyAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZmFz
dEVudHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTM2LDYgKzE1MSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRh
YmxlUHV0V2l0aEF0dHJpYnV0ZXMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRh
YmxlRW50cnkmIGVudHJ5ID0gaXRlci0+c2Vjb25kOwogICAgIEFTU0VSVCghZW50cnkuaXNOdWxs
KCkpOworICAgIGVudHJ5Lm5vdGlmeVdyaXRlKCk7CiAgICAgZW50cnkuc2V0QXR0cmlidXRlcyhh
dHRyaWJ1dGVzKTsKICAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuc2V0
KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlN5bWJvbFRhYmxlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTeW1ib2xUYWJsZUVudHJ5JiBT
eW1ib2xUYWJsZUVudHJ5Ojpjb3B5U2xvdyhjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikK
K3sKKyAgICBBU1NFUlQob3RoZXIuaXNGYXQoKSk7CisgICAgRmF0RW50cnkqIG5ld0ZhdEVudHJ5
ID0gbmV3IEZhdEVudHJ5KCpvdGhlci5mYXRFbnRyeSgpKTsKKyAgICBmcmVlRmF0RW50cnkoKTsK
KyAgICBtX2JpdHMgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KG5ld0ZhdEVudHJ5KSB8IEZhdEZs
YWc7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmZyZWVG
YXRFbnRyeVNsb3coKQoreworICAgIEFTU0VSVChpc0ZhdCgpKTsKKyAgICBkZWxldGUgZmF0RW50
cnkoKTsKK30KKworYm9vbCBTeW1ib2xUYWJsZUVudHJ5Ojpjb3VsZEJlV2F0Y2hlZCgpCit7Cisg
ICAgaWYgKCFpc0ZhdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgV2F0Y2hwb2ludFNl
dCogd2F0Y2hwb2ludHMgPSBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLmdldCgpOworICAgIGlm
ICghd2F0Y2hwb2ludHMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gd2F0Y2hw
b2ludHMtPmlzU3RpbGxWYWxpZCgpOworfQorCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmF0dGVt
cHRUb1dhdGNoKCkKK3sKKyAgICBGYXRFbnRyeSogZW50cnkgPSBpbmZsYXRlKCk7CisgICAgaWYg
KCFlbnRyeS0+bV93YXRjaHBvaW50cykgeworICAgICAgICBlbnRyeS0+bV93YXRjaHBvaW50cyA9
IGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KCkpOworICAgICAgICBlbnRyeS0+bV93YXRjaHBv
aW50cy0+c3RhcnRXYXRjaGluZygpOworICAgIH0KK30KKworYm9vbCogU3ltYm9sVGFibGVFbnRy
eTo6YWRkcmVzc09mSXNXYXRjaGVkKCkKK3sKKyAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7
CisgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMtPmFkZHJlc3NPZklzV2F0Y2hl
ZCgpOworfQorCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmFkZFdhdGNocG9pbnQoV2F0Y2hwb2lu
dCogd2F0Y2hwb2ludCkKK3sKKyAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7CisgICAgZmF0
RW50cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkKHdhdGNocG9pbnQpOworfQorCit2b2lkIFN5bWJv
bFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlU2xvdygpCit7CisgICAgV2F0Y2hwb2ludFNldCogd2F0
Y2hwb2ludHMgPSBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLmdldCgpOworICAgIGlmICghd2F0
Y2hwb2ludHMpCisgICAgICAgIHJldHVybjsKKyAgICB3YXRjaHBvaW50cy0+bm90aWZ5V3JpdGUo
KTsKK30KKworU3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnkqIFN5bWJvbFRhYmxlRW50cnk6Omlu
ZmxhdGVTbG93KCkKK3sKKyAgICBGYXRFbnRyeSogZW50cnkgPSBuZXcgRmF0RW50cnkobV9iaXRz
KTsKKyAgICBtX2JpdHMgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGVudHJ5KSB8IEZhdEZsYWc7
CisgICAgcmV0dXJuIGVudHJ5OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxMjAx
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw1MyArMzEsMTYzIEBACiAKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAj
aW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgV2F0Y2hwb2ludDsKKyAgICBjbGFzcyBX
YXRjaHBvaW50U2V0OworCiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgaW50IG1pc3NpbmdTeW1i
b2xNYXJrZXIoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOyB9CiAK
ICAgICAvLyBUaGUgYml0IHR3aWRkbGluZyBpbiB0aGlzIGNsYXNzIGFzc3VtZXMgdGhhdCBldmVy
eSByZWdpc3RlciBpbmRleCBpcyBhCiAgICAgLy8gcmVhc29uYWJseSBzbWFsbCBwb3NpdGl2ZSBv
ciBuZWdhdGl2ZSBudW1iZXIsIGFuZCB0aGVyZWZvcmUgaGFzIGl0cyBoaWdoCiAgICAgLy8gZm91
ciBiaXRzIGFsbCBzZXQgb3IgYWxsIHVuc2V0LgogCisgICAgLy8gSW4gYWRkaXRpb24gdG8gaW1w
bGVtZW50aW5nIHNlbWFudGljcy1tYW5kYXRlZCB2YXJpYWJsZSBhdHRyaWJ1dGVzIGFuZAorICAg
IC8vIGltcGxlbWVudGF0aW9uLW1hbmRhdGVkIHZhcmlhYmxlIGluZGV4aW5nLCB0aGlzIGNsYXNz
IGFsc28gaW1wbGVtZW50cworICAgIC8vIHdhdGNocG9pbnRzIHRvIGJlIHVzZWQgZm9yIEpJVCBv
cHRpbWl6YXRpb25zLiBCZWNhdXNlIHdhdGNocG9pbnRzIGFyZQorICAgIC8vIG1lYW50IHRvIGJl
IHJlbGF0aXZlbHkgcmFyZSwgdGhpcyBjbGFzcyBvcHRpbWl6ZXMgaGVhdmlseSBmb3IgdGhlIGNh
c2UKKyAgICAvLyB0aGF0IHRoZXkgYXJlIG5vdCBiZWluZyB1c2VkLiBUbyB0aGF0IGVuZCwgdGhp
cyBjbGFzcyB1c2VzIHRoZSB0aGluLWZhdAorICAgIC8vIGlkaW9tOiBlaXRoZXIgaXQgaXMgdGhp
biwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyBhbiBpbi1wbGFjZSBlbmNvZGVkCisgICAgLy8g
d29yZCB0aGF0IGNvbnNpc3RzIG9mIGF0dHJpYnV0ZXMsIHRoZSBpbmRleCwgYW5kIGEgYml0IHNh
eWluZyB0aGF0IGl0IGlzCisgICAgLy8gdGhpbjsgb3IgaXQgaXMgZmF0LCBpbiB3aGljaCBjYXNl
IGl0IGNvbnRhaW5zIGEgcG9pbnRlciB0byBhIG1hbGxvYydkCisgICAgLy8gZGF0YSBzdHJ1Y3R1
cmUgYW5kIGEgYml0IHNheWluZyB0aGF0IGl0IGlzIGZhdC4gVGhlIG1hbGxvYydkIGRhdGEKKyAg
ICAvLyBzdHJ1Y3R1cmUgd2lsbCBiZSBtYWxsb2NlZCBhIHNlY29uZCB0aW1lIHVwb24gY29weSwg
dG8gcHJlc2VydmUgdGhlCisgICAgLy8gcHJvcGVydHkgdGhhdCBpbi1wbGFjZSBlZGl0cyB0byBT
eW1ib2xUYWJsZUVudHJ5IGRvIG5vdCBtYW5pZmVzdCBpbiBhbnkKKyAgICAvLyBjb3BpZXMuIEhv
d2V2ZXIsIHRoZSBtYWxsb2MnZCBGYXRFbnRyeSBkYXRhIHN0cnVjdHVyZSBjb250YWlucyBhIHJl
Zi0KKyAgICAvLyBjb3VudGVkIHBvaW50ZXIgdG8gYSBzaGFyZWQgV2F0Y2hwb2ludFNldC4gVGh1
cywgaW4tcGxhY2UgZWRpdHMgb2YgdGhlCisgICAgLy8gV2F0Y2hwb2ludFNldCB3aWxsIG1hbmlm
ZXN0IGluIGFsbCBjb3BpZXMuIEhlcmUncyBhIHBpY3R1cmU6CisgICAgLy8KKyAgICAvLyBTeW1i
b2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hwb2ludFNldAorICAgIC8vCisgICAg
Ly8gSWYgeW91IG1ha2UgYSBjb3B5IG9mIGEgU3ltYm9sVGFibGVFbnRyeSwgeW91IHdpbGwgaGF2
ZToKKyAgICAvLworICAgIC8vIG9yaWdpbmFsOiBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRy
eSAtLT4gV2F0Y2hwb2ludFNldAorICAgIC8vIGNvcHk6ICAgICBTeW1ib2xUYWJsZUVudHJ5IC0t
PiBGYXRFbnRyeSAtLS0tLV4KKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5IHsKKyAgICAg
ICAgLy8gVXNlIHRoZSBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGNsYXNzLCBlaXRoZXIgdmlhIGlt
cGxpY2l0IGNhc3Qgb3IgYnkgY2FsbGluZworICAgICAgICAvLyBnZXRGYXN0KCksIHdoZW4geW91
ICgxKSBvbmx5IGNhcmUgYWJvdXQgaXNOdWxsKCksIGdldEluZGV4KCksIGFuZCBpc1JlYWRPbmx5
KCksCisgICAgICAgIC8vIGFuZCAoMikgeW91IGFyZSBpbiBhIGhvdCBwYXRoIHdoZXJlIHlvdSBu
ZWVkIHRvIG1pbmltaXplIHRoZSBudW1iZXIgb2YgdGltZXMKKyAgICAgICAgLy8gdGhhdCB5b3Ug
YnJhbmNoIG9uIGlzRmF0KCkgd2hlbiBnZXR0aW5nIHRoZSBiaXRzKCkuCisgICAgICAgIGNsYXNz
IEZhc3QgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBGYXN0KCkKKyAgICAgICAgICAg
ICAgICA6IG1fYml0cygwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIEZhc3QoY29uc3QgU3ltYm9sVGFibGVFbnRy
eSYgZW50cnkpCisgICAgICAgICAgICAgICAgOiBtX2JpdHMoZW50cnkuYml0cygpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIW1fYml0czsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IGdldEluZGV4KCkgY29uc3QKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2JpdHMg
Pj4gRmxhZ0JpdHMpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGJvb2wg
aXNSZWFkT25seSgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgdW5zaWduZWQgZ2V0QXR0cmlidXRlcygpIGNvbnN0CisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7CisgICAgICAgICAgICAgICAg
aWYgKG1fYml0cyAmIFJlYWRPbmx5RmxhZykKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
cyB8PSBSZWFkT25seTsKKyAgICAgICAgICAgICAgICBpZiAobV9iaXRzICYgRG9udEVudW1GbGFn
KQorICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IERvbnRFbnVtOworICAgICAgICAg
ICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBi
b29sIGlzRmF0KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bV9iaXRzICYgRmF0RmxhZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBw
cml2YXRlOgorICAgICAgICAgICAgZnJpZW5kIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5OworICAg
ICAgICAgICAgaW50cHRyX3QgbV9iaXRzOworICAgICAgICB9OworCiAgICAgICAgIFN5bWJvbFRh
YmxlRW50cnkoKQogICAgICAgICAgICAgOiBtX2JpdHMoMCkKICAgICAgICAgewogICAgICAgICB9
CiAKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeShpbnQgaW5kZXgpCisgICAgICAgICAgICA6IG1f
Yml0cygwKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZEluZGV4KGluZGV4
KSk7CiAgICAgICAgICAgICBwYWNrKGluZGV4LCBmYWxzZSwgZmFsc2UpOwogICAgICAgICB9CiAK
ICAgICAgICAgU3ltYm9sVGFibGVFbnRyeShpbnQgaW5kZXgsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
CisgICAgICAgICAgICA6IG1fYml0cygwKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
aXNWYWxpZEluZGV4KGluZGV4KSk7CiAgICAgICAgICAgICBwYWNrKGluZGV4LCBhdHRyaWJ1dGVz
ICYgUmVhZE9ubHksIGF0dHJpYnV0ZXMgJiBEb250RW51bSk7CiAgICAgICAgIH0KICAgICAgICAg
CisgICAgICAgIH5TeW1ib2xUYWJsZUVudHJ5KCkKKyAgICAgICAgeworICAgICAgICAgICAgZnJl
ZUZhdEVudHJ5KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN5bWJvbFRhYmxlRW50
cnkoY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgb3RoZXIpCisgICAgICAgICAgICA6IG1fYml0cygw
KQorICAgICAgICB7CisgICAgICAgICAgICAqdGhpcyA9IG90aGVyOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBvcGVyYXRvcj0oY29uc3QgU3ltYm9sVGFi
bGVFbnRyeSYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShvdGhl
ci5pc0ZhdCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29weVNsb3cob3RoZXIpOworICAg
ICAgICAgICAgZnJlZUZhdEVudHJ5KCk7CisgICAgICAgICAgICBtX2JpdHMgPSBvdGhlci5tX2Jp
dHM7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFt
X2JpdHM7CisgICAgICAgICAgICByZXR1cm4gIWJpdHMoKTsKICAgICAgICAgfQogCiAgICAgICAg
IGludCBnZXRJbmRleCgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2Jp
dHMgPj4gRmxhZ0JpdHM7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihiaXRz
KCkgPj4gRmxhZ0JpdHMpOwogICAgICAgICB9Ci0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19J
TkxJTkUgRmFzdCBnZXRGYXN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IEZhc3QoKnRoaXMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5F
IEZhc3QgZ2V0RmFzdChib29sJiB3YXNGYXQpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IEZhc3QgcmVzdWx0OworICAgICAgICAgICAgd2FzRmF0ID0gaXNGYXQoKTsKKyAgICAgICAgICAg
IGlmICh3YXNGYXQpCisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fYml0cyA9IGZhdEVudHJ5KCkt
Pm1fYml0czsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQubV9iaXRz
ID0gbV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAg
ICAKICAgICAgICAgdW5zaWduZWQgZ2V0QXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwotICAgICAgICAgICAgaWYgKG1fYml0
cyAmIFJlYWRPbmx5RmxhZykKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9IFJlYWRPbmx5
OwotICAgICAgICAgICAgaWYgKG1fYml0cyAmIERvbnRFbnVtRmxhZykKLSAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGVzIHw9IERvbnRFbnVtOwotICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7
CisgICAgICAgICAgICByZXR1cm4gZ2V0RmFzdCgpLmdldEF0dHJpYnV0ZXMoKTsKICAgICAgICAg
fQogCiAgICAgICAgIHZvaWQgc2V0QXR0cmlidXRlcyh1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAt
ODcsMzAgKzE5NywxMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc1JlYWRP
bmx5KCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFJlYWRP
bmx5RmxhZzsKKyAgICAgICAgICAgIHJldHVybiBiaXRzKCkgJiBSZWFkT25seUZsYWc7CiAgICAg
ICAgIH0KLQorICAgICAgICAKKyAgICAgICAgYm9vbCBjb3VsZEJlV2F0Y2hlZCgpOworICAgICAg
ICAKKyAgICAgICAgLy8gTm90aWZ5IGFuIG9wcG9ydHVuaXR5IHRvIGNyZWF0ZSBhIHdhdGNocG9p
bnQgZm9yIGEgdmFyaWFibGUuIFRoaXMgaXMKKyAgICAgICAgLy8gaWRlbXBvdGVudCBhbmQgZmFp
bC1zaWxlbnQuIEl0IGlzIGlkZW1wb3RlbnQgaW4gdGhlIHNlbnNlIHRoYXQgaWYKKyAgICAgICAg
Ly8gYSB3YXRjaHBvaW50IHNldCBoYWQgYWxyZWFkeSBiZWVuIGNyZWF0ZWQsIHRoZW4gYW5vdGhl
ciBvbmUgd2lsbCBub3QKKyAgICAgICAgLy8gYmUgY3JlYXRlZC4gSGVuY2UgdHdvIGNhbGxzIHRv
IHRoaXMgbWV0aG9kIGhhdmUgdGhlIHNhbWUgZWZmZWN0IGFzCisgICAgICAgIC8vIG9uZSBjYWxs
LiBJdCBpcyBhbHNvIGZhaWwtc2lsZW50LCBpbiB0aGUgc2Vuc2UgdGhhdCBpZiBhIHdhdGNocG9p
bnQKKyAgICAgICAgLy8gc2V0IGhhZCBiZWVuIGNyZWF0ZWQgYW5kIGhhZCBhbHJlYWR5IGJlZW4g
aW52YWxpZGF0ZWQsIHRoZW4gdGhpcyB3aWxsCisgICAgICAgIC8vIGp1c3QgcmV0dXJuLiBUaGlz
IG1lYW5zIHRoYXQgY291bGRCZVdhdGNoZWQoKSBtYXkgcmV0dXJuIGZhbHNlIGV2ZW4KKyAgICAg
ICAgLy8gaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYWxsIHRvIGF0dGVtcHRUb1dhdGNoKCkuCisgICAg
ICAgIHZvaWQgYXR0ZW1wdFRvV2F0Y2goKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wqIGFkZHJl
c3NPZklzV2F0Y2hlZCgpOworICAgICAgICAKKyAgICAgICAgdm9pZCBhZGRXYXRjaHBvaW50KFdh
dGNocG9pbnQqKTsKKyAgICAgICAgCisgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRT
ZXQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV93YXRjaHBv
aW50cy5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSB2
b2lkIG5vdGlmeVdyaXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKExJS0VMWSghaXNG
YXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbm90aWZ5V3JpdGVT
bG93KCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFJlYWRPbmx5RmxhZyA9IDB4MTsKLSAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIERvbnRFbnVtRmxhZyA9IDB4MjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIE5vdE51bGxGbGFnID0gMHg0OwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRmxh
Z0JpdHMgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgRmF0RmxhZyA9IDB4MTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IFJlYWRPbmx5RmxhZyA9IDB4MjsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludHB0cl90IERvbnRFbnVtRmxhZyA9IDB4NDsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludHB0cl90IE5vdE51bGxGbGFnID0gMHg4OworICAgICAgICBzdGF0aWMgY29u
c3QgaW50cHRyX3QgRmxhZ0JpdHMgPSA0OworICAgICAgICAKKyAgICAgICAgY2xhc3MgRmF0RW50
cnkgeworICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIHB1Ymxp
YzoKKyAgICAgICAgICAgIEZhdEVudHJ5KGludHB0cl90IGJpdHMpCisgICAgICAgICAgICAgICAg
OiBtX2JpdHMoYml0cyB8IEZhdEZsYWcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGludHB0cl90IG1fYml0czsgLy8gYWx3YXlzIGhhcyBG
YXRGbGFnIHNldCBhbmQgZXhhY3RseSBtYXRjaGVzIHdoYXQgdGhlIGJpdHMgd291bGQgaGF2ZSBi
ZWVuIGlmIHRoaXMgd2Fzbid0IGZhdC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVmUHRy
PFdhdGNocG9pbnRTZXQ+IG1fd2F0Y2hwb2ludHM7CisgICAgICAgIH07CisgICAgICAgIAorICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5JiBjb3B5U2xvdyhjb25zdCBTeW1ib2xUYWJsZUVudHJ5Jik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7CisgICAg
ICAgIAorICAgICAgICBib29sIGlzRmF0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIG1fYml0cyAmIEZhdEZsYWc7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNv
bnN0IEZhdEVudHJ5KiBmYXRFbnRyeSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChpc0ZhdCgpKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgRmF0
RW50cnkqPihtX2JpdHMgJiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IEZhdEVudHJ5KiBmYXRFbnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0Zh
dCgpKTsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RmF0RW50cnkqPihtX2JpdHMg
JiB+RmF0RmxhZyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBpbmZs
YXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKExJS0VMWShpc0ZhdCgpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZsYXRl
U2xvdygpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGYXRFbnRyeSogaW5mbGF0ZVNs
b3coKTsKKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgaW50cHRyX3QgYml0cygpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0ZhdCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYXRFbnRyeSgpLT5tX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gbV9iaXRzOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90JiBiaXRz
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRmF0KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsKKyAgICAgICAgICAgIHJldHVybiBtX2JpdHM7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgZnJlZUZhdEVudHJ5KCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKExJS0VMWSghaXNGYXQoKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgZnJlZUZhdEVudHJ5U2xvdygpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB2b2lkIGZyZWVGYXRFbnRyeVNsb3coKTsKIAogICAgICAgICB2b2lkIHBhY2so
aW50IGluZGV4LCBib29sIHJlYWRPbmx5LCBib29sIGRvbnRFbnVtKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBtX2JpdHMgPSAoaW5kZXggPDwgRmxhZ0JpdHMpIHwgTm90TnVsbEZsYWc7CisgICAg
ICAgICAgICBpbnRwdHJfdCYgYml0c1JlZiA9IGJpdHMoKTsKKyAgICAgICAgICAgIGJpdHNSZWYg
PSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBGbGFnQml0cykgfCBOb3ROdWxsRmxh
ZzsKICAgICAgICAgICAgIGlmIChyZWFkT25seSkKLSAgICAgICAgICAgICAgICBtX2JpdHMgfD0g
UmVhZE9ubHlGbGFnOworICAgICAgICAgICAgICAgIGJpdHNSZWYgfD0gUmVhZE9ubHlGbGFnOwog
ICAgICAgICAgICAgaWYgKGRvbnRFbnVtKQotICAgICAgICAgICAgICAgIG1fYml0cyB8PSBEb250
RW51bUZsYWc7CisgICAgICAgICAgICAgICAgYml0c1JlZiB8PSBEb250RW51bUZsYWc7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNWYWxpZEluZGV4KGludCBpbmRleCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgoaW5kZXggPDwgRmxhZ0JpdHMpID4+IEZsYWdC
aXRzKSA9PSBpbmRleDsKKyAgICAgICAgICAgIHJldHVybiAoKHN0YXRpY19jYXN0PGludHB0cl90
PihpbmRleCkgPDwgRmxhZ0JpdHMpID4+IEZsYWdCaXRzKSA9PSBzdGF0aWNfY2FzdDxpbnRwdHJf
dD4oaW5kZXgpOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IG1fYml0czsKKyAgICAgICAgaW50
cHRyX3QgbV9iaXRzOwogICAgIH07CiAKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVJbmRleEhhc2hU
cmFpdHMgOiBIYXNoVHJhaXRzPFN5bWJvbFRhYmxlRW50cnk+IHsKSW5kZXg6IFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MjAxNjIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE5IEBACisyMDEyLTA2LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIHNldCB3YXRjaHBvaW50cyBvbiBnbG9iYWwgdmFy
aWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICAKKyAg
ICAgICAgQWRkZWQgYWJpbGl0eSB0byBzZXQgdGhlIGlubGluZSBjYXBhY2l0eSBvZiBzZWdtZW50
ZWQgdmVjdG9ycy4KKworICAgICAgICAqIHd0Zi9TZWdtZW50ZWRWZWN0b3IuaDoKKyAgICAgICAg
KFdURik6CisgICAgICAgIChTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcik6CisgICAgICAgIChXVEY6
OlNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpTZWdt
ZW50ZWRWZWN0b3JJdGVyYXRvcjo6U2VnbWVudGVkVmVjdG9ySXRlcmF0b3IpOgorICAgICAgICAo
U2VnbWVudGVkVmVjdG9yKToKKwogMjAxMi0wNi0xMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggdGhlIGJ1aWxkLgpJbmRleDogU291cmNl
L1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
U2VnbWVudGVkVmVjdG9yLmgJKHJldmlzaW9uIDEyMDE2MikKKysrIFNvdXJjZS9XVEYvd3RmL1Nl
Z21lbnRlZFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTIgQEAKIG5hbWVz
cGFjZSBXVEYgewogCiAgICAgLy8gQW4gaXRlcmF0b3IgZm9yIFNlZ21lbnRlZFZlY3Rvci4gSXQg
c3VwcG9ydHMgb25seSB0aGUgcHJlICsrIG9wZXJhdG9yCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVjdG9yOwotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3Rv
ckl0ZXJhdG9yIHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXpl
ID0gOCwgc2l6ZV90IElubGluZUNhcGFjaXR5ID0gMzI+IGNsYXNzIFNlZ21lbnRlZFZlY3RvcjsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplID0gOCwgc2l6ZV90
IElubGluZUNhcGFjaXR5ID0gMzI+IGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yIHsKICAg
ICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21l
bnRTaXplPjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50
U2l6ZSwgSW5saW5lQ2FwYWNpdHk+OwogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBTZWdt
ZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4gSXRlcmF0b3I7CisgICAgICAgIHR5
cGVkZWYgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFj
aXR5PiBJdGVyYXRvcjsKIAogICAgICAgICB+U2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoKSB7IH0K
IApAQCAtNzUsNyArNzUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIHJldHVybiBt
X2luZGV4ICE9IG90aGVyLm1faW5kZXggfHwgbV9zZWdtZW50ICE9IG90aGVyLm1fc2VnbWVudCB8
fCAmbV92ZWN0b3IgIT0gJm90aGVyLm1fdmVjdG9yOwogICAgICAgICB9CiAKLSAgICAgICAgU2Vn
bWVudGVkVmVjdG9ySXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBTZWdtZW50ZWRWZWN0b3JJdGVy
YXRvcjxULCBTZWdtZW50U2l6ZT4mIG90aGVyKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVy
YXRvciYgb3BlcmF0b3I9KGNvbnN0IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRT
aXplLCBJbmxpbmVDYXBhY2l0eT4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3Zl
Y3RvciA9IG90aGVyLm1fdmVjdG9yOwogICAgICAgICAgICAgbV9zZWdtZW50ID0gb3RoZXIubV9z
ZWdtZW50OwpAQCAtODQsMjUgKzg0LDI4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcihTZWdtZW50ZWRW
ZWN0b3I8VCwgU2VnbWVudFNpemU+JiB2ZWN0b3IsIHNpemVfdCBzZWdtZW50LCBzaXplX3QgaW5k
ZXgpCisgICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKFNlZ21lbnRlZFZlY3RvcjxULCBT
ZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IsIHNpemVfdCBzZWdtZW50LCBzaXpl
X3QgaW5kZXgpCiAgICAgICAgICAgICA6IG1fdmVjdG9yKHZlY3RvcikKICAgICAgICAgICAgICwg
bV9zZWdtZW50KHNlZ21lbnQpCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZT4m
IG1fdmVjdG9yOworICAgICAgICBTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemUsIElubGlu
ZUNhcGFjaXR5PiYgbV92ZWN0b3I7CiAgICAgICAgIHNpemVfdCBtX3NlZ21lbnQ7CiAgICAgICAg
IHNpemVfdCBtX2luZGV4OwogICAgIH07CiAKICAgICAvLyBTZWdtZW50ZWRWZWN0b3IgaXMganVz
dCBsaWtlIFZlY3RvciwgYnV0IGl0IGRvZXNuJ3QgbW92ZSB0aGUgdmFsdWVzCiAgICAgLy8gc3Rv
cmVkIGluIGl0cyBidWZmZXIgd2hlbiBpdCBncm93cy4gVGhlcmVmb3JlLCBpdCBpcyBzYWZlIHRv
IGtlZXAKLSAgICAvLyBwb2ludGVycyBpbnRvIGEgU2VnbWVudGVkVmVjdG9yLgotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemU+IGNsYXNzIFNlZ21lbnRlZFZlY3Rv
ciB7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdt
ZW50U2l6ZT47CisgICAgLy8gcG9pbnRlcnMgaW50byBhIFNlZ21lbnRlZFZlY3Rvci4gVGhlIGRl
ZmF1bHQgdHVuaW5nIHZhbHVlcyBhcmUKKyAgICAvLyBvcHRpbWl6ZWQgZm9yIHNlZ21lbnRlZCB2
ZWN0b3JzIHRoYXQgZ2V0IGxhcmdlOyB5b3UgbWF5IHdhbnQgdG8gdXNlCisgICAgLy8gU2VnbWVu
dGVkVmVjdG9yPHRoaW5neSwgMSwgMD4gaWYgeW91IGRvbid0IGV4cGVjdCBhIGxvdCBvZiBlbnRy
aWVzLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUsIHNpemVf
dCBJbmxpbmVDYXBhY2l0eT4KKyAgICBjbGFzcyBTZWdtZW50ZWRWZWN0b3IgeworICAgICAgICBm
cmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGlu
ZUNhcGFjaXR5PjsKICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9y
SXRlcmF0b3I8VCwgU2VnbWVudFNpemU+IEl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIFNlZ21l
bnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxpbmVDYXBhY2l0eT4gSXRlcmF0
b3I7CiAKICAgICAgICAgU2VnbWVudGVkVmVjdG9yKCkKICAgICAgICAgICAgIDogbV9zaXplKDAp
CkBAIC0yNTAsNyArMjUzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgc2l6ZV90IG1f
c2l6ZTsKICAgICAgICAgU2VnbWVudCBtX2lubGluZVNlZ21lbnQ7Ci0gICAgICAgIFZlY3RvcjxT
ZWdtZW50KiwgMzI+IG1fc2VnbWVudHM7CisgICAgICAgIFZlY3RvcjxTZWdtZW50KiwgSW5saW5l
Q2FwYWNpdHk+IG1fc2VnbWVudHM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMjAxNjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgorCisgICAgICAgIERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2lu
dHMgb24gZ2xvYmFsIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODg2OTIKKworICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBHZW9mZnJl
eSBHYXJlbi4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGEgdGVzdCBmb3Igd2F0Y2hwb2ludHMu
IEFsc28gdXBkYXRlZCB0aGUganNjLXRlc3QtbGlzdCB0byBpbmNsdWRlIHRoZSBsYXRlc3QKKyAg
ICAgICAgdGVzdHMuCisKKyAgICAgICAgKiBmYXN0L2pzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13
YXRjaHBvaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9kZmctY2Fs
bC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L2pzYy10ZXN0LWxpc3Q6CisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGZnLWNhbGwt
ZnVuY3Rpb24taGl0LXdhdGNocG9pbnQuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAg
ICAgKGJhcik6CisgICAgICAgICguZm9vKToKKwogMjAxMi0wNi0xMiAgRWRhZW5hIFNhbGluYXMg
SmFzc28gIDxlZGFlbmFAYXBwbGUuY29tPgogCiAgICAgICAgIENhbid0IHNldCBlbC50eXBlIG9u
IGEgPGJ1dHRvbj4gZWxlbWVudApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctY2FsbC1m
dW5jdGlvbi1oaXQtd2F0Y2hwb2ludC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9kZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1jYWxsLWZ1bmN0aW9u
LWhpdC13YXRjaHBvaW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDkg
QEAKK1Rlc3RzIGNvcnJlY3RuZXNzIG9mIGZ1bmN0aW9uIGNhbGxzIHdoZW4gdGhlIGZ1bmN0aW9u
IGlzIG92ZXJ3cml0dGVuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAzCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDcKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyA5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxMwor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDE1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTcKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAxOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIxCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMjMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIDI3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjkKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAzMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDMzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMzUK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAzNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDM5CitQQVNT
IGJhcihpLCBpICsgMSkgaXMgNDEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA0MworUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDQ1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNDcKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyA0OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDUxCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgNTMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA1NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDU3
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNTkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA2MQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDYzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgNjUKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyA2NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDY5CitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgNzEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA3MworUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDc1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNzcKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA3
OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDgxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgODMKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyA4NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDg3CitQQVNTIGJh
cihpLCBpICsgMSkgaXMgODkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA5MQorUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDkzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgOTUKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyA5NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDk5CitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MTAxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTAzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTA1
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTA3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTA5CitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgMTExCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTEzCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMTE1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTE3CitQQVNTIGJh
cihpLCBpICsgMSkgaXMgMTE5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTIxCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMTIzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTI1CitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgMTI3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTI5CitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMTMxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTMzCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMTM1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTM3CitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MTM5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTQxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTQz
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTQ1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTQ3CitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgMTQ5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTUxCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMTUzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTU1CitQQVNTIGJh
cihpLCBpICsgMSkgaXMgMTU3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTU5CitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMTYxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTYzCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgMTY1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTY3CitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMTY5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTcxCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMTczCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTc1CitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MTc3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTc5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTgx
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTgzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTg1CitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgMTg3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTg5CitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMTkxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTkzCitQQVNTIGJh
cihpLCBpICsgMSkgaXMgMTk1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTk3CitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMTk5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjAxCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgMjAzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjA1CitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMjA3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjA5CitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMjExCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjEzCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MjE1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjE3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjE5
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjIxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjIzCitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgMjI1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjI3CitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMjI5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjMxCitQQVNTIGJh
cihpLCBpICsgMSkgaXMgMjMzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjM1CitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMjM3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjM5CitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgMjQxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjQzCitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMjQ1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjQ3CitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMjQ5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjUxCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MjUzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjU1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjU3
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjU5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjYxCitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgMjYzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjY1CitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMjY3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjY5CitQQVNTIGJh
cihpLCBpICsgMSkgaXMgMjcxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjczCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMjc1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjc3CitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgMjc5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjgxCitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMjgzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjg1CitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMjg3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjg5CitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MjkxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjkzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjk1
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjk3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjk5CitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsg
MSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlz
IC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0x
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAt
MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJh
cihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRjaHBvaW50
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1jYWxsLWZ1bmN0
aW9uLWhpdC13YXRjaHBvaW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZmctY2FsbC1mdW5jdGlv
bi1oaXQtd2F0Y2hwb2ludC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2pzL2pzYy10ZXN0LWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9qc2MtdGVzdC1saXN0CShyZXZpc2lvbiAxMjAxNjIpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL2pzYy10ZXN0LWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTY0LDIzICs2NCw0NSBAQCBmYXN0
L2pzL2RlYnVnZ2VyCiBmYXN0L2pzL2RlY2xhcmF0aW9uLWluLWJsb2NrCiBmYXN0L2pzL2RlbGV0
ZS1nZXR0ZXJzLXNldHRlcnMKIGZhc3QvanMvZGVsZXRlLXRoZW4tcHV0Ci1mYXN0L2pzL2RmZy1h
cmd1bWVudHMtb3NyLWV4aXQKLWZhc3QvanMvZGZnLWFyZ3VtZW50cy1taXhlZC1hbGlhcworZmFz
dC9qcy9kZmctYWRkLW5vdC1udW1iZXIKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcy1lc2Nh
cGUKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcy1vbmUtYmxvY2stb3NyLWV4aXQKK2Zhc3Qv
anMvZGZnLWFyZ3VtZW50cy1hbGlhcy1vbmUtYmxvY2stb3ZlcndyaXRlLWFyZ3VtZW50cworZmFz
dC9qcy9kZmctYXJndW1lbnRzLWFsaWFzLW9uZS1ibG9jay1vdmVyd3JpdGUKK2Zhc3QvanMvZGZn
LWFyZ3VtZW50cy1hbGlhcy1vbmUtYmxvY2sKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcwog
ZmFzdC9qcy9kZmctYXJndW1lbnRzLWNyb3NzLWNvZGUtb3JpZ2luCitmYXN0L2pzL2RmZy1hcmd1
bWVudHMtbWl4ZWQtYWxpYXMKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1vc3ItZXhpdAorZmFzdC9q
cy9kZmctYXJndW1lbnRzLW91dC1vZi1ib3VuZHMKIGZhc3QvanMvZGZnLWFyZ3VtZW50cy11bmV4
cGVjdGVkLWVzY2FwZQotZmFzdC9qcy9kZmctYXJndW1lbnRzLWFsaWFzCi1mYXN0L2pzL2RmZy1h
cmd1bWVudHMtYWxpYXMtZXNjYXBlCiBmYXN0L2pzL2RmZy1hcnJheS1sZW5ndGgtZGVhZAorZmFz
dC9qcy9kZmctYnJhbmNoLW5vdC1mYWlsCitmYXN0L2pzL2RmZy1jaGVjay10d28tc3RydWN0dXJl
cworZmFzdC9qcy9kZmctY29uc3RhbnQtZm9sZC1maXJzdC1sb2NhbC1yZWFkLWFmdGVyLWJsb2Nr
LW1lcmdlCiBmYXN0L2pzL2RmZy1jb252ZXJ0LXRoaXMtZG9tLXdpbmRvdworZmFzdC9qcy9kZmct
Y3NlLWNmYS1kaXNjcmVwYW5jeQorZmFzdC9qcy9kZmctZGVhZC1taW4tb25lLWFyZworZmFzdC9q
cy9kZmctZGVhZC1taW4tdHdvLWFyZ3MKK2Zhc3QvanMvZGZnLWRlYWQtc3BlY3VsYXRpb24KK2Zh
c3QvanMvZGZnLWRlYWQtdmFyaWFibGUtb24tZXhpdAorZmFzdC9qcy9kZmctZG91YmxlLXVzZS1v
Zi1wb3N0LXNpbXBsaWZpY2F0aW9uLWRvdWJsZS1wcmVkaWN0aW9uCiBmYXN0L2pzL2RmZy1kb3Vi
bGUtdm90ZS1mdXp6CiBmYXN0L2pzL2RmZy1leGNlcHRpb24KIGZhc3QvanMvZGZnLWZsb2F0MzJh
cnJheQogZmFzdC9qcy9kZmctZmxvYXQ2NGFycmF5CitmYXN0L2pzL2RmZy1mbHVzaC1nZXQtbG9j
YWwKIGZhc3QvanMvZGZnLWdldC1ieS12YWwtY2xvYmJlcgogZmFzdC9qcy9kZmctZ2V0LWJ5LXZh
bC1nZXR0ZXItY3NlCiBmYXN0L2pzL2RmZy1nZXR0ZXItdGhyb3cKIGZhc3QvanMvZGZnLWdldHRl
cgorZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1iZWNvbWUtZG91YmxlCitmYXN0L2pzL2Rm
Zy1pbmxpbmUtYXJndW1lbnRzLWJlY29tZS1pbnQzMgogZmFzdC9qcy9kZmctaW5saW5lLWFyZ3Vt
ZW50cy1pbnQzMgorZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1vc3ItZXhpdC1hbmQtY2Fw
dHVyZQorZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1vdXQtb2YtYm91bmRzCitmYXN0L2pz
L2RmZy1pbmxpbmUtYXJndW1lbnRzLXJlc2V0LWNoYW5nZXR5cGUKK2Zhc3QvanMvZGZnLWlubGlu
ZS1hcmd1bWVudHMtcmVzZXQKIGZhc3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMtc2ltcGxlCiBm
YXN0L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRzLXVzZS1kaXJlY3RseS1mcm9tLWlubGluZWQtY29k
ZQogZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy11c2UtZnJvbS1hbGwtdGhlLXBsYWNlcy1i
cm9rZW4KQEAgLTk2LDYgKzExOCw3IEBAIGZhc3QvanMvZGZnLWlubGluZS11bnVzZWQtdGhpcy1t
ZXRob2QtY2gKIGZhc3QvanMvZGZnLWlubGluZS11bnVzZWQtdGhpcwogZmFzdC9qcy9kZmctaW5s
aW5pbmctcmVnLWFsbG9jCiBmYXN0L2pzL2RmZy1pbnQxNmFycmF5CitmYXN0L2pzL2RmZy1pbnQz
Mi10by1kb3VibGUtb24ta25vd24tbnVtYmVyCiBmYXN0L2pzL2RmZy1pbnQzMmFycmF5LW92ZXJm
bG93LXZhbHVlcwogZmFzdC9qcy9kZmctaW50MzJhcnJheQogZmFzdC9qcy9kZmctaW50OGFycmF5
CkBAIC0xMDUsMTUgKzEyOCwyNCBAQCBmYXN0L2pzL2RmZy1pbnRyaW5zaWMtdW51c2VkLXRoaXMt
bWV0aG9kCiBmYXN0L2pzL2RmZy1pbnRyaW5zaWMtdW51c2VkLXRoaXMKIGZhc3QvanMvZGZnLW1p
bi1tYXgKIGZhc3QvanMvZGZnLW11bHRpcGx5CitmYXN0L2pzL2RmZy1uZWdhdGl2ZS1hcnJheS1p
bmRleAorZmFzdC9qcy9kZmctb2J2aW91cy1jb25zdGFudC1jZmEKIGZhc3QvanMvZGZnLW90aGVy
LWJyYW5jaAogZmFzdC9qcy9kZmctcG9pc29uLWZ1enoKK2Zhc3QvanMvZGZnLXByb3RvLWFjY2Vz
cy1pbmxpbmUtb3NyLWV4aXQKK2Zhc3QvanMvZGZnLXB1dC1ieS1pZC1wcm90b3R5cGUtY2hlY2sK
K2Zhc3QvanMvZGZnLXB1dGJ5dmFsLWNmYS1jbG9iYmVyCiBmYXN0L2pzL2RmZy1zdHJpbmctc3Ry
aWN0ZXEKK2Zhc3QvanMvZGZnLXRlYXItb2ZmLWFyZ3VtZW50cy1ub3QtYWN0aXZhdGlvbgogZmFz
dC9qcy9kZmctdWludDE2YXJyYXkKLWZhc3QvanMvZGZnLXVpbnQzMmFycmF5LW92ZXJmbG93LXZh
bHVlcwotZmFzdC9qcy9kZmctdWludDMyLXRvLW51bWJlcgogZmFzdC9qcy9kZmctdWludDMyLXRv
LW51bWJlci1vbi1jYXB0dXJlZC12YXJpYWJsZQorZmFzdC9qcy9kZmctdWludDMyLXRvLW51bWJl
cgorZmFzdC9qcy9kZmctdWludDMyYXJyYXktb3ZlcmZsb3ctY29uc3RhbnQKK2Zhc3QvanMvZGZn
LXVpbnQzMmFycmF5LW92ZXJmbG93LXZhbHVlcworZmFzdC9qcy9kZmctdWludDMyYXJyYXkKIGZh
c3QvanMvZGZnLXVpbnQ4YXJyYXkKIGZhc3QvanMvZGZnLXVpbnQ4Y2xhbXBlZGFycmF5CitmYXN0
L2pzL2RmZy13ZWFrLWpzLWNvbnN0YW50LXNpbGVudC1maWxsCiBmYXN0L2pzL2RpY3Rpb25hcnkt
bm8tY2FjaGUKIGZhc3QvanMvZGljdGlvbmFyeS1wcm90b3R5cGUtY2FjaGluZwogZmFzdC9qcy9k
by13aGlsZS1zZW1pY29sb24KQEAgLTEyNiw2ICsxNTgsNyBAQCBmYXN0L2pzL2V2YWwtdmFyLWRl
Y2wKIGZhc3QvanMvZXhjZXB0aW9uLWV4cHJlc3Npb24tb2Zmc2V0CiBmYXN0L2pzL2V4Y2VwdGlv
bi1mb3Itbm9ub2JqZWN0CiBmYXN0L2pzL2V4Y2VwdGlvbi1saW5lbnVtcworZmFzdC9qcy9leGNl
cHRpb24tcHJvcGFnYXRlLWZyb20tZGZnLXRvLWxsaW50CiBmYXN0L2pzL2V4Y2VwdGlvbi1wcm9w
ZXJ0aWVzCiBmYXN0L2pzL2V4Y2VwdGlvbi10cnktZmluYWxseS1zY29wZS1lcnJvcgogZmFzdC9q
cy9leGNlcHRpb24td2l0aC1oYW5kbGVyLWluc2lkZS1ldmFsLXdpdGgtZHluYW1pYy1zY29wZQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGZnLWNhbGwtZnVuY3Rpb24t
aGl0LXdhdGNocG9pbnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3Jp
cHQtdGVzdHMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctY2FsbC1mdW5jdGlvbi1o
aXQtd2F0Y2hwb2ludC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorZGVzY3JpcHRp
b24oCisiVGVzdHMgY29ycmVjdG5lc3Mgb2YgZnVuY3Rpb24gY2FsbHMgd2hlbiB0aGUgZnVuY3Rp
b24gaXMgb3ZlcndyaXR0ZW4uIgorKTsKKworZnVuY3Rpb24gZm9vKGEsIGIpIHsKKyAgICByZXR1
cm4gYSArIGI7Cit9CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGZvbyhhLCBi
KTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkgeworICAgIGlmIChpID09IDE1
MCkKKyAgICAgICAgZm9vID0gZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAtIGI7IH0KKyAgICB2
YXIgZXhwZWN0ZWQ7CisgICAgaWYgKGkgPCAxNTApCisgICAgICAgIGV4cGVjdGVkID0gaSArIGkg
KyAxOworICAgIGVsc2UKKyAgICAgICAgZXhwZWN0ZWQgPSAtMTsKKyAgICBzaG91bGRCZSgiYmFy
KGksIGkgKyAxKSIsICIiICsgZXhwZWN0ZWQpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147393</attachid>
            <date>2012-06-13 12:41:43 -0700</date>
            <delta_ts>2012-06-13 12:41:43 -0700</delta_ts>
            <desc>more platform spoonfeeding</desc>
            <filename>globalwatch_patch_21.diff</filename>
            <type>text/plain</type>
            <size>167164</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMjM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyNSBA
QAorMjAxMi0wNi0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBzZXQgd2F0Y2hwb2ludHMgb24gZ2xvYmFsIHZhcmlhYmxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg2OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAgICAg
IFJvbGxpbmcgYmFjayBpbiBhZnRlciBmaXhpbmcgV2luZG93cyBidWlsZCBpc3N1ZXMsIGFuZCBp
bXBsZW1lbnRpbmcKKyAgICAgICAgYnJhbmNoVGVzdDggZm9yIHRoZSBRdCBwb3J0J3Mgc3RyYW5n
ZSBhc3NlbWJsZXJzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRzIGdsb2JhbCB2
YXJpYWJsZSBjb25zdGFudCBmb2xkaW5nIGJ5IGFsbG93aW5nIHRoZSBvcHRpbWl6aW5nCisgICAg
ICAgIGNvbXBpbGVyIHRvIHNldCBhICJ3YXRjaHBvaW50IiBvbiBnbG9iYWxzIHRoYXQgaXQgd2lz
aGVzIHRvIGNvbnN0YW50IGZvbGQuCisgICAgICAgIElmIHRoZSB3YXRjaHBvaW50IGZpcmVzLCB0
aGVuIGFuIE9TUiBleGl0IGlzIGZvcmNlZCBieSBvdmVyd3JpdGluZyB0aGUKKyAgICAgICAgbWFj
aGluZSBjb2RlIHRoYXQgdGhlIG9wdGltaXppbmcgY29tcGlsZXIgZ2VuZXJhdGVkIHdpdGggYSBq
dW1wLgorICAgICAgICAKKyAgICAgICAgQXMgc3VjaCwgdGhpcyBwYXRjaCBpcyBhZGRpbmcgcXVp
dGUgYSBiaXQgb2Ygc3R1ZmY6CisgICAgICAgIAorICAgICAgICAtIEp1bXAgcmVwbGFjZW1lbnQg
b24gdGhvc2UgaGFyZHdhcmUgdGFyZ2V0cyBzdXBwb3J0ZWQgYnkgdGhlIG9wdGltaXppbmcKKyAg
ICAgICAgICBKSVQuIEl0IGlzIG5vdyBwb3NzaWJsZSB0byBwYXRjaCBpbiBhIGp1bXAgaW5zdHJ1
Y3Rpb24gb3ZlciBhbnkgcmVjb3JkZWQKKyAgICAgICAgICB3YXRjaHBvaW50IGxhYmVsLiBUaGUg
anVtcCBtdXN0IGJlICJsb2NhbCIgaW4gdGhlIHNlbnNlIHRoYXQgaXQgbXVzdCBiZQorICAgICAg
ICAgIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgdGhlIGxhcmdlc3QganVtcCBkaXN0YW5jZSBzdXBwb3J0
ZWQgYnkgYSBvbmUKKyAgICAgICAgICBpbnN0cnVjdGlvbiBqdW1wLgorICAgICAgICAgIAorICAg
ICAgICAtIFdhdGNocG9pbnRTZXRzIGFuZCBXYXRjaHBvaW50cy4gQSBXYXRjaHBvaW50IGlzIGEg
ZG91Ymx5LWxpbmtlZCBsaXN0IG5vZGUKKyAgICAgICAgICB0aGF0IHJlY29yZHMgdGhlIGxvY2F0
aW9uIHdoZXJlIGEganVtcCBtdXN0IGJlIGluc2VydGVkIGFuZCB0aGUKKyAgICAgICAgICBkZXN0
aW5hdGlvbiB0byB3aGljaCBpdCBzaG91bGQganVtcC4gV2F0Y2hwb2ludHMgY2FuIGJlIGFkZGVk
IHRvIGEKKyAgICAgICAgICBXYXRjaHBvaW50U2V0LiBUaGUgV2F0Y2hwb2ludFNldCBjYW4gYmUg
ZmlyZWQgYWxsIGF0IG9uY2UsIHdoaWNoIHBsYW50cworICAgICAgICAgIGFsbCBqdW1wcy4gV2F0
Y2hwb2ludFNldCBhbHNvIHJlbWVtYmVycyBpZiBpdCBoYWQgZXZlciBiZWVuIGludmFsaWRhdGVk
LAorICAgICAgICAgIHdoaWNoIGFsbG93cyBmb3IgbW9ub3RvbmljaXR5OiB3ZSB0eXBpY2FsbHkg
ZG9uJ3Qgd2FudCB0byBvcHRpbWl6ZSB1c2luZworICAgICAgICAgIHdhdGNocG9pbnRzIG9uIHNv
bWV0aGluZyBmb3Igd2hpY2ggd2F0Y2hwb2ludHMgaGFkIHByZXZpb3VzbHkgZmlyZWQuIFRoZQor
ICAgICAgICAgIGFjdCBvZiBub3RpZnlpbmcgYSBXYXRjaHBvaW50U2V0IGhhcyBhIHRyaXZpYWwg
ZmFzdCBwYXRoIGluIGNhc2Ugbm8KKyAgICAgICAgICBXYXRjaHBvaW50cyBhcmUgcmVnaXN0ZXJl
ZCAob25lLWJ5dGUgbG9hZCticmFuY2gpLgorICAgICAgICAKKyAgICAgICAgLSBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRpb25XYXRjaHBvaW50KCkuIEl0J3MgbGlrZSBzcGVjdWxhdGlvbkNoZWNr
KCksCisgICAgICAgICAgZXhjZXB0IHRoYXQgeW91IGRvbid0IGhhdmUgdG8gZW1pdCBicmFuY2hl
cy4gQnV0LCB5b3UgbmVlZCB0byBrbm93IHdoYXQKKyAgICAgICAgICBXYXRjaHBvaW50U2V0IHRv
IGFkZCB0aGUgcmVzdWx0aW5nIFdhdGNocG9pbnQgdG8uIE5vdCBldmVyeXRoaW5nIHRoYXQKKyAg
ICAgICAgICB5b3UgY291bGQgd3JpdGUgYSBzcGVjdWxhdGlvbkNoZWNrKCkgZm9yIHdpbGwgaGF2
ZSBhIFdhdGNocG9pbnRTZXQgdGhhdAorICAgICAgICAgIHdvdWxkIGdldCBub3RpZmllZCBpZiB0
aGUgY29uZGl0aW9uIHlvdSB3ZXJlIHNwZWN1bGF0aW5nIGFnYWluc3QgYmVjYW1lCisgICAgICAg
ICAgaW52YWxpZC4KKyAgICAgICAgICAKKyAgICAgICAgLSBTeW1ib2xUYWJsZUVudHJ5IG5vdyBo
YXMgdGhlIGFiaWxpdHkgdG8gcmVmZXIgdG8gYSBXYXRjaHBvaW50U2V0LiBJdCBjYW4KKyAgICAg
ICAgICBkbyBzbyB3aXRob3V0IGluY3VycmluZyBhbnkgc3BhY2Ugb3ZlcmhlYWQgZm9yIHRob3Nl
IGVudHJpZXMgdGhhdCBkb24ndAorICAgICAgICAgIGhhdmUgV2F0Y2hwb2ludFNldHMuCisgICAg
ICAgICAgCisgICAgICAgIC0gVGhlIGJ5dGVjb2RlIGdlbmVyYXRvciBpbmZlcnMgYWxsIGdsb2Jh
bCBmdW5jdGlvbiB2YXJpYWJsZXMgdG8gYmUKKyAgICAgICAgICB3YXRjaGFibGUsIGFuZCBtYWtl
cyBhbGwgc3RvcmVzIHBlcmZvcm0gdGhlIFdhdGNocG9pbnRTZXQncyB3cml0ZSBjaGVjaywKKyAg
ICAgICAgICBhbmQgbWFya3MgYWxsIGxvYWRzIGFzIGJlaW5nIHBvdGVudGlhbGx5IHdhdGNoYWJs
ZSAoaS5lLiB5b3UgY2FuIGNvbXBpbGUKKyAgICAgICAgICB0aGVtIHRvIGEgd2F0Y2hwb2ludCBh
bmQgYSBjb25zdGFudCkuCisgICAgICAgIAorICAgICAgICBQdXQgdG9nZXRoZXIsIHRoaXMgYWxs
b3dzIGZvciBmdWxseSBzbGVhenkgaW5saW5pbmcgb2YgY2FsbHMgdG8gZ2xvYmFsbHkKKyAgICAg
ICAgZGVjbGFyZWQgZnVuY3Rpb25zLiBUaGUgaW5saW5lIHByb2xvZ3VlIHdpbGwgbm8gbG9uZ2Vy
IGNvbnRhaW4gdGhlIGxvYWQgb2YKKyAgICAgICAgdGhlIGZ1bmN0aW9uLCBvciBhbnkgY2hlY2tz
IG9mIHRoZSBmdW5jdGlvbiB5b3UncmUgY2FsbGluZy4gSS5lLiBpdCdzCisgICAgICAgIHByZXR0
eSBtdWNoIGxpa2UgdGhlIGtpbmQgb2YgaW5saW5pbmcgeW91IHdvdWxkIHNlZSBpbiBKYXZhIG9y
IEMrKy4KKyAgICAgICAgRnVydGhlcm1vcmUsIHRoZSB3YXRjaHBvaW50aW5nIGZ1bmN0aW9uYWxp
dHkgaXMgYnVpbHQgdG8gYmUgZmFpcmx5IGdlbmVyYWwsCisgICAgICAgIGFuZCBzaG91bGQgYWxs
b3cgc2V0dGluZyB3YXRjaHBvaW50cyBvbiBhbGwgc29ydHMgb2YgaW50ZXJlc3RpbmcgdGhpbmdz
CisgICAgICAgIGluIHRoZSBmdXR1cmUuCisgICAgICAgIAorICAgICAgICBUaGUgc2xlYXp5IGlu
bGluaW5nIG1lYW5zIHRoYXQgd2Ugd2lsbCBub3cgc29tZXRpbWVzIGlubGluZSBpbiBjb2RlIHBh
dGhzCisgICAgICAgIHRoYXQgaGF2ZSBuZXZlciBleGVjdXRlZC4gUHJldmlvdXNseSwgdG8gaW5s
aW5lIHdlIHdvdWxkIGhhdmUgZWl0aGVyIGhhZAorICAgICAgICB0byBoYXZlIGV4ZWN1dGVkIHRo
ZSBjYWxsICh0byByZWFkIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlKSBvciBoYXZlCisgICAgICAg
IGV4ZWN1dGVkIHRoZSBtZXRob2QgY2hlY2sgKHRvIHJlYWQgdGhlIG1ldGhvZCBjaGVjaydzIGlu
bGluZSBjYWNoZSkuIE5vdywKKyAgICAgICAgd2UgbWlnaHQgaW5saW5lIHdoZW4gdGhlIGNhbGxl
ZSBpcyBhIHdhdGNoZWQgZ2xvYmFsIHZhcmlhYmxlLiBUaGlzCisgICAgICAgIHJldmVhbGVkIHNv
bWUgaHVtb3JvdXMgYnVncy4gRmlyc3QsIGNvbnN0YW50IGZvbGRpbmcgZGlzYWdyZWVkIHdpdGgg
Q0ZBCisgICAgICAgIG92ZXIgd2hhdCBraW5kcyBvZiBvcGVyYXRpb25zIGNhbiBjbG9iYmVyIChl
eGFtcGxlOiBjb2RlIHBhdGggQSBpcyBkZWFkCisgICAgICAgIGJ1dCBzdG9yZXMgYSBTdHJpbmcg
aW50byB2YXJpYWJsZSBYLCBhbGwgb3RoZXIgY29kZSBwYXRocyBzdG9yZSAwIGludG8KKyAgICAg
ICAgWCwgYW5kIHRoZW4geW91IGRvIENvbXBhcmVFcShYLCAwKSAtIENGQSB3aWxsIHNheSB0aGF0
IHRoaXMgaXMgYSBub24tCisgICAgICAgIGNsb2JiZXJpbmcgY29uc3RhbnQsIGJ1dCBjb25zdGFu
dCBmb2xkaW5nIHRob3VnaHQgaXQgd2FzIGNsb2JiZXJpbmcKKyAgICAgICAgYmVjYXVzZSBpdCBz
YXcgdGhlIFN0cmluZyBwcmVkaWN0aW9uKS4gU2Vjb25kLCBpbmxpbmluZyB3b3VsZCBjcmFzaCBp
ZgorICAgICAgICB0aGUgaW5saW5lIGNhbGxlZSBoYWQgbm90IGJlZW4gY29tcGlsZWQuIFRoaXMg
cGF0Y2ggZml4ZXMgYm90aCBidWdzLAorICAgICAgICBzaW5jZSBvdGhlcndpc2UgcnVuLWphdmFz
Y3JpcHRjb3JlLXRlc3RzIHdvdWxkIHJlcG9ydCByZWdyZXNzaW9ucy4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJN
djdBc3NlbWJsZXIuaDoKKyAgICAgICAgKEFSTXY3QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6
QVJNdjdBc3NlbWJsZXI6OkFSTXY3QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3Nl
bWJsZXI6OmxhYmVsRm9yV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVy
OjpsYWJlbCk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAp
OgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6
CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyKToKKyAgICAgICAgKExhYmVs
KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6d2F0Y2hwb2ludExhYmVs
KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVhZFBvaW50ZXIpOgor
ICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06
OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk06OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3Ojpsb2FkOFNpZ25lZCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6
OmxvYWQxNlNpZ25lZCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk12Nzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6Om1ha2VCcmFuY2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUZXN0OCk6Cisg
ICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQ
Uzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyU0g0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0OjpicmFuY2hUZXN0
OCk6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclNINCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyU0g0OjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clNINDo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2XzY0OjpicmFuY2hUZXN0OCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4NkFzc2VtYmxlcik6Cisg
ICAgICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcGJf
aW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnRlc3RiX2ltKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpsYWJlbEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OmxhYmVsKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0
aEp1bXApOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNp
emUpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVy
OjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0
dXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZE9TUkV4aXQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkpOgorICAg
ICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRXYXRjaHBv
aW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZldhdGNocG9pbnRzKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp3YXRjaHBvaW50KToKKyAgICAgICAgKERGR0RhdGEpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
ZXhpdEtpbmRUb1N0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6ZXhpdEtpbmRJc0NvdW50YWJs
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6
OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JDaGFpbik6CisgICAgICAgICogYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaDoKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1
Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1dhdGNocG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OldhdGNocG9pbnQ6On5XYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludDo6Y29y
cmVjdExhYmVscyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6OmZpcmUpOgorICAgICAgICAo
SlNDOjpXYXRjaHBvaW50U2V0OjpXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hw
b2ludFNldDo6fldhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojph
ZGQpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZVNsb3cpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hwb2ludHMpOgorICAgICAgICAq
IGJ5dGVjb2RlL1dhdGNocG9pbnQuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAo
V2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnQ6OldhdGNocG9pbnQpOgorICAg
ICAgICAoSlNDOjpXYXRjaHBvaW50OjpzZXREZXN0aW5hdGlvbik6CisgICAgICAgIChXYXRjaHBv
aW50U2V0KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6aXNTdGlsbFZhbGlkKToKKyAg
ICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6aGFzQmVlbkludmFsaWRhdGVkKToKKyAgICAgICAg
KEpTQzo6V2F0Y2hwb2ludFNldDo6c3RhcnRXYXRjaGluZyk6CisgICAgICAgIChKU0M6OldhdGNo
cG9pbnRTZXQ6Om5vdGlmeVdyaXRlKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6YWRk
cmVzc09mSXNXYXRjaGVkKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpSZXNvbHZlUmVzdWx0OjpjaGVja1ZhbGlkaXR5KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZhcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0U3RhdGljVmFyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRT
dGF0aWNWYXIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAoQnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uc3REZWNsTm9kZTo6ZW1pdENvZGVTaW5nbGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpjbG9iYmVyU3RydWN0dXJlcyk6Cisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuaDoKKyAgICAgICAgKEFic3RyYWN0U3RhdGUp
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmRpZENsb2JiZXIpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NDYWxsSGVscGVycy5oOgorICAg
ICAgICAoQ0NhbGxIZWxwZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNl
dHVwQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkNTRVBoYXNlOjpnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWluYXRpb24pOgorICAg
ICAgICAoQ1NFUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpnbG9iYWxWYXJT
dG9yZUVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5v
ZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpydW4p
OgorICAgICAgICAqIGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oOgorICAgICAgICAoSlND
OjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50Ojppc1NldCk6CisgICAgICAgIChDb3JyZWN0YWJs
ZUp1bXBQb2ludCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpoYXNJZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2spOgorICAgICAgICAo
Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aWRlbnRpZmllck51bWJlckZvckNoZWNr
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNSZWdpc3RlclBvaW50ZXIpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NSRXhpdCk6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKE9TUkV4aXQpOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAg
ICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjphcHBlbmRDYWxsKToKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25XYXRjaHBvaW50KToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9n
bG9iYWxfdmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nbG9iYWxf
dmFyX2NoZWNrKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6Cisg
ICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
OgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAo
TExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgIChMTElu
dCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAoSlNDOjpz
eW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRh
YmxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJs
ZUVudHJ5Ojpjb3B5U2xvdyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmZyZWVG
YXRFbnRyeVNsb3cpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpjb3VsZEJlV2F0
Y2hlZCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmF0dGVtcHRUb1dhdGNoKToK
KyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRkcmVzc09mSXNXYXRjaGVkKToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6YWRkV2F0Y2hwb2ludCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlU2xvdyk6CisgICAgICAgIChKU0M6OlN5
bWJvbFRhYmxlRW50cnk6OmluZmxhdGVTbG93KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRh
YmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3ltYm9sVGFibGVFbnRyeSk6CisgICAg
ICAgIChGYXN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6RmFzdCk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmlzTnVsbCk6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OkZhc3Q6OmdldEluZGV4KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6RmFzdDo6aXNSZWFkT25seSk6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OkZhc3Q6OmdldEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZUVudHJ5OjpGYXN0Ojppc0ZhdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6
OlN5bWJvbFRhYmxlRW50cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojp+U3lt
Ym9sVGFibGVFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om9wZXJhdG9y
PSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzTnVsbCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlRW50cnk6OmdldEluZGV4KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGVFbnRyeTo6Z2V0RmFzdCk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmdldEF0
dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojppc1JlYWRPbmx5KToK
KyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6d2F0Y2hwb2ludFNldCk6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlKToKKyAgICAgICAgKEZhdEVudHJ5
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnk6OkZhdEVudHJ5KToK
KyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6aXNGYXQpOgorICAgICAgICAoSlNDOjpT
eW1ib2xUYWJsZUVudHJ5OjpmYXRFbnRyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50
cnk6OmluZmxhdGUpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpiaXRzKToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5KToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGVFbnRyeTo6cGFjayk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50
cnk6OmlzVmFsaWRJbmRleCk6CisKIDIwMTItMDYtMTMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
MjAxNzIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
MjAyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDYgKzUzLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBi
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAK
ICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKyAgICBieXRlY29kZS9XYXRjaHBv
aW50LmNwcAogCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yMzEsNiArMjMyLDcgQEAgU0VUKEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3Bw
CiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5j
cHAKKyAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvVGltZW91dENoZWNr
ZXIuY3BwCiAgICAgcnVudGltZS9VU3RyaW5nLmNwcAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2
ICsxMzMsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVJlY292ZXJ5LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9WaXJ0dWFsUmVnaXN0ZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dh
dGNocG9pbnQuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2lu
dC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0xhYmVsLmgg
XApAQCAtNjAzLDYgKzYwNSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZXJtaW5h
dG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmNw
cCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTIwMjI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEw
ICs2MiwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvZGUvT3Bjb2RlLmNwcCBcCiAgICAgYnl0ZWNvZGUv
UG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgXAotICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcCBcCiAgICAgYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAgXAogICAgIGJ5dGVjb2RlL1Nh
bXBsaW5nVG9vbC5jcHAgXAorICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBcCiAgICAg
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIFwKKyAgICBieXRlY29kZS9XYXRjaHBvaW50
LmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBcCiAgICAgYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgXAogICAgIGhlYXAvQ29waWVkU3BhY2UuY3BwIFwK
QEAgLTIzNiw2ICsyMzcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50aW1lL1N0cmluZ1JlY3Vy
c2lvbkNoZWNrZXIuY3BwIFwKICAgICBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBcCiAgICAg
cnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKKyAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAg
ICAgcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAgXAogICAgIHJ1bnRpbWUvVVN0cmluZy5jcHAg
XAogICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
Zgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gMTIwMjI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBA
QCBFWFBPUlRTCiAgICAgP2ZpbmlzaENyZWF0aW9uQFJlZ0V4cE9iamVjdEBKU0NAQElBRVhQQVZK
U0dsb2JhbE9iamVjdEAyQEBaCiAgICAgP2ZpbmlzaENyZWF0aW9uQFN0cmluZ09iamVjdEBKU0NA
QElBRVhBQVZKU0dsb2JhbERhdGFAMkBQQVZKU1N0cmluZ0AyQEBaCiAgICAgP2ZvY3VzQFByb2Zp
bGVASlNDQEBRQUVYUEJWUHJvZmlsZU5vZGVAMkBAWgorICAgID9mcmVlRmF0RW50cnlTbG93QFN5
bWJvbFRhYmxlRW50cnlASlNDQEBBQUVYWFoKICAgICA/ZnJvbUBJZGVudGlmaWVyQEpTQ0BAU0E/
QVYxMkBQQVZFeGVjU3RhdGVAMkBIQFoKICAgICA/ZnJvbUBJZGVudGlmaWVyQEpTQ0BAU0E/QVYx
MkBQQVZFeGVjU3RhdGVAMkBJQFoKICAgICA/ZnVuY3Rpb25HZXR0ZXJAUHJvcGVydHlTbG90QEpT
Q0BAQUJFP0FWSlNWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEBaCkBAIC0yNDYsNiArMjQ3LDcgQEAg
RVhQT1JUUwogICAgID9uYW1lQEpTRnVuY3Rpb25ASlNDQEBRQUVBQlZVU3RyaW5nQDJAUEFWRXhl
Y1N0YXRlQDJAQFoKICAgICA/bmV1dGVyQEFycmF5QnVmZmVyVmlld0BXVEZAQE1BRVhYWgogICAg
ID9uZXdVbmluaXRpYWxpemVkQENTdHJpbmdAV1RGQEBTQT9BVjEyQElBQVBBREBaCisgICAgP25v
dGlmeVdyaXRlU2xvd0BTeW1ib2xUYWJsZUVudHJ5QEpTQ0BAQUFFWFhaCiAgICAgP251bGxwdHJA
QDNWbnVsbHB0cl90QHN0ZEBAQQogICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBOSUlA
WgogICAgID9udW1iZXJAVVN0cmluZ0BKU0NAQFNBP0FWMTJASEBaCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2
aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEyNTQsNiArMTI1NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFN5bWJvbFRhYmxlLmNwcCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxTeW1ib2xU
YWJsZS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2ODEsNiArMTY4NSwxNCBAQAogCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcVmFsdWVQcm9maWxlLmgiCiAJCQkJPgogCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXFdhdGNocG9p
bnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxieXRlY29kZVxXYXRjaHBvaW50LmgiCisJCQkJPgorCQkJPC9GaWxlPgogCQk8L0ZpbHRl
cj4KIAkJPEZpbHRlcgogCQkJTmFtZT0iZGVidWdnZXIiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTEzOSw2ICsxMzksOSBAQAogCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xU
YWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjkxOUQxMDE1
N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwRTE1N0YzMzI3MDA0
QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTBGOTE5RDEx
MTU3RjMzMkMwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwRjE1N0YzMzI3MDA0
QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTE5RDI1MTU4NTNDRTAwMDRBNEU3RCAv
KiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCAqLzsgfTsK
KwkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDIzMTU4NTNDREUwMDRBNEU3
RCAvKiBXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDI3MTU4
NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgKi87IH07CiAJCTBGOTMzMjlEMTRDQTdE
QzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExp
bmtTdGF0dXMuY3BwICovOyB9OwogCQkwRjkzMzI5RTE0Q0E3REM1MDA4NUYzQzYgLyogQ2FsbExp
bmtTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTMzMjlGMTRDQTdEQ0Ew
MDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3Rh
dHVzLmNwcCAqLzsgfTsKQEAgLTM3MCwxMCArMzczLDEwIEBACiAJCTdFNEVFNzBGMEVCQjdBNUIw
MDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwRTBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJl
Q2hhaW4uY3BwICovOyB9OwogCQk3RUZGMDA2NDBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRkYwMDYz
MEVDMDVBOUEwMEFBN0M5MyAvKiBOb2RlSW5mby5oICovOyB9OwogCQk4NDA0ODAxMzEwMjFBMUQ5
MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ2MEZBRkJBMkQwMDAwMTg2NSAvKiBKU0FQSVZh
bHVlV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFE
RjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovOyB9OwotCQk4
NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUwMEYzQTgzQzEwMEY4
NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyB9OwotCQk4NjAxNjFFNTBGM0E4M0MxMDBG
ODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUxMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fz
c2VtYmxlclg4Nl82NC5oICovOyB9OwotCQk4NjAxNjFFNjBGM0E4M0MxMDBGODQ3MTAgLyogTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oICovOyB9OworCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjAx
NjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2MUUwMEYzQTgzQzEwMEY4NDcx
MCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYwMTYxRTYw
RjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFFMjBGM0E4M0MxMDBGODQ3
MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjA0RjUwNTE0M0NFMUMyMDBCMjk1RjUgLyogSlNH
bG9iYWxUaGlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjA0RjUwMzE0M0NFMUMxMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwQkQ4MDExNDhFQTZGMjAw
MTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MTJFNENEMTUy
Mzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVz
dWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTQwMSwxMSArNDA0LDExIEBACiAJCTg2OUQwNEFGMTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRU
cmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjlEMDRBRTExOTNCNTREMDA4MDM0NzUgLyogQ2FjaGVkVHJhbnNjZW5k
ZW50YWxGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlFQkNCNjBFOEM2RDRB
MDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2QTkwRUQwMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1l
dGljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCAqLzsgfTsKLQkJODZB
REQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIg
LyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgfTsKLQkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8q
IE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFS
TXY3LmggKi87IH07CisJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBREQx
NDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMy
IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxl
ckFSTXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODZBRTY0QTgxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE1MTM1RTVF
MUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5jcHAgKi87IH07Ci0JCTg2QUU2NEE5MTM1
RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTYxMzVFNUUxQzAwOTYzMDEyIC8qIE1h
Y3JvQXNzZW1ibGVyU0g0LmggKi87IH07Ci0JCTg2QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBT
SDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCAqLzsgfTsKKwkJ
ODZBRTY0QTkxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFFNjRBNjEzNUU1RTFDMDA5
NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk4NkFFNjRBQTEzNUU1RTFDMDA5NjMwMTIgLyogU0g0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkFFNjRBNzEzNUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBRTZDNEQxMzZBMTFFNDAwOTYz
MDEyIC8qIERGR0ZQUkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QUU2QzRCMTM2QTExRTQwMDk2MzAxMiAvKiBERkdGUFJJbmZvLmggKi87IH07
CiAJCTg2QUU2QzRFMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFFNkM0QzEzNkExMUU0MDA5NjMw
MTIgLyogREZHR1BSSW5mby5oICovOyB9OwogCQk4NkI1ODI2NzE0RDI3OTZDMDBBOUMzMDYgLyog
Q29kZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQcm9maWxlLmNwcCAqLzsgfTsK
QEAgLTQxNCw4ICs0MTcsOCBAQAogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVw
YXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZC
QjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKIAkJODZDMzZFRUEw
RUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFj
cm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQx
MUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKLQkJODZDNTY4
RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwotCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3
RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAq
LzsgfTsKKwkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUx
MUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdG
MCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2Q0EwMzJF
MTAzOEU4NDQwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0EwMzJEMTAzOEU4NDQwMDI4QTYwOSAvKiBFeGVj
dXRhYmxlLmNwcCAqLzsgfTsKIAkJODZDQUZFRTMxMDM1RERFNjAwMjhBNjA5IC8qIEV4ZWN1dGFi
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0FG
RUUyMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8q
IEpJVElubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2Q0M4NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVNZXRob2RzLmgg
Ki87IH07CkBAIC00MjMsMTMgKzQyNiwxMyBAQAogCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIg
LyogSklUUHJvcGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZDQzg1QzMwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFByb3BlcnR5QWNj
ZXNzLmNwcCAqLzsgfTsKIAkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0NFRkREMEY0
MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkQzQjJCRjEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCAqLzsgfTsKLQkJODZE
M0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzAxMDE1NkJERTAwMjg2NUU3IC8q
IEFSTUFzc2VtYmxlci5oICovOyB9OwotCQk4NkQzQjJDNTEwMTU2QkRFMDAyODY1RTcgLyogQXNz
ZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxl
ckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAqLzsgfTsKLQkJODZEM0IyQzYxMDE1NkJERTAwMjg2
NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3NlbWJs
ZXJBUk0uaCAqLzsgfTsKLQkJODZEM0IzQzMxMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCM0Mx
MTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggKi87IH07Ci0JCTg2RDNCM0M0MTAxNTlE
N0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjNDMjEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1
ZmZlci5oICovOyB9OworCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJD
MDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzUxMDE1NkJERTAwMjg2NUU3IC8q
IEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAxNTZCREUwMDI4NjVFNyAvKiBBc3Nl
bWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3Jv
QXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkQzQjNDMzEw
MTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZm
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4
NkQzQjNDNDEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzIxMDE1OUQ3RjAwMjg2NUU3
IC8qIFJlcGF0Y2hCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9j
YXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2REI2NDYzMEY5NUM2RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9y
Rml4ZWRWTVBvb2wuY3BwICovOyB9OwotCQk4NkUxMTZCMTBGRTc1QUM4MDBCNTEyQkMgLyogQ29k
ZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi87IH07CisJCTg2
RTExNkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAv
KiBDb2RlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkU4NTUzOTExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkU4NTUzODEx
MUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi87IH07CiAJCTg2RUJGMkZGMTU2
MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQkYyRjkxNTYwRjAzNjAwOEU5MjIyIC8qIE5h
bWVDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTg2RUJGMzAwMTU2MEYwNkEwMDhFOTIyMiAvKiBO
YW1lQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2RUJGMkZBMTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuaCAqLzsg
fTsKQEAgLTQ3NSw4ICs0NzgsOCBAQAogCQk5NUY2RTY5NTBFNUI1Rjk3MDA5MUU4NjAgLyogSlNQ
cm9maWxlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJvZmlsZXJQcml2YXRlLmNw
cCAqLzsgfTsKIAkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2MDA5N0E1MEVCQUJC
NTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi87IH07CiAJCTk2MDYyNjk2MEZCOEVDMDIwMDk3
OThBQiAvKiBKSVRTdHViQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTYwNjI2OTUwRkI4RUMwMjAwOTc5OEFCIC8qIEpJVFN0dWJDYWxsLmggKi87
IH07Ci0JCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2ODhDQjEzMEVEMTJC
NEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLzsgfTsKLQkJOTY4OENCMTYwRUQxMkI0
RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxl
ci5oICovOyB9OworCQk5Njg4Q0IxNTBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0Ix
MzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlG
IC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2OUEwNzIzMEVE
MUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjEwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5
dGVjb2RlR2VuZXJhdG9yLmggKi87IH07CiAJCTk2OUEwNzJBMEVEMUNFNjkwMEYxRjY4MSAvKiBM
YWJlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5
QTA3MjcwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggKi87IH07CiAJCTk2OUEwNzJCMEVEMUNF
NjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyODBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5o
ICovOyB9OwpAQCAtODM2LDYgKzgzOSw5IEBACiAJCTBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAv
KiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU3ltYm9sVGFibGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5
MTlEMEUxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTE5RDBGMTU3RjMzMjcw
MDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2F0Y2hwb2ludC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAv
KiBXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhdGNocG9p
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMjcxNTg1Njc3MDAwNEE0
RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN5bWJvbFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMy
OTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxMaW5rU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxMaW5rU3RhdHVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBH
ZXRCeUlkU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdl
dEJ5SWRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0NSw2ICsy
MDUxLDcgQEAKIAkJCQk3RTRFRTcwRTBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4u
Y3BwICovLAogCQkJCTdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5o
ICovLAogCQkJCUJDOTA0MTQ3MEVCOTI1MDkwMEZFMjZGQSAvKiBTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGUuaCAqLywKKwkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRFN0QgLyogU3ltYm9sVGFibGUu
Y3BwICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5oICov
LAogCQkJCTk3RjY5MDNBMTE2OURGN0YwMEE2QkI0NiAvKiBUZXJtaW5hdG9yLmggKi8sCiAJCQkJ
MTRBNDJFM0QwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmNwcCAqLywKQEAgLTIy
OTYsNiArMjMwMyw4IEBACiAJCQkJMEY5NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJv
ZmlsZS5oICovLAogCQkJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5
LmggKi8sCiAJCQkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5o
ICovLAorCQkJCTBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCAqLywK
KwkJCQkwRjkxOUQyMzE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNjcx
LDYgKzI2ODAsNyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQwRDE1N0VF
MEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGOTE5RDI2MTU4NTNDRTMwMDRBNEU3RCAvKiBXYXRjaHBvaW50
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTMyNDUsNiArMzI1NSw4IEBACiAJCQkJQzI1RjhCQ0QxNTc1
NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjkxOUQyNTE1ODUzQ0UwMDA0
QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjkxOUQyODE1ODU2
NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZp
c2lvbiAxMjAyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNz
ZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMsMTIgQEAgcHVibGljOgogICAg
ICAgICBKdW1wTGlua1R5cGUgbV9saW5rVHlwZSA6IDg7CiAgICAgICAgIENvbmRpdGlvbiBtX2Nv
bmRpdGlvbiA6IDE2OwogICAgIH07CisgICAgCisgICAgQVJNdjdBc3NlbWJsZXIoKQorICAgICAg
ICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAgICAgICwgbV9pbmRleE9m
VGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICB7CisgICAgfQogCiBwcml2YXRlOgog
CkBAIC0xODIwLDEwICsxODI2LDI1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZVdvcmRPcDhJbW04KE9QX05PUF9UMSwgMCk7CiAgICAgfQorICAgIAorICAgIEFzc2Vt
YmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgeworICAgICAgICBBc3NlbWJsZXJM
YWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KQorICAg
ICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9pbmRleE9mTGFzdFdhdGNocG9p
bnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBv
aW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICBBc3NlbWJs
ZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRlci5sYWJlbCgpOworICAgICAgICB3aGlsZSAoVU5M
SUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9m
TGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkK
QEAgLTIwNjcsNiArMjA4OCwzMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7CiAgICAgfQorICAgIAorICAg
IHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lk
KiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGlu
c3RydWN0aW9uU3RhcnQpICYgMSkpOworICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90Pih0bykgJiAxKSk7CisgICAgICAgIHVpbnQxNl90KiBwdHIgPSByZWludGVycHJldF9j
YXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAyOworICAgICAgICAKKyAgICAgICAg
Ly8gRW5zdXJlIHRoYXQgd2UncmUgbm90IGluIG9uZSBvZiB0aG9zZSBlcnJhdGEtdHJpZ2dlcmlu
ZyB0aGluZ2llcy4gSWYgd2UgYXJlLCB0aGVuCisgICAgICAgIC8vIHByZXBlbmQgYSBub3AuCisg
ICAgICAgIGJvb2wgc3BhbnNUd280SyA9ICgocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocHRy
KSAmIDB4ZmZmKSA9PSAweDAwMik7CisgICAgICAgIAorICAgICAgICBpZiAoc3BhbnNUd280Sykg
eworICAgICAgICAgICAgcHRyWy0yXSA9IE9QX05PUF9UMTsKKyAgICAgICAgICAgIHB0cisrOwor
ICAgICAgICB9CisKKyAgICAgICAgbGlua0p1bXBUNChwdHIsIHRvKTsKKyAgICAgICAgY2FjaGVG
bHVzaChwdHIgLSAyLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQorICAgIAorICAgIHN0
YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gNjsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1f
Zm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KIApAQCAtMjYwNCw2ICsyNjQ5LDggQEAgcHJpdmF0
ZToKIAogICAgIFZlY3RvcjxMaW5rUmVjb3JkPiBtX2p1bXBzVG9MaW5rOwogICAgIFZlY3Rvcjxp
bnQzMl90PiBtX29mZnNldHM7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OworICAg
IGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEyMDIyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBMaW5rQnVmZmVy
OwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKK2NsYXNzIFdhdGNocG9pbnQ7CiBuYW1lc3BhY2UgREZH
IHsKIGNsYXNzIENvcnJlY3RhYmxlSnVtcFBvaW50OwogfQpAQCAtNzAsNyArNzEsNiBAQCBwdWJs
aWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgdXNlZCBhcyBvcGVyYW5kcyB0byBN
YWNyb0Fzc2VtYmxlciBvcGVyYXRpb25zLAogICAgIC8vIGRlc2NyaWJpbmcgaW1tZWRpYXRlICBh
bmQgbWVtb3J5IG9wZXJhbmRzIHRvIHRoZSBpbnN0cnVjdGlvbnMgdG8gYmUgcGxhbnRlZC4KIAot
CiAgICAgZW51bSBTY2FsZSB7CiAgICAgICAgIFRpbWVzT25lLAogICAgICAgICBUaW1lc1R3bywK
QEAgLTI3OSw2ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKdW1wOwog
ICAgICAgICBmcmllbmQgY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogICAgICAgICBmcmll
bmQgY2xhc3MgTGlua0J1ZmZlcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFdhdGNocG9pbnQ7CiAK
ICAgICBwdWJsaWM6CiAgICAgICAgIExhYmVsKCkKQEAgLTU1OSw2ICs1NjAsMTMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICAgfQogICAgIAorICAgIExhYmVsIHdh
dGNocG9pbnRMYWJlbCgpCisgICAgeworICAgICAgICBMYWJlbCByZXN1bHQ7CisgICAgICAgIHJl
c3VsdC5tX2xhYmVsID0gbV9hc3NlbWJsZXIubGFiZWxGb3JXYXRjaHBvaW50KCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIExhYmVsIGFsaWduKCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmFsaWduKDE2KTsKQEAgLTY1NSwxOCArNjYzLDYgQEAgcHJvdGVj
dGVkOgogICAgIHsKICAgICAgICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OnJlYWRQb2ludGVyKGRh
dGFMYWJlbFB0ci5kYXRhTG9jYXRpb24oKSk7CiAgICAgfQotICAgIAotICAgIHN0YXRpYyB2b2lk
IHVucmVhY2hhYmxlRm9yUGxhdGZvcm0oKQotICAgIHsKLSNpZiBDT01QSUxFUihDTEFORykKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbHNlCi0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotI2VuZGlmCi0gICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVy
LmgJKHJldmlzaW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QXNzZW1ibGVyQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDExICsyOCwxMSBAQAogCiAjaWYg
RU5BQkxFKEFTU0VNQkxFUikKIAorI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJKSVRDb21waWxhdGlvbkVmZm9ydC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5o
IgogI2luY2x1ZGUgInN0ZGludC5oIgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNLmgJKHJldmlzaW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkod29ya2luZyBjb3B5KQpAQCAtNTE0LDYgKzUx
NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgQVJNUmVn
aXN0ZXJzOjpTMSwgbWFzayk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRD
b25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihh
ZGRyZXNzLm1fcHRyKSwgQVJNUmVnaXN0ZXJzOjpTMSk7CisgICAgICAgIGxvYWQ4KEFkZHJlc3Mo
QVJNUmVnaXN0ZXJzOjpTMSksIEFSTVJlZ2lzdGVyczo6UzEpOworICAgICAgICByZXR1cm4gYnJh
bmNoVGVzdDMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIG1hc2spOworICAgIH0KKwogICAgIEp1
bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgUmVn
aXN0ZXJJRCBtYXNrKQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IFplcm8pIHx8IChj
b25kID09IE5vblplcm8pKTsKQEAgLTEwMTAsNiArMTAxNywxNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZvaWQoKikoKT4oQVJNQXNzZW1i
bGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsLmRhdGFMb2NhdGlvbigpKSkpOwogICAgIH0KIAorICAg
IHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlv
blN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIEFSTUFzc2Vt
Ymxlcjo6Q29uZGl0aW9uIEFSTUNvbmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgJKHJldmlzaW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkOFNpZ25lZChJbXBsaWNp
dEFkZHJlc3MsIFJlZ2lzdGVySUQpCiAgICAgewotICAgICAgICB1bnJlYWNoYWJsZUZvclBsYXRm
b3JtKCk7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIH0KIAogICAg
IHZvaWQgbG9hZDgoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTY3NCw3
ICs2NzQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBsb2FkMTZTaWduZWQoSW1wbGljaXRB
ZGRyZXNzLCBSZWdpc3RlcklEKQogICAgIHsKLSAgICAgICAgdW5yZWFjaGFibGVGb3JQbGF0Zm9y
bSgpOworICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICB9CiAKICAgICBE
YXRhTGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBhZGRyZXNzKQpAQCAtMTE4Niw2ICsxMTg2LDE2IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxv
Y2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBUk12N0Fzc2VtYmxlcjo6
cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0
aW9uLmRhdGFMb2NhdGlvbigpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBBUk12N0Fzc2Vt
Ymxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KIAogICAgIC8vIEZvcndhcmRz
IC8gZXh0ZXJuYWwgY29udHJvbCBmbG93IG9wZXJhdGlvbnM6CiAgICAgLy8KQEAgLTEzNTYsNiAr
MTM2NiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRk
cmVzc1RlbXBSZWdpc3RlciwgbWFzayk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hUZXN0OChS
ZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0z
MiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIC8vIHVzZSBhZGRyZXNz
VGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNoVGVzdDggd2UgY2FsbCB1c2VzIGRhdGFUZW1w
UmVnaXN0ZXIuIDotLworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciks
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkOChBZGRyZXNzKGFkZHJlc3NUZW1w
UmVnaXN0ZXIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRl
c3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrKTsKKyAgICB9CisKICAgICB2b2lk
IGp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5ieCh0
YXJnZXQpOwpAQCAtMTY3OSwxMiArMTY5NywxNCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
QUxXQVlTX0lOTElORSBKdW1wIGp1bXAoKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGFi
ZWwoKTsgLy8gRm9yY2Ugbm9wLXBhZGRpbmcgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdh
dGNocG9pbnQuCiAgICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMyKDAp
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuYngo
ZGF0YVRlbXBSZWdpc3RlciksIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBBUk12N0Fzc2VtYmxlcjo6
SnVtcE5vQ29uZGl0aW9uRml4ZWRTaXplIDogQVJNdjdBc3NlbWJsZXI6Okp1bXBOb0NvbmRpdGlv
bik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKdW1wIG1ha2VCcmFuY2goQVJNdjdBc3Nl
bWJsZXI6OkNvbmRpdGlvbiBjb25kKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGFiZWwo
KTsgLy8gRm9yY2Ugbm9wLXBhZGRpbmcgaWYgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdhdGNo
cG9pbnQuCiAgICAgICAgIG1fYXNzZW1ibGVyLml0KGNvbmQsIHRydWUsIHRydWUpOwogICAgICAg
ICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdpc3Rl
cik7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIp
LCBtX21ha2VKdW1wUGF0Y2hhYmxlID8gQVJNdjdBc3NlbWJsZXI6Okp1bXBDb25kaXRpb25GaXhl
ZFNpemUgOiBBUk12N0Fzc2VtYmxlcjo6SnVtcENvbmRpdGlvbiwgY29uZCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmgJKHJldmlzaW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNDksNiArMTE0OSwxMyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgbWFzayk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRp
b24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1
c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQ4KEFkZHJlc3MoZGF0YVRl
bXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOworICAgIH0KKwogICAgIEp1bXAganVt
cCgpCiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoTUlQU1JlZ2lzdGVyczo6emVy
bywgTUlQU1JlZ2lzdGVyczo6emVybyk7CkBAIC0xODY4LDYgKzE4NzUsMTcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KE1J
UFNBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkpKSk7CiAgICAg
fQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGlu
c3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiBwcml2YXRlOgogICAgIC8v
IElmIG1fZml4ZWRXaWR0aCBpcyB0cnVlLCB3ZSB3aWxsIGdlbmVyYXRlIGEgZml4ZWQgbnVtYmVy
IG9mIGluc3RydWN0aW9ucy4KICAgICAvLyBPdGhlcndpc2UsIHdlIGNhbiBlbWl0IGFueSBudW1i
ZXIgb2YgaW5zdHJ1Y3Rpb25zLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclNINC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAkocmV2aXNpb24gMTIwMjI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjkzLDYgKzEyOTMsMTYgQEAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgcwogICAgICAgICByZXR1cm4gam1wOwogICAgIH0KIAorICAgIEp1bXAgYnJh
bmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBU
cnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBSZWdp
c3RlcklEIGFkZHJlc3NUZW1wUmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgbG9hZDgoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CisgICAgICAgIEp1bXAgam1wID0gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1w
UmVnaXN0ZXIsIG1hc2spOworICAgICAgICByZWxlYXNlU2NyYXRjaChhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgcmV0dXJuIGptcDsKKyAgICB9CisKICAgICB2b2lkIHNpZ25FeHRlbmQz
MlRvUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBp
ZiAoc3JjICE9IGRlc3QpCkBAIC0xOTcxLDYgKzE5ODEsMTcgQEAgdm9pZCBvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgcwogICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKCopKCk+KFNINEFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5k
YXRhTG9jYXRpb24oKSkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1
bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwg
ZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKIHByb3RlY3RlZDoKICAgICBTSDRBc3NlbWJsZXI6OkNvbmRpdGlvbiBTSDRDb25kaXRp
b24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9u
IDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWREb3VibGU7CiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246OnN0b3JlRG91YmxlOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpjb252ZXJ0SW50MzJUb0RvdWJsZTsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YnJhbmNoVGVzdDg7CiAKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtMTY1LDYgKzE2
NiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfaTMycihpbml0aWFsVmFs
dWUuYXNJbnRwdHIoKSwgZGVzdCk7CiAgICAgICAgIHJldHVybiBEYXRhTGFiZWxQdHIodGhpcyk7
CiAgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0z
MigtMSkpCisgICAgeworICAgICAgICBBU1NFUlQobWFzay5tX3ZhbHVlID49IC0xMjggJiYgbWFz
ay5tX3ZhbHVlIDw9IDI1NSk7CisgICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5jbXBiX2ltKDAsIGFkZHJlc3MubV9wdHIpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0Yl9pbShtYXNrLm1fdmFsdWUsIGFkZHJl
c3MubV9wdHIpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0
aW9uKGNvbmQpKSk7CisgICAgfQogCiAgICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxh
YmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAxMjAyMjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0MDgsNiArMTQwOCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm5vcCgpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0
aW5hdGlvbikKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGlu
c3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgWDg2QXNzZW1i
bGVyOjpDb25kaXRpb24geDg2Q29uZGl0aW9uKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAxMjAyMjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTUxMyw2ICs1MTMsMTIgQEAgcHVibGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bW92ZShhZGRyLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEJhc2VJbmRleChzY3JhdGNoUmVnaXN0
ZXIsIGFkZHJlc3MuYmFzZSwgVGltZXNPbmUpLCBtYXNrKTsKICAgICB9CisgICAgCisgICAgSnVt
cCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0
ciksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIpLCBtYXNrKTsK
KyAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgLy8gU2VlIGNvbW1lbnQgb24gTWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3Vw
cG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxMjAyMjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNDcsNiArMjQ3LDggQEAgcHJpdmF0ZToKIHB1YmxpYzoKIAogICAgIFg4NkFzc2VtYmxlcigp
CisgICAgICAgIDogbV9pbmRleE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICAgICAgLCBt
X2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQogICAgIHsKICAgICB9CiAKQEAg
LTc5OCw2ICs4MDAsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9DTVAsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KKyAgICAKKyNp
ZiBDUFUoWDg2KQorICAgIHZvaWQgY21wYl9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9V
UDFfT1BfQ01QLCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgIH0KKyNlbmRpZgogCiAgICAgdm9pZCBjbXBsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsKQEAgLTk0
OCw2ICs5NTgsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CiAgICAgfQogCisjaWYgQ1BVKFg4NikKKyAgICB2b2lkIHRlc3RiX2ltKGludCBpbW0sIGNv
bnN0IHZvaWQqIGFkZHIpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAzX0ViSWIsIEdST1VQM19PUF9URVNULCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlOChpbW0pOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCB0ZXN0bF9pMzJtKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19F
dkl6LCBHUk9VUDNfT1BfVEVTVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwpAQCAtMTcw
MiwxMCArMTcyMCwyNSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9mb3JtYXR0
ZXIuY29kZVNpemUoKTsKICAgICB9CisgICAgCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JX
YXRjaHBvaW50KCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fZm9y
bWF0dGVyLmxhYmVsKCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29m
ZnNldCkgIT0gbV9pbmRleE9mTGFzdFdhdGNocG9pbnQpCisgICAgICAgICAgICByZXN1bHQgPSBs
YWJlbCgpOworICAgICAgICBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNl
dDsKKyAgICAgICAgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZz
ZXQgKyBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQogCiAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fZm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1f
Zm9ybWF0dGVyLmxhYmVsKCk7CisgICAgICAgIHdoaWxlIChVTkxJS0VMWShzdGF0aWNfY2FzdDxp
bnQ+KHJlc3VsdC5tX29mZnNldCkgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkpIHsK
KyAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmVzdWx0ID0gbV9mb3JtYXR0ZXIubGFi
ZWwoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIEFz
c2VtYmxlckxhYmVsIGFsaWduKGludCBhbGlnbm1lbnQpCkBAIC0xNzg3LDYgKzE4MjAsMjAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHdoZXJlKVst
MV07CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3Ry
dWN0aW9uU3RhcnQsIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgdWludDhfdCogcHRyID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIHVpbnQ4
X3QqIGRzdFB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRvKTsKKyAgICAgICAgaW50
cHRyX3QgZGlzdGFuY2UgPSAoaW50cHRyX3QpKGRzdFB0ciAtIChwdHIgKyA1KSk7CisgICAgICAg
IHB0clswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KE9QX0pNUF9yZWwzMik7CisgICAgICAgICpy
ZWludGVycHJldF9jYXN0PGludDMyX3QqPihwdHIgKyAxKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KGRpc3RhbmNlKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVw
bGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiA1OworICAgIH0KKyAgICAKICAg
ICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxs
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNhbGwuaXNTZXQoKSk7CkBAIC0yMzM5LDYgKzIzODYs
OCBAQCBwcml2YXRlOgogCiAgICAgICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsKICAgICB9
IG1fZm9ybWF0dGVyOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKKyAgICBpbnQg
bV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxMjAyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDYgKzIyOCw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpwcmludEdldEJ5SWRPcChFeGVjU3RhdGUKICAgICBpdCArPSA1OwogfQogCisjaWYgRU5BQkxF
KEpJVCkgfHwgRU5BQkxFKExMSU5UKSAvLyB1bnVzZWQgaW4gc29tZSBjb25maWd1cmF0aW9ucwog
c3RhdGljIHZvaWQgZHVtcFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBpZiAo
IXN0cnVjdHVyZSkKQEAgLTIzOSw3ICsyNDAsOSBAQCBzdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJl
KGNvbnN0IGNoYXIqIG5hCiAgICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkKICAgICAgICAgZGF0
YUxvZygiIChvZmZzZXQgPSAlbHUpIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ob2Zmc2V0
KSk7CiB9CisjZW5kaWYKIAorI2lmIEVOQUJMRShKSVQpIC8vIHVudXNlZCB3aGVuIG5vdCBFTkFC
TEUoSklUKSwgbGVhZGluZyB0byBzaWxseSB3YXJuaW5ncwogc3RhdGljIHZvaWQgZHVtcENoYWlu
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBJZGVudGlmaWVyJiBpZGVu
dCkKIHsKICAgICBkYXRhTG9nKCJjaGFpbiA9ICVwOiBbIiwgY2hhaW4pOwpAQCAtMjU1LDYgKzI1
OCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFpbihFeGVjU3RhdGUqIGV4ZWMsIFMKICAgICB9CiAg
ICAgZGF0YUxvZygiXSIpOwogfQorI2VuZGlmCiAKIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5
SWRDYWNoZVN0YXR1cyhFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbikKIHsKQEAgLTI2NSw2
ICsyNjksOCBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoCiAgICAg
CiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCk7CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsgLy8gdGVsbCB0aGUgY29tcGls
ZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLgorICAgIAog
I2lmIEVOQUJMRShMTElOVCkKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9u
WzRdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIGRhdGFMb2coIiBsbGludCgiKTsKQEAgLTkyOCwx
MiArOTM0LDI4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgICAgIGl0Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBj
YXNlIG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZTogeworICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJl
Z2lzdGVyUG9pbnRlciA9ICgrK2l0KS0+dS5yZWdpc3RlclBvaW50ZXI7CisgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBnZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGVcdCAlcywgZyVkKCVwKVxuIiwg
bG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBtX2dsb2JhbE9iamVjdC0+
ZmluZFJlZ2lzdGVySW5kZXgocmVnaXN0ZXJQb2ludGVyKSwgcmVnaXN0ZXJQb2ludGVyKTsKKyAg
ICAgICAgICAgIGl0Kys7CisgICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjogewogICAgICAgICAgICAg
V3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIgPSAoKytpdCktPnUucmVnaXN0
ZXJQb2ludGVyOwogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfZ2xvYmFsX3Zhclx0IGclZCglcCksICVzXG4iLCBs
b2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZpbmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRl
ciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjazogeworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBv
aW50ZXIgPSAoKytpdCktPnUucmVnaXN0ZXJQb2ludGVyOworICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBwdXRfZ2xvYmFs
X3Zhcl9jaGVja1x0IGclZCglcCksICVzXG4iLCBsb2NhdGlvbiwgbV9nbG9iYWxPYmplY3QtPmZp
bmRSZWdpc3RlckluZGV4KHJlZ2lzdGVyUG9pbnRlciksIHJlZ2lzdGVyUG9pbnRlciwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOworICAgICAgICAgICAgaXQrKzsKKyAgICAgICAgICAg
IGl0Kys7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jl
c29sdmVfYmFzZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xMzA2LDcgKzEzMjgs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9jYWxsX3B1dF9yZXN1bHQ6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gb3BfY2FsbF9w
dXRfcmVzdWx0XHRcdCAlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIGNhbGxfcHV0X3Jlc3VsdFx0XHQgJXNc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CiAgICAgICAgICAg
ICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEyMDIyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJVbmNvbmRp
dGlvbmFsRmluYWxpemVyLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSAi
V2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC0y
NzMsMTAgKzI3NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgYXBwZW5kT1NSRXhpdChjb25z
dCBERkc6Ok9TUkV4aXQmIG9zckV4aXQpCisgICAgICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4aXQo
Y29uc3QgREZHOjpPU1JFeGl0JiBvc3JFeGl0KQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVh
dGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1f
ZGZnRGF0YS0+b3NyRXhpdC5zaXplKCk7CiAgICAgICAgICAgICBtX2RmZ0RhdGEtPm9zckV4aXQu
YXBwZW5kKG9zckV4aXQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgREZHOjpPU1JFeGl0JiBsYXN0T1NSRXhpdCgpCkBAIC0yODQsMTAg
KzI4NywyMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEt
Pm9zckV4aXQubGFzdCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIGFwcGVu
ZFNwZWN1bGF0aW9uUmVjb3ZlcnkoY29uc3QgREZHOjpTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNv
dmVyeSkKKyAgICAgICAgdW5zaWduZWQgYXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShjb25zdCBE
Rkc6OlNwZWN1bGF0aW9uUmVjb3ZlcnkmIHJlY292ZXJ5KQogICAgICAgICB7CiAgICAgICAgICAg
ICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5zaXplKCk7CiAgICAgICAgICAgICBt
X2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVjb3ZlcnkuYXBwZW5kKHJlY292ZXJ5KTsKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVk
IGFwcGVuZFdhdGNocG9pbnQoY29uc3QgV2F0Y2hwb2ludCYgd2F0Y2hwb2ludCkKKyAgICAgICAg
eworICAgICAgICAgICAgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAgICAgICB1
bnNpZ25lZCByZXN1bHQgPSBtX2RmZ0RhdGEtPndhdGNocG9pbnRzLnNpemUoKTsKKyAgICAgICAg
ICAgIG1fZGZnRGF0YS0+d2F0Y2hwb2ludHMuYXBwZW5kKHdhdGNocG9pbnQpOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZPU1JFeGl0cygpCkBAIC0zMDQsNiArMzE3LDEzIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5zaXplKCk7
CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mV2F0Y2hwb2lu
dHMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fZGZnRGF0YSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPndhdGNocG9pbnRz
LnNpemUoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgREZHOjpPU1JFeGl0JiBvc3JF
eGl0KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdE
YXRhLT5vc3JFeGl0W2luZGV4XTsKQEAgLTMxNCw2ICszMzQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5W2luZGV4
XTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgV2F0Y2hwb2ludCYgd2F0Y2hwb2ludCh1
bnNpZ25lZCBpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+
d2F0Y2hwb2ludHNbaW5kZXhdOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2b2lkIGFw
cGVuZFdlYWtSZWZlcmVuY2UoSlNDZWxsKiB0YXJnZXQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTIzOCw2ICsxMjYzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5
OwogICAgICAgICAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsK
ICAgICAgICAgICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9u
UmVjb3Zlcnk7CisgICAgICAgICAgICBTZWdtZW50ZWRWZWN0b3I8V2F0Y2hwb2ludCwgMSwgMD4g
d2F0Y2hwb2ludHM7CiAgICAgICAgICAgICBWZWN0b3I8V2Vha1JlZmVyZW5jZVRyYW5zaXRpb24+
IHRyYW5zaXRpb25zOwogICAgICAgICAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+ID4g
d2Vha1JlZmVyZW5jZXM7CiAgICAgICAgICAgICBib29sIG1heUJlRXhlY3V0aW5nOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJl
dmlzaW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0
UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gRXhpdEtpbmQg
ewogICAgIEluYWRlcXVhdGVDb3ZlcmFnZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5kZWQg
dXAgaW4gY29kZSB0aGF0IGRpZG4ndCBoYXZlIHByb2ZpbGluZyBjb3ZlcmFnZS4KICAgICBBcmd1
bWVudHNFc2NhcGVkLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhcmd1bWVudHMgZXNjYXBlZCBidXQg
d2UgZGlkbid0IGV4cGVjdCB0aGVtIHRvLgogICAgIFVuY291bnRhYmxlLCAvLyBXZSBleGl0ZWQg
Zm9yIG5vbmUgb2YgdGhlIGFib3ZlIHJlYXNvbnMsIGFuZCB3ZSBzaG91bGQgbm90IGNvdW50IGl0
LiBNb3N0IHVzZXMgb2YgdGhpcyBzaG91bGQgYmUgdmlld2VkIGFzIGEgRklYTUUuCisgICAgVW5j
b3VudGFibGVXYXRjaHBvaW50IC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIGEgd2F0Y2hwb2ludCwg
d2hpY2ggaXNuJ3QgY291bnRlZCBiZWNhdXNlIHdhdGNocG9pbnRzIGRvIHRyYWNraW5nIHRoZW1z
ZWx2ZXMuCiB9OwogCiBpbmxpbmUgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0cmluZyhFeGl0S2lu
ZCBraW5kKQpAQCAtNTgsNiArNTksMTIgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9T
dHJpbmcoRXhpdAogICAgICAgICByZXR1cm4gIk5lZ2F0aXZlWmVybyI7CiAgICAgY2FzZSBJbmFk
ZXF1YXRlQ292ZXJhZ2U6CiAgICAgICAgIHJldHVybiAiSW5hZGVxdWF0ZUNvdmVyYWdlIjsKKyAg
ICBjYXNlIEFyZ3VtZW50c0VzY2FwZWQ6CisgICAgICAgIHJldHVybiAiQXJndW1lbnRzRXNjYXBl
ZCI7CisgICAgY2FzZSBVbmNvdW50YWJsZToKKyAgICAgICAgcmV0dXJuICJVbmNvdW50YWJsZSI7
CisgICAgY2FzZSBVbmNvdW50YWJsZVdhdGNocG9pbnQ6CisgICAgICAgIHJldHVybiAiVW5jb3Vu
dGFibGVXYXRjaHBvaW50IjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gIlVua25vd24i
OwogICAgIH0KQEAgLTcwLDYgKzc3LDcgQEAgaW5saW5lIGJvb2wgZXhpdEtpbmRJc0NvdW50YWJs
ZShFeGl0S2luZAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjYXNlIEJhZFR5
cGU6CiAgICAgY2FzZSBVbmNvdW50YWJsZToKKyAgICBjYXNlIFVuY291bnRhYmxlV2F0Y2hwb2lu
dDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiB0
cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBA
IHZvaWQgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKEdldEIKICAgICBVTlVTRURfUEFS
QU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKICAgICBVTlVTRURf
UEFSQU0oc3RydWN0dXJlKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTIwMjI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5Myw2ICsxOTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24o
VmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KICAgICAgICAg
CiAgICAgICAgIEluc3RydWN0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2lu
dGVyKSB7IHUucmVnaXN0ZXJQb2ludGVyID0gcmVnaXN0ZXJQb2ludGVyOyB9CisgICAgICAgIAor
ICAgICAgICBJbnN0cnVjdGlvbihib29sKiBwcmVkaWNhdGVQb2ludGVyKSB7IHUucHJlZGljYXRl
UG9pbnRlciA9IHByZWRpY2F0ZVBvaW50ZXI7IH0KIAogICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICBPcGNvZGUgb3Bjb2RlOwpAQCAtMjA1LDYgKzIwNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKICAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CisgICAg
ICAgICAgICBib29sKiBwcmVkaWNhdGVQb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAog
ICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5o
CShyZXZpc2lvbiAxMjAyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgbWFjcm8ob3BfZ2V0X3Njb3BlZF92YXIsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxp
bmcgKi8gXAogICAgICAgICBtYWNybyhvcF9wdXRfc2NvcGVkX3ZhciwgNCkgXAogICAgICAgICBt
YWNybyhvcF9nZXRfZ2xvYmFsX3ZhciwgNCkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCisg
ICAgICAgIG1hY3JvKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSwgNSkgLyogaGFzIHZhbHVl
IHByb2ZpbGluZyAqLyBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFyLCAzKSBcCisg
ICAgICAgIG1hY3JvKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrLCA1KSBcCiAgICAgICAgIG1hY3Jv
KG9wX3Jlc29sdmVfYmFzZSwgNSkgLyogaGFzIHZhbHVlIHByb2ZpbGluZyAqLyBcCiAgICAgICAg
IG1hY3JvKG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMsIDMpIFwKICAgICAgICAgbWFjcm8ob3Bf
cmVzb2x2ZV93aXRoX2Jhc2UsIDUpIC8qIGhhcyB2YWx1ZSBwcm9maWxpbmcgKi8gXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXYXRjaHBvaW50LmgiCisKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitXYXRjaHBvaW50Ojp+V2F0Y2hwb2ludCgpCit7CisgICAgaWYgKGlzT25MaXN0
KCkpCisgICAgICAgIHJlbW92ZSgpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK3ZvaWQgV2F0Y2hw
b2ludDo6Y29ycmVjdExhYmVscyhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQoreworICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBsYWJlbDsKKyAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9z
b3VyY2U7CisgICAgbV9zb3VyY2UgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihsaW5rQnVmZmVy
LmxvY2F0aW9uT2YobGFiZWwpLmRhdGFMb2NhdGlvbigpKTsKKyAgICBsYWJlbC5tX2xhYmVsLm1f
b2Zmc2V0ID0gbV9kZXN0aW5hdGlvbjsKKyAgICBtX2Rlc3RpbmF0aW9uID0gYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGxhYmVsKS5kYXRhTG9jYXRpb24oKSk7
Cit9CisjZW5kaWYKKwordm9pZCBXYXRjaHBvaW50OjpmaXJlKCkKK3sKKyNpZiBFTkFCTEUoSklU
KQorICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoCisgICAgICAgIENvZGVMb2Nh
dGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4obV9zb3VyY2UpKSwKKyAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihtX2Rlc3RpbmF0aW9uKSkpOworICAgIGlm
IChpc09uTGlzdCgpKQorICAgICAgICByZW1vdmUoKTsKKyNlbHNlCisgICAgVU5SRUFDSEFCTEVf
Rk9SX1BMQVRGT1JNKCk7CisjZW5kaWYKK30KKworV2F0Y2hwb2ludFNldDo6V2F0Y2hwb2ludFNl
dCgpCisgICAgOiBtX2lzV2F0Y2hlZChmYWxzZSkKKyAgICAsIG1faXNJbnZhbGlkYXRlZChmYWxz
ZSkKK3sKK30KKworV2F0Y2hwb2ludFNldDo6fldhdGNocG9pbnRTZXQoKQoreworICAgIC8vIEZp
cmUgYWxsIHdhdGNocG9pbnRzLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGlzIHBvc3Np
YmxlLCBzYXkgd2l0aAorICAgIC8vIHN0cnVjdHVyZSB3YXRjaHBvaW50cywgZm9yIHRoZSB3YXRj
aHBvaW50IHNldCBvd25lciB0byBkaWUgd2hpbGUgdGhlCisgICAgLy8gd2F0Y2hwb2ludCBvd25l
cnMgYXJlIHN0aWxsIGxpdmUuCisgICAgZmlyZUFsbFdhdGNocG9pbnRzKCk7Cit9CisKK3ZvaWQg
V2F0Y2hwb2ludFNldDo6YWRkKFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCit7CisgICAgaWYgKCF3
YXRjaHBvaW50KQorICAgICAgICByZXR1cm47CisgICAgbV9zZXQucHVzaCh3YXRjaHBvaW50KTsK
KyAgICBtX2lzV2F0Y2hlZCA9IHRydWU7Cit9CisKK3ZvaWQgV2F0Y2hwb2ludFNldDo6bm90aWZ5
V3JpdGVTbG93KCkKK3sKKyAgICBBU1NFUlQobV9pc1dhdGNoZWQpOworICAgIAorICAgIGZpcmVB
bGxXYXRjaHBvaW50cygpOworICAgIG1faXNXYXRjaGVkID0gZmFsc2U7CisgICAgbV9pc0ludmFs
aWRhdGVkID0gdHJ1ZTsKK30KKwordm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hwb2lu
dHMoKQoreworICAgIHdoaWxlICghbV9zZXQuaXNFbXB0eSgpKQorICAgICAgICBtX3NldC5iZWdp
bigpLT5maXJlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXYXRjaHBvaW50X2gKKyNkZWZpbmUgV2F0Y2hwb2ludF9o
CisKKyNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5o
IgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlu
a2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2F0Y2hwb2ludCA6IHB1Ymxp
YyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXYXRjaHBvaW50PiB7CitwdWJsaWM6CisgICAgV2F0Y2hw
b2ludCgpCisgICAgICAgIDogbV9zb3VyY2Uoc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+
OjptYXgoKSkKKyAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dHB0cl90Pjo6bWF4KCkpCisgICAgeworICAgIH0KKworI2lmIEVOQUJMRShKSVQpCisgICAgV2F0
Y2hwb2ludChNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgc291cmNlKQorICAgICAgICA6IG1fc291cmNl
KHNvdXJjZS5tX2xhYmVsLm1fb2Zmc2V0KQorICAgICAgICAsIG1fZGVzdGluYXRpb24oc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSkKKyAgICB7CisgICAgfQorICAgIAorICAg
IHZvaWQgc2V0RGVzdGluYXRpb24oTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRlc3RpbmF0aW9uKQor
ICAgIHsKKyAgICAgICAgbV9kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uLm1fbGFiZWwubV9vZmZz
ZXQ7CisgICAgfQorICAgIAorICAgIHZvaWQgY29ycmVjdExhYmVscyhMaW5rQnVmZmVyJik7Cisj
ZW5kaWYKKyAgICAKKyAgICB+V2F0Y2hwb2ludCgpOworICAgIAorICAgIHZvaWQgZmlyZSgpOwor
ICAgIAorcHJpdmF0ZToKKyAgICB1aW50cHRyX3QgbV9zb3VyY2U7CisgICAgdWludHB0cl90IG1f
ZGVzdGluYXRpb247Cit9OworCitjbGFzcyBXYXRjaHBvaW50U2V0IDogcHVibGljIFJlZkNvdW50
ZWQ8V2F0Y2hwb2ludFNldD4geworcHVibGljOgorICAgIFdhdGNocG9pbnRTZXQoKTsKKyAgICB+
V2F0Y2hwb2ludFNldCgpOworICAgIAorICAgIGJvb2wgaXNTdGlsbFZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gIW1faXNJbnZhbGlkYXRlZDsgfQorICAgIGJvb2wgaGFzQmVlbkludmFsaWRhdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0ludmFsaWRhdGVkOyB9CisgICAgCisgICAgLy8gQXMgYSBjb252
ZW5pZW5jZSwgdGhpcyB3aWxsIGlnbm9yZSAwLiBUaGF0J3MgYmVjYXVzZSBjb2RlIHBhdGhzIGlu
IHRoZSBERkcKKyAgICAvLyB0aGF0IGNyZWF0ZSBzcGVjdWxhdGlvbiB3YXRjaHBvaW50cyBtYXkg
Y2hvb3NlIHRvIGJhaWwgb3V0IGlmIHNwZWN1bGF0aW9uCisgICAgLy8gaGFkIGFscmVhZHkgYmVl
biB0ZXJtaW5hdGVkLgorICAgIHZvaWQgYWRkKFdhdGNocG9pbnQqKTsKKyAgICAKKyAgICAvLyBG
b3JjZSB0aGUgd2F0Y2hwb2ludCBzZXQgdG8gYmVoYXZlIGFzIGlmIGl0IHdhcyBiZWluZyB3YXRj
aGVkIGV2ZW4gaWYgbm8KKyAgICAvLyB3YXRjaHBvaW50cyBoYXZlIGJlZW4gaW5zdGFsbGVkLiBU
aGlzIHdpbGwgcmVzdWx0IGluIGludmFsaWRhdGlvbiBpZiB0aGUKKyAgICAvLyB3YXRjaHBvaW50
IHdvdWxkIGhhdmUgZmlyZWQuIFRoYXQncyBhIHByZXR0eSBnb29kIGluZGljYXRpb24gdGhhdCB5
b3UKKyAgICAvLyBwcm9iYWJseSBkb24ndCB3YW50IHRvIHNldCB3YXRjaHBvaW50cywgc2luY2Ug
d2UgdHlwaWNhbGx5IGRvbid0IHdhbnQgdG8KKyAgICAvLyBzZXQgd2F0Y2hwb2ludHMgdGhhdCB3
ZSBiZWxpZXZlIHdpbGwgYWN0dWFsbHkgYmUgZmlyZWQuCisgICAgdm9pZCBzdGFydFdhdGNoaW5n
KCkgeyBtX2lzV2F0Y2hlZCA9IHRydWU7IH0KKyAgICAKKyAgICB2b2lkIG5vdGlmeVdyaXRlKCkK
KyAgICB7CisgICAgICAgIGlmICghbV9pc1dhdGNoZWQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG5vdGlmeVdyaXRlU2xvdygpOworICAgIH0KKyAgICAKKyAgICBib29sKiBhZGRyZXNz
T2ZJc1dhdGNoZWQoKSB7IHJldHVybiAmbV9pc1dhdGNoZWQ7IH0KKyAgICAKKyAgICB2b2lkIG5v
dGlmeVdyaXRlU2xvdygpOyAvLyBDYWxsIG9ubHkgaWYgeW91J3ZlIGNoZWNrZWQgaXNXYXRjaGVk
LgorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIGZpcmVBbGxXYXRjaHBvaW50cygpOworICAgIAor
ICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXYXRjaHBvaW50LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxX
YXRjaHBvaW50PiA+IG1fc2V0OworICAgIGJvb2wgbV9pc1dhdGNoZWQ7CisgICAgYm9vbCBtX2lz
SW52YWxpZGF0ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFdhdGNo
cG9pbnRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTIwMjI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0OCw2ICsxNDgsNyBAQCB2b2lkIFJlc29sdmVSZXN1bHQ6OmNoZWNr
VmFsaWRpdHkoKQogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJbmRleGVkR2xvYmFsOgogICAg
IGNhc2UgUmVhZE9ubHlJbmRleGVkR2xvYmFsOgorICAgIGNhc2UgV2F0Y2hlZEluZGV4ZWRHbG9i
YWw6CiAgICAgY2FzZSBEeW5hbWljSW5kZXhlZEdsb2JhbDoKICAgICBjYXNlIER5bmFtaWNSZWFk
T25seUluZGV4ZWRHbG9iYWw6CiAgICAgICAgIEFTU0VSVChtX2luZGV4ICE9IG1pc3NpbmdTeW1i
b2xNYXJrZXIoKSk7CkBAIC0yMTYsMTMgKzIxNywxOSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
OjphZGRWYXIoY29uc3QgSWRlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWludCBCeXRlY29kZUdl
bmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29u
c3RhbnQpCitpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZhcigKKyAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgQ29uc3RhbnRNb2RlIGNvbnN0YW50TW9kZSwgRnVuY3Rpb25Nb2Rl
IGZ1bmN0aW9uTW9kZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25Nb2RlKTsKICAgICBp
bnQgaW5kZXggPSBzeW1ib2xUYWJsZSgpLnNpemUoKTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IG5l
d0VudHJ5KGluZGV4LCBpc0NvbnN0YW50ID8gUmVhZE9ubHkgOiAwKTsKKyAgICBTeW1ib2xUYWJs
ZUVudHJ5IG5ld0VudHJ5KGluZGV4LCAoY29uc3RhbnRNb2RlID09IElzQ29uc3RhbnQpID8gUmVh
ZE9ubHkgOiAwKTsKKyAgICBpZiAoZnVuY3Rpb25Nb2RlID09IElzRnVuY3Rpb25Ub1NwZWNpYWxp
emUpCisgICAgICAgIG5ld0VudHJ5LmF0dGVtcHRUb1dhdGNoKCk7CiAgICAgU3ltYm9sVGFibGU6
OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0Vu
dHJ5KTsKLSAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgIGlmICghcmVzdWx0LmlzTmV3
RW50cnkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsK
ICAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpOworICAg
IH0KICAgICByZXR1cm4gaW5kZXg7CiB9CiAKQEAgLTI4OSwxNyArMjk2LDIzIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm8KIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsraSkgewogICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+
cmVtb3ZlRGlyZWN0KCptX2dsb2JhbERhdGEsIGZ1bmN0aW9uLT5pZGVudCgpKTsgLy8gTmV3bHkg
ZGVjbGFyZWQgZnVuY3Rpb25zIG92ZXJ3cml0ZSBleGlzdGluZyBwcm9wZXJ0aWVzLgotCisgICAg
ICAgIGJvb2wgcHJvcGVydHlEaWRFeGlzdCA9IAorICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5y
ZW1vdmVEaXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24tPmlkZW50KCkpOyAvLyBOZXdseSBk
ZWNsYXJlZCBmdW5jdGlvbnMgb3ZlcndyaXRlIGV4aXN0aW5nIHByb3BlcnRpZXMuCisgICAgICAg
IAogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIG1ha2VG
dW5jdGlvbihleGVjLCBmdW5jdGlvbiksIHNjb3BlQ2hhaW4pOwotICAgICAgICBpbnQgaW5kZXgg
PSBhZGRHbG9iYWxWYXIoZnVuY3Rpb24tPmlkZW50KCksIGZhbHNlKTsKKyAgICAgICAgaW50IGlu
ZGV4ID0gYWRkR2xvYmFsVmFyKAorICAgICAgICAgICAgZnVuY3Rpb24tPmlkZW50KCksIElzVmFy
aWFibGUsCisgICAgICAgICAgICAhcHJvcGVydHlEaWRFeGlzdCA/IElzRnVuY3Rpb25Ub1NwZWNp
YWxpemUgOiBOb3RGdW5jdGlvbk9yTm90U3BlY2lhbGl6YWJsZSk7CiAgICAgICAgIGdsb2JhbE9i
amVjdC0+cmVnaXN0ZXJBdChpbmRleCkuc2V0KCptX2dsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFyU3RhY2suc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywg
KnZhclN0YWNrW2ldLmZpcnN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhZGRH
bG9iYWxWYXIoKnZhclN0YWNrW2ldLmZpcnN0LCB2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJh
dGlvblN0YWNrczo6SXNDb25zdGFudCk7CisgICAgICAgIGFkZEdsb2JhbFZhcigKKyAgICAgICAg
ICAgICp2YXJTdGFja1tpXS5maXJzdCwKKyAgICAgICAgICAgICh2YXJTdGFja1tpXS5zZWNvbmQg
JiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCkgPyBJc0NvbnN0YW50IDogSXNWYXJpYWJs
ZSwKKyAgICAgICAgICAgIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlKTsKICAgICB9CiB9
CiAKQEAgLTEyMDIsNyArMTIxNSw5IEBAIFJlc29sdmVSZXN1bHQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnJlc29sdmUKICAgICAgICAgICAgIGlmICgrK2l0ZXIgPT0gZW5kKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGZsYWdzICYgUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWcpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjpkeW5hbWljSW5kZXhlZEdsb2JhbFJlc29sdmUo
ZW50cnkuZ2V0SW5kZXgoKSwgZGVwdGgsIGN1cnJlbnRTY29wZSwgZmxhZ3MpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBSZXNvbHZlUmVzdWx0OjppbmRleGVkR2xvYmFsUmVzb2x2ZShlbnRyeS5n
ZXRJbmRleCgpLCBjdXJyZW50U2NvcGUsIGZsYWdzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
UmVzb2x2ZVJlc3VsdDo6aW5kZXhlZEdsb2JhbFJlc29sdmUoCisgICAgICAgICAgICAgICAgICAg
IGVudHJ5LmdldEluZGV4KCksIGN1cnJlbnRTY29wZSwKKyAgICAgICAgICAgICAgICAgICAgZmxh
Z3MgfCAoZW50cnkuY291bGRCZVdhdGNoZWQoKSA/IFJlc29sdmVSZXN1bHQ6OldhdGNoZWRGbGFn
IDogMCkpOwogICAgICAgICAgICAgfQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAg
IGlmIChKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBqc0R5bmFtaWNDYXN0PEpTQWN0aXZhdGlv
bio+KGN1cnJlbnRWYXJpYWJsZU9iamVjdCkpCkBAIC0xMjk2LDcgKzEzMTEsNyBAQCBib29sIEJ5
dGVjb2RlR2VuZXJhdG9yOjpzaG91bGRBdm9pZFJlc29sCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0
JiByZXNvbHZlUmVzdWx0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAgICBpZiAo
cmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKQotICAgICAgICByZXR1cm4gZW1pdEdldFN0YXRpY1Zh
cihkc3QsIHJlc29sdmVSZXN1bHQpOworICAgICAgICByZXR1cm4gZW1pdEdldFN0YXRpY1Zhcihk
c3QsIHJlc29sdmVSZXN1bHQsIHByb3BlcnR5KTsKICAgICAKICAgICBpZiAocmVzb2x2ZVJlc3Vs
dC5pc0dsb2JhbCgpICYmICFzaG91bGRBdm9pZFJlc29sdmVHbG9iYWwoKSkgewogI2lmIEVOQUJM
RShKSVQpCkBAIC0xMzc5LDcgKzEzOTQsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFJlc29sCiAKICAgICAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkgewog
ICAgICAgICAgICAgLy8gRGlyZWN0bHkgaW5kZXggdGhlIHByb3BlcnR5IGxvb2t1cCBhY3Jvc3Mg
bXVsdGlwbGUgc2NvcGVzLgotICAgICAgICAgICAgZW1pdEdldFN0YXRpY1Zhcihwcm9wRHN0LCBy
ZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgICAgIGVtaXRHZXRTdGF0aWNWYXIocHJvcERzdCwgcmVz
b2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgICAgICAgICAgcmV0dXJuIGJhc2VEc3Q7CiAgICAg
ICAgIH0KIApAQCAtMTQxOCw3ICsxNDMzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRSZXNvbAogewogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkpIHsKICAg
ICAgICAgZW1pdExvYWQoYmFzZURzdCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGVtaXRHZXRT
dGF0aWNWYXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCk7CisgICAgICAgIGVtaXRHZXRTdGF0aWNW
YXIocHJvcERzdCwgcmVzb2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogICAgICAgICByZXR1cm4gYmFz
ZURzdDsKICAgICB9CiAKQEAgLTE0MzYsNyArMTQ1MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICByZXR1cm4gZW1pdFJlc29sdmUocHJvcERzdCwgcmVz
b2x2ZVJlc3VsdCwgcHJvcGVydHkpOwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEdldFN0YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQm
IHJlc29sdmVSZXN1bHQpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFN0
YXRpY1ZhcihSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1
bHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgVmFsdWVQcm9maWxlKiBw
cm9maWxlID0gMDsKIApAQCAtMTQ3MiwxMyArMTQ4NywyNCBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldFN0CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9m
aWxlKTsKICAgICAgICAgcmV0dXJuIGRzdDsKIAorICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6V2F0
Y2hlZEluZGV4ZWRHbG9iYWw6CisgICAgICAgIC8vIFNraXAgdGhlIHBlZXBob2xlIGZvciBub3cu
IEl0J3Mgbm90IGNsZWFyIHRoYXQgaXQncyBwcm9maXRhYmxlIGdpdmVuCisgICAgICAgIC8vIHRo
ZSBERkcncyBjYXBhYmlsaXRpZXMsIGFuZCB0aGUgZmFjdCB0aGF0IGlmIGl0J3Mgd2F0Y2hhYmxl
IHRoZW4gd2UKKyAgICAgICAgLy8gZG9uJ3QgZXhwZWN0IHRvIHNlZSBhbnkgcHV0X2dsb2JhbF92
YXIncyBhbnl3YXkuCisgICAgICAgIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0
X2dsb2JhbF92YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0
LnJlZ2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENv
bnN0YW50KGlkZW50aWZpZXIpKTsgLy8gRm9yIHRoZSBiZW5lZml0IG9mIHRoZSBERkcuCisgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKyAgICAgICAgcmV0dXJuIGRzdDsK
KwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQmIHJlc29sdmVSZXN1bHQsIFJlZ2lzdGVy
SUQqIHZhbHVlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTdGF0aWNW
YXIoY29uc3QgUmVzb2x2ZVJlc3VsdCYgcmVzb2x2ZVJlc3VsdCwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllciwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgc3dpdGNoIChyZXNvbHZlUmVz
dWx0LnR5cGUoKSkgewogICAgIGNhc2UgUmVzb2x2ZVJlc3VsdDo6UmVnaXN0ZXI6CkBAIC0xNDk5
LDYgKzE1MjUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTdAog
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVzb2x2ZVJlc3VsdC5yZWdpc3RlclBvaW50
ZXIoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgCisgICAgY2FzZSBSZXNvbHZlUmVzdWx0OjpX
YXRjaGVkSW5kZXhlZEdsb2JhbDoKKyAgICAgICAgZW1pdE9wY29kZShvcF9wdXRfZ2xvYmFsX3Zh
cl9jaGVjayk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXNvbHZlUmVzdWx0LnJl
Z2lzdGVyUG9pbnRlcigpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5p
bmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KHJlc29sdmVSZXN1bHQuZ2xvYmFsT2JqZWN0KCkpLT5zeW1ib2xUYWJsZSgpLmdldChp
ZGVudGlmaWVyLmltcGwoKSkuYWRkcmVzc09mSXNXYXRjaGVkKCkpOworICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4g
dmFsdWU7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTEx
LDcgKzExMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8gVGhlIHJlc29sdmVk
IGJpbmRpbmcgaXMgaW1tdXRhYmxlLgogICAgICAgICAgICAgUmVhZE9ubHlGbGFnID0gMHgyMCwK
ICAgICAgICAgICAgIC8vIFRoZSBiYXNlIG9iamVjdCBpcyB0aGUgZ2xvYmFsIG9iamVjdC4KLSAg
ICAgICAgICAgIEdsb2JhbEZsYWcgPSAweDQwCisgICAgICAgICAgICBHbG9iYWxGbGFnID0gMHg0
MCwKKyAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyBiZWluZyB3YXRjaGVkLCBzbyB3cml0
ZXMgc2hvdWxkIGJlIHNwZWNpYWwuCisgICAgICAgICAgICBXYXRjaGVkRmxhZyA9IDB4ODAKICAg
ICAgICAgfTsKICAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0
eSBpcyBsb2NhbCwgYW5kIHN0b3JlZCBpbiBhIHJlZ2lzdGVyLgpAQCAtMTMxLDYgKzEzMyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8gYmluZGluZyBjcmVhdGVkIHdpdGggInZh
ciIgYXQgdGhlIHRvcCBsZXZlbC4gQXQgcnVudGltZSB3ZSdsbAogICAgICAgICAgICAgLy8ganVz
dCBpbmRleCBpbnRvIHRoZSBnbG9iYWwgb2JqZWN0LgogICAgICAgICAgICAgSW5kZXhlZEdsb2Jh
bCA9IEluZGV4ZWRGbGFnIHwgR2xvYmFsRmxhZyB8IFN0YXRpY0ZsYWcsCisgICAgICAgICAgICAv
LyBMaWtlIEluZGV4ZWRHbG9iYWwsIGJ1dCB0aGUgcHJvcGVydHkgaXMgYmVpbmcgd2F0Y2hlZC4K
KyAgICAgICAgICAgIFdhdGNoZWRJbmRleGVkR2xvYmFsID0gSW5kZXhlZEZsYWcgfCBHbG9iYWxG
bGFnIHwgU3RhdGljRmxhZyB8IFdhdGNoZWRGbGFnLAogICAgICAgICAgICAgLy8gTGlrZSBJbmRl
eGVkR2xvYmFsLCBidXQgdGhlIHByb3BlcnR5IGlzIGFsc28gcmVhZC1vbmx5LCBsaWtlIE5hTiwK
ICAgICAgICAgICAgIC8vIEluZmluaXR5LCBvciB1bmRlZmluZWQuCiAgICAgICAgICAgICBSZWFk
T25seUluZGV4ZWRHbG9iYWwgPSBJbmRleGVkRmxhZyB8IFJlYWRPbmx5RmxhZyB8IEdsb2JhbEZs
YWcgfCBTdGF0aWNGbGFnLApAQCAtNDQxLDggKzQ0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0VHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90eXBlb2YsIGRzdCwgc3JjKTsgfQogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0SW4oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSwgUmVnaXN0ZXJJRCogYmFzZSkgeyByZXR1cm4gZW1pdEJpbmFyeU9wKG9wX2luLCBkc3QsIHBy
b3BlcnR5LCBiYXNlLCBPcGVyYW5kVHlwZXMoKSk7IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0R2V0U3RhdGljVmFyKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYpOwot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVSZXN1bHQm
LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRTdGF0aWNW
YXIoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBSZXNvbHZlUmVzdWx0JiwgY29uc3QgSWRlbnRpZmll
ciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0U3RhdGljVmFyKGNvbnN0IFJlc29sdmVS
ZXN1bHQmLCBjb25zdCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJl
c3VsdCYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFJlc29sdmVCYXNlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgUmVzb2x2ZVJlc3VsdCYsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKQEAgLTU3NCw3ICs1NzgsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBh
ZGRlZCB2YXIuCi0gICAgICAgIGludCBhZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYsIGJv
b2wgaXNDb25zdGFudCk7CisgICAgICAgIGVudW0gQ29uc3RhbnRNb2RlIHsgSXNDb25zdGFudCwg
SXNWYXJpYWJsZSB9OworICAgICAgICBlbnVtIEZ1bmN0aW9uTW9kZSB7IElzRnVuY3Rpb25Ub1Nw
ZWNpYWxpemUsIE5vdEZ1bmN0aW9uT3JOb3RTcGVjaWFsaXphYmxlIH07CisgICAgICAgIGludCBh
ZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYsIENvbnN0YW50TW9kZSwgRnVuY3Rpb25Nb2Rl
KTsKIAogICAgICAgICB2b2lkIGFkZFBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyJiwgaW50IHBh
cmFtZXRlckluZGV4KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxMjAyMjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzMCw3ICs0MzAsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxS
ZXNvbHZlTm9kZTo6ZW1pCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNTdGF0aWMoKSkgewogICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
ICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZnVuYy5nZXQoKSwgcmVzb2x2ZVJl
c3VsdCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGZ1bmMuZ2V0KCksIHJl
c29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0
LCBmdW5jLmdldCgpKSwgZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRP
ZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOwogICAgIH0KQEAgLTYxOCw3ICs2MTgsNyBAQCBSZWdpc3Rl
cklEKiBQb3N0Zml4UmVzb2x2ZU5vZGU6OmVtaXRCeXRlCiAgICAgfQogCiAgICAgaWYgKHJlc29s
dmVSZXN1bHQuaXNTdGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3VsdC5pc1JlYWRPbmx5KCkpIHsKLSAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNW
YXIoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCByZXNvbHZlUmVzdWx0LCBtX2lkZW50KTsKICAgICAgICAgUmVn
aXN0ZXJJRCogb2xkVmFsdWU7CiAgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSkgewogICAgICAgICAgICAgb2xkVmFsdWUgPSAwOwpAQCAtNjI2LDcgKzYyNiw3IEBA
IFJlZ2lzdGVySUQqIFBvc3RmaXhSZXNvbHZlTm9kZTo6ZW1pdEJ5dGUKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsK
ICAgICAgICAgfQotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVz
dWx0LCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJl
c29sdmVSZXN1bHQsIG1faWRlbnQsIHZhbHVlLmdldCgpKTsKICAgICAgICAgcmV0dXJuIG9sZFZh
bHVlOwogICAgIH0KICAgICAKQEAgLTgwMyw5ICs4MDMsOSBAQCBSZWdpc3RlcklEKiBQcmVmaXhS
ZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgfQogCiAgICAgaWYgKHJlc29sdmVSZXN1bHQuaXNT
dGF0aWMoKSAmJiAhcmVzb2x2ZVJlc3VsdC5pc1JlYWRPbmx5KCkpIHsKLSAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJlc29sdmVSZXN1bHQpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci5lbWl0R2V0U3RhdGljVmFyKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJlc3VsdCwgbV9pZGVudCk7CiAgICAgICAg
IGVtaXRQcmVJbmNPckRlYyhnZW5lcmF0b3IsIHByb3BEc3QuZ2V0KCksIG1fb3BlcmF0b3IpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihyZXNvbHZlUmVzdWx0LCBwcm9wRHN0
LmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3Vs
dCwgbV9pZGVudCwgcHJvcERzdC5nZXQoKSk7CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92
ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwogICAgIH0KIApAQCAt
MTIyNiw5ICsxMjI2LDkgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0
QgogICAgIH0KIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkgJiYgIXJlc29sdmVS
ZXN1bHQuaXNSZWFkT25seSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0g
Z2VuZXJhdG9yLmVtaXRHZXRTdGF0aWNWYXIoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCByZXNvbHZlUmVzdWx0KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5l
cmF0b3IuZW1pdEdldFN0YXRpY1ZhcihnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHJl
c29sdmVSZXN1bHQsIG1faWRlbnQpOwogICAgICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBlbWl0
UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVy
YW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3Jp
cHRvcigpKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVSZXN1
bHQsIHJlc3VsdCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGljVmFyKHJlc29sdmVS
ZXN1bHQsIG1faWRlbnQsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CkBAIC0xMjU2LDcgKzEyNTYsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1p
dEJ5dGVjCiAgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAg
ICAgICAgICAgIGRzdCA9IDA7CiAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKGRzdCwgbV9yaWdodCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGlj
VmFyKHJlc29sdmVSZXN1bHQsIHZhbHVlKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTdGF0
aWNWYXIocmVzb2x2ZVJlc3VsdCwgbV9pZGVudCwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdmFs
dWU7CiAgICAgfQogCkBAIC0xMzYxLDcgKzEzNjEsNyBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xO
b2RlOjplbWl0Q29kZVNpbmdsCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gbV9pbml0
ID8gZ2VuZXJhdG9yLmVtaXROb2RlKG1faW5pdCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNV
bmRlZmluZWQoKSk7CiAKICAgICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpKQotICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2ZVJlc3VsdCwgdmFsdWUu
Z2V0KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRTdGF0aWNWYXIocmVzb2x2
ZVJlc3VsdCwgbV9pZGVudCwgdmFsdWUuZ2V0KCkpOwogICAgIAogICAgIGlmIChnZW5lcmF0b3Iu
Y29kZVR5cGUoKSAhPSBFdmFsQ29kZSkKICAgICAgICAgcmV0dXJuIHZhbHVlLmdldCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShy
ZXZpc2lvbiAxMjAyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNyArMjE5LDkgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogewogICAgIEFTU0VSVChtX2Jsb2NrKTsKICAg
ICBBU1NFUlQobV9pc1ZhbGlkKTsKLSAgICAgICAgCisgICAgCisgICAgbV9kaWRDbG9iYmVyID0g
ZmFsc2U7CisgICAgCiAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IG1fYmxvY2stPmF0KGluZGV4
SW5CbG9jayk7CiAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbbm9kZUluZGV4XTsKICAgICAgICAg
CkBAIC0yMzcsOCArMjM5LDEyIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25l
ZCBpbmQKICAgICAgICAgICAgIAogICAgIGNhc2UgR2V0TG9jYWw6IHsKICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0
YSgpOworICAgICAgICBpZiAodmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCkgPT0gU3Bl
Y05vbmUpIHsKKyAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgICAgICAgICAgbm9k
ZS5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgYm9vbCBjYW5FeGl0ID0gZmFsc2U7Ci0gICAgICAgIGNhbkV4aXQgfD0gdmFyaWFibGVBY2Nl
c3NEYXRhLT5wcmVkaWN0aW9uKCkgPT0gU3BlY05vbmU7CiAgICAgICAgIEFic3RyYWN0VmFsdWUg
dmFsdWUgPSBtX3ZhcmlhYmxlcy5vcGVyYW5kKHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSk7
CiAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhLT5pc0NhcHR1cmVkKCkpIHsKICAgICAg
ICAgICAgIGlmICh2YWx1ZS5pc0NsZWFyKCkpCkBAIC0xNDc2LDcgKzE0ODIsNyBAQCBib29sIEFi
c3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDEoKSkuZmlsdGVyKFNwZWNGdW5jdGlvbik7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQg
YmUgYWJsZSB0byBwcm9wYWdhdGUgdGhlIGZhY3QgdGhhdCB3ZSBrbm93IHdoYXQgdGhlIGZ1bmN0
aW9uIGlzLgogICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorICAgICAgICAKICAgICBjYXNl
IFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICBub2RlLnNldENhbkV4
aXQodHJ1ZSk7CkBAIC0xNDg4LDggKzE0OTQsMTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICBicmVhazsKKyAgICAgICAg
CisgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAgICAgICBub2RlLnNldENhbkV4aXQo
dHJ1ZSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRHbG9iYWxW
YXI6CisgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0
KGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTE1NzgsNiArMTU4OSw3
IEBAIGlubGluZSB2b2lkIEFic3RyYWN0U3RhdGU6OmNsb2JiZXJTdHJ1Y3QKICAgICBmb3IgKHNp
emVfdCBpID0gbV92YXJpYWJsZXMubnVtYmVyT2ZMb2NhbHMoKTsgaS0tOykKICAgICAgICAgbV92
YXJpYWJsZXMubG9jYWwoaSkuY2xvYmJlclN0cnVjdHVyZXMoKTsKICAgICBtX2hhdmVTdHJ1Y3R1
cmVzID0gZmFsc2U7CisgICAgbV9kaWRDbG9iYmVyID0gdHJ1ZTsKIH0KIAogaW5saW5lIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VGFpbChBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlv
biwgQWJzdHJhY3RWYWx1ZSYgaW5WYXJpYWJsZSwgTm9kZUluZGV4IG5vZGVJbmRleCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCShyZXZpc2lv
biAxMjAyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDYgKzE5Myw5IEBAIHB1YmxpYzoKICAgICAvLyBvZiBU
aHJvdy4KICAgICBib29sIGV4ZWN1dGUodW5zaWduZWQpOwogICAgIAorICAgIC8vIERpZCB0aGUg
bGFzdCBleGVjdXRlZCBub2RlIGNsb2JiZXIgdGhlIHdvcmxkPworICAgIGJvb2wgZGlkQ2xvYmJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGlkQ2xvYmJlcjsgfQorICAgIAogICAgIC8vIElzIHRoZSBl
eGVjdXRpb24gc3RhdGUgc3RpbGwgdmFsaWQ/IFRoaXMgd2lsbCBiZSBmYWxzZSBpZiBleGVjdXRl
KCkgaGFzCiAgICAgLy8gcmV0dXJuZWQgZmFsc2UgcHJldmlvdXNseS4KICAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KQEAgLTI3NCw2ICsyNzcsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9mb3VuZENvbnN0YW50czsKICAgICAKICAgICBib29sIG1faXNWYWxp
ZDsKKyAgICBib29sIG1fZGlkQ2xvYmJlcjsKICAgICAKICAgICBCcmFuY2hEaXJlY3Rpb24gbV9i
cmFuY2hEaXJlY3Rpb247IC8vIFRoaXMgaXMgb25seSBzZXQgZm9yIGJsb2NrcyB0aGF0IGVuZCBp
biBCcmFuY2ggYW5kIHRoYXQgZXhlY3V0ZSB0byBjb21wbGV0aW9uIChpLmUuIG1faXNWYWxpZCA9
PSB0cnVlKS4KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMzQsNiAr
MTIzNCw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAv
LyBEb2VzIHRoZSBjb2RlIGJsb2NrJ3Mgc2l6ZSBtYXRjaCB0aGUgaGV1cmlzdGljcy9yZXF1aXJl
bWVudHMgZm9yIGJlaW5nCiAgICAgLy8gYW4gaW5saW5lIGNhbmRpZGF0ZT8KICAgICBDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2sgPSBleGVjdXRhYmxlLT5wcm9maWxlZENvZGVCbG9ja0ZvcihraW5k
KTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
ICAgICBpZiAoIW1pZ2h0SW5saW5lRnVuY3Rpb25Gb3IocHJvZmlsZWRCbG9jaywga2luZCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTIyNTEsMTMgKzIyNTQsNjEgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2dldF9n
bG9iYWxfdmFyOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0
UHJlZGljdGlvbigpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpOworCiAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0R2xvYmFsVmFyID0gYWRkVG9HcmFwaCgK
ICAgICAgICAgICAgICAgICBHZXRHbG9iYWxWYXIsCi0gICAgICAgICAgICAgICAgT3BJbmZvKG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+YXNzZXJ0UmVnaXN0
ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5yZWdpc3RlclBvaW50ZXIp
KSwKKyAgICAgICAgICAgICAgICBPcEluZm8oZ2xvYmFsT2JqZWN0LT5hc3NlcnRSZWdpc3Rlcklz
SW5UaGlzT2JqZWN0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnJlZ2lzdGVyUG9pbnRlcikpLAog
ICAgICAgICAgICAgICAgIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgICAgICBzZXQoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0R2xvYmFsVmFyKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2dldF9nbG9iYWxfdmFyKTsKICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6IHsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNr
VG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsK
KyAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IG1fY29kZUJsb2NrLT5pZGVudGlm
aWVyKGlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKS5nZXQoaWRlbnRpZmllci5pbXBsKCkpOwor
ICAgICAgICAgICAgaWYgKCFlbnRyeS5jb3VsZEJlV2F0Y2hlZCgpKSB7CisgICAgICAgICAgICAg
ICAgTm9kZUluZGV4IGdldEdsb2JhbFZhciA9IGFkZFRvR3JhcGgoCisgICAgICAgICAgICAgICAg
ICAgIEdldEdsb2JhbFZhciwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGdsb2JhbE9iamVj
dC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5y
ZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHByZWRpY3Rpb24p
KTsKKyAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
Z2V0R2xvYmFsVmFyKTsKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZ2xvYmFs
X3Zhcl93YXRjaGFibGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBUaGUgd2F0Y2hwb2ludCBpcyBzdGlsbCBpbnRhY3QhIFRoaXMgbWVhbnMgdGhhdCB3ZSB3
aWxsIGdldCBub3RpZmllZCBpZiB0aGUKKyAgICAgICAgICAgIC8vIGN1cnJlbnQgdmFsdWUgaW4g
dGhlIGdsb2JhbCB2YXJpYWJsZSBjaGFuZ2VzLiBTbywgd2UgY2FuIGlubGluZSB0aGF0IHZhbHVl
LgorICAgICAgICAgICAgLy8gTW9yZW92ZXIsIGN1cnJlbnRseSB3ZSBjYW4gYXNzdW1lIHRoYXQg
dGhpcyB2YWx1ZSBpcyBhIEpTRnVuY3Rpb24qLCB3aGljaAorICAgICAgICAgICAgLy8gaW1wbGll
cyB0aGF0IGl0J3MgYSBjZWxsLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzLCBzaW5jZSBpbiBnZW5l
cmFsIHdlJ2QgaGF2ZQorICAgICAgICAgICAgLy8gdG8gdXNlIGEgSlNDb25zdGFudCBmb3Igbm9u
LWNlbGxzIGFuZCBhIFdlYWtKU0NvbnN0YW50IGZvciBjZWxscy4gU28gaW5zdGVhZAorICAgICAg
ICAgICAgLy8gb2YgaGF2aW5nIGJvdGggY2FzZXMgd2UganVzdCBhc3NlcnQgdGhhdCB0aGUgdmFs
dWUgaXMgYSBjZWxsLgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOQi4gSWYgaXQgd2Fz
bid0IGZvciBDU0UsIEdsb2JhbFZhcldhdGNocG9pbnQgd291bGQgaGF2ZSBubyBuZWVkIGZvciB0
aGUKKyAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHBvaW50ZXIuIEJ1dCBDU0UgdHJhY2tzIGVmZmVj
dHMgb24gZ2xvYmFsIHZhcmlhYmxlcyBieSBjb21wYXJpbmcKKyAgICAgICAgICAgIC8vIHJlZ2lz
dGVyIHBvaW50ZXJzLiBCZWNhdXNlIENTRSBleGVjdXRlcyBtdWx0aXBsZSB0aW1lcyB3aGlsZSB0
aGUgYmFja2VuZAorICAgICAgICAgICAgLy8gZXhlY3V0ZXMgb25jZSwgd2UgdXNlIHRoZSBmb2xs
b3dpbmcgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmOgorICAgICAgICAgICAgLy8gLSBUaGUgbm9kZSBy
ZWZlcnMgZGlyZWN0bHkgdG8gdGhlIHJlZ2lzdGVyIHBvaW50ZXIgdG8gbWFrZSBDU0Ugc3VwZXIg
Y2hlYXAuCisgICAgICAgICAgICAvLyAtIFRvIHBlcmZvcm0gYmFja2VuZCBjb2RlIGdlbmVyYXRp
b24sIHRoZSBub2RlIG9ubHkgY29udGFpbnMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgICAgIC8v
ICAgbnVtYmVyLCBmcm9tIHdoaWNoIGl0IGlzIHBvc3NpYmxlIHRvIGdldCAodmlhIGEgZmV3IGF2
ZXJhZ2UtdGltZSBPKDEpCisgICAgICAgICAgICAvLyAgIGxvb2t1cHMpIHRvIHRoZSBXYXRjaHBv
aW50U2V0LgorICAgICAgICAgICAgCisgICAgICAgICAgICBhZGRUb0dyYXBoKAorICAgICAgICAg
ICAgICAgIEdsb2JhbFZhcldhdGNocG9pbnQsCisgICAgICAgICAgICAgICAgT3BJbmZvKGdsb2Jh
bE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICBPcEluZm8oaWRlbnRpZmll
ck51bWJlcikpOworICAgICAgICAgICAgCisgICAgICAgICAgICBKU1ZhbHVlIHNwZWNpZmljVmFs
dWUgPSBnbG9iYWxPYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCk7Cisg
ICAgICAgICAgICBBU1NFUlQoc3BlY2lmaWNWYWx1ZS5pc0NlbGwoKSk7CisgICAgICAgICAgICBz
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKFdlYWtKU0NvbnN0YW50LCBPcEluZm8oc3BlY2lmaWNWYWx1ZS5hc0NlbGwoKSkpKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2dsb2JhbF92YXJf
d2F0Y2hhYmxlKTsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6
IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKTsKQEAgLTIyNjgsNiArMjMxOSwyOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfZ2xv
YmFsX3Zhcik7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyX2No
ZWNrOiB7CisgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVy
UmVtYXBbY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZF07CisgICAgICAgICAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihpZGVudGlmaWVyTnVt
YmVyKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxPYmplY3Qt
PnN5bWJvbFRhYmxlKCkuZ2V0KGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICAgICAgICAgIGlmICgh
ZW50cnkuY291bGRCZVdhdGNoZWQoKSkgeworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCisg
ICAgICAgICAgICAgICAgICAgIFB1dEdsb2JhbFZhciwKKyAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKGdsb2JhbE9iamVjdC0+YXNzZXJ0UmVnaXN0ZXJJc0luVGhpc09iamVjdChjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5yZWdpc3RlclBvaW50ZXIpKSwKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWUpOworICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNr
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkZFRvR3JhcGgoCisgICAgICAgICAgICAg
ICAgUHV0R2xvYmFsVmFyQ2hlY2ssCisgICAgICAgICAgICAgICAgT3BJbmZvKGNvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCktPmFzc2VydFJlZ2lzdGVySXNJblRoaXNPYmplY3QoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUucmVnaXN0ZXJQb2ludGVyKSksCisgICAgICAgICAgICAgICAgT3BJbmZvKGlk
ZW50aWZpZXJOdW1iZXIpLAorICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAgICAgICAgfQorCiAgICAgICAg
IC8vID09PSBCbG9jayB0ZXJtaW5hdG9ycy4gPT09CiAKICAgICAgICAgY2FzZSBvcF9qbXA6IHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkocmV2
aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsMTIgQEAgcHVibGljOgogICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKICAg
ICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKFRydXN0ZWRJ
bW1QdHIgYXJnMSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKICAgICB7CkBAIC00MzMsNiArNDM5LDExIEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjE+KGFyZzEsIGFyZzIpOwogICAgIH0KKyAgICAKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQor
ICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0K
IAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlz
aW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDI5IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBOb05vZGU7CiAgICAgfQogICAgIAorICAgIGJvb2wgZ2xvYmFsVmFyV2F0Y2hwb2ludEVs
aW1pbmF0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKQorICAgIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKKyAgICAg
ICAgICAgIE5vZGVJbmRleCBpbmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKKyAgICAgICAg
ICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW2luZGV4XTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgorICAgICAgICAgICAgICAgIGlmIChub2Rl
LnJlZ2lzdGVyUG9pbnRlcigpID09IHJlZ2lzdGVyUG9pbnRlcikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChtX2dyYXBoLmNsb2JiZXJzV29ybGQoaW5kZXgpKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCiAgICAgTm9k
ZUluZGV4IGdsb2JhbFZhclN0b3JlRWxpbWluYXRpb24oV3JpdGVCYXJyaWVyPFVua25vd24+KiBy
ZWdpc3RlclBvaW50ZXIpCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4
SW5CbG9jazsgaS0tOykgewpAQCAtMjI2LDYgKzI0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewogICAgICAg
ICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6CisgICAgICAgICAgICBjYXNlIFB1dEdsb2JhbFZhckNo
ZWNrOgogICAgICAgICAgICAgICAgIGlmIChub2RlLnJlZ2lzdGVyUG9pbnRlcigpID09IHJlZ2lz
dGVyUG9pbnRlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtOTg1LDcgKzEwMDksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHNldFJlcGxhY2VtZW50KGdsb2JhbFZhckxvYWRFbGltaW5hdGlvbihub2RlLnJlZ2lzdGVyUG9p
bnRlcigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAgICAgICBpZiAoZ2xvYmFsVmFyV2F0Y2hwb2lu
dEVsaW1pbmF0aW9uKG5vZGUucmVnaXN0ZXJQb2ludGVyKCkpKQorICAgICAgICAgICAgICAgIGVs
aW1pbmF0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBQdXRHbG9iYWxWYXI6CisgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6CiAgICAgICAg
ICAgICBpZiAobV9maXhwb2ludFN0YXRlID09IEZpeHBvaW50Tm90Q29udmVyZ2VkKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZWxpbWluYXRlKGdsb2JhbFZhclN0b3JlRWxp
bWluYXRpb24obm9kZS5yZWdpc3RlclBvaW50ZXIoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMjAyMjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjMsNyArMTIzLDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlT3Bjb2Rl
KAogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgogICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6
CisgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGU6CiAgICAgY2FzZSBvcF9wdXRf
Z2xvYmFsX3ZhcjoKKyAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgogICAgIGNhc2Ug
b3Bfam1wOgogICAgIGNhc2Ugb3BfbG9vcDoKICAgICBjYXNlIG9wX2p0cnVlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw5IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghYmxv
Y2stPmNmYUZvdW5kQ29uc3RhbnRzKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2lmIERG
R19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyAgICAgICAgICAgIGRhdGFMb2co
IkNvbnN0YW50IGZvbGRpbmcgY29uc2lkZXJpbmcgQmxvY2sgIyV1LlxuIiwgYmxvY2tJbmRleCk7
CisjZW5kaWYKICAgICAgICAgICAgIHN0YXRlLmJlZ2luQmFzaWNCbG9jayhibG9jayk7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4SW5CbG9jayA9IDA7IGluZGV4SW5CbG9jayA8IGJs
b2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFzdGF0
ZS5pc1ZhbGlkKCkpCkBAIC05MCw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBzdGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jayk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkKLSAgICAgICAgICAgICAgICAgICAgfHwg
bV9ncmFwaC5jbG9iYmVyc1dvcmxkKG5vZGUpCisgICAgICAgICAgICAgICAgICAgIHx8IHN0YXRl
LmRpZENsb2JiZXIoKQogICAgICAgICAgICAgICAgICAgICB8fCBub2RlLmhhc0NvbnN0YW50KCkp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBzdGF0ZS5mb3JOb2RlKG5vZGVJbmRleCkudmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgJKHJl
dmlzaW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFi
bGVKdW1wUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsMTEgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfQogICAgIAorICAgIGJvb2wgaXNTZXQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fY29kZU9mZnNldCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7
CisgICAgfQorICAgIAogICAgIHZvaWQgc3dpdGNoVG9MYXRlSnVtcChNYWNyb0Fzc2VtYmxlcjo6
UGF0Y2hhYmxlSnVtcCBjaGVjaykKICAgICB7CiAjaWZuZGVmIE5ERUJVRwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEyMDIy
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCwxMSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhp
dHMoKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVy
T2ZPU1JFeGl0cygpOyArK2kpIHsKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygp
LT5vc3JFeGl0KGkpOwotICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5saW5rKHRo
aXMpOworICAgICAgICBBU1NFUlQoIWV4aXQubV9jaGVjay5pc1NldCgpID09IChleGl0Lm1fd2F0
Y2hwb2ludEluZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwor
ICAgICAgICBpZiAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAo
KS5saW5rKHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlQmxvY2soKS0+d2F0
Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5zZXREZXN0aW5hdGlvbihsYWJlbCgpKTsK
ICAgICAgICAgaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKICAgICAgICAgc3RvcmUzMihU
cnVzdGVkSW1tMzIoaSksICZnbG9iYWxEYXRhKCktPm9zckV4aXRJbmRleCk7CiAgICAgICAgIGV4
aXQubV9jaGVjay5zd2l0Y2hUb0xhdGVKdW1wKHBhdGNoYWJsZUp1bXAoKSk7CkBAIC0xOTAsNiAr
MTk0LDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAg
ICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7CiAgICAgICAgIGxpbmtC
dWZmZXIubGluayhleGl0Lm1fY2hlY2subGF0ZUp1bXAoKSwgdGFyZ2V0KTsKICAgICAgICAgZXhp
dC5tX2NoZWNrLmNvcnJlY3RMYXRlSnVtcChsaW5rQnVmZmVyKTsKKyAgICAgICAgaWYgKGV4aXQu
bV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQorICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhpdC5tX3dhdGNocG9pbnRJ
bmRleCkuY29ycmVjdExhYmVscyhsaW5rQnVmZmVyKTsKICAgICB9CiAgICAgCiAgICAgY29kZUJs
b2NrKCktPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzMCw5ICs0MzAsMjAg
QEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogICAgIAor
ICAgIGJvb2wgaGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBvcCgpID09IEdsb2JhbFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXJD
aGVjazsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlckZvckNoZWNr
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNJZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKSk7
CisgICAgICAgIHJldHVybiBtX29wSW5mbzI7CisgICAgfQorICAgIAogICAgIGJvb2wgaGFzUmVn
aXN0ZXJQb2ludGVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IEdldEdsb2JhbFZh
ciB8fCBvcCgpID09IFB1dEdsb2JhbFZhcjsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2V0R2xv
YmFsVmFyIHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyIHx8IG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hw
b2ludCB8fCBvcCgpID09IFB1dEdsb2JhbFZhckNoZWNrOwogICAgIH0KICAgICAKICAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVyUG9pbnRlcigpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMjAyMjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsx
NDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0U2Nv
cGVkVmFyLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNy
byhHZXRHbG9iYWxWYXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhQdXRHbG9iYWxWYXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHbG9iYWxW
YXJXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUHV0R2xvYmFsVmFy
Q2hlY2ssIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgXAogICAgIC8qIE9wdGltaXphdGlvbnMgZm9yIGFycmF5IG11
dGF0aW9uLiAqL1wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNw
cAkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBPU1JFeGl0OjpPU1JFeGl0
KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTCiAgICAgLCBtX2NvZGVPcmlnaW4oaml0LT5tX2NvZGVP
cmlnaW5Gb3JPU1IpCiAgICAgLCBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZShtX2NvZGVPcmln
aW4pCiAgICAgLCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKKyAgICAsIG1fd2F0Y2hw
b2ludEluZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAsIG1f
a2luZChraW5kKQogICAgICwgbV9jb3VudCgwKQogICAgICwgbV9hcmd1bWVudHMoaml0LT5tX2Fy
Z3VtZW50cy5zaXplKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aAkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgc3RydWN0IE9TUkV4aXQgewog
ICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7CiAgICAgCiAgICAgdW5z
aWduZWQgbV9yZWNvdmVyeUluZGV4OworICAgIHVuc2lnbmVkIG1fd2F0Y2hwb2ludEluZGV4Owog
ICAgIAogICAgIEV4aXRLaW5kIG1fa2luZDsKICAgICB1aW50MzJfdCBtX2NvdW50OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAx
MjAyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MjQsNiArOTI0LDExIEBAIHZvaWQqIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uVmlydHVhbENvbnMKICAgICByZXR1cm4gdmlydHVhbEZvcihleGVjQ2FsbGVlLCBDb2Rl
Rm9yQ29uc3RydWN0KTsKIH0KIAordm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5vdGlmeUds
b2JhbFZhcldyaXRlKFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCit7CisgICAgd2F0Y2hw
b2ludFNldC0+bm90aWZ5V3JpdGUoKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBvcGVyYXRpb25SZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSWRlbnRpZmllciogcHJvcGVydHlO
YW1lKQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2
aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsNyBAQCB0eXBlZGVmIHZvaWQgREZHX09Q
RVJBVElPTiAoKlZfREZHT3BlcmF0CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZH
T3BlcmF0aW9uX0VKSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09w
ZXJhdGlvbl9FSlBQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IHZvaWQqKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRVBa
SikoRXhlY1N0YXRlKiwgdm9pZCosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYg
dm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fVykoV2F0Y2hwb2ludFNldCopOwog
dHlwZWRlZiB2b2lkKiBERkdfT1BFUkFUSU9OICgqUF9ERkdPcGVyYXRpb25fRSkoRXhlY1N0YXRl
Kik7CiAKIC8vIFRoZXNlIHJvdXRpbmVzIGFyZSBwcm92aWRlIGNhbGxiYWNrcyBvdXQgdG8gQysr
IGltcGxlbWVudGF0aW9ucyBvZiBvcGVyYXRpb25zIHRvbyBjb21wbGV4IHRvIEpJVC4KQEAgLTEx
Niw2ICsxMTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiBF
bmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSWRlbnRpZmllciopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEN1c3RvbUdldHRlcihFeGVjU3Rh
dGUqLCBKU0NlbGwqLCBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYywgSWRlbnRpZmllciopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEdl
dHRlcihFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5R2xvYmFsVmFyV3JpdGUoV2F0Y2hwb2ludFNldCog
d2F0Y2hwb2ludFNldCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBvcGVyYXRpb25SZXNvbHZlKEV4ZWNTdGF0ZSosIElkZW50aWZpZXIqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmVCYXNlKEV4ZWNT
dGF0ZSosIElkZW50aWZpZXIqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvblJlc29sdmVCYXNlU3RyaWN0UHV0KEV4ZWNTdGF0ZSosIElkZW50aWZp
ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTIwMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MSw3ICs0OTEsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIFB1dEdsb2JhbFZhcjogeworICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKKyAgICAgICAg
Y2FzZSBQdXRHbG9iYWxWYXJDaGVjazogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC02NjksNiArNjcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBUZWFyT2ZmQXJndW1lbnRzOgogICAgICAgICBjYXNlIENoZWNrTnVtYmVyOgogICAgICAg
ICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICAgICAgY2FzZSBHbG9iYWxWYXJX
YXRjaHBvaW50OgogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2Rl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlz
aW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OTYsNiArMzU5Niw2MiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgUHV0R2xvYmFsVmFyQ2hlY2s6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIAorICAgICAgICBXYXRjaHBvaW50
U2V0KiB3YXRjaHBvaW50U2V0ID0KKyAgICAgICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihu
b2RlLmNvZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpLmdldCgKKyAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpLT5pbXBsKCkpLndhdGNocG9p
bnRTZXQoKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICBzbG93
UGF0aENhbGwoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLAorICAgICAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKHdhdGNocG9pbnRTZXQtPmFkZHJlc3NPZklzV2F0Y2hl
ZCgpKSksCisgICAgICAgICAgICAgICAgdGhpcywgb3BlcmF0aW9uTm90aWZ5R2xvYmFsVmFyV3Jp
dGUsIE5vUmVzdWx0LCB3YXRjaHBvaW50U2V0KSk7CisgICAgICAgIAorICAgICAgICBpZiAoSGVh
cDo6aXNXcml0ZUJhcnJpZXJFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdw
cigpOworICAgICAgICAgICAgCisgICAgICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiksIHZhbHVlLnRhZ0dQUigpLCBub2RlLmNoaWxkMSgp
LCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcywgc2NyYXRjaFJlZyk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBGSVhNRTogaWYgd2UgaGFwcGVuIHRvIGhhdmUgYSBzcGFyZSByZWdpc3Rl
ciAtIGFuZCBfT05MWV8gaWYgd2UgaGFwcGVuIHRvIGhhdmUKKyAgICAgICAgLy8gYSBzcGFyZSBy
ZWdpc3RlciAtIGEgZ29vZCBvcHRpbWl6YXRpb24gd291bGQgYmUgdG8gcHV0IHRoZSByZWdpc3Rl
ciBwb2ludGVyIGludG8KKyAgICAgICAgLy8gYSByZWdpc3RlciBhbmQgdGhlbiBkbyBhIHplcm8g
b2Zmc2V0IHN0b3JlIGZvbGxvd2VkIGJ5IGEgZm91ci1vZmZzZXQgc3RvcmUgKG9yCisgICAgICAg
IC8vIHZpY2UtdmVyc2EgZGVwZW5kaW5nIG9uIGVuZGlhbm5lc3MpLgorICAgICAgICBtX2ppdC5z
dG9yZTMyKHZhbHVlLnRhZ0dQUigpLCBub2RlLnJlZ2lzdGVyUG9pbnRlcigpLT50YWdQb2ludGVy
KCkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlLnBheWxvYWRHUFIoKSwgbm9kZS5yZWdp
c3RlclBvaW50ZXIoKS0+cGF5bG9hZFBvaW50ZXIoKSk7CisKKyAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2Ug
R2xvYmFsVmFyV2F0Y2hwb2ludDogeworICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS5nZXQoCisgICAgICAgICAgICBpZGVudGlmaWVy
KG5vZGUuaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpLT5pbXBsKCkpLmFkZFdhdGNocG9pbnQo
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOworICAgICAgICAKKyNp
ZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAg
IG1faml0LmxvYWQzMihub2RlLnJlZ2lzdGVyUG9pbnRlcigpLT50YWdQb2ludGVyKCksIHNjcmF0
Y2hHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RPSyA9IG1faml0LmJyYW5jaDMy
KAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLAorICAgICAg
ICAgICAgVHJ1c3RlZEltbTMyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCktPmdldCgpLnRhZygpKSk7
CisgICAgICAgIG1faml0LmxvYWQzMihub2RlLnJlZ2lzdGVyUG9pbnRlcigpLT5wYXlsb2FkUG9p
bnRlcigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgb2sgPSBtX2pp
dC5icmFuY2gzMigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgc2NyYXRjaEdQUiwK
KyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihub2RlLnJlZ2lzdGVyUG9pbnRlcigpLT5nZXQoKS5w
YXlsb2FkKCkpKTsKKyAgICAgICAgbm90T0subGluaygmbV9qaXQpOworICAgICAgICBtX2ppdC5i
cmVha3BvaW50KCk7CisgICAgICAgIG9rLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgICAgICAK
KyAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0
cnVjdHVyZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYxNSw2ICszNjE1LDUyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRHbG9iYWxWYXJDaGVjazog
eworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAg
ICAgICAgCisgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQgPQorICAgICAgICAg
ICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCku
Z2V0KAorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyRm9y
Q2hlY2soKSktPmltcGwoKSkud2F0Y2hwb2ludFNldCgpOworICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8s
CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3Mod2F0Y2hw
b2ludFNldC0+YWRkcmVzc09mSXNXYXRjaGVkKCkpKSwKKyAgICAgICAgICAgICAgICB0aGlzLCBv
cGVyYXRpb25Ob3RpZnlHbG9iYWxWYXJXcml0ZSwgTm9SZXN1bHQsIHdhdGNocG9pbnRTZXQpKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQoKSkgewor
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBHUFJS
ZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHdyaXRlQmFycmllcihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKSwgdmFs
dWUuZ3ByKCksIG5vZGUuY2hpbGQxKCksIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzLCBz
Y3JhdGNoUmVnKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIo
dmFsdWUuZ3ByKCksIG5vZGUucmVnaXN0ZXJQb2ludGVyKCkpOworCisgICAgICAgIG5vUmVzdWx0
KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKKyAgICBj
YXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKKyAgICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUuY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCkuZ2V0KAorICAgICAgICAgICAgaWRlbnRp
Zmllcihub2RlLmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpKS0+aW1wbCgpKS5hZGRXYXRjaHBv
aW50KAorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpKTsKKyAgICAgICAg
CisjaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQorICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAg
ICAgICBtX2ppdC5sb2FkUHRyKG5vZGUucmVnaXN0ZXJQb2ludGVyKCksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBvayA9IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgc2NyYXRjaEdQUiwKKyAgICAgICAgICAgIFRydXN0ZWRJ
bW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihKU1ZhbHVlOjplbmNvZGUobm9kZS5yZWdpc3RlclBv
aW50ZXIoKS0+Z2V0KCkpKSkpOworICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgICAg
IG9rLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIENoZWNrSGFz
SW5zdGFuY2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlz
aW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxNCw2ICsxNDE0LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihh
cmcyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdP
cGVyYXRpb25fVyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCisgICAg
eworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyKHdhdGNocG9pbnRT
ZXQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxPgog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlv
biwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJnMSkKICAgICB7CkBAIC0xNjcyLDYgKzE2
NzcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQsIGFyZzNUYWcp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24p
OwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0
aW9uX1cgb3BlcmF0aW9uLCBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KQorICAgIHsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0cih3YXRjaHBvaW50U2V0KSk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgQXJndW1lbnRUeXBlMT4KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBvcGVyYXRpb24sIE5v
UmVzdWx0VGFnLCBBcmd1bWVudFR5cGUxIGFyZzEpCiAgICAgewpAQCAtMTc5Myw2ICsxODAzLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwg
cmVzdWx0KTsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uKQorICAgIHsKKyAgICAg
ICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gbV9qaXQuYXBwZW5k
Q2FsbChmdW5jdGlvbik7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBH
UFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCiAgICAgewogICAgICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CkBA
IC0yMTkzLDYgKzIyMDgsMzIgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoYXQobV9jb21waWxl
SW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlVXNlLmluZGV4KCksIGp1
bXBUb0ZhaWwsIHJlY292ZXJ5KTsKICAgICB9CisgICAgLy8gVXNlIHRoaXMgbGlrZSB5b3Ugd291
bGQgdXNlIHNwZWN1bGF0aW9uQ2hlY2soKSwgZXhjZXB0IHRoYXQgeW91IGRvbid0IHBhc3MgaXQg
YSBqdW1wCisgICAgLy8gKGJlY2F1c2UgeW91IGRvbid0IGhhdmUgdG8gZXhlY3V0ZSBhIGJyYW5j
aDsgdGhhdCdzIGtpbmQgb2YgdGhlIHdob2xlIHBvaW50KSwgYW5kIHlvdQorICAgIC8vIG11c3Qg
cmVnaXN0ZXIgdGhlIHJldHVybmVkIFdhdGNocG9pbnQgd2l0aCBzb21ldGhpbmcgcmVsZXZhbnQu
IEluIGdlbmVyYWwsIHRoaXMgc2hvdWxkCisgICAgLy8gYmUgdXNlZCB3aXRoIGV4dHJlbWUgY2Fy
ZS4gVXNlIHNwZWN1bGF0aW9uQ2hlY2soKSB1bmxlc3MgeW91J3ZlIGdvdCBhbiBhbWF6aW5nIHJl
YXNvbgorICAgIC8vIG5vdCB0by4KKyAgICBXYXRjaHBvaW50KiBzcGVjdWxhdGlvbldhdGNocG9p
bnQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXgg
bm9kZUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgp
IHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOworICAgICAgICBPU1JFeGl0JiBleGl0ID0g
bV9qaXQuY29kZUJsb2NrKCktPm9zckV4aXQoCisgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KS0+YXBwZW5kT1NSRXhpdCgKKyAgICAgICAgICAgICAgICBPU1JFeGl0KGtpbmQsIGpzVmFsdWVT
b3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wKCksIHRoaXMpKSk7CisgICAgICAgIGV4aXQubV93YXRjaHBvaW50
SW5kZXggPSBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kV2F0Y2hwb2ludCgKKyAgICAgICAgICAg
IFdhdGNocG9pbnQobV9qaXQud2F0Y2hwb2ludExhYmVsKCkpKTsKKyAgICAgICAgcmV0dXJuICZt
X2ppdC5jb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KTsKKyAg
ICB9CisgICAgLy8gVGhlIGRlZmF1bHQgZm9yIHNwZWN1bGF0aW9uIHdhdGNocG9pbnRzIGlzIHRo
YXQgdGhleSdyZSB1bmNvdW50ZWQsIGJlY2F1c2UgdGhlCisgICAgLy8gYWN0IG9mIGZpcmluZyBh
IHdhdGNocG9pbnQgaW52YWxpZGF0ZXMgaXQuIFNvLCBmdXR1cmUgcmVjb21waWxhdGlvbnMgd2ls
bCBub3QKKyAgICAvLyBhdHRlbXB0IHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYWdhaW4uCisgICAg
V2F0Y2hwb2ludCogc3BlY3VsYXRpb25XYXRjaHBvaW50KCkKKyAgICB7CisgICAgICAgIHJldHVy
biBzcGVjdWxhdGlvbldhdGNocG9pbnQoVW5jb3VudGFibGVXYXRjaHBvaW50LCBKU1ZhbHVlU291
cmNlKCksIE5vTm9kZSk7CisgICAgfQogICAgIHZvaWQgZm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2so
RXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9k
ZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBWYWx1ZVJlY292
ZXJ5JiB2YWx1ZVJlY292ZXJ5KQogICAgIHsKICAgICAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUlu
ZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJl
dmlzaW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NzEsNiArMjg3MSwxOCBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjCiAgICAgICAgIHZQQyArPSBPUENPREVf
TEVOR1RIKG9wX2dldF9nbG9iYWxfdmFyKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwog
ICAgIH0KKyAgICBERUZJTkVfT1BDT0RFKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSkgewor
ICAgICAgICAvKiBnZXRfZ2xvYmFsX3Zhcl93YXRjaGFibGUgZHN0KHIpIGdsb2JhbE9iamVjdChj
KSByZWdpc3RlclBvaW50ZXIobikKKworICAgICAgICAgICBHZXRzIHRoZSBnbG9iYWwgdmFyIGF0
IGdsb2JhbCBzbG90IGluZGV4IGFuZCBwbGFjZXMgaXQgaW4gcmVnaXN0ZXIgZHN0LgorICAgICAg
ICAgKi8KKyAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CisgICAgICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyID0gdlBDWzJdLnUucmVnaXN0ZXJQb2lu
dGVyOworCisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVnaXN0ZXJQb2lu
dGVyLT5nZXQoKTsKKyAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2dsb2JhbF92
YXJfd2F0Y2hhYmxlKTsKKyAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworICAgIH0KICAgICBE
RUZJTkVfT1BDT0RFKG9wX3B1dF9nbG9iYWxfdmFyKSB7CiAgICAgICAgIC8qIHB1dF9nbG9iYWxf
dmFyIGdsb2JhbE9iamVjdChjKSByZWdpc3RlclBvaW50ZXIobikgdmFsdWUocikKICAgICAgICAg
IApAQCAtMjg4NSw2ICsyODk3LDIyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVj
dXRlKEV4ZWMKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcHV0X2dsb2JhbF92YXIp
OwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQorICAgIERFRklORV9PUENPREUo
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2spIHsKKyAgICAgICAgLyogcHV0X2dsb2JhbF92YXJfY2hl
Y2sgZ2xvYmFsT2JqZWN0KGMpIHJlZ2lzdGVyUG9pbnRlcihuKSB2YWx1ZShyKQorICAgICAgICAg
CisgICAgICAgICAgIFB1dHMgdmFsdWUgaW50byBnbG9iYWwgc2xvdCBpbmRleC4gSW4gSklUIGNv
bmZpZ3VyYXRpb25zIHRoaXMgd2lsbAorICAgICAgICAgICBwZXJmb3JtIGEgd2F0Y2hwb2ludCBj
aGVjay4gSWYgd2UncmUgcnVubmluZyB3aXRoIHRoZSBvbGQgaW50ZXJwcmV0ZXIsCisgICAgICAg
ICAgIHRoaXMgaXMgbm90IG5lY2Vzc2FyeTsgdGhlIGludGVycHJldGVyIG5ldmVyIHVzZXMgdGhl
c2Ugd2F0Y2hwb2ludHMuCisgICAgICAgICAqLworICAgICAgICBKU0dsb2JhbE9iamVjdCogc2Nv
cGUgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgICAgICBBU1NFUlQoc2NvcGUtPmlz
R2xvYmFsT2JqZWN0KCkpOworICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVy
UG9pbnRlciA9IHZQQ1sxXS51LnJlZ2lzdGVyUG9pbnRlcjsKKyAgICAgICAgaW50IHZhbHVlID0g
dlBDWzJdLnUub3BlcmFuZDsKKyAgICAgICAgCisgICAgICAgIHJlZ2lzdGVyUG9pbnRlci0+c2V0
KCpnbG9iYWxEYXRhLCBzY29wZSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayk7CisgICAg
ICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICB9CiAgICAgREVGSU5FX09QQ09ERShvcF9nZXRf
c2NvcGVkX3ZhcikgewogICAgICAgICAvKiBnZXRfc2NvcGVkX3ZhciBkc3QocikgaW5kZXgobikg
c2tpcChuKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMjAy
MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1OSw2ICsyNTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0
X2FyZ3VtZW50X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9wbmFtZSkKKyAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJsZSkKICAgICAgICAgREVG
SU5FX09QKG9wX2dldF9nbG9iYWxfdmFyKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3BuYW1l
cykKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9zY29wZWRfdmFyKQpAQCAtMzI0LDYgKzMyNSw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRlcikK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nbG9iYWxfdmFyKQorICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2spCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2NvcGVk
X3ZhcikKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmUpCiAgICAgICAgIERFRklORV9PUChv
cF9yZXNvbHZlX2Jhc2UpCkBAIC00ODEsNiArNDgzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHV0X2dsb2JhbF92YXJfY2hlY2spOwogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcmVzb2x2ZV9nbG9iYWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZl
X2dsb2JhbF9keW5hbWljKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcnNoaWZ0KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMjAyMjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNyArNDYzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNNYXBwZWQoaW50IHZpcnR1YWxSZWdp
c3RlckluZGV4KTsKICAgICAgICAgYm9vbCBnZXRNYXBwZWRQYXlsb2FkKGludCB2aXJ0dWFsUmVn
aXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCYgcGF5bG9hZCk7CiAgICAgICAgIGJvb2wgZ2V0TWFwcGVk
VGFnKGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCYgdGFnKTsKLQorICAgICAg
ICAKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoaW50IHZpcnR1YWxS
ZWdpc3RlckluZGV4KTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
aW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIHRhZyk7CiAKQEAgLTU5OSw2ICs1
OTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVu
dF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9wbmFt
ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2dsb2JhbF92YXIoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9nbG9iYWxfdmFyX3dhdGNoYWJs
ZShJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pIHsgZW1pdF9vcF9nZXRfZ2xvYmFsX3ZhcihpbnN0
cnVjdGlvbik7IH0KICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZWRfdmFyKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24qKTsK
QEAgLTY2Miw2ICs2NjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0
ZXJfc2V0dGVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2xvYmFs
X3ZhcihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dsb2JhbF92YXJf
Y2hlY2soSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zY29wZWRfdmFy
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlX2Jhc2UoSW5zdHJ1Y3Rpb24qKTsKQEAg
LTczOSw2ICs3NDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9wcmVfaW5jKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9w
dXRfYnlfdmFsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3Jlc29sdmVfZ2xvYmFsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcnNoaWZ0KEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjAyMjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDkwLDYgKzEwOTAsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RF
X0xFTkdUSChvcF9wdXRfZ2xvYmFsX3ZhciksIHZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2lu
dGVyID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2ludGVyOworICAgIGludCB2
YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgCisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAKKyAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKKyAgICAKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3MoY3VycmVudEluc3RydWN0
aW9uWzNdLnUucHJlZGljYXRlUG9pbnRlcikpKTsKKyAgICAKKyAgICBpZiAoSGVhcDo6aXNXcml0
ZUJhcnJpZXJFbmFibGVkKCkpIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9i
amVjdCksIHJlZ1QyKTsKKyAgICAgICAgZW1pdFdyaXRlQmFycmllcihnbG9iYWxPYmplY3QsIHJl
Z1QxLCByZWdUMywgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yVmFyaWFi
bGVBY2Nlc3MpOworICAgIH0KKyAgICAKKyAgICBzdG9yZTMyKHJlZ1QxLCByZWdpc3RlclBvaW50
ZXItPnRhZ1BvaW50ZXIoKSk7CisgICAgc3RvcmUzMihyZWdUMCwgcmVnaXN0ZXJQb2ludGVyLT5w
YXlsb2FkUG9pbnRlcigpKTsKKyAgICB1bm1hcCgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CisgICAgCisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3B1
dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSwgcmVn
VDApOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwuY2FsbCgpOworfQorCiB2b2lkIEpJ
VDo6cmVzZXRQYXRjaEdldEJ5SWQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJ
bmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIGN0aV9vcF9nZXRfYnlfaWQpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9u
IDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI3LDYgKzEwMjcsMjkgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgICAgICBlbWl0V3JpdGVCYXJyaWVyKGdsb2Jh
bE9iamVjdCwgcmVnVDAsIHJlZ1QyLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJp
ZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9iYWxf
dmFyX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7
CisgICAgCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRy
ZXNzKGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnByZWRpY2F0ZVBvaW50ZXIpKSk7CisKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
OworICAgIAorICAgIHN0b3JlUHRyKHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5yZWdp
c3RlclBvaW50ZXIpOworICAgIGlmIChIZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQoKSkKKyAg
ICAgICAgZW1pdFdyaXRlQmFycmllcihnbG9iYWxPYmplY3QsIHJlZ1QwLCByZWdUMiwgU2hvdWxk
RmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOworfQorCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2dsb2JhbF92YXJfY2hlY2soSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3sKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgCisgICAgSklUU3R1YkNhbGwgc3R1YkNh
bGwodGhpcywgY3RpX29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrKTsKKyAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChyZWdUMCk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1
cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5jYWxsKCk7Cit9
CisKIHZvaWQgSklUOjpyZXNldFBhdGNoR2V0QnlJZChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVm
ZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1ZmZlci5y
ZWxpbmsoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9pZCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTIwMjI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzNzcsNiArMjM3NywxNSBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCos
IG9wX25ld19hCiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KHN0YWNrRnJhbWUuY2FsbEZyYW1l
LCBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHN0YWNr
RnJhbWUuYXJnc1swXS5pbnQzMigpKSwgc3RhY2tGcmFtZS5hcmdzWzFdLmludDMyKCkpOwogfQog
CitERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjaykKK3sK
KyAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CisgICAgCisgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgc3ltYm9sVGFibGVQdXQoY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgY2FsbEZyYW1lLCBjb2RlQmxvY2stPmlkZW50aWZpZXIo
c3RhY2tGcmFtZS5hcmdzWzFdLmludDMyKCkpLCBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgp
LCB0cnVlKTsKK30KKwogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3Jl
c29sdmUpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNpb24gMTIwMjI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDUs
NiArNDQ1LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5
X2luZGV4KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQgSklU
X1NUVUIgY3RpX29wX3B1dF9ieV92YWwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJO
QUw7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2dldHRlcl9zZXR0ZXIoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CisgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0
X2dsb2JhbF92YXJfY2hlY2soU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAg
ICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbihTVFVCX0FSR1NfREVD
TEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF90ZWFyX29m
Zl9hcmd1bWVudHMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9p
ZCBKSVRfU1RVQiBjdGlfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKFNUVUJfQVJHU19ERUNMQVJB
VElPTikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMjAyMjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzUs
OCArNDc1LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb252ZXJ0X3QKICAg
ICBMTElOVF9CRUdJTigpOwogICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7
CiAgICAgQVNTRVJUKHYxLmlzUHJpbWl0aXZlKCkpOworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxF
UikKICAgICBwY1tPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpcykgLSAxXS51LnByb2ZpbGUt
Pm1fYnVja2V0c1swXSA9CiAgICAgICAgIEpTVmFsdWU6OmVuY29kZSh2MS5zdHJ1Y3R1cmVPclVu
ZGVmaW5lZCgpKTsKKyNlbmRpZgogICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhl
YykpOwogfQogCkBAIC04NTYsNiArODU4LDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9yZXNvbHZlX3cKICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3B1dF9nbG9iYWxfdmFyX2NoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBzeW1i
b2xUYWJsZVB1dChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBleGVjLCBjb2RlQmxvY2stPmlk
ZW50aWZpZXIocGNbNF0udS5vcGVyYW5kKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIHRydWUp
OworICAgIExMSU5UX0VORCgpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Z2V0X2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMTIwMjI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0Nyw2ICsxNDcsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3JlCiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Vuc3VyZV9wcm9wZXJ0
eV9leGlzdHMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZl
X3dpdGhfYmFzZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29s
dmVfd2l0aF90aGlzKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0
X2dsb2JhbF92YXJfY2hlY2spOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9nZXRfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
YXJndW1lbnRzX2xlbmd0aCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3B1dF9ieV9pZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTIwMjI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTEwMzksNyArMTAzOSw3IEBAIF9sbGludF9vcF9wdXRfc2NvcGVk
X3ZhcjoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKK21h
Y3JvIGdldEdsb2JhbFZhcihzaXplKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkcCA4
W1BDXSwgdDAKICAgICBsb2FkaSA0W1BDXSwgdDMKQEAgLTEwNDcsOSArMTA0NywxNyBAQCBfbGxp
bnRfb3BfZ2V0X2dsb2JhbF92YXI6CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MF0sIHQxCiAg
ICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZGkgKHNp
emUgLSAxKSAqIDRbUENdLCB0MwogICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQotICAgIGRp
c3BhdGNoKDQpCisgICAgZGlzcGF0Y2goc2l6ZSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2dsb2Jh
bF92YXI6CisgICAgZ2V0R2xvYmFsVmFyKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFy
X3dhdGNoYWJsZToKKyAgICBnZXRHbG9iYWxWYXIoNSkKIAogCiBfbGxpbnRfb3BfcHV0X2dsb2Jh
bF92YXI6CkBAIC0xMDYzLDYgKzEwNzEsMjIgQEAgX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgog
ICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyX2NoZWNrOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10s
IHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYnRibnogW3QyXSwgLm9wUHV0R2xvYmFsVmFy
Q2hlY2tTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHdy
aXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDBdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3QwXQorICAgIGRpc3BhdGNoKDUpCisub3BQdXRHbG9iYWxW
YXJDaGVja1Nsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2dsb2Jh
bF92YXJfY2hlY2spCisgICAgZGlzcGF0Y2goNSkKKworCiBfbGxpbnRfb3BfZ2V0X2J5X2lkOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5
X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTg5MywxNSArODkzLDIz
IEBAIF9sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGlu
dF9vcF9nZXRfZ2xvYmFsX3ZhcjoKK21hY3JvIGdldEdsb2JhbFZhcihzaXplKQogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkcCAxNltQQiwgUEMsIDhdLCB0MAogICAgIGxvYWRpcyA4W1BC
LCBQQywgOF0sIHQzCiAgICAgbG9hZHAgW3QwXSwgdDEKICAgICBzdG9yZXAgdDEsIFtjZnIsIHQz
LCA4XQotICAgIGxvYWRwIDI0W1BCLCBQQywgOF0sIHQwCisgICAgbG9hZHAgKHNpemUgLSAxKSAq
IDhbUEIsIFBDLCA4XSwgdDAKICAgICB2YWx1ZVByb2ZpbGUodDEsIHQwKQotICAgIGRpc3BhdGNo
KDQpCisgICAgZGlzcGF0Y2goc2l6ZSkKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6
CisgICAgZ2V0R2xvYmFsVmFyKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyX3dhdGNo
YWJsZToKKyAgICBnZXRHbG9iYWxWYXIoNSkKIAogCiBfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6
CkBAIC05MTQsNiArOTIyLDIxIEBAIF9sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBkaXNw
YXRjaCgzKQogCiAKK19sbGludF9vcF9wdXRfZ2xvYmFsX3Zhcl9jaGVjazoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZHAgMjRbUEIsIFBDLCA4XSwgdDIKKyAgICBsb2FkaXMgMTZbUEIs
IFBDLCA4XSwgdDEKKyAgICBsb2FkcCA4W1BCLCBQQywgOF0sIHQwCisgICAgYnRibnogW3QyXSwg
Lm9wUHV0R2xvYmFsVmFyQ2hlY2tTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwg
dDIpCisgICAgd3JpdGVCYXJyaWVyKHQyKQorICAgIHN0b3JlcCB0MiwgW3QwXQorICAgIGRpc3Bh
dGNoKDUpCisub3BQdXRHbG9iYWxWYXJDaGVja1Nsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfcHV0X2dsb2JhbF92YXJfY2hlY2spCisgICAgZGlzcGF0Y2goNSkKKworCiBf
bGxpbnRfb3BfZ2V0X2J5X2lkOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIFdlIG9ubHkg
ZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBt
b2RpZnkgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxMjAyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNCwyMiArNTA0LDI1IEBAIHZvaWQgSlNP
YmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGUKICAgICBzdHJ1Y3R1cmUoKS0+c2V0U3Rh
dGljRnVuY3Rpb25zUmVpZmllZCgpOwogfQogCi12b2lkIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3Qo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoc3RydWN0dXJlKCktPmdldChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUpID09IFdURjo6bm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc2l6ZV90IG9mZnNldDsKICAgICBpZiAoc3RydWN0
dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zmc2V0ID0gc3Ry
dWN0dXJlKCktPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAg
ICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAob2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKLSAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90
Rm91bmQpCi0gICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CisgICAg
aWYgKG9mZnNldCA9PSBXVEY6Om5vdEZvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogTkVWRVJfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJv
cGVydHlTbG90JiBzbG90LCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTIw
MjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZv
aWQgdHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCi0gICAgICAgIHZv
aWQgcmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7CisgICAgICAgIGJv
b2wgcmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7IC8vIFJldHVybiB0
cnVlIGlmIGFueXRoaW5nIGlzIHJlbW92ZWQuCiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVy
dGllcygpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5kaWRUcmFuc2l0aW9uKCk7IH0KICAgICAgICAg
Ym9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMjAy
MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDkgKzcyLDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFN5
bWJvbFRhYmxlT2JqZWN0VHlwZT4KIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogICAgIFN5
bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVj
dC0+c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Ci0g
ICAgaWYgKGVudHJ5LmlzTnVsbCgpKQorICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IG9i
amVjdC0+c3ltYm9sVGFibGUoKTsKKyAgICBTeW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlLmZpbmQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgaWYgKGl0ZXIg
PT0gc3ltYm9sVGFibGUuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTeW1ib2xU
YWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+c2Vjb25kOworICAgIEFTU0VSVCghZW50cnku
aXNOdWxsKCkpOwogICAgIHNsb3Quc2V0VmFsdWUob2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5Lmdl
dEluZGV4KCkpLmdldCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgzLDkgKzg2LDEyIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KIGlubGluZSBib29sIHN5
bWJvbFRhYmxlR2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0g
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKS5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQor
ICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IG9iamVjdC0+c3ltYm9sVGFibGUoKTsKKyAg
ICBTeW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CisgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0g
aXRlci0+c2Vjb25kOworICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgIGRlc2NyaXB0
b3Iuc2V0RGVzY3JpcHRvcigKICAgICAgICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldElu
ZGV4KCkpLmdldCgpLCBlbnRyeS5nZXRBdHRyaWJ1dGVzKCkgfCBEb250RGVsZXRlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTk2LDkgKzEwMiwxMiBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdl
dCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LAogICAgIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSkK
IHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLmlu
bGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICBpZiAoZW50cnkuaXNOdWxs
KCkpCisgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gb2JqZWN0LT5zeW1ib2xUYWJsZSgp
OworICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50
cnkgPSBpdGVyLT5zZWNvbmQ7CisgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgc2xv
dC5zZXRWYWx1ZShvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwog
ICAgIHNsb3RJc1dyaXRlYWJsZSA9ICFlbnRyeS5pc1JlYWRPbmx5KCk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMTIsMTUgKzEyMSwyMSBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAg
ICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgQVNT
RVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFw
KG9iamVjdCkpOwogICAgIAotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBvYmplY3QtPnN5
bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwotICAgIGlm
IChlbnRyeS5pc051bGwoKSkKKyAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBvYmplY3Qt
PnN5bWJvbFRhYmxlKCk7CisgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZS5maW5kKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIGlmIChpdGVyID09IHN5
bWJvbFRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGVudHJ5Lmlz
UmVhZE9ubHkoKSkgeworICAgIGJvb2wgd2FzRmF0OworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZh
c3QgZmFzdEVudHJ5ID0gaXRlci0+c2Vjb25kLmdldEZhc3Qod2FzRmF0KTsKKyAgICBBU1NFUlQo
IWZhc3RFbnRyeS5pc051bGwoKSk7CisgICAgaWYgKGZhc3RFbnRyeS5pc1JlYWRPbmx5KCkpIHsK
ICAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5z
ZXQoZ2xvYmFsRGF0YSwgb2JqZWN0LCB2YWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKHdhc0ZhdCkp
CisgICAgICAgIGl0ZXItPnNlY29uZC5ub3RpZnlXcml0ZSgpOworICAgIG9iamVjdC0+cmVnaXN0
ZXJBdChmYXN0RW50cnkuZ2V0SW5kZXgoKSkuc2V0KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzYsNiArMTUxLDcgQEAgaW5saW5lIGJvb2wg
c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
U3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CiAgICAgQVNTRVJUKCFlbnRy
eS5pc051bGwoKSk7CisgICAgZW50cnkubm90aWZ5V3JpdGUoKTsKICAgICBlbnRyeS5zZXRBdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRl
eCgpKS5zZXQoZ2xvYmFsRGF0YSwgb2JqZWN0LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1N5bWJvbFRhYmxl
RW50cnkmIFN5bWJvbFRhYmxlRW50cnk6OmNvcHlTbG93KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkm
IG90aGVyKQoreworICAgIEFTU0VSVChvdGhlci5pc0ZhdCgpKTsKKyAgICBGYXRFbnRyeSogbmV3
RmF0RW50cnkgPSBuZXcgRmF0RW50cnkoKm90aGVyLmZhdEVudHJ5KCkpOworICAgIGZyZWVGYXRF
bnRyeSgpOworICAgIG1fYml0cyA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4obmV3RmF0RW50cnkp
IHwgRmF0RmxhZzsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgU3ltYm9sVGFibGVFbnRy
eTo6ZnJlZUZhdEVudHJ5U2xvdygpCit7CisgICAgQVNTRVJUKGlzRmF0KCkpOworICAgIGRlbGV0
ZSBmYXRFbnRyeSgpOworfQorCitib29sIFN5bWJvbFRhYmxlRW50cnk6OmNvdWxkQmVXYXRjaGVk
KCkKK3sKKyAgICBpZiAoIWlzRmF0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBXYXRj
aHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7
CisgICAgaWYgKCF3YXRjaHBvaW50cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biB3YXRjaHBvaW50cy0+aXNTdGlsbFZhbGlkKCk7Cit9CisKK3ZvaWQgU3ltYm9sVGFibGVFbnRy
eTo6YXR0ZW1wdFRvV2F0Y2goKQoreworICAgIEZhdEVudHJ5KiBlbnRyeSA9IGluZmxhdGUoKTsK
KyAgICBpZiAoIWVudHJ5LT5tX3dhdGNocG9pbnRzKSB7CisgICAgICAgIGVudHJ5LT5tX3dhdGNo
cG9pbnRzID0gYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoKSk7CisgICAgICAgIGVudHJ5LT5t
X3dhdGNocG9pbnRzLT5zdGFydFdhdGNoaW5nKCk7CisgICAgfQorfQorCitib29sKiBTeW1ib2xU
YWJsZUVudHJ5OjphZGRyZXNzT2ZJc1dhdGNoZWQoKQoreworICAgIEFTU0VSVChjb3VsZEJlV2F0
Y2hlZCgpKTsKKyAgICByZXR1cm4gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkcmVzc09m
SXNXYXRjaGVkKCk7Cit9CisKK3ZvaWQgU3ltYm9sVGFibGVFbnRyeTo6YWRkV2F0Y2hwb2ludChX
YXRjaHBvaW50KiB3YXRjaHBvaW50KQoreworICAgIEFTU0VSVChjb3VsZEJlV2F0Y2hlZCgpKTsK
KyAgICBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLT5hZGQod2F0Y2hwb2ludCk7Cit9CisKK3Zv
aWQgU3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3JpdGVTbG93KCkKK3sKKyAgICBXYXRjaHBvaW50
U2V0KiB3YXRjaHBvaW50cyA9IGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CisgICAg
aWYgKCF3YXRjaHBvaW50cykKKyAgICAgICAgcmV0dXJuOworICAgIHdhdGNocG9pbnRzLT5ub3Rp
ZnlXcml0ZSgpOworfQorCitTeW1ib2xUYWJsZUVudHJ5OjpGYXRFbnRyeSogU3ltYm9sVGFibGVF
bnRyeTo6aW5mbGF0ZVNsb3coKQoreworICAgIEZhdEVudHJ5KiBlbnRyeSA9IG5ldyBGYXRFbnRy
eShtX2JpdHMpOworICAgIG1fYml0cyA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oZW50cnkpIHwg
RmF0RmxhZzsKKyAgICByZXR1cm4gZW50cnk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlz
aW9uIDEyMDIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDUzICszMSwxNjMgQEAKIAogI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgIldhdGNocG9p
bnQuaCIKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBXYXRjaHBvaW50OworICAg
IGNsYXNzIFdhdGNocG9pbnRTZXQ7CisKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBpbnQgbWlz
c2luZ1N5bWJvbE1hcmtlcigpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCk7IH0KIAogICAgIC8vIFRoZSBiaXQgdHdpZGRsaW5nIGluIHRoaXMgY2xhc3MgYXNzdW1lcyB0
aGF0IGV2ZXJ5IHJlZ2lzdGVyIGluZGV4IGlzIGEKICAgICAvLyByZWFzb25hYmx5IHNtYWxsIHBv
c2l0aXZlIG9yIG5lZ2F0aXZlIG51bWJlciwgYW5kIHRoZXJlZm9yZSBoYXMgaXRzIGhpZ2gKICAg
ICAvLyBmb3VyIGJpdHMgYWxsIHNldCBvciBhbGwgdW5zZXQuCiAKKyAgICAvLyBJbiBhZGRpdGlv
biB0byBpbXBsZW1lbnRpbmcgc2VtYW50aWNzLW1hbmRhdGVkIHZhcmlhYmxlIGF0dHJpYnV0ZXMg
YW5kCisgICAgLy8gaW1wbGVtZW50YXRpb24tbWFuZGF0ZWQgdmFyaWFibGUgaW5kZXhpbmcsIHRo
aXMgY2xhc3MgYWxzbyBpbXBsZW1lbnRzCisgICAgLy8gd2F0Y2hwb2ludHMgdG8gYmUgdXNlZCBm
b3IgSklUIG9wdGltaXphdGlvbnMuIEJlY2F1c2Ugd2F0Y2hwb2ludHMgYXJlCisgICAgLy8gbWVh
bnQgdG8gYmUgcmVsYXRpdmVseSByYXJlLCB0aGlzIGNsYXNzIG9wdGltaXplcyBoZWF2aWx5IGZv
ciB0aGUgY2FzZQorICAgIC8vIHRoYXQgdGhleSBhcmUgbm90IGJlaW5nIHVzZWQuIFRvIHRoYXQg
ZW5kLCB0aGlzIGNsYXNzIHVzZXMgdGhlIHRoaW4tZmF0CisgICAgLy8gaWRpb206IGVpdGhlciBp
dCBpcyB0aGluLCBpbiB3aGljaCBjYXNlIGl0IGNvbnRhaW5zIGFuIGluLXBsYWNlIGVuY29kZWQK
KyAgICAvLyB3b3JkIHRoYXQgY29uc2lzdHMgb2YgYXR0cmlidXRlcywgdGhlIGluZGV4LCBhbmQg
YSBiaXQgc2F5aW5nIHRoYXQgaXQgaXMKKyAgICAvLyB0aGluOyBvciBpdCBpcyBmYXQsIGluIHdo
aWNoIGNhc2UgaXQgY29udGFpbnMgYSBwb2ludGVyIHRvIGEgbWFsbG9jJ2QKKyAgICAvLyBkYXRh
IHN0cnVjdHVyZSBhbmQgYSBiaXQgc2F5aW5nIHRoYXQgaXQgaXMgZmF0LiBUaGUgbWFsbG9jJ2Qg
ZGF0YQorICAgIC8vIHN0cnVjdHVyZSB3aWxsIGJlIG1hbGxvY2VkIGEgc2Vjb25kIHRpbWUgdXBv
biBjb3B5LCB0byBwcmVzZXJ2ZSB0aGUKKyAgICAvLyBwcm9wZXJ0eSB0aGF0IGluLXBsYWNlIGVk
aXRzIHRvIFN5bWJvbFRhYmxlRW50cnkgZG8gbm90IG1hbmlmZXN0IGluIGFueQorICAgIC8vIGNv
cGllcy4gSG93ZXZlciwgdGhlIG1hbGxvYydkIEZhdEVudHJ5IGRhdGEgc3RydWN0dXJlIGNvbnRh
aW5zIGEgcmVmLQorICAgIC8vIGNvdW50ZWQgcG9pbnRlciB0byBhIHNoYXJlZCBXYXRjaHBvaW50
U2V0LiBUaHVzLCBpbi1wbGFjZSBlZGl0cyBvZiB0aGUKKyAgICAvLyBXYXRjaHBvaW50U2V0IHdp
bGwgbWFuaWZlc3QgaW4gYWxsIGNvcGllcy4gSGVyZSdzIGEgcGljdHVyZToKKyAgICAvLworICAg
IC8vIFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5IC0tPiBXYXRjaHBvaW50U2V0CisgICAg
Ly8KKyAgICAvLyBJZiB5b3UgbWFrZSBhIGNvcHkgb2YgYSBTeW1ib2xUYWJsZUVudHJ5LCB5b3Ug
d2lsbCBoYXZlOgorICAgIC8vCisgICAgLy8gb3JpZ2luYWw6IFN5bWJvbFRhYmxlRW50cnkgLS0+
IEZhdEVudHJ5IC0tPiBXYXRjaHBvaW50U2V0CisgICAgLy8gY29weTogICAgIFN5bWJvbFRhYmxl
RW50cnkgLS0+IEZhdEVudHJ5IC0tLS0tXgorCiAgICAgc3RydWN0IFN5bWJvbFRhYmxlRW50cnkg
eworICAgICAgICAvLyBVc2UgdGhlIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgY2xhc3MsIGVpdGhl
ciB2aWEgaW1wbGljaXQgY2FzdCBvciBieSBjYWxsaW5nCisgICAgICAgIC8vIGdldEZhc3QoKSwg
d2hlbiB5b3UgKDEpIG9ubHkgY2FyZSBhYm91dCBpc051bGwoKSwgZ2V0SW5kZXgoKSwgYW5kIGlz
UmVhZE9ubHkoKSwKKyAgICAgICAgLy8gYW5kICgyKSB5b3UgYXJlIGluIGEgaG90IHBhdGggd2hl
cmUgeW91IG5lZWQgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiB0aW1lcworICAgICAgICAvLyB0
aGF0IHlvdSBicmFuY2ggb24gaXNGYXQoKSB3aGVuIGdldHRpbmcgdGhlIGJpdHMoKS4KKyAgICAg
ICAgY2xhc3MgRmFzdCB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEZhc3QoKQorICAg
ICAgICAgICAgICAgIDogbV9iaXRzKDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgRmFzdChjb25zdCBTeW1ib2xU
YWJsZUVudHJ5JiBlbnRyeSkKKyAgICAgICAgICAgICAgICA6IG1fYml0cyhlbnRyeS5iaXRzKCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgYm9v
bCBpc051bGwoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAh
bV9iaXRzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnQgZ2V0SW5kZXgoKSBjb25z
dAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KG1fYml0cyA+PiBGbGFnQml0cyk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAg
ICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9iaXRzICYgUmVhZE9ubHlGbGFnOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICB1bnNpZ25lZCBnZXRBdHRyaWJ1dGVzKCkgY29uc3QKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICAgICAg
ICAgICAgICBpZiAobV9iaXRzICYgUmVhZE9ubHlGbGFnKQorICAgICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGVzIHw9IFJlYWRPbmx5OworICAgICAgICAgICAgICAgIGlmIChtX2JpdHMgJiBEb250
RW51bUZsYWcpCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gRG9udEVudW07Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGJvb2wgaXNGYXQoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBtX2JpdHMgJiBGYXRGbGFnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBmcmllbmQgc3RydWN0IFN5bWJvbFRhYmxlRW50
cnk7CisgICAgICAgICAgICBpbnRwdHJfdCBtX2JpdHM7CisgICAgICAgIH07CisKICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSgpCiAgICAgICAgICAgICA6IG1fYml0cygwKQogICAgICAgICB7CiAg
ICAgICAgIH0KIAogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGludCBpbmRleCkKKyAgICAgICAg
ICAgIDogbV9iaXRzKDApCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkSW5k
ZXgoaW5kZXgpKTsKICAgICAgICAgICAgIHBhY2soaW5kZXgsIGZhbHNlLCBmYWxzZSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGludCBpbmRleCwgdW5zaWduZWQgYXR0
cmlidXRlcykKKyAgICAgICAgICAgIDogbV9iaXRzKDApCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChpc1ZhbGlkSW5kZXgoaW5kZXgpKTsKICAgICAgICAgICAgIHBhY2soaW5kZXgsIGF0
dHJpYnV0ZXMgJiBSZWFkT25seSwgYXR0cmlidXRlcyAmIERvbnRFbnVtKTsKICAgICAgICAgfQog
ICAgICAgICAKKyAgICAgICAgflN5bWJvbFRhYmxlRW50cnkoKQorICAgICAgICB7CisgICAgICAg
ICAgICBmcmVlRmF0RW50cnkoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3ltYm9s
VGFibGVFbnRyeShjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikKKyAgICAgICAgICAgIDog
bV9iaXRzKDApCisgICAgICAgIHsKKyAgICAgICAgICAgICp0aGlzID0gb3RoZXI7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIG9wZXJhdG9yPShjb25zdCBT
eW1ib2xUYWJsZUVudHJ5JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKFVOTElL
RUxZKG90aGVyLmlzRmF0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBjb3B5U2xvdyhvdGhl
cik7CisgICAgICAgICAgICBmcmVlRmF0RW50cnkoKTsKKyAgICAgICAgICAgIG1fYml0cyA9IG90
aGVyLm1fYml0czsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQorICAgICAg
ICAKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gIW1fYml0czsKKyAgICAgICAgICAgIHJldHVybiAhYml0cygpOwogICAgICAgICB9CiAK
ICAgICAgICAgaW50IGdldEluZGV4KCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG1fYml0cyA+PiBGbGFnQml0czsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KGJpdHMoKSA+PiBGbGFnQml0cyk7CiAgICAgICAgIH0KLQorICAgICAgICAKKyAgICAgICAg
QUxXQVlTX0lOTElORSBGYXN0IGdldEZhc3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gRmFzdCgqdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZ
U19JTkxJTkUgRmFzdCBnZXRGYXN0KGJvb2wmIHdhc0ZhdCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgRmFzdCByZXN1bHQ7CisgICAgICAgICAgICB3YXNGYXQgPSBpc0ZhdCgpOworICAg
ICAgICAgICAgaWYgKHdhc0ZhdCkKKyAgICAgICAgICAgICAgICByZXN1bHQubV9iaXRzID0gZmF0
RW50cnkoKS0+bV9iaXRzOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5tX2JpdHMgPSBtX2JpdHM7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9
CisgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBnZXRBdHRyaWJ1dGVzKCkgY29uc3QKICAgICAg
ICAgewotICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7Ci0gICAgICAgICAgICBp
ZiAobV9iaXRzICYgUmVhZE9ubHlGbGFnKQotICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0g
UmVhZE9ubHk7Ci0gICAgICAgICAgICBpZiAobV9iaXRzICYgRG9udEVudW1GbGFnKQotICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gRG9udEVudW07Ci0gICAgICAgICAgICByZXR1cm4gYXR0
cmlidXRlczsKKyAgICAgICAgICAgIHJldHVybiBnZXRGYXN0KCkuZ2V0QXR0cmlidXRlcygpOwog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCBzZXRBdHRyaWJ1dGVzKHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCkBAIC04NywzMCArMTk3LDEyNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29s
IGlzUmVhZE9ubHkoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9iaXRz
ICYgUmVhZE9ubHlGbGFnOworICAgICAgICAgICAgcmV0dXJuIGJpdHMoKSAmIFJlYWRPbmx5Rmxh
ZzsKICAgICAgICAgfQotCisgICAgICAgIAorICAgICAgICBib29sIGNvdWxkQmVXYXRjaGVkKCk7
CisgICAgICAgIAorICAgICAgICAvLyBOb3RpZnkgYW4gb3Bwb3J0dW5pdHkgdG8gY3JlYXRlIGEg
d2F0Y2hwb2ludCBmb3IgYSB2YXJpYWJsZS4gVGhpcyBpcworICAgICAgICAvLyBpZGVtcG90ZW50
IGFuZCBmYWlsLXNpbGVudC4gSXQgaXMgaWRlbXBvdGVudCBpbiB0aGUgc2Vuc2UgdGhhdCBpZgor
ICAgICAgICAvLyBhIHdhdGNocG9pbnQgc2V0IGhhZCBhbHJlYWR5IGJlZW4gY3JlYXRlZCwgdGhl
biBhbm90aGVyIG9uZSB3aWxsIG5vdAorICAgICAgICAvLyBiZSBjcmVhdGVkLiBIZW5jZSB0d28g
Y2FsbHMgdG8gdGhpcyBtZXRob2QgaGF2ZSB0aGUgc2FtZSBlZmZlY3QgYXMKKyAgICAgICAgLy8g
b25lIGNhbGwuIEl0IGlzIGFsc28gZmFpbC1zaWxlbnQsIGluIHRoZSBzZW5zZSB0aGF0IGlmIGEg
d2F0Y2hwb2ludAorICAgICAgICAvLyBzZXQgaGFkIGJlZW4gY3JlYXRlZCBhbmQgaGFkIGFscmVh
ZHkgYmVlbiBpbnZhbGlkYXRlZCwgdGhlbiB0aGlzIHdpbGwKKyAgICAgICAgLy8ganVzdCByZXR1
cm4uIFRoaXMgbWVhbnMgdGhhdCBjb3VsZEJlV2F0Y2hlZCgpIG1heSByZXR1cm4gZmFsc2UgZXZl
bgorICAgICAgICAvLyBpbW1lZGlhdGVseSBhZnRlciBhIGNhbGwgdG8gYXR0ZW1wdFRvV2F0Y2go
KS4KKyAgICAgICAgdm9pZCBhdHRlbXB0VG9XYXRjaCgpOworICAgICAgICAKKyAgICAgICAgYm9v
bCogYWRkcmVzc09mSXNXYXRjaGVkKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGFkZFdhdGNo
cG9pbnQoV2F0Y2hwb2ludCopOworICAgICAgICAKKyAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0
Y2hwb2ludFNldCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYXRFbnRyeSgpLT5t
X3dhdGNocG9pbnRzLmdldCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgbm90aWZ5V3JpdGUoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoTElL
RUxZKCFpc0ZhdCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBub3Rp
ZnlXcml0ZVNsb3coKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgUmVhZE9ubHlGbGFnID0gMHgxOwotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgRG9udEVudW1GbGFnID0gMHgyOwotICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgTm90TnVsbEZsYWcgPSAweDQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBGbGFnQml0cyA9IDM7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBGYXRGbGFn
ID0gMHgxOworICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgUmVhZE9ubHlGbGFnID0gMHgy
OworICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgRG9udEVudW1GbGFnID0gMHg0OworICAg
ICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgTm90TnVsbEZsYWcgPSAweDg7CisgICAgICAgIHN0
YXRpYyBjb25zdCBpbnRwdHJfdCBGbGFnQml0cyA9IDQ7CisgICAgICAgIAorICAgICAgICBjbGFz
cyBGYXRFbnRyeSB7CisgICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICAg
ICAgcHVibGljOgorICAgICAgICAgICAgRmF0RW50cnkoaW50cHRyX3QgYml0cykKKyAgICAgICAg
ICAgICAgICA6IG1fYml0cyhiaXRzIHwgRmF0RmxhZykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50cHRyX3QgbV9iaXRzOyAvLyBhbHdh
eXMgaGFzIEZhdEZsYWcgc2V0IGFuZCBleGFjdGx5IG1hdGNoZXMgd2hhdCB0aGUgYml0cyB3b3Vs
ZCBoYXZlIGJlZW4gaWYgdGhpcyB3YXNuJ3QgZmF0LgorICAgICAgICAgICAgCisgICAgICAgICAg
ICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV93YXRjaHBvaW50czsKKyAgICAgICAgfTsKKyAgICAg
ICAgCisgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGNvcHlTbG93KGNvbnN0IFN5bWJvbFRhYmxl
RW50cnkmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBub3RpZnlXcml0ZVNsb3co
KTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNGYXQoKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gbV9iaXRzICYgRmF0RmxhZzsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgY29uc3QgRmF0RW50cnkqIGZhdEVudHJ5KCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGlzRmF0KCkpOworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxj
b25zdCBGYXRFbnRyeSo+KG1fYml0cyAmIH5GYXRGbGFnKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgRmF0RW50cnkqIGZhdEVudHJ5KCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGlzRmF0KCkpOworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxGYXRFbnRyeSo+
KG1fYml0cyAmIH5GYXRGbGFnKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgRmF0RW50
cnkqIGluZmxhdGUoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoTElLRUxZKGlzRmF0KCkp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYXRFbnRyeSgpOworICAgICAgICAgICAgcmV0dXJu
IGluZmxhdGVTbG93KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZhdEVudHJ5KiBp
bmZsYXRlU2xvdygpOworICAgICAgICAKKyAgICAgICAgQUxXQVlTX0lOTElORSBpbnRwdHJfdCBi
aXRzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRmF0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsKKyAgICAgICAgICAgIHJldHVybiBt
X2JpdHM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFMV0FZU19JTkxJTkUgaW50cHRy
X3QmIGJpdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNGYXQoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV9iaXRzOworICAgICAgICAgICAgcmV0dXJuIG1f
Yml0czsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBmcmVlRmF0RW50cnkoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFpc0ZhdCgpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBmcmVlRmF0RW50cnlTbG93KCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHZvaWQgZnJlZUZhdEVudHJ5U2xvdygpOwogCiAgICAgICAgIHZv
aWQgcGFjayhpbnQgaW5kZXgsIGJvb2wgcmVhZE9ubHksIGJvb2wgZG9udEVudW0pCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1fYml0cyA9IChpbmRleCA8PCBGbGFnQml0cykgfCBOb3ROdWxsRmxh
ZzsKKyAgICAgICAgICAgIGludHB0cl90JiBiaXRzUmVmID0gYml0cygpOworICAgICAgICAgICAg
Yml0c1JlZiA9IChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IEZsYWdCaXRzKSB8IE5v
dE51bGxGbGFnOwogICAgICAgICAgICAgaWYgKHJlYWRPbmx5KQotICAgICAgICAgICAgICAgIG1f
Yml0cyB8PSBSZWFkT25seUZsYWc7CisgICAgICAgICAgICAgICAgYml0c1JlZiB8PSBSZWFkT25s
eUZsYWc7CiAgICAgICAgICAgICBpZiAoZG9udEVudW0pCi0gICAgICAgICAgICAgICAgbV9iaXRz
IHw9IERvbnRFbnVtRmxhZzsKKyAgICAgICAgICAgICAgICBiaXRzUmVmIHw9IERvbnRFbnVtRmxh
ZzsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1ZhbGlkSW5kZXgoaW50IGlu
ZGV4KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKChpbmRleCA8PCBGbGFnQml0cykg
Pj4gRmxhZ0JpdHMpID09IGluZGV4OworICAgICAgICAgICAgcmV0dXJuICgoc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGluZGV4KSA8PCBGbGFnQml0cykgPj4gRmxhZ0JpdHMpID09IHN0YXRpY19jYXN0
PGludHB0cl90PihpbmRleCk7CiAgICAgICAgIH0KIAotICAgICAgICBpbnQgbV9iaXRzOworICAg
ICAgICBpbnRwdHJfdCBtX2JpdHM7CiAgICAgfTsKIAogICAgIHN0cnVjdCBTeW1ib2xUYWJsZUlu
ZGV4SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8U3ltYm9sVGFibGVFbnRyeT4gewpJbmRleDogU291
cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyMDIzNSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMDYtMTMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KKworICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gc2V0IHdhdGNocG9pbnRzIG9uIGds
b2JhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4NjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAg
ICAgIAorICAgICAgICBBZGRlZCBhYmlsaXR5IHRvIHNldCB0aGUgaW5saW5lIGNhcGFjaXR5IG9m
IHNlZ21lbnRlZCB2ZWN0b3JzLgorICAgICAgICAKKyAgICAgICAgQWxzbyBhZGRlZCB0aGUgYWJp
bGl0eSBvdCBBU1NFUlRfTk9UX1JFQUNIRUQoKSB3aXRob3V0IGhhdmluZyB0bworICAgICAgICBw
cm9wYWdhdGUgTk9fUkVUVVJOIG1hY3Jvcywgd2hpY2ggd291bGQgYmUgYSBzaG93LXN0b3BwZXIg
Zm9yIGNvZGUKKyAgICAgICAgdGhhdCBpcyBjb25kaXRpb25hbGx5IHVucmVhY2hhYmxlLgorCisg
ICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKyAgICAgICAgKFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSk6CisgICAgICAgICogd3RmL1NlZ21lbnRlZFZlY3Rvci5oOgorICAgICAgICAoV1RGKToK
KyAgICAgICAgKFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6U2VnbWVu
dGVkVmVjdG9ySXRlcmF0b3I6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlNlZ21lbnRlZFZl
Y3Rvckl0ZXJhdG9yOjpTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcik6CisgICAgICAgIChTZWdtZW50
ZWRWZWN0b3IpOgorCiAyMDEyLTA2LTEzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIwMTcyLgpJ
bmRleDogU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL1dURi93dGYv
QXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNCArMzc2LDIwIEBAIHdoaWxlICgw
KQogI2RlZmluZSBMT0dfVkVSQk9TRShjaGFubmVsLCAuLi4pIFdURkxvZ1ZlcmJvc2UoX19GSUxF
X18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCAmSk9JTl9MT0dfQ0hBTk5FTF9XSVRI
X1BSRUZJWChMT0dfQ0hBTk5FTF9QUkVGSVgsIGNoYW5uZWwpLCBfX1ZBX0FSR1NfXykKICNlbmRp
ZgogCisvKiBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0gKi8KKworI2lmIENPTVBJTEVSKENMQU5H
KQorLy8gVGhpcyB3b3VsZCBiZSBhIG1hY3JvIGV4Y2VwdCB0aGF0IGl0cyB1c2Ugb2YgI3ByYWdt
YSB3b3JrcyBiZXN0IGFyb3VuZAorLy8gYSBmdW5jdGlvbi4gSGVuY2UgaXQgdXNlcyBtYWNybyBu
YW1pbmcgY29udmVudGlvbi4KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorc3RhdGljIGlu
bGluZSB2b2lkIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZWxzZQorI2RlZmlu
ZSBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKSBBU1NFUlRfTk9UX1JFQUNIRUQoKQorI2VuZGlm
CisKICNlbmRpZiAvKiBXVEZfQXNzZXJ0aW9uc19oICovCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9T
ZWdtZW50ZWRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRW
ZWN0b3IuaAkocmV2aXNpb24gMTIwMjI4KQorKysgU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQAogbmFtZXNwYWNlIFdURiB7
CiAKICAgICAvLyBBbiBpdGVyYXRvciBmb3IgU2VnbWVudGVkVmVjdG9yLiBJdCBzdXBwb3J0cyBv
bmx5IHRoZSBwcmUgKysgb3BlcmF0b3IKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90
IFNlZ21lbnRTaXplPiBjbGFzcyBTZWdtZW50ZWRWZWN0b3I7Ci0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3Ig
eworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXpl
X3QgSW5saW5lQ2FwYWNpdHkgPSAzMj4gY2xhc3MgU2VnbWVudGVkVmVjdG9yOworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4LCBzaXplX3QgSW5saW5lQ2Fw
YWNpdHkgPSAzMj4gY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IgewogICAgIHByaXZhdGU6
Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemU+Owor
ICAgICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplLCBJbmxp
bmVDYXBhY2l0eT47CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3Rv
ckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiBJdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBTZWdt
ZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+IEl0ZXJh
dG9yOwogCiAgICAgICAgIH5TZWdtZW50ZWRWZWN0b3JJdGVyYXRvcigpIHsgfQogCkBAIC03NSw3
ICs3NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggIT0g
b3RoZXIubV9pbmRleCB8fCBtX3NlZ21lbnQgIT0gb3RoZXIubV9zZWdtZW50IHx8ICZtX3ZlY3Rv
ciAhPSAmb3RoZXIubV92ZWN0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBTZWdtZW50ZWRWZWN0
b3JJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNl
Z21lbnRTaXplPiYgb3RoZXIpCisgICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yJiBvcGVy
YXRvcj0oY29uc3QgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGlu
ZUNhcGFjaXR5PiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdmVjdG9yID0gb3Ro
ZXIubV92ZWN0b3I7CiAgICAgICAgICAgICBtX3NlZ21lbnQgPSBvdGhlci5tX3NlZ21lbnQ7CkBA
IC04NCwyNSArODQsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKFNlZ21lbnRlZFZlY3RvcjxULCBT
ZWdtZW50U2l6ZT4mIHZlY3Rvciwgc2l6ZV90IHNlZ21lbnQsIHNpemVfdCBpbmRleCkKKyAgICAg
ICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXpl
LCBJbmxpbmVDYXBhY2l0eT4mIHZlY3Rvciwgc2l6ZV90IHNlZ21lbnQsIHNpemVfdCBpbmRleCkK
ICAgICAgICAgICAgIDogbV92ZWN0b3IodmVjdG9yKQogICAgICAgICAgICAgLCBtX3NlZ21lbnQo
c2VnbWVudCkKICAgICAgICAgICAgICwgbV9pbmRleChpbmRleCkKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPiYgbV92ZWN0b3I7
CisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+
JiBtX3ZlY3RvcjsKICAgICAgICAgc2l6ZV90IG1fc2VnbWVudDsKICAgICAgICAgc2l6ZV90IG1f
aW5kZXg7CiAgICAgfTsKIAogICAgIC8vIFNlZ21lbnRlZFZlY3RvciBpcyBqdXN0IGxpa2UgVmVj
dG9yLCBidXQgaXQgZG9lc24ndCBtb3ZlIHRoZSB2YWx1ZXMKICAgICAvLyBzdG9yZWQgaW4gaXRz
IGJ1ZmZlciB3aGVuIGl0IGdyb3dzLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8ga2VlcAotICAg
IC8vIHBvaW50ZXJzIGludG8gYSBTZWdtZW50ZWRWZWN0b3IuCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZT4gY2xhc3MgU2VnbWVudGVkVmVjdG9yIHsKLSAgICAg
ICAgZnJpZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPjsK
KyAgICAvLyBwb2ludGVycyBpbnRvIGEgU2VnbWVudGVkVmVjdG9yLiBUaGUgZGVmYXVsdCB0dW5p
bmcgdmFsdWVzIGFyZQorICAgIC8vIG9wdGltaXplZCBmb3Igc2VnbWVudGVkIHZlY3RvcnMgdGhh
dCBnZXQgbGFyZ2U7IHlvdSBtYXkgd2FudCB0byB1c2UKKyAgICAvLyBTZWdtZW50ZWRWZWN0b3I8
dGhpbmd5LCAxLCAwPiBpZiB5b3UgZG9uJ3QgZXhwZWN0IGEgbG90IG9mIGVudHJpZXMuCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZSwgc2l6ZV90IElubGluZUNh
cGFjaXR5PgorICAgIGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZSwgSW5saW5lQ2FwYWNpdHk+
OwogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxU
LCBTZWdtZW50U2l6ZT4gSXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9y
SXRlcmF0b3I8VCwgU2VnbWVudFNpemUsIElubGluZUNhcGFjaXR5PiBJdGVyYXRvcjsKIAogICAg
ICAgICBTZWdtZW50ZWRWZWN0b3IoKQogICAgICAgICAgICAgOiBtX3NpemUoMCkKQEAgLTI1MCw3
ICsyNTMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBzaXplX3QgbV9zaXplOwogICAg
ICAgICBTZWdtZW50IG1faW5saW5lU2VnbWVudDsKLSAgICAgICAgVmVjdG9yPFNlZ21lbnQqLCAz
Mj4gbV9zZWdtZW50czsKKyAgICAgICAgVmVjdG9yPFNlZ21lbnQqLCBJbmxpbmVDYXBhY2l0eT4g
bV9zZWdtZW50czsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEyMDIyOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIxIEBACisyMDEyLTA2LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIHNldCB3YXRjaHBvaW50cyBvbiBnbG9i
YWwgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODY5MgorCisgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IEdlb2ZmcmV5IEdhcmVuLgor
ICAgICAgICAKKyAgICAgICAgQWRkZWQgYSB0ZXN0IGZvciB3YXRjaHBvaW50cy4gQWxzbyB1cGRh
dGVkIHRoZSBqc2MtdGVzdC1saXN0IHRvIGluY2x1ZGUgdGhlIGxhdGVzdAorICAgICAgICB0ZXN0
cy4KKworICAgICAgICAqIGZhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2RmZy1jYWxsLWZ1bmN0aW9u
LWhpdC13YXRjaHBvaW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvanNjLXRlc3Qt
bGlzdDoKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctY2FsbC1mdW5jdGlvbi1o
aXQtd2F0Y2hwb2ludC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAoYmFyKToK
KyAgICAgICAgKC5mb28pOgorCiAyMDEyLTA2LTEzICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNl
a0BnbWFpbC5jb20+CiAKICAgICAgICAgW0d0a10gRW5hYmxlIGxpbmsgcHJlZmV0Y2ggc3VwcG9y
dCBpbiB0aGUgZGV2ZWxvcGVyIGJ1aWxkcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmct
Y2FsbC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctY2FsbC1mdW5jdGlvbi1oaXQtd2F0Y2hwb2ludC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1jYWxsLWZ1
bmN0aW9uLWhpdC13YXRjaHBvaW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMDkgQEAKK1Rlc3RzIGNvcnJlY3RuZXNzIG9mIGZ1bmN0aW9uIGNhbGxzIHdoZW4gdGhlIGZ1
bmN0aW9uIGlzIG92ZXJ3cml0dGVuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIDEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAzCitQQVNTIGJh
cihpLCBpICsgMSkgaXMgNQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDcKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyA5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTEKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAxMworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDE1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTcK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAxOQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDIxCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMjMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAyNQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIDI3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjkKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAzMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDMzCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMzUKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAzNworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDM5
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNDEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA0MworUEFT
UyBiYXIoaSwgaSArIDEpIGlzIDQ1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNDcKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyA0OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDUxCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgNTMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA1NQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIDU3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNTkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA2
MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDYzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgNjUKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyA2NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDY5CitQQVNTIGJh
cihpLCBpICsgMSkgaXMgNzEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA3MworUEFTUyBiYXIoaSwg
aSArIDEpIGlzIDc1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgNzcKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyA3OQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDgxCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
ODMKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA4NQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIDg3CitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgODkKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyA5MQorUEFTUyBi
YXIoaSwgaSArIDEpIGlzIDkzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgOTUKK1BBU1MgYmFyKGks
IGkgKyAxKSBpcyA5NworUEFTUyBiYXIoaSwgaSArIDEpIGlzIDk5CitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMTAxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTAzCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMTA1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTA3CitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MTA5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTExCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTEz
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTE1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTE3CitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgMTE5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTIxCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMTIzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTI1CitQQVNTIGJh
cihpLCBpICsgMSkgaXMgMTI3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTI5CitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMTMxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTMzCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgMTM1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTM3CitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMTM5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTQxCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMTQzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTQ1CitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MTQ3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTQ5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTUx
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTUzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTU1CitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgMTU3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTU5CitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMTYxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTYzCitQQVNTIGJh
cihpLCBpICsgMSkgaXMgMTY1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTY3CitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMTY5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTcxCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgMTczCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTc1CitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMTc3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTc5CitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMTgxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTgzCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MTg1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTg3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTg5
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTkxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTkzCitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgMTk1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMTk3CitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMTk5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjAxCitQQVNTIGJh
cihpLCBpICsgMSkgaXMgMjAzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjA1CitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMjA3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjA5CitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgMjExCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjEzCitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMjE1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjE3CitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMjE5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjIxCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MjIzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjI1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjI3
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjI5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjMxCitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgMjMzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjM1CitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMjM3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjM5CitQQVNTIGJh
cihpLCBpICsgMSkgaXMgMjQxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjQzCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMjQ1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjQ3CitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgMjQ5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjUxCitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMjUzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjU1CitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMjU3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjU5CitQQVNTIGJhcihpLCBpICsgMSkgaXMg
MjYxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjYzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjY1
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjY3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjY5CitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgMjcxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjczCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgMjc1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjc3CitQQVNTIGJh
cihpLCBpICsgMSkgaXMgMjc5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjgxCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgMjgzCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjg1CitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgMjg3CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjg5CitQQVNTIGJhcihpLCBpICsg
MSkgaXMgMjkxCitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjkzCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgMjk1CitQQVNTIGJhcihpLCBpICsgMSkgaXMgMjk3CitQQVNTIGJhcihpLCBpICsgMSkgaXMg
Mjk5CitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQor
UEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1Mg
YmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihp
LCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSAr
IDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBp
cyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEK
K1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNT
IGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIo
aSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkg
KyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkg
aXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0x
CitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFT
UyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFy
KGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBp
ICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEp
IGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAt
MQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BB
U1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJh
cihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwg
aSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAx
KSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQQVNTIGJhcihpLCBpICsgMSkgaXMg
LTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBiYXIoaSwgaSArIDEpIGlzIC0xCitQ
QVNTIGJhcihpLCBpICsgMSkgaXMgLTEKK1BBU1MgYmFyKGksIGkgKyAxKSBpcyAtMQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1jYWxsLWZ1bmN0aW9uLWhpdC13YXRj
aHBvaW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1jYWxs
LWZ1bmN0aW9uLWhpdC13YXRjaHBvaW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZmctY2FsbC1m
dW5jdGlvbi1oaXQtd2F0Y2hwb2ludC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL2pzYy10ZXN0LWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9qc2MtdGVzdC1saXN0CShyZXZpc2lvbiAxMjAyMjgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL2pzYy10ZXN0LWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTY0LDIzICs2NCw0NSBA
QCBmYXN0L2pzL2RlYnVnZ2VyCiBmYXN0L2pzL2RlY2xhcmF0aW9uLWluLWJsb2NrCiBmYXN0L2pz
L2RlbGV0ZS1nZXR0ZXJzLXNldHRlcnMKIGZhc3QvanMvZGVsZXRlLXRoZW4tcHV0Ci1mYXN0L2pz
L2RmZy1hcmd1bWVudHMtb3NyLWV4aXQKLWZhc3QvanMvZGZnLWFyZ3VtZW50cy1taXhlZC1hbGlh
cworZmFzdC9qcy9kZmctYWRkLW5vdC1udW1iZXIKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlh
cy1lc2NhcGUKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcy1vbmUtYmxvY2stb3NyLWV4aXQK
K2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1hbGlhcy1vbmUtYmxvY2stb3ZlcndyaXRlLWFyZ3VtZW50
cworZmFzdC9qcy9kZmctYXJndW1lbnRzLWFsaWFzLW9uZS1ibG9jay1vdmVyd3JpdGUKK2Zhc3Qv
anMvZGZnLWFyZ3VtZW50cy1hbGlhcy1vbmUtYmxvY2sKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1h
bGlhcwogZmFzdC9qcy9kZmctYXJndW1lbnRzLWNyb3NzLWNvZGUtb3JpZ2luCitmYXN0L2pzL2Rm
Zy1hcmd1bWVudHMtbWl4ZWQtYWxpYXMKK2Zhc3QvanMvZGZnLWFyZ3VtZW50cy1vc3ItZXhpdAor
ZmFzdC9qcy9kZmctYXJndW1lbnRzLW91dC1vZi1ib3VuZHMKIGZhc3QvanMvZGZnLWFyZ3VtZW50
cy11bmV4cGVjdGVkLWVzY2FwZQotZmFzdC9qcy9kZmctYXJndW1lbnRzLWFsaWFzCi1mYXN0L2pz
L2RmZy1hcmd1bWVudHMtYWxpYXMtZXNjYXBlCiBmYXN0L2pzL2RmZy1hcnJheS1sZW5ndGgtZGVh
ZAorZmFzdC9qcy9kZmctYnJhbmNoLW5vdC1mYWlsCitmYXN0L2pzL2RmZy1jaGVjay10d28tc3Ry
dWN0dXJlcworZmFzdC9qcy9kZmctY29uc3RhbnQtZm9sZC1maXJzdC1sb2NhbC1yZWFkLWFmdGVy
LWJsb2NrLW1lcmdlCiBmYXN0L2pzL2RmZy1jb252ZXJ0LXRoaXMtZG9tLXdpbmRvdworZmFzdC9q
cy9kZmctY3NlLWNmYS1kaXNjcmVwYW5jeQorZmFzdC9qcy9kZmctZGVhZC1taW4tb25lLWFyZwor
ZmFzdC9qcy9kZmctZGVhZC1taW4tdHdvLWFyZ3MKK2Zhc3QvanMvZGZnLWRlYWQtc3BlY3VsYXRp
b24KK2Zhc3QvanMvZGZnLWRlYWQtdmFyaWFibGUtb24tZXhpdAorZmFzdC9qcy9kZmctZG91Ymxl
LXVzZS1vZi1wb3N0LXNpbXBsaWZpY2F0aW9uLWRvdWJsZS1wcmVkaWN0aW9uCiBmYXN0L2pzL2Rm
Zy1kb3VibGUtdm90ZS1mdXp6CiBmYXN0L2pzL2RmZy1leGNlcHRpb24KIGZhc3QvanMvZGZnLWZs
b2F0MzJhcnJheQogZmFzdC9qcy9kZmctZmxvYXQ2NGFycmF5CitmYXN0L2pzL2RmZy1mbHVzaC1n
ZXQtbG9jYWwKIGZhc3QvanMvZGZnLWdldC1ieS12YWwtY2xvYmJlcgogZmFzdC9qcy9kZmctZ2V0
LWJ5LXZhbC1nZXR0ZXItY3NlCiBmYXN0L2pzL2RmZy1nZXR0ZXItdGhyb3cKIGZhc3QvanMvZGZn
LWdldHRlcgorZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1iZWNvbWUtZG91YmxlCitmYXN0
L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRzLWJlY29tZS1pbnQzMgogZmFzdC9qcy9kZmctaW5saW5l
LWFyZ3VtZW50cy1pbnQzMgorZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1vc3ItZXhpdC1h
bmQtY2FwdHVyZQorZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy1vdXQtb2YtYm91bmRzCitm
YXN0L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRzLXJlc2V0LWNoYW5nZXR5cGUKK2Zhc3QvanMvZGZn
LWlubGluZS1hcmd1bWVudHMtcmVzZXQKIGZhc3QvanMvZGZnLWlubGluZS1hcmd1bWVudHMtc2lt
cGxlCiBmYXN0L2pzL2RmZy1pbmxpbmUtYXJndW1lbnRzLXVzZS1kaXJlY3RseS1mcm9tLWlubGlu
ZWQtY29kZQogZmFzdC9qcy9kZmctaW5saW5lLWFyZ3VtZW50cy11c2UtZnJvbS1hbGwtdGhlLXBs
YWNlcy1icm9rZW4KQEAgLTk2LDYgKzExOCw3IEBAIGZhc3QvanMvZGZnLWlubGluZS11bnVzZWQt
dGhpcy1tZXRob2QtY2gKIGZhc3QvanMvZGZnLWlubGluZS11bnVzZWQtdGhpcwogZmFzdC9qcy9k
ZmctaW5saW5pbmctcmVnLWFsbG9jCiBmYXN0L2pzL2RmZy1pbnQxNmFycmF5CitmYXN0L2pzL2Rm
Zy1pbnQzMi10by1kb3VibGUtb24ta25vd24tbnVtYmVyCiBmYXN0L2pzL2RmZy1pbnQzMmFycmF5
LW92ZXJmbG93LXZhbHVlcwogZmFzdC9qcy9kZmctaW50MzJhcnJheQogZmFzdC9qcy9kZmctaW50
OGFycmF5CkBAIC0xMDUsMTUgKzEyOCwyNCBAQCBmYXN0L2pzL2RmZy1pbnRyaW5zaWMtdW51c2Vk
LXRoaXMtbWV0aG9kCiBmYXN0L2pzL2RmZy1pbnRyaW5zaWMtdW51c2VkLXRoaXMKIGZhc3QvanMv
ZGZnLW1pbi1tYXgKIGZhc3QvanMvZGZnLW11bHRpcGx5CitmYXN0L2pzL2RmZy1uZWdhdGl2ZS1h
cnJheS1pbmRleAorZmFzdC9qcy9kZmctb2J2aW91cy1jb25zdGFudC1jZmEKIGZhc3QvanMvZGZn
LW90aGVyLWJyYW5jaAogZmFzdC9qcy9kZmctcG9pc29uLWZ1enoKK2Zhc3QvanMvZGZnLXByb3Rv
LWFjY2Vzcy1pbmxpbmUtb3NyLWV4aXQKK2Zhc3QvanMvZGZnLXB1dC1ieS1pZC1wcm90b3R5cGUt
Y2hlY2sKK2Zhc3QvanMvZGZnLXB1dGJ5dmFsLWNmYS1jbG9iYmVyCiBmYXN0L2pzL2RmZy1zdHJp
bmctc3RyaWN0ZXEKK2Zhc3QvanMvZGZnLXRlYXItb2ZmLWFyZ3VtZW50cy1ub3QtYWN0aXZhdGlv
bgogZmFzdC9qcy9kZmctdWludDE2YXJyYXkKLWZhc3QvanMvZGZnLXVpbnQzMmFycmF5LW92ZXJm
bG93LXZhbHVlcwotZmFzdC9qcy9kZmctdWludDMyLXRvLW51bWJlcgogZmFzdC9qcy9kZmctdWlu
dDMyLXRvLW51bWJlci1vbi1jYXB0dXJlZC12YXJpYWJsZQorZmFzdC9qcy9kZmctdWludDMyLXRv
LW51bWJlcgorZmFzdC9qcy9kZmctdWludDMyYXJyYXktb3ZlcmZsb3ctY29uc3RhbnQKK2Zhc3Qv
anMvZGZnLXVpbnQzMmFycmF5LW92ZXJmbG93LXZhbHVlcworZmFzdC9qcy9kZmctdWludDMyYXJy
YXkKIGZhc3QvanMvZGZnLXVpbnQ4YXJyYXkKIGZhc3QvanMvZGZnLXVpbnQ4Y2xhbXBlZGFycmF5
CitmYXN0L2pzL2RmZy13ZWFrLWpzLWNvbnN0YW50LXNpbGVudC1maWxsCiBmYXN0L2pzL2RpY3Rp
b25hcnktbm8tY2FjaGUKIGZhc3QvanMvZGljdGlvbmFyeS1wcm90b3R5cGUtY2FjaGluZwogZmFz
dC9qcy9kby13aGlsZS1zZW1pY29sb24KQEAgLTEyNiw2ICsxNTgsNyBAQCBmYXN0L2pzL2V2YWwt
dmFyLWRlY2wKIGZhc3QvanMvZXhjZXB0aW9uLWV4cHJlc3Npb24tb2Zmc2V0CiBmYXN0L2pzL2V4
Y2VwdGlvbi1mb3Itbm9ub2JqZWN0CiBmYXN0L2pzL2V4Y2VwdGlvbi1saW5lbnVtcworZmFzdC9q
cy9leGNlcHRpb24tcHJvcGFnYXRlLWZyb20tZGZnLXRvLWxsaW50CiBmYXN0L2pzL2V4Y2VwdGlv
bi1wcm9wZXJ0aWVzCiBmYXN0L2pzL2V4Y2VwdGlvbi10cnktZmluYWxseS1zY29wZS1lcnJvcgog
ZmFzdC9qcy9leGNlcHRpb24td2l0aC1oYW5kbGVyLWluc2lkZS1ldmFsLXdpdGgtZHluYW1pYy1z
Y29wZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGZnLWNhbGwtZnVu
Y3Rpb24taGl0LXdhdGNocG9pbnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtdGVzdHMvZGZnLWNhbGwtZnVuY3Rpb24taGl0LXdhdGNocG9pbnQuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctY2FsbC1mdW5j
dGlvbi1oaXQtd2F0Y2hwb2ludC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorZGVz
Y3JpcHRpb24oCisiVGVzdHMgY29ycmVjdG5lc3Mgb2YgZnVuY3Rpb24gY2FsbHMgd2hlbiB0aGUg
ZnVuY3Rpb24gaXMgb3ZlcndyaXR0ZW4uIgorKTsKKworZnVuY3Rpb24gZm9vKGEsIGIpIHsKKyAg
ICByZXR1cm4gYSArIGI7Cit9CisKK2Z1bmN0aW9uIGJhcihhLCBiKSB7CisgICAgcmV0dXJuIGZv
byhhLCBiKTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkgeworICAgIGlmIChp
ID09IDE1MCkKKyAgICAgICAgZm9vID0gZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAtIGI7IH0K
KyAgICB2YXIgZXhwZWN0ZWQ7CisgICAgaWYgKGkgPCAxNTApCisgICAgICAgIGV4cGVjdGVkID0g
aSArIGkgKyAxOworICAgIGVsc2UKKyAgICAgICAgZXhwZWN0ZWQgPSAtMTsKKyAgICBzaG91bGRC
ZSgiYmFyKGksIGkgKyAxKSIsICIiICsgZXhwZWN0ZWQpOworfQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>