<?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>155270</bug_id>
          
          <creation_ts>2016-03-09 15:40:00 -0800</creation_ts>
          <short_desc>DFG and FTL should constant-fold RegExpExec, RegExpTest, and StringReplace</short_desc>
          <delta_ts>2016-04-05 15:13:41 -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>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1172820</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-09 15:40:00 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172821</commentid>
    <comment_count>1</comment_count>
      <attachid>273491</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-09 15:40:57 -0800</bug_when>
    <thetext>Created attachment 273491
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172825</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-09 15:45:43 -0800</bug_when>
    <thetext>This creates a bunch of problems:

- Yarr needs to be executed on the JIT thread.
- DFG must model what happens in createRegExpMatchesArray, RegExpObject, and RegExpConstructor.
- If the match succeeds, we must still emit code that creates the matches array, and that code should not be any less efficient than what we have in createRegExpMatchesArray.  That code does a one-shot allocation that has enough room for the two names properties and enough room for the indexed properties.  We currently have no DFG node that can do that.

I&apos;m attaching the Yarr concurrency problem just adding locks in various places.

I will make the DFG duplicate the logic of createRegExpMatches array and friends.  This will require creating new nodes, like a node for putting a result summary on the RegExp constructor.

I&apos;m attacking the array allocation problem by extending MaterializeNewObject to be able to do these kinds of one-shot allocations.  Basically it will become the superset of NewArrayWithSize, NewArray, and NewObject.  I&apos;m also extending MaterializeNewObject to be compilable by the DFG tier, since we want to do this folding in DFG too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173216</commentid>
    <comment_count>3</comment_count>
      <attachid>273590</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 11:51:15 -0800</bug_when>
    <thetext>Created attachment 273590
OMG this is so insane</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173266</commentid>
    <comment_count>4</comment_count>
      <attachid>273602</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 12:51:44 -0800</bug_when>
    <thetext>Created attachment 273602
I thnk that MaterializeNewObject is done

Now I can write the folding rule.  This will be *SO MUCH FUN*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173332</commentid>
    <comment_count>5</comment_count>
      <attachid>273621</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 14:12:20 -0800</bug_when>
    <thetext>Created attachment 273621
added RecordRegExpCachedResult</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173377</commentid>
    <comment_count>6</comment_count>
      <attachid>273628</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 15:03:36 -0800</bug_when>
    <thetext>Created attachment 273628
inching towards victory!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173398</commentid>
    <comment_count>7</comment_count>
      <attachid>273638</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 15:35:42 -0800</bug_when>
    <thetext>Created attachment 273638
it is written

I will eventually work up the courage to try to compile it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173518</commentid>
    <comment_count>8</comment_count>
      <attachid>273665</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 18:54:43 -0800</bug_when>
    <thetext>Created attachment 273665
it compiles!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173533</commentid>
    <comment_count>9</comment_count>
      <attachid>273670</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 19:36:13 -0800</bug_when>
    <thetext>Created attachment 273670
it does things!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173548</commentid>
    <comment_count>10</comment_count>
      <attachid>273673</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 19:58:05 -0800</bug_when>
    <thetext>Created attachment 273673
more tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173557</commentid>
    <comment_count>11</comment_count>
      <attachid>273675</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 20:22:31 -0800</bug_when>
    <thetext>Created attachment 273675
passes all of the easy tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173569</commentid>
    <comment_count>12</comment_count>
      <attachid>273678</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 20:52:26 -0800</bug_when>
    <thetext>Created attachment 273678
maybe the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173581</commentid>
    <comment_count>13</comment_count>
      <attachid>273681</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 21:09:18 -0800</bug_when>
    <thetext>Created attachment 273681
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173583</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 21:12:05 -0800</bug_when>
    <thetext>Attachment 273681 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGInsertionSet.h:132:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:40:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:1418:  Declaration has space between type name and * in length * sizeof  [whitespace/declaration] [3]
Total errors found: 9 in 61 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>1173587</commentid>
    <comment_count>15</comment_count>
      <attachid>273684</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 21:30:48 -0800</bug_when>
    <thetext>Created attachment 273684
the patch

Contains some more fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173588</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 21:33:39 -0800</bug_when>
    <thetext>Attachment 273684 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGInsertionSet.h:132:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:40:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:1418:  Declaration has space between type name and * in length * sizeof  [whitespace/declaration] [3]
Total errors found: 9 in 61 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>1173616</commentid>
    <comment_count>17</comment_count>
      <attachid>273691</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 23:10:08 -0800</bug_when>
    <thetext>Created attachment 273691
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173618</commentid>
    <comment_count>18</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 23:10:28 -0800</bug_when>
    <thetext>Still running tests, not yet ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173620</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 23:13:27 -0800</bug_when>
    <thetext>Attachment 273691 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGInsertionSet.h:132:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:40:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:1418:  Declaration has space between type name and * in length * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 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>1173626</commentid>
    <comment_count>20</comment_count>
      <attachid>273692</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-10 23:58:34 -0800</bug_when>
    <thetext>Created attachment 273692
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173628</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 00:02:53 -0800</bug_when>
    <thetext>Attachment 273692 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGInsertionSet.h:132:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:40:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:1418:  Declaration has space between type name and * in length * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 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>1173632</commentid>
    <comment_count>22</comment_count>
      <attachid>273695</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-11 00:15:07 -0800</bug_when>
    <thetext>Created attachment 273695
the patch

with 32-bit fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173633</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 00:16:12 -0800</bug_when>
    <thetext>Attachment 273695 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.h:101:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGInsertionSet.h:132:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:40:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:1418:  Declaration has space between type name and * in length * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 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>1173639</commentid>
    <comment_count>24</comment_count>
      <attachid>273695</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-03-11 01:08:59 -0800</bug_when>
    <thetext>Comment on attachment 273695
the patch

Attachment 273695 did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/959280

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173640</commentid>
    <comment_count>25</comment_count>
      <attachid>273699</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-03-11 01:09:04 -0800</bug_when>
    <thetext>Created attachment 273699
Archive of layout-test-results from ews114 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews114  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173789</commentid>
    <comment_count>26</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-11 10:48:05 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; Created attachment 273699 [details]
&gt; Archive of layout-test-results from ews114 for mac-yosemite
&gt; 
&gt; The attached test failures were seen while running run-webkit-tests on the
&gt; mac-debug-ews.
&gt; Bot: ews114  Port: mac-yosemite  Platform: Mac OS X 10.10.5

LOL, this is because of a stale checkout situation on my end.  I had added an assertion to RegExpMatchesArray.h as part of a previous abortive effort.  That assertion was wrong.  It ended up in my patch.  And it set this bot on fire.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173791</commentid>
    <comment_count>27</comment_count>
      <attachid>273746</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-11 10:49:05 -0800</bug_when>
    <thetext>Created attachment 273746
the patch

Reverts RegExpMatchesArray.h, in which I had accidentally added a wrong assertion that is unrelated to this patch.  This should fix the debug tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173792</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 10:50:35 -0800</bug_when>
    <thetext>Attachment 273746 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSObject.h:102:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.h:102:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGInsertionSet.h:132:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:40:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:1418:  Declaration has space between type name and * in length * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:66:  The parameter name &quot;reg&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>1173865</commentid>
    <comment_count>29</comment_count>
      <attachid>273746</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-11 14:07:12 -0800</bug_when>
    <thetext>Comment on attachment 273746
the patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:20
&gt; +        properties. Previously it could only handle objects (but not arrays) and naed properties

typo: named

&gt; Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp:120
&gt; +                dataLog(&quot;Giving up because of size limit.\n&quot;);

remove.

&gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:521
&gt; +                            m_nodeIndex, origin, jsNumber(result.start), UntypedUse));

Why is this untyped use?

&gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:525
&gt; +                    m_graph.m_varArgChildren.append(Edge(stringNode, UntypedUse));

Shouldn&apos;t this be StringUse?

&gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:651
&gt; +                int replLen = replace.length();

unsigned.

&gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:681
&gt; +                        m_nodeIndex, origin, jsNumber(0), UntypedUse));

KnownInt32Use?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6397
&gt; +                HashMap&lt;
&gt; +                    int32_t, LValue, DefaultHash&lt;int32_t&gt;::Hash,
&gt; +                    WTF::UnsignedWithZeroKeyHashTraits&lt;int32_t&gt;&gt; indexMap;

style: I think this can be 1 line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173870</commentid>
    <comment_count>30</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-11 14:22:20 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; Comment on attachment 273746 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=273746&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:20
&gt; &gt; +        properties. Previously it could only handle objects (but not arrays) and naed properties
&gt; 
&gt; typo: named

Fixed.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp:120
&gt; &gt; +                dataLog(&quot;Giving up because of size limit.\n&quot;);
&gt; 
&gt; remove.

Fixed.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:521
&gt; &gt; +                            m_nodeIndex, origin, jsNumber(result.start), UntypedUse));
&gt; 
&gt; Why is this untyped use?

With the exception of the publicLength, vectorLength, and structure arguments to MaterializeNewObject, all of them are UntypedUse because they&apos;re just values you&apos;re storing into the object.  You can store any JSValue into an object.  Therefore, UntypedUse.

More importantly, its not legal to just use whatever use kind you want anywhere you want.  The signature of a DFG node is its NodeType and its UseKinds.  If you use a UseKind that the node type doesn&apos;t recognize, you break the compiler.  MaterializeNewObject does not recognize anything but UntypedUse for anything other than publicLength/vectorLength/structure.

In general, if there is a use edge from A (the user) to B (the thing being used), then you don&apos;t pick the use kind based on what B is - you pick it based on what A wants B to be.  If B is an int, you don&apos;t tell A to use it as an int unless A knows what to do with that information.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:525
&gt; &gt; +                    m_graph.m_varArgChildren.append(Edge(stringNode, UntypedUse));
&gt; 
&gt; Shouldn&apos;t this be StringUse?

See above.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:651
&gt; &gt; +                int replLen = replace.length();
&gt; 
&gt; unsigned.

OK.  I just copied what the StringPrototype code was doing.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:681
&gt; &gt; +                        m_nodeIndex, origin, jsNumber(0), UntypedUse));
&gt; 
&gt; KnownInt32Use?

See above, you can&apos;t just pick whatever use kind you like.

&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6397
&gt; &gt; +                HashMap&lt;
&gt; &gt; +                    int32_t, LValue, DefaultHash&lt;int32_t&gt;::Hash,
&gt; &gt; +                    WTF::UnsignedWithZeroKeyHashTraits&lt;int32_t&gt;&gt; indexMap;
&gt; 
&gt; style: I think this can be 1 line.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173874</commentid>
    <comment_count>31</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-11 14:32:48 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; Comment on attachment 273746 [details]
&gt; &gt; the patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=273746&amp;action=review
&gt; &gt; 
&gt; &gt; r=me
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:20
&gt; &gt; &gt; +        properties. Previously it could only handle objects (but not arrays) and naed properties
&gt; &gt; 
&gt; &gt; typo: named
&gt; 
&gt; Fixed.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp:120
&gt; &gt; &gt; +                dataLog(&quot;Giving up because of size limit.\n&quot;);
&gt; &gt; 
&gt; &gt; remove.
&gt; 
&gt; Fixed.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:521
&gt; &gt; &gt; +                            m_nodeIndex, origin, jsNumber(result.start), UntypedUse));
&gt; &gt; 
&gt; &gt; Why is this untyped use?
&gt; 
&gt; With the exception of the publicLength, vectorLength, and structure
&gt; arguments to MaterializeNewObject, all of them are UntypedUse because
&gt; they&apos;re just values you&apos;re storing into the object.  You can store any
&gt; JSValue into an object.  Therefore, UntypedUse.
&gt; 
&gt; More importantly, its not legal to just use whatever use kind you want
&gt; anywhere you want.  The signature of a DFG node is its NodeType and its
&gt; UseKinds.  If you use a UseKind that the node type doesn&apos;t recognize, you
&gt; break the compiler.  MaterializeNewObject does not recognize anything but
&gt; UntypedUse for anything other than publicLength/vectorLength/structure.
&gt; 
&gt; In general, if there is a use edge from A (the user) to B (the thing being
&gt; used), then you don&apos;t pick the use kind based on what B is - you pick it
&gt; based on what A wants B to be.  If B is an int, you don&apos;t tell A to use it
&gt; as an int unless A knows what to do with that information.
&gt; 
Makes sense. Thanks for clarifying.

&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:525
&gt; &gt; &gt; +                    m_graph.m_varArgChildren.append(Edge(stringNode, UntypedUse));
&gt; &gt; 
&gt; &gt; Shouldn&apos;t this be StringUse?
&gt; 
&gt; See above.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:651
&gt; &gt; &gt; +                int replLen = replace.length();
&gt; &gt; 
&gt; &gt; unsigned.
&gt; 
&gt; OK.  I just copied what the StringPrototype code was doing.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:681
&gt; &gt; &gt; +                        m_nodeIndex, origin, jsNumber(0), UntypedUse));
&gt; &gt; 
&gt; &gt; KnownInt32Use?
&gt; 
&gt; See above, you can&apos;t just pick whatever use kind you like.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6397
&gt; &gt; &gt; +                HashMap&lt;
&gt; &gt; &gt; +                    int32_t, LValue, DefaultHash&lt;int32_t&gt;::Hash,
&gt; &gt; &gt; +                    WTF::UnsignedWithZeroKeyHashTraits&lt;int32_t&gt;&gt; indexMap;
&gt; &gt; 
&gt; &gt; style: I think this can be 1 line.
&gt; 
&gt; OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175267</commentid>
    <comment_count>32</comment_count>
      <attachid>274169</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-15 20:52:09 -0700</bug_when>
    <thetext>Created attachment 274169
rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175268</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-15 20:53:37 -0700</bug_when>
    <thetext>Attachment 274169 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSObject.h:102:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.h:102:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGInsertionSet.h:132:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:40:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:1401:  Declaration has space between type name and * in length * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 in 67 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>1176550</commentid>
    <comment_count>34</comment_count>
      <attachid>274530</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-19 18:23:11 -0700</bug_when>
    <thetext>Created attachment 274530
rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176551</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-19 18:24:43 -0700</bug_when>
    <thetext>Attachment 274530 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSObject.h:102:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.h:102:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGInsertionSet.h:132:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:40:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:1414:  Declaration has space between type name and * in length * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 in 67 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>1178063</commentid>
    <comment_count>36</comment_count>
      <attachid>274929</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-25 12:56:51 -0700</bug_when>
    <thetext>Created attachment 274929
rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178065</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-25 13:00:06 -0700</bug_when>
    <thetext>Attachment 274929 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSObject.h:102:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.h:102:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGInsertionSet.h:132:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:40:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:1414:  Declaration has space between type name and * in length * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 in 67 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>1180687</commentid>
    <comment_count>38</comment_count>
      <attachid>275633</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-04 21:33:54 -0700</bug_when>
    <thetext>Created attachment 275633
rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180688</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-04 21:36:57 -0700</bug_when>
    <thetext>Attachment 275633 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSObject.h:102:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.h:102:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGInsertionSet.h:132:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:40:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:1414:  Declaration has space between type name and * in length * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:66:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 in 67 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>1180993</commentid>
    <comment_count>40</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-05 15:13:41 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/199075</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273491</attachid>
            <date>2016-03-09 15:40:57 -0800</date>
            <delta_ts>2016-03-10 11:51:15 -0800</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>34606</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc4NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2
MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3
QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAv
KiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEw
QkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBD
NzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhG
NjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGgg
PSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMz
NUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAogCQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovLAogCQkJCUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOEND
MDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBG
RDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYg
Kzc0NDgsNyBAQAogCQkJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEg
LyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFp
bmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEuaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKICNpbmNsdWRlICJERkdUcmFuc2l0aW9u
LmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNz
RGF0YS5oIgpAQCAtMjE5LDIwICsyMjAsNiBAQCBzdHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsKICAg
ICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hlZEF0KGZvcm1hdCwgbWFjaGlu
ZUxvY2FsKTsgfQogfTsKIAotLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFzc2luZyBhbiBpbW1lZGlh
dGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKLS8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1t
ZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBkYXRhIHN0
cnVjdHVyZSAtIAotLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlkZW50aWZpZXIp
IGZyb20gYSBOb2RlKi4KLXN0cnVjdCBPcEluZm8gewotICAgIE9wSW5mbygpIDogbV92YWx1ZSgw
KSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8odWludDMy
X3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0j
aWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQotICAgIGV4cGxpY2l0IE9wSW5mbyhzaXpl
X3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0j
ZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICB1aW50cHRyX3QgbV92YWx1ZTsK
LX07Ci0KIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBv
cGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3
NCw3ICsxOTc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgTmFtZWRQcm9w
ZXJ0eVBMb2M6IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9
PSBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9w
cm9wZXJ0aWVzLmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRl
c2NyaXB0b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShi
bG9jaywgbG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRl
cy5jb250YWlucyh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW4uYXBwZW5kKG1fYm90dG9tKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRv
bVByb3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGEubV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2Jv
dHRvbSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDMyICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKLXZvaWQgUGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQoImlkIiwgbV9pZGVudGlmaWVyTnVtYmVyKTsK
LX0KLQogdm9pZCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCJbIiwgbGlzdER1bXAobV9wcm9wZXJ0aWVzKSwg
Il0iKTsKIH0KIAotZmxvYXQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6b25lV2F5U2ltaWxh
cml0eVNjb3JlKAotICAgIGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBj
b25zdAotewotICAgIHVuc2lnbmVkIG51bUhpdHMgPSAwOwotICAgIGZvciAoUGhhbnRvbVByb3Bl
cnR5VmFsdWUgdmFsdWUgOiBtX3Byb3BlcnRpZXMpIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcHJv
cGVydGllcy5jb250YWlucyh2YWx1ZSkpCi0gICAgICAgICAgICBudW1IaXRzKys7Ci0gICAgfQot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obnVtSGl0cykgLyBzdGF0aWNfY2FzdDxmbG9h
dD4obV9wcm9wZXJ0aWVzLnNpemUoKSk7Ci19Ci0KLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGE6OnNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBv
dGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjptaW4ob25lV2F5U2ltaWxhcml0eVNjb3Jl
KG90aGVyKSwgb3RoZXIub25lV2F5U2ltaWxhcml0eVNjb3JlKCp0aGlzKSk7Ci19Ci0KIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1Byb21vdGVk
SGVhcExvY2F0aW9uLmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTM1LDM4ICszNiwxMSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0cnVjdCBQaGFudG9tUHJv
cGVydHlWYWx1ZSB7Ci0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUoKQotICAgICAgICA6IG1faWRl
bnRpZmllck51bWJlcihVSU5UX01BWCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFBoYW50b21Q
cm9wZXJ0eVZhbHVlKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCi0gICAgICAgIDogbV9pZGVu
dGlmaWVyTnVtYmVyKGlkZW50aWZpZXJOdW1iZXIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB1
bnNpZ25lZCBtX2lkZW50aWZpZXJOdW1iZXI7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFBoYW50b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2lkZW50aWZpZXJOdW1iZXIgPT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAg
IH0KLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLX07Ci0KIHN0cnVj
dCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhIHsKICAgICAvLyBEZXRlcm1pbmVzIHRoZSBtZWFu
aW5nIG9mIHRoZSBwYXNzZWQgbm9kZXMuCi0gICAgVmVjdG9yPFBoYW50b21Qcm9wZXJ0eVZhbHVl
PiBtX3Byb3BlcnRpZXM7CisgICAgVmVjdG9yPFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yPiBt
X3Byb3BlcnRpZXM7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0g
ICAgCi0gICAgLy8gVGhlIGZyYWN0aW9uIG9mIG15IHByb3BlcnRpZXMgdGhhdCB0aGUgb3RoZXIg
ZGF0YSBoYXMuCi0gICAgZmxvYXQgb25lV2F5U2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1h
dGVyaWFsaXphdGlvbkRhdGEmKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgbWluaW11bSBvZiB0
aGUgdHdvIHBvc3NpYmxlIG9uZS13YXkgc2NvcmVzLgotICAgIGZsb2F0IHNpbWlsYXJpdHlTY29y
ZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJikgY29uc3Q7CiB9OwogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZv
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdPcEluZm9faAorI2RlZmluZSBERkdP
cEluZm9faAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKERG
R19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyB0eXBl
IHVzZWQgaW4gcGFzc2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3Rv
cjsKKy8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5k
ZXggaW50byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAorLy8gYSBjb25zdGFudCBpbmRl
eCwgYXJndW1lbnQsIG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KK3N0cnVjdCBPcEluZm8g
eworICAgIE9wSW5mbygpIDogbV92YWx1ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oaW50
MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0K
KyAgICBleHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0
KQorICAgIGV4cGxpY2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisjZW5kaWYKKyAgICBleHBsaWNpdCBPcEluZm8odm9p
ZCogdmFsdWUpIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7
IH0KKyAgICB1aW50cHRyX3QgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT3BJbmZvX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAxLDYgKzE0MDEsMzcgQEAgc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhcwogICAgIHJldHVybiAwOwogfQogCitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIAorICAg
IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIHZtLCBu
dWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGlu
Z0hlYWRlcigpLCAwKTsKKyAgICAKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNy
ZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5i
dXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CisKKyAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAgaGVhZGVy
LnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7
CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAg
dm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgaGVh
ZGVyLAorICAgICAgICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogbGVuZ3RoKTsKKworICAgIC8v
IFBhcmFkb3hpY2FsbHkgdGhpcyBtYXkgYWxsb2NhdGUgYSBKU0FycmF5LiBUaGF0J3MgdG90YWxs
eSBjb29sLgorICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0
KGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAv
LyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2Zp
bGVyTG9nREZHKEV4ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmls
ZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVk
IGZyb20gaW5zaWRlIERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsOCBAQCBp
bnQ2NF90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydERvCiAKIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlZmF1bHRIYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU0NlbGwqIHZh
bHVlLCBKU0NlbGwqIHByb3RvKTsKIAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFM
OworCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RG
RyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09w
ZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikg
V1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTc0LDYgKzc0LDEwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBQcm8KICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOgogICAgICAgICBvdXQucHJp
bnQoIk5hbWVkUHJvcGVydHlQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSW5k
ZXhlZFByb3BlcnR5UExvYzoKKyAgICAgICAgb3V0LnByaW50KCJJbmRleGVkUHJvcGVydHlQTG9j
Iik7CisgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBBcmd1bWVudFBMb2M6CiAg
ICAgICAgIG91dC5wcmludCgiQXJndW1lbnRQTG9jIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCShyZXZpc2lvbiAx
OTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjUgKzI4LDQxIEBACiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKIAotI2luY2x1ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJERkdFZGdlLmgiCisj
aW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkRGR09wSW5mby5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitzdHJ1Y3QgTm9kZTsKKworLy8gUHJvbW90
ZWQgbG9jYXRpb25zIGFyZSBsaWtlIGhlYXAgbG9jYXRpb25zIGJ1dCBhcmUgbWVhbnQgdG8gYmUg
bW9yZSBwcmVjaXNlLiBBIGhlYXAgbG9jYXRpb24gaXMKKy8vIGFwcGxpY2FibGUgdG8gQ1NFIHNj
ZW5hcmlvcywgd2hlcmUgaXQgbWFrZXMgc2Vuc2UgdG8gc3BlYWsgb2YgYSBsb2NhdGlvbiB2ZXJ5
IGFic3RyYWN0bHkuIEEKKy8vIHByb21vdGVkIGhlYXAgbG9jYXRpb24gaXMgZm9yIGNhc2VzIHdo
ZXJlIHdlIHNwZWFrIG9mIGEgc3BlY2lmaWMgb2JqZWN0IGFuZCB0aGUgY29tcGlsZXIga25vd3MK
Ky8vIHRoaXMgb2JqZWN0J3MgaWRlbnRpdHkgLSBmb3IgZXhhbXBsZSwgdGhlIG9iamVjdCBhbGxv
Y2F0aW9uIGhhcyBiZWVuIGVsaW1pbmF0ZWQgYW5kIHdlIHR1cm5lZCB0aGUKKy8vIGZpZWxkcyBp
bnRvIGxvY2FsIHZhcmlhYmxlcy4gQmVjYXVzZSB0aGVzZSB0d28gY2FzZXMgaGF2ZSBzdWJ0bHkg
ZGlmZmVyZW50IG5lZWRzLCB3ZSB1c2Ugc3VidGx5CisvLyBkaWZmZXJlbnQgc3RydWN0dXJlcy4g
T25lIG9mIHRoZSByZWFsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZXMgaXMgdGhhdCBwcm9tb3Rl
ZCBsb2NhdGlvbnMgY2FuIGJlCisvLyBzcG9rZW4gb2YgdXNpbmcgZWl0aGVyIGEgZGVzY3JpcHRv
ciB3aGljaCBkb2VzIG5vdCByZWZlciB0byBhbnkgTm9kZSoncyBvciB3aXRoIGEgaGVhcCBsb2Nh
dGlvbiwKKy8vIHdoaWNoIGlzIGEgZGVzY3JpcHRvciB3aXRoIGEgTm9kZSogYmFzZS4KKwogZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgSW52YWxpZFByb21vdGVkTG9jYXRpb25LaW5k
LAogICAgIAotICAgIFN0cnVjdHVyZVBMb2MsCisgICAgQWN0aXZhdGlvblNjb3BlUExvYywKICAg
ICBBY3RpdmF0aW9uU3ltYm9sVGFibGVQTG9jLAotICAgIE5hbWVkUHJvcGVydHlQTG9jLAotICAg
IEFyZ3VtZW50UExvYywKICAgICBBcmd1bWVudENvdW50UExvYywKKyAgICBBcmd1bWVudFBMb2Ms
CiAgICAgQXJndW1lbnRzQ2FsbGVlUExvYywKLQotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2Ms
CisgICAgQ2xvc3VyZVZhclBMb2MsCiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKLSAgICBB
Y3RpdmF0aW9uU2NvcGVQTG9jLAotICAgIENsb3N1cmVWYXJQTG9jCisgICAgRnVuY3Rpb25FeGVj
dXRhYmxlUExvYywKKyAgICBJbmRleGVkUHJvcGVydHlQTG9jLAorICAgIE5hbWVkUHJvcGVydHlQ
TG9jLAorICAgIFB1YmxpY0xlbmd0aFBMb2MsCisgICAgU3RydWN0dXJlUExvYywKKyAgICBWZWN0
b3JMZW5ndGhQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3OCw2ICsyNzgsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0
aW9uKCktPmRmZ1Nob3VsZFdhdGNoKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdP
YmplY3Q6CisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBu
b2RlLT5zdHJ1Y3R1cmVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBv
bmx5IHN1cHBvcnRzIHN0cnVjdHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5
LgorICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCkgPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0FycmF5OjppbmZvKCkpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgY2VydGFpbiBpbmRl
eGluZyBzaGFwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFo
YXNBbnlBcnJheVN0b3JhZ2Uoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAg
ICAgICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICAgICAgICAgIFZBTElE
QVRFKChub2RlKSwgbm9kZS0+aXNOdW1iZXJDb25zdGFudCgpKTsKQEAgLTQ2MSwxMyArNDcyLDMx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAg
ICAgICAgICAgICAgICAgY2FzZSBQdXRIaW50OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09i
amVjdDoKICAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgS2ls
bFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgISJ1bmV4cGVjdGVkIG5vZGUgdHlwZSBpbiBDUFMiKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6
ZU5ld09iamVjdDogeworICAgICAgICAgICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3MgYXJy
YXkgbGVuZ3RocyB0byBiZSBjb25zdGFudC4gVGhpcyBjb25zdHJhaW50IG9ubHkgZXhpc3RzCisg
ICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBERkcgc3VwcG9ydCBm
b3IgYW55dGhpbmcgbW9yZSBhbmQgd2UgZG9uJ3QgbmVlZCBhbnkKKyAgICAgICAgICAgICAgICAg
ICAgLy8gb3RoZXIga2luZCBvZiBzdXBwb3J0IGZvciBub3cuCisgICAgICAgICAgICAgICAgICAg
IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBtX25vZGUtPm9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0
YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNb
aV07CisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5t
X3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFB1
YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0
aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2Up
LCBlZGdlLT5pc0ludDMyQ29uc3RhbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlKSwgbV9ncmFwaC5tX2ZpeHBvaW50U3RhdGUgIT0gRml4cG9pbnROb3RDb252
ZXJnZWQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjI4NiwxMSArNjI4NiwyMSBAQCBwcml2YXRlOgogICAgICAgICAvLyBMb3dlciB0
aGUgdmFsdWVzIGZpcnN0LCB0byBhdm9pZCBjcmVhdGluZyB2YWx1ZXMgaW5zaWRlIGEgY29udHJv
bCBmbG93IGRpYW1vbmQuCiAgICAgICAgIAogICAgICAgICBWZWN0b3I8TFZhbHVlLCA4PiB2YWx1
ZXM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShtX2dyYXBo
LnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgRWRn
ZSBlZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKTsKKyAgICAgICAgICAg
IHN3aXRjaCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICBjYXNl
IFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6Cisg
ICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dJbnQzMihlZGdlKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHZhbHVl
cy5hcHBlbmQobG93SlNWYWx1ZShlZGdlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cnVjdHVyZVNl
dCYgc2V0ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKLSAgICAgICAgCisKICAgICAgICAgVmVj
dG9yPExCYXNpY0Jsb2NrLCAxPiBibG9ja3Moc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IHNldC5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBibG9ja3NbaV0gPSBtX291
dC5uZXdCbG9jaygpOwpAQCAtNjMxNSwyMSArNjMyNSw0NyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgTFZhbHVlIG9iamVjdDsKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsK
KyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgaGFzSW5k
ZXhpbmdIZWFkZXIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgICAgICAg
ICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShz
dHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgICAgIE1hcmtlZEFsbG9j
YXRvciogYWxsb2NhdG9yID0gJnZtKCkuaGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVz
dHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisKKyAgICAgICAgICAgICAgICBib29sIGhhc0luZGV4
aW5nSGVhZGVyID0gSlNDOjpoYXNJbmRleGluZ0hlYWRlcihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlw
ZSgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleGluZ0hlYWRlclNpemUgPSAwOwor
ICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9IG1fb3V0
LmludFB0clplcm87CisgICAgICAgICAgICAgICAgTFZhbHVlIHZlY3Rvckxlbmd0aCA9IG1fb3V0
LmludDMyWmVybzsKKyAgICAgICAgICAgICAgICBMVmFsdWUgcHVibGljTGVuZ3RoID0gbV9vdXQu
aW50MzJaZXJvOworICAgICAgICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgeworICAg
ICAgICAgICAgICAgICAgICBpbmRleGluZ0hlYWRlclNpemUgPSBzaXplb2YoSW5kZXhpbmdIZWFk
ZXIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVy
dGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9j
YXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWNMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0
aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gdmFsdWVz
W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlu
ZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
Lm11bChtX291dC56ZXJvRXh0UHRyKHZlY3Rvckxlbmd0aCksIG1fb3V0LmludFB0ckVpZ2h0KTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBMVmFsdWUgYnV0dGVyZmx5U2l6
ZSA9IG1fb3V0LmFkZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBz
aXplb2YoSlNWYWx1ZSkgKyBpbmRleGluZ0hlYWRlclNpemUpLAorICAgICAgICAgICAgICAgICAg
ICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIExWYWx1ZSBlbmRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUJhc2ljU3RvcmFn
ZUFuZEdldEVuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpKSwKLSAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGgpOwotICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIExW
YWx1ZSBlbmRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUJhc2ljU3RvcmFnZUFuZEdldEVuZChidXR0ZXJm
bHlTaXplLCBzbG93UGF0aCk7CisKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRlcmZs
eVZhbHVlID0gbV9vdXQuYWRkKAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0
cihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgZW5kT2ZTdG9yYWdlKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuc3ViKGVuZE9mU3RvcmFnZSwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMp
LAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhpbmdI
ZWFkZXIpIC0gaW5kZXhpbmdIZWFkZXJTaXplKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgTFZhbHVlIGZhc3RPYmplY3RWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0KAogICAgICAg
ICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IpLCBzdHJ1Y3R1cmUsIGZh
c3RCdXR0ZXJmbHlWYWx1ZSwgc2xvd1BhdGgpOwpAQCAtNjM2NSwxMiArNjQwMSwxNCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKFByb3BlcnR5TWFwRW50cnkgZW50
cnkgOiBzdHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25jdXJyZW50bHkoKSkgewogICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykg
ewotICAgICAgICAgICAgICAgICAgICBQaGFudG9tUHJvcGVydHlWYWx1ZSB2YWx1ZSA9IGRhdGEu
bV9wcm9wZXJ0aWVzW2ldOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pZGVudGlm
aWVycygpW3ZhbHVlLm1faWRlbnRpZmllck51bWJlcl0gIT0gZW50cnkua2V5KQorICAgICAgICAg
ICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5t
X3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmtpbmQo
KSAhPSBOYW1lZFByb3BlcnR5UExvYykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pZGVudGlmaWVycygpW2Rlc2NyaXB0
b3IuaW5mbygpXSAhPSBlbnRyeS5rZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBiYXNl
ID0gaXNJbmxpbmVPZmZzZXQoZW50cnkub2Zmc2V0KSA/IG9iamVjdCA6IGJ1dHRlcmZseTsKLSAg
ICAgICAgICAgICAgICAgICAgc3RvcmVQcm9wZXJ0eSh2YWx1ZXNbaV0sIGJhc2UsIHZhbHVlLm1f
aWRlbnRpZmllck51bWJlciwgZW50cnkub2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmVQcm9wZXJ0eSh2YWx1ZXNbaV0sIGJhc2UsIGRlc2NyaXB0b3IuaW5mbygpLCBlbnRyeS5vZmZz
ZXQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CkBAIC02NDM1LDkgKzY0NzMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVl
IGFjdGl2YXRpb24gPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpID09
IHRhYmxlLT5zY29wZVNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBk
YXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgbV9vdXQuc3RvcmU2
NCh2YWx1ZXNbaV0sCi0gICAgICAgICAgICAgICAgYWN0aXZhdGlvbiwKLSAgICAgICAgICAgICAg
ICBtX2hlYXBzLkpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzW2RhdGEubV9wcm9wZXJ0aWVz
W2ldLm1faWRlbnRpZmllck51bWJlcl0pOworICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAg
QVNTRVJUKGRlc2NyaXB0b3Iua2luZCgpID09IENMb3N1cmVWYXJQTG9jKTsKKyAgICAgICAgICAg
IG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICAgICAgdmFsdWVzW2ldLCBhY3RpdmF0aW9uLAor
ICAgICAgICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGVz
Y3JpcHRvci5pbmZvKCldKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5h
YmxlZCgpKSB7CkBAIC02NDQ2LDcgKzY0ODYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgZm9y
IChhdXRvIGl0ZXIgPSB0YWJsZS0+YmVnaW4obG9ja2VyKSwgZW5kID0gdGFibGUtPmVuZChsb2Nr
ZXIpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9
IGZhbHNlOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1f
cHJvcGVydGllcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXRlci0+
dmFsdWUuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSA9PSBkYXRhLm1fcHJvcGVydGllc1tpXS5tX2lk
ZW50aWZpZXJOdW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ2xvc3VyZVZhclBMb2MpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSA9
PSBkZXNjcmlwdG9yLmluZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTkgKzQxLDYgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7CiAKLWV4dGVybiAi
QyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHko
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
LSAgICAKLSAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAotICAg
ICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxz
ZSwgSW5kZXhpbmdIZWFkZXIoKSwgMCk7Ci0gICAgCi0gICAgSlNPYmplY3QqIHJlc3VsdCA9IEpT
RmluYWxPYmplY3Q6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Ci0gICAgcmVz
dWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1z
cGFjZS4KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKAogICAgIEV4ZWNTdGF0ZSogZXhlYywg
RXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24qIG1hdGVyaWFsaXphdGlvbiwKICAgICBFbmNv
ZGVkSlNWYWx1ZSogZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSogdmFsdWVzKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5Nzg2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw4ICszNyw2IEBAIGNsYXNzIExhenlTbG93UGF0aDsKIAogZXh0ZXJuICJD
IiB7CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVy
Zmx5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKLQogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgRXhlY1N0YXRl
KiwgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24qLCBFbmNvZGVkSlNWYWx1ZSopIFdURl9J
TlRFUk5BTDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5NiwxMCBAQCBjbGFzcyBKU09iamVjdCA6
IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAg
ICAvLyBUaGlzIGlzIGEgc3VwZXIgZGFuZ2Vyb3VzIG1ldGhvZCBmb3IgSklUcy4gU29tZXRpbWVz
IHRoZSBKSVRzIHdpbGwgd2FudCB0byBjcmVhdGUgZWl0aGVyIGEKKyAgICAvLyBKU0ZpbmFsT2Jq
ZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBpcyB0aGUgbWV0aG9kIHRoYXQgd2lsbCBkbyB0aGF0Lgor
ICAgIEpTT2JqZWN0KiBjcmVhdGVSYXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQnV0dGVyZmx5KiA9IG51bGxwdHIpOworCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2Vs
bCosIENvcHlWaXNpdG9yJiwgQ29weVRva2VuKTsKQEAgLTEwMzQsNiArMTAzOCwyMCBAQCBwcml2
YXRlOgogCiBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZihFeGVjU3RhdGUqKTsKIAoraW5saW5lIEpTT2JqZWN0
KiBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KAorICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQoreworICAgIEpTT2JqZWN0KiBm
aW5hbE9iamVjdCA9IG5ldyAoCisgICAgICAgIE5vdE51bGwsIAorICAgICAgICBhbGxvY2F0ZUNl
bGw8SlNGaW5hbE9iamVjdD4oCisgICAgICAgICAgICAqZXhlYy0+aGVhcCgpLAorICAgICAgICAg
ICAgYWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKQorICAgICAgICAp
CisgICAgKSBKU09iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAgICByZXR1cm4gZmluYWxPYmpl
Y3Q7Cit9CisKIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoCiAg
ICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0
ZXJmbHkpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJ
KHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsOCBAQCBSZWdFeHAqIFJlZ0V4cDo6
Y3JlYXRlKFZNJiB2bSwgY29uc3QgU3RyCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwg
WWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3Bh
dHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9j
b25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjk5LDggKzMwMSwyMiBAQCBpbnQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0
cmluZyYgCiAgICAgcmV0dXJuIG1hdGNoSW5saW5lKHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rv
cik7CiB9CiAKK2Jvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSgKKyAgICBWTSYgdm0sIGNv
bnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3Rv
cjxpbnQsIDMyPiYgb3ZlY3RvcikKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlciht
X2xvY2spOworCisgICAgaWYgKCFoYXNDb2RlRm9yKHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6
IFlhcnI6OkNoYXIxNikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHBvc2l0aW9uID0g
bWF0Y2godm0sIHMsIHN0YXJ0T2Zmc2V0LCBvdmVjdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwogdm9pZCBSZWdFeHA6OmNvbXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNp
emUgY2hhclNpemUpCiB7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KyAgICAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9m
bGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IpOwogICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9y
KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zNDAsNiArMzU2
LDggQEAgTWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IAogCiB2b2lkIFJl
Z0V4cDo6ZGVsZXRlQ29kZSgpCiB7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAKICAgICBpZiAoIWhhc0NvZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
c3RhdGUgPSBOb3RDb21waWxlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cC5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBSZWdF
eHBfaAogI2RlZmluZSBSZWdFeHBfaAogCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIK
ICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiTWF0Y2hSZXN1bHQu
aCIKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKQEAgLTY0LDYgKzY1LDEwIEBAIHB1YmxpYzoKICAg
ICBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdGlv
bkVycm9yOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgbWF0Y2goVk0mLCBjb25zdCBT
dHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsK
KworICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2UgY291bGRuJ3QgcnVuIHRoZSByZWd1bGFyIGV4
cHJlc3Npb24gZm9yIGFueSByZWFzb24uCisgICAgYm9vbCBtYXRjaENvbmN1cnJlbnRseShWTSYs
IGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0
b3I8aW50LCAzMj4mIG92ZWN0b3IpOworICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIE1hdGNo
UmVzdWx0IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpOwog
CiAgICAgLy8gQ2FsbCB0aGVzZSB2ZXJzaW9ucyBvZiB0aGUgbWF0Y2ggZnVuY3Rpb25zIGlmIHlv
dSdyZSBkZXNwZXJhdGUgZm9yIHBlcmZvcm1hbmNlLgpAQCAtNzcsNiArODIsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX3N0YXRlICE9IE5vdENvbXBpbGVkOwogICAgIH0KIAorICAgIGJv
b2wgaGFzQ29kZUZvcihZYXJyOjpZYXJyQ2hhclNpemUpOworCiAgICAgdm9pZCBkZWxldGVDb2Rl
KCk7CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC0xMzIsNiArMTM5LDcgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX3J0TWF0Y2hDYWxsQ291bnQ7CiAgICAgdW5zaWduZWQgbV9y
dE1hdGNoRm91bmRDb3VudDsKICNlbmRpZgorICAgIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsK
IAogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrIG1fcmVnRXhw
SklUQ29kZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJ
bmxpbmVzLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsMjAgKzY3LDI3IEBAIHBy
aXZhdGU6CiB9OwogI2VuZGlmIC8vIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4KIAotQUxXQVlT
X0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZNJiB2bSwgWWFycjo6WWFy
ckNoYXJTaXplIGNoYXJTaXplKQorQUxXQVlTX0lOTElORSBib29sIFJlZ0V4cDo6aGFzQ29kZUZv
cihZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7CiAgICAgaWYgKGhhc0NvZGUoKSkgewog
I2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gSklUQ29kZSkKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAo
KGNoYXJTaXplID09IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczhCaXRDb2Rl
KCkpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhh
czE2Qml0Q29kZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRp
ZgogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBSZWdF
eHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6
ZSkKK3sKKyAgICBpZiAoaGFzQ29kZUZvcihjaGFyU2l6ZSkpCisgICAgICAgIHJldHVybjsKIAog
ICAgIGNvbXBpbGUoJnZtLCBjaGFyU2l6ZSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMTk3ODY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBj
cmVhdGVSZWdFeHBNYXRjaAogICAgIAogICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVz
dWx0czsKICAgICBpbnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoSW5saW5lKHZtLCBpbnB1dFZh
bHVlLCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOworICAgIEFTU0VSVChwb3NpdGlv
biA9PSBzdWJwYXR0ZXJuUmVzdWx0c1swXSk7CiAgICAgaWYgKHBvc2l0aW9uID09IC0xKSB7CiAg
ICAgICAgIHJlc3VsdCA9IE1hdGNoUmVzdWx0OjpmYWlsZWQoKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273590</attachid>
            <date>2016-03-10 11:51:15 -0800</date>
            <delta_ts>2016-03-10 12:51:44 -0800</delta_ts>
            <desc>OMG this is so insane</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>46910</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc4NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2
MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3
QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAv
KiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEw
QkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBD
NzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhG
NjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGgg
PSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMz
NUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAogCQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovLAogCQkJCUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOEND
MDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBG
RDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYg
Kzc0NDgsNyBAQAogCQkJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEg
LyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFp
bmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEuaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKICNpbmNsdWRlICJERkdUcmFuc2l0aW9u
LmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNz
RGF0YS5oIgpAQCAtMjE5LDIwICsyMjAsNiBAQCBzdHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsKICAg
ICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hlZEF0KGZvcm1hdCwgbWFjaGlu
ZUxvY2FsKTsgfQogfTsKIAotLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFzc2luZyBhbiBpbW1lZGlh
dGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKLS8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1t
ZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBkYXRhIHN0
cnVjdHVyZSAtIAotLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlkZW50aWZpZXIp
IGZyb20gYSBOb2RlKi4KLXN0cnVjdCBPcEluZm8gewotICAgIE9wSW5mbygpIDogbV92YWx1ZSgw
KSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8odWludDMy
X3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0j
aWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQotICAgIGV4cGxpY2l0IE9wSW5mbyhzaXpl
X3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0j
ZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICB1aW50cHRyX3QgbV92YWx1ZTsK
LX07Ci0KIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBv
cGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3
NCw3ICsxOTc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgTmFtZWRQcm9w
ZXJ0eVBMb2M6IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9
PSBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9w
cm9wZXJ0aWVzLmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRl
c2NyaXB0b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShi
bG9jaywgbG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRl
cy5jb250YWlucyh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW4uYXBwZW5kKG1fYm90dG9tKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRv
bVByb3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGEubV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2Jv
dHRvbSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDMyICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKLXZvaWQgUGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQoImlkIiwgbV9pZGVudGlmaWVyTnVtYmVyKTsK
LX0KLQogdm9pZCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCJbIiwgbGlzdER1bXAobV9wcm9wZXJ0aWVzKSwg
Il0iKTsKIH0KIAotZmxvYXQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6b25lV2F5U2ltaWxh
cml0eVNjb3JlKAotICAgIGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBj
b25zdAotewotICAgIHVuc2lnbmVkIG51bUhpdHMgPSAwOwotICAgIGZvciAoUGhhbnRvbVByb3Bl
cnR5VmFsdWUgdmFsdWUgOiBtX3Byb3BlcnRpZXMpIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcHJv
cGVydGllcy5jb250YWlucyh2YWx1ZSkpCi0gICAgICAgICAgICBudW1IaXRzKys7Ci0gICAgfQot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obnVtSGl0cykgLyBzdGF0aWNfY2FzdDxmbG9h
dD4obV9wcm9wZXJ0aWVzLnNpemUoKSk7Ci19Ci0KLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGE6OnNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBv
dGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjptaW4ob25lV2F5U2ltaWxhcml0eVNjb3Jl
KG90aGVyKSwgb3RoZXIub25lV2F5U2ltaWxhcml0eVNjb3JlKCp0aGlzKSk7Ci19Ci0KIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1Byb21vdGVk
SGVhcExvY2F0aW9uLmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTM1LDM4ICszNiwxMSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0cnVjdCBQaGFudG9tUHJv
cGVydHlWYWx1ZSB7Ci0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUoKQotICAgICAgICA6IG1faWRl
bnRpZmllck51bWJlcihVSU5UX01BWCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFBoYW50b21Q
cm9wZXJ0eVZhbHVlKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCi0gICAgICAgIDogbV9pZGVu
dGlmaWVyTnVtYmVyKGlkZW50aWZpZXJOdW1iZXIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB1
bnNpZ25lZCBtX2lkZW50aWZpZXJOdW1iZXI7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFBoYW50b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2lkZW50aWZpZXJOdW1iZXIgPT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAg
IH0KLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLX07Ci0KIHN0cnVj
dCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhIHsKICAgICAvLyBEZXRlcm1pbmVzIHRoZSBtZWFu
aW5nIG9mIHRoZSBwYXNzZWQgbm9kZXMuCi0gICAgVmVjdG9yPFBoYW50b21Qcm9wZXJ0eVZhbHVl
PiBtX3Byb3BlcnRpZXM7CisgICAgVmVjdG9yPFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yPiBt
X3Byb3BlcnRpZXM7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0g
ICAgCi0gICAgLy8gVGhlIGZyYWN0aW9uIG9mIG15IHByb3BlcnRpZXMgdGhhdCB0aGUgb3RoZXIg
ZGF0YSBoYXMuCi0gICAgZmxvYXQgb25lV2F5U2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1h
dGVyaWFsaXphdGlvbkRhdGEmKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgbWluaW11bSBvZiB0
aGUgdHdvIHBvc3NpYmxlIG9uZS13YXkgc2NvcmVzLgotICAgIGZsb2F0IHNpbWlsYXJpdHlTY29y
ZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJikgY29uc3Q7CiB9OwogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZv
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdPcEluZm9faAorI2RlZmluZSBERkdP
cEluZm9faAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKERG
R19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyB0eXBl
IHVzZWQgaW4gcGFzc2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3Rv
cjsKKy8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5k
ZXggaW50byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAorLy8gYSBjb25zdGFudCBpbmRl
eCwgYXJndW1lbnQsIG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KK3N0cnVjdCBPcEluZm8g
eworICAgIE9wSW5mbygpIDogbV92YWx1ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oaW50
MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0K
KyAgICBleHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0
KQorICAgIGV4cGxpY2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisjZW5kaWYKKyAgICBleHBsaWNpdCBPcEluZm8odm9p
ZCogdmFsdWUpIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7
IH0KKyAgICB1aW50cHRyX3QgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT3BJbmZvX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAxLDYgKzE0MDEsMzcgQEAgc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhcwogICAgIHJldHVybiAwOwogfQogCitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIAorICAg
IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIHZtLCBu
dWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGlu
Z0hlYWRlcigpLCAwKTsKKyAgICAKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNy
ZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5i
dXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CisKKyAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAgaGVhZGVy
LnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7
CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAg
dm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgaGVh
ZGVyLAorICAgICAgICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogbGVuZ3RoKTsKKworICAgIC8v
IFBhcmFkb3hpY2FsbHkgdGhpcyBtYXkgYWxsb2NhdGUgYSBKU0FycmF5LiBUaGF0J3MgdG90YWxs
eSBjb29sLgorICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0
KGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAv
LyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2Zp
bGVyTG9nREZHKEV4ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmls
ZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVk
IGZyb20gaW5zaWRlIERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsOCBAQCBp
bnQ2NF90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydERvCiAKIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlZmF1bHRIYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU0NlbGwqIHZh
bHVlLCBKU0NlbGwqIHByb3RvKTsKIAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFM
OworCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RG
RyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09w
ZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikg
V1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTc0LDYgKzc0LDEwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBQcm8KICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOgogICAgICAgICBvdXQucHJp
bnQoIk5hbWVkUHJvcGVydHlQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSW5k
ZXhlZFByb3BlcnR5UExvYzoKKyAgICAgICAgb3V0LnByaW50KCJJbmRleGVkUHJvcGVydHlQTG9j
Iik7CisgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBBcmd1bWVudFBMb2M6CiAg
ICAgICAgIG91dC5wcmludCgiQXJndW1lbnRQTG9jIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCShyZXZpc2lvbiAx
OTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjUgKzI4LDQxIEBACiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKIAotI2luY2x1ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJERkdFZGdlLmgiCisj
aW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkRGR09wSW5mby5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitzdHJ1Y3QgTm9kZTsKKworLy8gUHJvbW90
ZWQgbG9jYXRpb25zIGFyZSBsaWtlIGhlYXAgbG9jYXRpb25zIGJ1dCBhcmUgbWVhbnQgdG8gYmUg
bW9yZSBwcmVjaXNlLiBBIGhlYXAgbG9jYXRpb24gaXMKKy8vIGFwcGxpY2FibGUgdG8gQ1NFIHNj
ZW5hcmlvcywgd2hlcmUgaXQgbWFrZXMgc2Vuc2UgdG8gc3BlYWsgb2YgYSBsb2NhdGlvbiB2ZXJ5
IGFic3RyYWN0bHkuIEEKKy8vIHByb21vdGVkIGhlYXAgbG9jYXRpb24gaXMgZm9yIGNhc2VzIHdo
ZXJlIHdlIHNwZWFrIG9mIGEgc3BlY2lmaWMgb2JqZWN0IGFuZCB0aGUgY29tcGlsZXIga25vd3MK
Ky8vIHRoaXMgb2JqZWN0J3MgaWRlbnRpdHkgLSBmb3IgZXhhbXBsZSwgdGhlIG9iamVjdCBhbGxv
Y2F0aW9uIGhhcyBiZWVuIGVsaW1pbmF0ZWQgYW5kIHdlIHR1cm5lZCB0aGUKKy8vIGZpZWxkcyBp
bnRvIGxvY2FsIHZhcmlhYmxlcy4gQmVjYXVzZSB0aGVzZSB0d28gY2FzZXMgaGF2ZSBzdWJ0bHkg
ZGlmZmVyZW50IG5lZWRzLCB3ZSB1c2Ugc3VidGx5CisvLyBkaWZmZXJlbnQgc3RydWN0dXJlcy4g
T25lIG9mIHRoZSByZWFsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZXMgaXMgdGhhdCBwcm9tb3Rl
ZCBsb2NhdGlvbnMgY2FuIGJlCisvLyBzcG9rZW4gb2YgdXNpbmcgZWl0aGVyIGEgZGVzY3JpcHRv
ciB3aGljaCBkb2VzIG5vdCByZWZlciB0byBhbnkgTm9kZSoncyBvciB3aXRoIGEgaGVhcCBsb2Nh
dGlvbiwKKy8vIHdoaWNoIGlzIGEgZGVzY3JpcHRvciB3aXRoIGEgTm9kZSogYmFzZS4KKwogZW51
bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgSW52YWxpZFByb21vdGVkTG9jYXRpb25LaW5k
LAogICAgIAotICAgIFN0cnVjdHVyZVBMb2MsCisgICAgQWN0aXZhdGlvblNjb3BlUExvYywKICAg
ICBBY3RpdmF0aW9uU3ltYm9sVGFibGVQTG9jLAotICAgIE5hbWVkUHJvcGVydHlQTG9jLAotICAg
IEFyZ3VtZW50UExvYywKICAgICBBcmd1bWVudENvdW50UExvYywKKyAgICBBcmd1bWVudFBMb2Ms
CiAgICAgQXJndW1lbnRzQ2FsbGVlUExvYywKLQotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2Ms
CisgICAgQ2xvc3VyZVZhclBMb2MsCiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKLSAgICBB
Y3RpdmF0aW9uU2NvcGVQTG9jLAotICAgIENsb3N1cmVWYXJQTG9jCisgICAgRnVuY3Rpb25FeGVj
dXRhYmxlUExvYywKKyAgICBJbmRleGVkUHJvcGVydHlQTG9jLAorICAgIE5hbWVkUHJvcGVydHlQ
TG9jLAorICAgIFB1YmxpY0xlbmd0aFBMb2MsCisgICAgU3RydWN0dXJlUExvYywKKyAgICBWZWN0
b3JMZW5ndGhQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3OCw2ICsyNzgsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0
aW9uKCktPmRmZ1Nob3VsZFdhdGNoKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdP
YmplY3Q6CisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBu
b2RlLT5zdHJ1Y3R1cmVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBv
bmx5IHN1cHBvcnRzIHN0cnVjdHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5
LgorICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCkgPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0FycmF5OjppbmZvKCkpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgY2VydGFpbiBpbmRl
eGluZyBzaGFwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFo
YXNBbnlBcnJheVN0b3JhZ2Uoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAg
ICAgICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICAgICAgICAgIFZBTElE
QVRFKChub2RlKSwgbm9kZS0+aXNOdW1iZXJDb25zdGFudCgpKTsKQEAgLTQ2MSwxMyArNDcyLDM5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAg
ICAgICAgICAgICAgICAgY2FzZSBQdXRIaW50OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09i
amVjdDoKICAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgS2ls
bFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgISJ1bmV4cGVjdGVkIG5vZGUgdHlwZSBpbiBDUFMiKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6
ZU5ld09iamVjdDogeworICAgICAgICAgICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3MgYXJy
YXkgbGVuZ3RocyB0byBiZSBjb25zdGFudC4gVGhpcyBjb25zdHJhaW50IG9ubHkgZXhpc3RzCisg
ICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBERkcgc3VwcG9ydCBm
b3IgYW55dGhpbmcgbW9yZSBhbmQgd2UgZG9uJ3QgbmVlZCBhbnkKKyAgICAgICAgICAgICAgICAg
ICAgLy8gb3RoZXIga2luZCBvZiBzdXBwb3J0IGZvciBub3cuCisgICAgICAgICAgICAgICAgICAg
IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBtX25vZGUtPm9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0
YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNb
aV07CisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5t
X3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFB1
YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0
aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2Up
LCBlZGdlLT5pc0ludDMyQ29uc3RhbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQz
MiBhbmQgZG91YmxlIGFycmF5cy4gVGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQK
KyAgICAgICAgICAgICAgICAgICAgLy8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQg
aW4gdGhlIERGRyByaWdodCBub3cuIFdlIHNob3VsZCBhZGQgc3VwcG9ydAorICAgICAgICAgICAg
ICAgICAgICAvLyBmb3IgdGhlc2UgaWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgorICAgICAgICAg
ICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0ludDMy
KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlKSwgIWhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCBtX2dyYXBoLm1fZml4cG9pbnRTdGF0ZSAhPSBGaXhwb2lu
dE5vdENvbnZlcmdlZCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3
ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzE2LDMyICszNzE2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihwdWJsaWNMZW5ndGgsIGJ1dHRlcmZseSwgbV9o
ZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIo
dmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChoYXNEb3VibGUobV9ub2RlLT5pbmRleGlu
Z1R5cGUoKSkpIHsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdERvbmUgPSBtX291
dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsKLSAgICAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50ZXIgPSBtX291dC5hbmNob3Io
YnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAg
ICAgICAgIG1fb3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExvb3ApLCB1
bnN1cmUoaW5pdERvbmUpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMQmFz
aWNCbG9jayBpbml0TGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUp
OwotICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwg
b3JpZ2luYWxJbmRleCk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHBvaW50ZXIgPSBtX291dC5w
aGkobV9vdXQuaW50UHRyLCBvcmlnaW5hbFBvaW50ZXIpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKLSAgICAgICAgICAgICAgICAg
ICAgVHlwZWRQb2ludGVyKG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRl
eCgpLCBwb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTFZhbHVl
IG5leHRJbmRleCA9IG1fb3V0LnN1YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOwotICAgICAgICAg
ICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5k
ZXgpKTsKLSAgICAgICAgICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKHBvaW50ZXIsIG1f
b3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRlciwgbV9vdXQuaW50UHRyRWlnaHQpKSk7Ci0gICAg
ICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBtX291dC5ub3Ra
ZXJvMzIobmV4dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW5pdERvbmUs
IGluaXRMYXN0TmV4dCk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGluaXRpYWxpemVB
cnJheUVsZW1lbnRzKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCksIHZlY3Rvckxlbmd0aCwgYnV0dGVy
Zmx5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3Vs
dCA9IG1fb3V0LmFuY2hvcihvYmplY3QpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwpAQCAtNjI4NiwxMSArNjI2MiwyMSBAQCBwcml2YXRlOgogICAgICAgICAvLyBMb3dl
ciB0aGUgdmFsdWVzIGZpcnN0LCB0byBhdm9pZCBjcmVhdGluZyB2YWx1ZXMgaW5zaWRlIGEgY29u
dHJvbCBmbG93IGRpYW1vbmQuCiAgICAgICAgIAogICAgICAgICBWZWN0b3I8TFZhbHVlLCA4PiB2
YWx1ZXM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGll
cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpKSk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
RWRnZSBlZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKTsKKyAgICAgICAg
ICAgIHN3aXRjaCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICBj
YXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6
CisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dJbnQzMihlZGdlKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHZh
bHVlcy5hcHBlbmQobG93SlNWYWx1ZShlZGdlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cnVjdHVy
ZVNldCYgc2V0ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKLSAgICAgICAgCisKICAgICAgICAg
VmVjdG9yPExCYXNpY0Jsb2NrLCAxPiBibG9ja3Moc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IHNldC5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBibG9ja3NbaV0gPSBt
X291dC5uZXdCbG9jaygpOwpAQCAtNjMxNSwyMSArNjMwMSw0OSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgTFZhbHVlIG9iamVjdDsKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
IHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgaGFz
SW5kZXhpbmdIZWFkZXIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgICAg
ICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6
ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgICAgIE1hcmtlZEFs
bG9jYXRvciogYWxsb2NhdG9yID0gJnZtKCkuaGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0
RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisKKyAgICAgICAgICAgICAgICBib29sIGhhc0lu
ZGV4aW5nSGVhZGVyID0gSlNDOjpoYXNJbmRleGluZ0hlYWRlcihzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleGluZ0hlYWRlclNpemUgPSAw
OworICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9IG1f
b3V0LmludFB0clplcm87CisgICAgICAgICAgICAgICAgTFZhbHVlIHZlY3Rvckxlbmd0aCA9IG1f
b3V0LmludDMyWmVybzsKKyAgICAgICAgICAgICAgICBMVmFsdWUgcHVibGljTGVuZ3RoID0gbV9v
dXQuaW50MzJaZXJvOworICAgICAgICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgewor
ICAgICAgICAgICAgICAgICAgICBpbmRleGluZ0hlYWRlclNpemUgPSBzaXplb2YoSW5kZXhpbmdI
ZWFkZXIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJv
cGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZlY3Rvckxl
bmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gdmFs
dWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
b3V0Lm11bChtX291dC56ZXJvRXh0UHRyKHZlY3Rvckxlbmd0aCksIG1fb3V0LmludFB0ckVpZ2h0
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBMVmFsdWUgYnV0dGVyZmx5
U2l6ZSA9IG1fb3V0LmFkZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
KiBzaXplb2YoSlNWYWx1ZSkgKyBpbmRleGluZ0hlYWRlclNpemUpLAorICAgICAgICAgICAgICAg
ICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIExWYWx1ZSBlbmRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUJhc2ljU3Rv
cmFnZUFuZEdldEVuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpKSwKLSAgICAgICAg
ICAgICAgICAgICAgc2xvd1BhdGgpOwotICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IExWYWx1ZSBlbmRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUJhc2ljU3RvcmFnZUFuZEdldEVuZChidXR0
ZXJmbHlTaXplLCBzbG93UGF0aCk7CisKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRl
cmZseVZhbHVlID0gbV9vdXQuYWRkKAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgZW5kT2ZTdG9yYWdlKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuc3ViKGVuZE9mU3RvcmFnZSwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0
ZXMpLAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhp
bmdIZWFkZXIpIC0gaW5kZXhpbmdIZWFkZXJTaXplKSk7CisKKyAgICAgICAgICAgICAgICBtX291
dC5zdG9yZTMyKHZlY3Rvckxlbmd0aCwgZmFzdEJ1dHRlcmZseVZhbHVlLCBtX2hlYXBzLkJ1dHRl
cmZseV92ZWN0b3JMZW5ndGgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExW
YWx1ZSBmYXN0T2JqZWN0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdCgKICAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yKSwgc3RydWN0dXJlLCBmYXN0QnV0dGVyZmx5
VmFsdWUsIHNsb3dQYXRoKTsKQEAgLTYzNDAsMTIgKzYzNTQsMjQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29u
dGludWF0aW9uKTsKIAotICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93T2JqZWN0VmFsdWUgPSBs
YXp5U2xvd1BhdGgoCi0gICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0
aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5
LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd09iamVjdFZhbHVlOworICAgICAg
ICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICAgICAgICAgICAgICBz
bG93T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICBb
PV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93
UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9y
TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGly
ZWN0R1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlY3Rvckxl
bmd0aCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2xv
d09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgWz1d
IChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1Bh
dGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVh
dGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd09iamVjdCA9IG1fb3V0
LmFuY2hvcihzbG93T2JqZWN0VmFsdWUpOwogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dCdXR0ZXJmbHkgPSBtX291dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWRQdHIoc2xvd09iamVjdFZhbHVlLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRlcmZseSkpOwpA
QCAtNjM1Niw2ICs2MzgyLDExNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIG9iamVjdCA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RPYmplY3QsIHNs
b3dPYmplY3QpOwogICAgICAgICAgICAgICAgIGJ1dHRlcmZseSA9IG1fb3V0LnBoaShtX291dC5p
bnRQdHIsIGZhc3RCdXR0ZXJmbHksIHNsb3dCdXR0ZXJmbHkpOworCisgICAgICAgICAgICAgICAg
bV9vdXQuc3RvcmUzMihwdWJsaWNMZW5ndGgsIGZhc3RCdXR0ZXJmbHlWYWx1ZSwgbV9oZWFwcy5C
dXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKKworICAgICAgICAgICAgICAgIGluaXRpYWxpemVBcnJh
eUVsZW1lbnRzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCksIHZlY3Rvckxlbmd0aCwgYnV0dGVy
Zmx5KTsKKworICAgICAgICAgICAgICAgIEhhc2hNYXA8aW50MzJfdCwgTFZhbHVlPiBpbmRleE1h
cDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8aW50MzJfPiBpbmRpY2VzOworICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgewor
ICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9y
ID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlw
dG9yLmtpbmQoKSAhPSBJbmRleGVkUHJvcGVydHlQTG9jKQorICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaW5kZXggPSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihkZXNjcmlwdG9yLmluZm8oKSk7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGluZGV4TWFwLmFkZChpbmRleCwgdmFs
dWVzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
IHJlc3VsdCk7IC8vIER1cGxpY2F0ZXMgYXJlIGlsbGVnYWwuCisKKyAgICAgICAgICAgICAgICAg
ICAgaW5kaWNlcy5hcHBlbmQoaW5kZXgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmICghaW5kaWNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3Rk
Ojpzb3J0KGluZGljZXMuYmVnaW4oKSwgaW5kaWNlcy5lbmQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb247CisgICAg
ICAgICAgICAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaz4gYmxvY2tzV2l0aFN0b3JlcyhpbmRp
Y2VzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaz4gYmxv
Y2tzV2l0aENoZWNrcyhpbmRpY2VzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRpY2VzLnNpemUoKTsgaS0tOykg
eworICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzV2l0aENoZWNrc1tpXSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoU3RvcmVzW2ldID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGluZGV4TGFzdE5leHQgPSBtX291dC5tX25leHRCbG9jazsKKyAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGlu
ZGljZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGlu
ZGV4ID0gaW5kaWNlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGluZGV4TWFwLmdldChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX291dC5iZWxvdyhtX291dC5jb25zdEludDMyKGluZGV4KSwgcHVibGljTGVuZ3RoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN1cmUoYmxvY2tzV2l0aFN0b3Jlc1tpXSksIHVu
c3VyZShibG9ja3NXaXRoQ2hlY2tzW2ldKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGJsb2Nrc1dpdGhTdG9yZXNbaV0sIGJsb2Nrc1dpdGhDaGVja3NbaV0pOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcyB0byB0eXBlLWNoZWNrIGFuZCBj
b252ZXJ0IGl0cyBpbnB1dHMsIGJ1dCBpdCBjYW5ub3QgZG8gc28gaW4gYQorICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gd2F5IHRoYXQgdXBkYXRlcyBBSS4gVGhhdCdzIGEgYml0IGFubm95aW5n
LCBidXQgaWYgeW91IHRoaW5rIGFib3V0IGhvdworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
c2lua2luZyB3b3JrcywgaXQncyBhY3R1YWxseSBub3QgYSBiYWQgdGhpbmcuIFdlIGFyZSB2aXJ0
dWFsbHkgZ3VhcmFudGVlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGVzZSB0
eXBlIGNoZWNrcyB3aWxsIG5vdCBmYWlsLCBzaW5jZSB0aGUgdHlwZSBjaGVja3MgdGhhdCBndWFy
ZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgc3RvcmVzIHRvIHRo
ZSBhcnJheSBhcmUgc3RpbGwgc29tZXdoZXJlIGFib3ZlIHRoaXMgcG9pbnQuCisgICAgICAgICAg
ICAgICAgICAgICAgICBPdXRwdXQ6OlN0b3JlVHlwZSBzdG9yZVR5cGU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBJbmRleGVkQWJzdHJhY3RIZWFwKiBoZWFwOworICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgdGhlIHByb3ZlbiB0eXBlIGlm
IHdlIGhhZCB0aGUgRWRnZSBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dmFsdWUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTEKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwgbm9WYWx1ZSgpLCBu
dWxscHRyLCBpc05vdEludDMyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcmVUeXBlID0gU3RvcmU2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0g
Jm1faGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfRE9VQkxFX0lO
REVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IElm
IHRoZSBzb3VyY2UgaXMgVmFsdWVSZXAsIHdlIHNob3VsZCBhdm9pZCBlbWl0dGluZyBhbnkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVja3MuIFdlIGNvdWxkIGFsc28gYXZvaWQg
ZW1pdHRpbmcgY2hlY2tzIGlmIHdlIGhhZCB0aGUgRWRnZSBvZgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHRoaXMgdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTUzMTEKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMih2
YWx1ZSksIHVuc3VyZShpbnRDYXNlKSwgdW5zdXJlKGRvdWJsZUNhc2UpKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
aW50Q2FzZSwgZG91YmxlQ2FzZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayBpbnRSZXN1bHQgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X291dC5hbmNob3IobV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMih2YWx1ZSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBjb250aW51
YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUs
IG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOdW1iZXIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBkb3VibGVSZXN1bHQgPSBtX291dC5hbmNob3IodW5i
b3hEb3VibGUodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG1fb3V0LnBoaShEb3VibGUsIGludFJlc3VsdCwgZG91YmxlUmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBTdG9yZURvdWJsZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZERvdWJsZVByb3Bl
cnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VP
VVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBl
ID0gU3RvcmU2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMu
aW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJJbnZhbGlkIGluZGV4
aW5nIHR5cGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuc3RvcmUodmFsdWUsIG1fb3V0LmFkZHJlc3MoYnV0dGVyZmx5LCBo
ZWFwLT5hdChpbmRleCkpLCBzdG9yZVR5cGUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoYmxvY2tzV2l0
aFN0b3Jlc1tpIC0gMV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGJsb2Nrc1dpdGhDaGVja3NbaSAtIDFdLCBibG9ja3NXaXRoU3RvcmVzW2kgLSAxXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGluZGV4TGFzdE5leHQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgZWFzeSBj
YXNlIHdoZXJlIHdlIGNhbiBkbyBhIG9uZS1zaG90IGFsbG9jYXRpb24sIHdlIHNpbXBseSBhbGxv
Y2F0ZSB0aGUKICAgICAgICAgICAgICAgICAvLyBvYmplY3QgdG8gZGlyZWN0bHkgaGF2ZSB0aGUg
ZGVzaXJlZCBzdHJ1Y3R1cmUuCkBAIC02MzY1LDEyICs2NTAyLDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGZvciAoUHJvcGVydHlNYXBFbnRyeSBlbnRyeSA6IHN0cnVj
dHVyZS0+Z2V0UHJvcGVydGllc0NvbmN1cnJlbnRseSgpKSB7CiAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVlID0gZGF0YS5tX3Byb3BlcnRp
ZXNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClbdmFs
dWUubV9pZGVudGlmaWVyTnVtYmVyXSAhPSBlbnRyeS5rZXkpCisgICAgICAgICAgICAgICAgICAg
IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGll
c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iua2luZCgpICE9IE5hbWVk
UHJvcGVydHlQTG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCld
ICE9IGVudHJ5LmtleSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBpc0lubGlu
ZU9mZnNldChlbnRyeS5vZmZzZXQpID8gb2JqZWN0IDogYnV0dGVyZmx5OwotICAgICAgICAgICAg
ICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgdmFsdWUubV9pZGVudGlmaWVy
TnVtYmVyLCBlbnRyeS5vZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5
KHZhbHVlc1tpXSwgYmFzZSwgZGVzY3JpcHRvci5pbmZvKCksIGVudHJ5Lm9mZnNldCk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
QEAgLTY0MzUsOSArNjU3NCwxMSBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgYWN0aXZhdGlv
biA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOwogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChkYXRhLm1fcHJvcGVydGllcy5zaXplKCkgPT0gdGFibGUtPnNj
b3BlU2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9w
ZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlc1tp
XSwKLSAgICAgICAgICAgICAgICBhY3RpdmF0aW9uLAotICAgICAgICAgICAgICAgIG1faGVhcHMu
SlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGF0YS5tX3Byb3BlcnRpZXNbaV0ubV9pZGVu
dGlmaWVyTnVtYmVyXSk7CisgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBk
ZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICBBU1NFUlQoZGVz
Y3JpcHRvci5raW5kKCkgPT0gQ0xvc3VyZVZhclBMb2MpOworICAgICAgICAgICAgbV9vdXQuc3Rv
cmU2NCgKKyAgICAgICAgICAgICAgICB2YWx1ZXNbaV0sIGFjdGl2YXRpb24sCisgICAgICAgICAg
ICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlc1tkZXNjcmlwdG9yLmlu
Zm8oKV0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsK
QEAgLTY0NDYsNyArNjU4Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmb3IgKGF1dG8gaXRl
ciA9IHRhYmxlLT5iZWdpbihsb2NrZXIpLCBlbmQgPSB0YWJsZS0+ZW5kKGxvY2tlcik7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29w
ZU9mZnNldCgpLm9mZnNldCgpID09IGRhdGEubV9wcm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51
bWJlcikgeworICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBk
ZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9PSBDbG9zdXJlVmFyUExvYyk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09IGRlc2NyaXB0
b3IuaW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNjk3
MCw2ICs3MTEzLDM5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMoSW5kZXhpbmdUeXBl
IGluZGV4aW5nVHlwZSwgTFZhbHVlIHZlY3Rvckxlbmd0aCwgTFZhbHVlIGJ1dHRlcmZseSkKKyAg
ICB7CisgICAgICAgIGlmICghaGFzRG91YmxlKGluZGV4aW5nVHlwZSkpIHsKKyAgICAgICAgICAg
IC8vIFRoZSBHQyBhbHJlYWR5IGluaXRpYWxpemVkIGV2ZXJ5dGhpbmcgdG8gSlNWYWx1ZSgpIGZv
ciB1cy4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERvdWJs
ZXMgbXVzdCBiZSBpbml0aWFsaXplZCB0byBQTmFOLgorICAgICAgICBMQmFzaWNCbG9jayBpbml0
TG9vcCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGluaXREb25lID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdp
bmFsSW5kZXggPSBtX291dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgb3JpZ2luYWxQb2ludGVyID0gbV9vdXQuYW5jaG9yKGJ1dHRlcmZseSk7CisgICAgICAg
IG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgp
LCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKKyAgICAgICAgCisgICAgICAg
IExCYXNpY0Jsb2NrIGluaXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0
RG9uZSk7CisgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgb3Jp
Z2luYWxJbmRleCk7CisgICAgICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0Lmlu
dFB0ciwgb3JpZ2luYWxQb2ludGVyKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LnN0b3JlNjQo
CisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFO
KSksCisgICAgICAgICAgICBUeXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVy
dGllcy5hdEFueUluZGV4KCksIHBvaW50ZXIpKTsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSBu
ZXh0SW5kZXggPSBtX291dC5zdWIoaW5kZXgsIG1fb3V0LmludDMyT25lKTsKKyAgICAgICAgbV9v
dXQuYWRkSW5jb21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRleCkpOworICAg
ICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKHBvaW50ZXIsIG1fb3V0LmFuY2hvcihtX291dC5h
ZGQocG9pbnRlciwgbV9vdXQuaW50UHRyRWlnaHQpKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgK
KyAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3Ap
LCB1bnN1cmUoaW5pdERvbmUpKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlu
aXREb25lLCBpbml0TGFzdE5leHQpOworICAgIH0KICAgICAKICAgICBMVmFsdWUgYWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UoTFZhbHVlIG9iamVjdCwgU3RydWN0dXJlKiBwcmV2aW91c1N0cnVjdHVy
ZSkKICAgICB7CkBAIC05MjU3LDcgKzk0MzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25aZXJvNjQoanNWYWx1ZSwg
bV90YWdUeXBlTnVtYmVyKTsKICAgICB9Ci0gICAgCisKICAgICBMVmFsdWUgdW5ib3hEb3VibGUo
TFZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuYml0Q2FzdChtX291
dC5hZGQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKSwgbV9vdXQuZG91YmxlVHlwZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDE5ICs0MSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzo6REZHOwogCi1leHRlcm4gIkMiIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgCi0g
ICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKLSAgICAgICAgdm0s
IG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIEluZGV4
aW5nSGVhZGVyKCksIDApOwotICAgIAotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU0ZpbmFsT2Jq
ZWN0OjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwotICAgIHJlc3VsdC0+YnV0
dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEV4aXRUaW1l
T2JqZWN0TWF0ZXJpYWxpemF0aW9uKiBtYXRlcmlhbGl6YXRpb24sCiAgICAgRW5jb2RlZEpTVmFs
dWUqIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUqIHZhbHVlcykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsOCArMzcsNiBAQCBjbGFzcyBMYXp5U2xvd1BhdGg7CiAKIGV4dGVybiAiQyIgewogCi1K
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7Ci0KIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKAogICAgIEV4ZWNTdGF0ZSosIEV4aXRU
aW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiwgRW5jb2RlZEpTVmFsdWUqKSBXVEZfSU5URVJOQUw7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNp
b24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsMTAgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMg
SlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCisgICAgLy8gVGhp
cyBpcyBhIHN1cGVyIGRhbmdlcm91cyBtZXRob2QgZm9yIEpJVHMuIFNvbWV0aW1lcyB0aGUgSklU
cyB3aWxsIHdhbnQgdG8gY3JlYXRlIGVpdGhlciBhCisgICAgLy8gSlNGaW5hbE9iamVjdCBvciBh
IEpTQXJyYXkuIFRoaXMgaXMgdGhlIG1ldGhvZCB0aGF0IHdpbGwgZG8gdGhhdC4KKyAgICBKU09i
amVjdCogY3JlYXRlUmF3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEJ1dHRlcmZseSogPSBudWxscHRyKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5
VmlzaXRvciYsIENvcHlUb2tlbik7CkBAIC0xMDM0LDYgKzEwMzgsMjAgQEAgcHJpdmF0ZToKIAog
SlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2
YXRlRnVuY0luc3RhbmNlT2YoRXhlY1N0YXRlKik7CiAKK2lubGluZSBKU09iamVjdCogSlNPYmpl
Y3Q6OmNyZWF0ZVJhd09iamVjdCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKK3sKKyAgICBKU09iamVjdCogZmluYWxPYmpl
Y3QgPSBuZXcgKAorICAgICAgICBOb3ROdWxsLCAKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpTRmlu
YWxPYmplY3Q+KAorICAgICAgICAgICAgKmV4ZWMtPmhlYXAoKSwKKyAgICAgICAgICAgIGFsbG9j
YXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgKQorICAgICkg
SlNPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgcmV0dXJuIGZpbmFsT2JqZWN0OworfQor
CiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlKAogICAgIEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQog
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZpc2lv
biAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjIsNiArMjYyLDggQEAgUmVnRXhwKiBSZWdFeHA6OmNyZWF0ZShW
TSYgdm0sIGNvbnN0IFN0cgogCiB2b2lkIFJlZ0V4cDo6Y29tcGlsZShWTSogdm0sIFlhcnI6Ollh
cnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlciht
X2xvY2spOworICAgIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3Ry
aW5nLCBtX2ZsYWdzLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiAgICAgaWYgKG1fY29uc3RydWN0
aW9uRXJyb3IpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5
OSw4ICszMDEsMjIgQEAgaW50IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcmIAog
ICAgIHJldHVybiBtYXRjaElubGluZSh2bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOwogfQog
Citib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoCisgICAgVk0mIHZtLCBjb25zdCBTdHJp
bmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50LCAz
Mj4mIG92ZWN0b3IpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KworICAgIGlmICghaGFzQ29kZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpD
aGFyMTYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwb3NpdGlvbiA9IG1hdGNoKHZt
LCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQg
UmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJT
aXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAg
ICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZt
X2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzQwLDYgKzM1Niw4IEBAIE1h
dGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCAKIAogdm9pZCBSZWdFeHA6OmRl
bGV0ZUNvZGUoKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgCiAgICAgaWYgKCFoYXNDb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRlID0g
Tm90Q29tcGlsZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAko
cmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYgUmVnRXhwX2gKICNk
ZWZpbmUgUmVnRXhwX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hdGNoUmVzdWx0LmgiCiAjaW5j
bHVkZSAiUmVnRXhwS2V5LmgiCkBAIC02NCw2ICs2NSwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
Y2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25FcnJvcjsg
fQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7CisKKyAgICAv
LyBSZXR1cm5zIGZhbHNlIGlmIHdlIGNvdWxkbid0IHJ1biB0aGUgcmVndWxhciBleHByZXNzaW9u
IGZvciBhbnkgcmVhc29uLgorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0mLCBjb25zdCBT
dHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgVmVjdG9yPGludCwg
MzI+JiBvdmVjdG9yKTsKKyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBNYXRjaFJlc3VsdCBt
YXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKIAogICAgIC8v
IENhbGwgdGhlc2UgdmVyc2lvbnMgb2YgdGhlIG1hdGNoIGZ1bmN0aW9ucyBpZiB5b3UncmUgZGVz
cGVyYXRlIGZvciBwZXJmb3JtYW5jZS4KQEAgLTc3LDYgKzgyLDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9zdGF0ZSAhPSBOb3RDb21waWxlZDsKICAgICB9CiAKKyAgICBib29sIGhhc0Nv
ZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsKKwogICAgIHZvaWQgZGVsZXRlQ29kZSgpOwogCiAj
aWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtMTMyLDYgKzEzOSw3IEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9ydE1hdGNoQ2FsbENvdW50OwogICAgIHVuc2lnbmVkIG1fcnRNYXRjaEZv
dW5kQ291bnQ7CiAjZW5kaWYKKyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CiAKICNpZiBF
TkFCTEUoWUFSUl9KSVQpCiAgICAgWWFycjo6WWFyckNvZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5o
CShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDIwICs2NywyNyBAQCBwcml2YXRlOgog
fTsKICNlbmRpZiAvLyBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOCiAKLUFMV0FZU19JTkxJTkUg
dm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6
ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc0NvZGVGb3IoWWFycjo6
WWFyckNoYXJTaXplIGNoYXJTaXplKQogewogICAgIGlmIChoYXNDb2RlKCkpIHsKICNpZiBFTkFC
TEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6
ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZSgpKSkKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAo
KGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENv
ZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNl
bHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21w
aWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit7Cisg
ICAgaWYgKGhhc0NvZGVGb3IoY2hhclNpemUpKQorICAgICAgICByZXR1cm47CiAKICAgICBjb21w
aWxlKCZ2bSwgY2hhclNpemUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVn
RXhwTWF0Y2gKICAgICAKICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CiAg
ICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGluZSh2bSwgaW5wdXRWYWx1ZSwgc3Rh
cnRPZmZzZXQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICBBU1NFUlQocG9zaXRpb24gPT0gc3Vi
cGF0dGVyblJlc3VsdHNbMF0pOwogICAgIGlmIChwb3NpdGlvbiA9PSAtMSkgewogICAgICAgICBy
ZXN1bHQgPSBNYXRjaFJlc3VsdDo6ZmFpbGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273602</attachid>
            <date>2016-03-10 12:51:44 -0800</date>
            <delta_ts>2016-03-10 14:12:20 -0800</delta_ts>
            <desc>I thnk that MaterializeNewObject is done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>59484</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc4NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2
MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3
QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAv
KiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEw
QkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBD
NzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhG
NjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGgg
PSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMz
NUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAogCQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovLAogCQkJCUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOEND
MDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBG
RDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYg
Kzc0NDgsNyBAQAogCQkJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEg
LyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFp
bmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEuaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKICNpbmNsdWRlICJERkdUcmFuc2l0aW9u
LmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNz
RGF0YS5oIgpAQCAtMjE5LDIwICsyMjAsNiBAQCBzdHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsKICAg
ICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hlZEF0KGZvcm1hdCwgbWFjaGlu
ZUxvY2FsKTsgfQogfTsKIAotLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFzc2luZyBhbiBpbW1lZGlh
dGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKLS8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1t
ZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBkYXRhIHN0
cnVjdHVyZSAtIAotLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlkZW50aWZpZXIp
IGZyb20gYSBOb2RlKi4KLXN0cnVjdCBPcEluZm8gewotICAgIE9wSW5mbygpIDogbV92YWx1ZSgw
KSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8odWludDMy
X3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0j
aWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQotICAgIGV4cGxpY2l0IE9wSW5mbyhzaXpl
X3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0j
ZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICB1aW50cHRyX3QgbV92YWx1ZTsK
LX07Ci0KIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBv
cGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3
NCw3ICsxOTc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgTmFtZWRQcm9w
ZXJ0eVBMb2M6IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9
PSBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9w
cm9wZXJ0aWVzLmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRl
c2NyaXB0b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShi
bG9jaywgbG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRl
cy5jb250YWlucyh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW4uYXBwZW5kKG1fYm90dG9tKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRv
bVByb3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGEubV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2Jv
dHRvbSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDMyICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKLXZvaWQgUGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQoImlkIiwgbV9pZGVudGlmaWVyTnVtYmVyKTsK
LX0KLQogdm9pZCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCJbIiwgbGlzdER1bXAobV9wcm9wZXJ0aWVzKSwg
Il0iKTsKIH0KIAotZmxvYXQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6b25lV2F5U2ltaWxh
cml0eVNjb3JlKAotICAgIGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBj
b25zdAotewotICAgIHVuc2lnbmVkIG51bUhpdHMgPSAwOwotICAgIGZvciAoUGhhbnRvbVByb3Bl
cnR5VmFsdWUgdmFsdWUgOiBtX3Byb3BlcnRpZXMpIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcHJv
cGVydGllcy5jb250YWlucyh2YWx1ZSkpCi0gICAgICAgICAgICBudW1IaXRzKys7Ci0gICAgfQot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obnVtSGl0cykgLyBzdGF0aWNfY2FzdDxmbG9h
dD4obV9wcm9wZXJ0aWVzLnNpemUoKSk7Ci19Ci0KLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGE6OnNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBv
dGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjptaW4ob25lV2F5U2ltaWxhcml0eVNjb3Jl
KG90aGVyKSwgb3RoZXIub25lV2F5U2ltaWxhcml0eVNjb3JlKCp0aGlzKSk7Ci19Ci0KIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1Byb21vdGVk
SGVhcExvY2F0aW9uLmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTM1LDM4ICszNiwxMSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0cnVjdCBQaGFudG9tUHJv
cGVydHlWYWx1ZSB7Ci0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUoKQotICAgICAgICA6IG1faWRl
bnRpZmllck51bWJlcihVSU5UX01BWCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFBoYW50b21Q
cm9wZXJ0eVZhbHVlKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCi0gICAgICAgIDogbV9pZGVu
dGlmaWVyTnVtYmVyKGlkZW50aWZpZXJOdW1iZXIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB1
bnNpZ25lZCBtX2lkZW50aWZpZXJOdW1iZXI7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFBoYW50b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2lkZW50aWZpZXJOdW1iZXIgPT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAg
IH0KLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLX07Ci0KIHN0cnVj
dCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhIHsKICAgICAvLyBEZXRlcm1pbmVzIHRoZSBtZWFu
aW5nIG9mIHRoZSBwYXNzZWQgbm9kZXMuCi0gICAgVmVjdG9yPFBoYW50b21Qcm9wZXJ0eVZhbHVl
PiBtX3Byb3BlcnRpZXM7CisgICAgVmVjdG9yPFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yPiBt
X3Byb3BlcnRpZXM7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0g
ICAgCi0gICAgLy8gVGhlIGZyYWN0aW9uIG9mIG15IHByb3BlcnRpZXMgdGhhdCB0aGUgb3RoZXIg
ZGF0YSBoYXMuCi0gICAgZmxvYXQgb25lV2F5U2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1h
dGVyaWFsaXphdGlvbkRhdGEmKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgbWluaW11bSBvZiB0
aGUgdHdvIHBvc3NpYmxlIG9uZS13YXkgc2NvcmVzLgotICAgIGZsb2F0IHNpbWlsYXJpdHlTY29y
ZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJikgY29uc3Q7CiB9OwogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZv
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdPcEluZm9faAorI2RlZmluZSBERkdP
cEluZm9faAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKERG
R19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyB0eXBl
IHVzZWQgaW4gcGFzc2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3Rv
cjsKKy8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5k
ZXggaW50byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAorLy8gYSBjb25zdGFudCBpbmRl
eCwgYXJndW1lbnQsIG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KK3N0cnVjdCBPcEluZm8g
eworICAgIE9wSW5mbygpIDogbV92YWx1ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oaW50
MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0K
KyAgICBleHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0
KQorICAgIGV4cGxpY2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisjZW5kaWYKKyAgICBleHBsaWNpdCBPcEluZm8odm9p
ZCogdmFsdWUpIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7
IH0KKyAgICB1aW50cHRyX3QgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT3BJbmZvX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAxLDYgKzE0MDEsNTkgQEAgc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhcwogICAgIHJldHVybiAwOwogfQogCitjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCkgV1RGX0lOVEVSTkFMCit7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7CisKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsKKyAgICBpZiAoc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0luZGV4aW5nSGVhZGVyKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCkpKSB7CisgICAgICAgIEluZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICAgICAgaGVh
ZGVyLnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAgICAgICBoZWFkZXIuc2V0UHVibGljTGVu
Z3RoKDApOworICAgICAgICAKKyAgICAgICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUo
CisgICAgICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpLAorICAgICAgICAgICAgaGFzSW5kZXhpbmdIZWFkZXIoc3RydWN0dXJlLT5pbmRleGluZ1R5
cGUoKSksIGhlYWRlciwgbGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGJ1dHRlcmZseSA9IG51bGxwdHI7CisKKyAgICBKU09iamVjdCogcmVzdWx0
ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7
CisgICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBp
cyBpbiB0by1zcGFjZS4KKyAgICByZXR1bnIgcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIAorICAgIEJ1dHRlcmZs
eSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIHZtLCBudWxscHRyLCAw
LCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigp
LCAwKTsKKyAgICAKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09i
amVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0ZXJmbHko
KTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0
V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7CisKKyAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAgaGVhZGVyLnNldFZlY3Rv
ckxlbmd0aChsZW5ndGgpOworICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7CisgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgdm0sIG51bGxw
dHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgaGVhZGVyLAorICAg
ICAgICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogbGVuZ3RoKTsKKworICAgIC8vIFBhcmFkb3hp
Y2FsbHkgdGhpcyBtYXkgYWxsb2NhdGUgYSBKU0FycmF5LiBUaGF0J3MgdG90YWxseSBjb29sLgor
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMsIHN0
cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUg
dGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nREZH
KEV4ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmlsZXJMb2coKS0+
cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVkIGZyb20gaW5z
aWRlIERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsMTAgQEAgaW50NjRfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnREbwogCiBzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNDZWxsKiB2YWx1ZSwgSlND
ZWxsKiBwcm90byk7CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3Ro
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCkgV1RGX0lOVEVSTkFMOwor
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhF
eGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09wZXJh
dGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikgV1RG
X0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhl
YXBMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTc0LDYgKzc0LDEwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBQcm8KICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOgogICAgICAgICBvdXQucHJpbnQo
Ik5hbWVkUHJvcGVydHlQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSW5kZXhl
ZFByb3BlcnR5UExvYzoKKyAgICAgICAgb3V0LnByaW50KCJJbmRleGVkUHJvcGVydHlQTG9jIik7
CisgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBBcmd1bWVudFBMb2M6CiAgICAg
ICAgIG91dC5wcmludCgiQXJndW1lbnRQTG9jIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCShyZXZpc2lvbiAxOTc4
NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjUgKzI4LDQxIEBACiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKIAotI2luY2x1ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJERkdFZGdlLmgiCisjaW5j
bHVkZSAiREZHTm9kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkRGR09wSW5mby5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitzdHJ1Y3QgTm9kZTsKKworLy8gUHJvbW90ZWQg
bG9jYXRpb25zIGFyZSBsaWtlIGhlYXAgbG9jYXRpb25zIGJ1dCBhcmUgbWVhbnQgdG8gYmUgbW9y
ZSBwcmVjaXNlLiBBIGhlYXAgbG9jYXRpb24gaXMKKy8vIGFwcGxpY2FibGUgdG8gQ1NFIHNjZW5h
cmlvcywgd2hlcmUgaXQgbWFrZXMgc2Vuc2UgdG8gc3BlYWsgb2YgYSBsb2NhdGlvbiB2ZXJ5IGFi
c3RyYWN0bHkuIEEKKy8vIHByb21vdGVkIGhlYXAgbG9jYXRpb24gaXMgZm9yIGNhc2VzIHdoZXJl
IHdlIHNwZWFrIG9mIGEgc3BlY2lmaWMgb2JqZWN0IGFuZCB0aGUgY29tcGlsZXIga25vd3MKKy8v
IHRoaXMgb2JqZWN0J3MgaWRlbnRpdHkgLSBmb3IgZXhhbXBsZSwgdGhlIG9iamVjdCBhbGxvY2F0
aW9uIGhhcyBiZWVuIGVsaW1pbmF0ZWQgYW5kIHdlIHR1cm5lZCB0aGUKKy8vIGZpZWxkcyBpbnRv
IGxvY2FsIHZhcmlhYmxlcy4gQmVjYXVzZSB0aGVzZSB0d28gY2FzZXMgaGF2ZSBzdWJ0bHkgZGlm
ZmVyZW50IG5lZWRzLCB3ZSB1c2Ugc3VidGx5CisvLyBkaWZmZXJlbnQgc3RydWN0dXJlcy4gT25l
IG9mIHRoZSByZWFsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZXMgaXMgdGhhdCBwcm9tb3RlZCBs
b2NhdGlvbnMgY2FuIGJlCisvLyBzcG9rZW4gb2YgdXNpbmcgZWl0aGVyIGEgZGVzY3JpcHRvciB3
aGljaCBkb2VzIG5vdCByZWZlciB0byBhbnkgTm9kZSoncyBvciB3aXRoIGEgaGVhcCBsb2NhdGlv
biwKKy8vIHdoaWNoIGlzIGEgZGVzY3JpcHRvciB3aXRoIGEgTm9kZSogYmFzZS4KKwogZW51bSBQ
cm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgSW52YWxpZFByb21vdGVkTG9jYXRpb25LaW5kLAog
ICAgIAotICAgIFN0cnVjdHVyZVBMb2MsCisgICAgQWN0aXZhdGlvblNjb3BlUExvYywKICAgICBB
Y3RpdmF0aW9uU3ltYm9sVGFibGVQTG9jLAotICAgIE5hbWVkUHJvcGVydHlQTG9jLAotICAgIEFy
Z3VtZW50UExvYywKICAgICBBcmd1bWVudENvdW50UExvYywKKyAgICBBcmd1bWVudFBMb2MsCiAg
ICAgQXJndW1lbnRzQ2FsbGVlUExvYywKLQotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2MsCisg
ICAgQ2xvc3VyZVZhclBMb2MsCiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKLSAgICBBY3Rp
dmF0aW9uU2NvcGVQTG9jLAotICAgIENsb3N1cmVWYXJQTG9jCisgICAgRnVuY3Rpb25FeGVjdXRh
YmxlUExvYywKKyAgICBJbmRleGVkUHJvcGVydHlQTG9jLAorICAgIE5hbWVkUHJvcGVydHlQTG9j
LAorICAgIFB1YmxpY0xlbmd0aFBMb2MsCisgICAgU3RydWN0dXJlUExvYywKKyAgICBWZWN0b3JM
ZW5ndGhQTG9jCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OTIsNyArMzQ5
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcg
c3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpT
QXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAg
ICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3Rv
cmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBhbm90aGVyLCByZXN1bHRHUFIgYW5k
IHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAgICAgICAgLy8gdGhlIEpTQXJyYXkg
YW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAgLTM3MjgsNyArMzcyOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQ
UiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVz
dWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAg
ICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUp
LCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAobm9kZS0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKSB7
CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25z
dGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwpAQCAtNDk3OCw3ICs0OTc4LDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbm9SZXN1
bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgCisgICAgY2FzZSBN
YXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0
KG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQyLDcgKzM1NDIsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBz
dG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQ
Uiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0
QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVs
ZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEF0IHRo
aXMgcG9pbnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdlR1BSIGhh
dmUgcG9pbnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUgQnV0dGVy
Zmx5LCByZXNwZWN0aXZlbHkuCkBAIC0zNzc4LDcgKzM3NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdw
cigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwgZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5k
ZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFs
bG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwg
bnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgREZH
X0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0FycmF5KTsKICAg
ICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZm
ZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQ5NzEsNiArNDk3MSwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNvbXBpbGVNYXRlcmlh
bGl6ZU5ld09iamVjdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFCTEUoRlRMX0pJ
VCkgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaEFkZDMyKApAQCAtNTA2MSw3ICs1MDY1
LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
R2V0TXlBcmd1bWVudEJ5VmFsOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3Ry
dWN0dXJlSW1tZWRpYXRlOgotICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgY2Fz
ZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBj
YXNlIEtpbGxTdGFjazoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMjcg
Kzc3LDQ3IEBAIFNwZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVKSVQoKQogewogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVu
dHMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJl
c3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25l
ZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQogewotICAgIEFTU0VSVChoYXNV
bmRlY2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoc3RydWN0dXJl
LT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkp
IHx8IGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgIEluZGV4
aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOworICAgIGJv
b2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGluZ0hlYWRlcihpbmRleGluZ1R5cGUpOwor
CisgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5
KCk7CisgICAgdW5zaWduZWQgb3V0T2ZMaW5lQ2FwYWNpdHkgPSBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLSAg
ICAKLSAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4s
IG51bUVsZW1lbnRzKTsKKworICAgIEFTU0VSVCh2ZWN0b3JMZW5ndGggPj0gbnVtRWxlbWVudHMp
OworICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwg
dmVjdG9yTGVuZ3RoKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2Vz
OwotICAgIAotICAgIHNsb3dDYXNlcy5hcHBlbmQoCi0gICAgICAgIGVtaXRBbGxvY2F0ZUJhc2lj
U3RvcmFnZShUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpICsgc2l6
ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpKTsKLSAgICBtX2ppdC5zdWJQdHIoVHJ1
c3RlZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSksIHN0b3JhZ2VHUFIpOwot
ICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nh
c2VzKTsKLSAgICAKLSAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihudW1FbGVtZW50cyks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQ
dWJsaWNMZW5ndGgoKSkpOwotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxl
bmd0aCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zm
c2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwotICAgIAorCisgICAgc2l6ZV90IHNpemUgPSAwOworICAg
IGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgc2l6ZSArPSB2ZWN0b3JMZW5ndGggKiBz
aXplb2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpOworICAgIHNpemUgKz0gb3V0
T2ZMaW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1ZSk7CisKKyAgICBpZiAoc2l6ZSkgeworICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKAorICAgICAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9y
YWdlKFRydXN0ZWRJbW0zMihzaXplKSwgc3RvcmFnZUdQUikpOworICAgICAgICBpZiAoaGFzSW5k
ZXhpbmdIZWFkZXIpCisgICAgICAgICAgICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHZlY3Rv
ckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSksIHN0b3JhZ2VHUFIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihJbmRleGluZ0hlYWRl
cikpLCBzdG9yYWdlR1BSKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyKDApLCBzdG9yYWdlR1BSKTsKKworICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpT
RmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKGlubGluZUNhcGFjaXR5KTsKKyAgICBNYXJrZWRB
bGxvY2F0b3IqIGFsbG9jYXRvclB0ciA9ICZtX2ppdC52bSgpLT5oZWFwLmFsbG9jYXRvckZvck9i
amVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKyAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIoYWxsb2NhdG9yUHRyKSwgc2NyYXRjaEdQUik7CisgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSks
IHN0b3JhZ2VHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOworCisgICAgaWYgKGhhc0luZGV4
aW5nSGVhZGVyKQorICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5n
dGgpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mVmVjdG9yTGVuZ3RoKCkpKTsKKwogICAgIGlmIChoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKSkgJiYgbnVtRWxlbWVudHMgPCB2ZWN0b3JMZW5ndGgpIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChiaXR3aXNlX2Nhc3Q8aW50
NjRfdD4oUE5hTikpLCBzY3JhdGNoR1BSKTsKQEAgLTExNyw4ICsxMzcsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNBcnJheQogICAgIC8vIHdoYXQgdGhpcyBjdXN0b20g
Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMgbWUuIEl0J3MgYSBsb3QK
ICAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4g
Oi0vCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdG9yYWdlR1BSLAorICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0R1BSLCBzdG9yYWdl
R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsIG51bUVsZW1lbnRzKSk7CisKKyAgICBpZiAoaGFzSW5k
ZXhpbmdIZWFkZXIpCisgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1l
bnRzKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZz
ZXRPZlB1YmxpY0xlbmd0aCgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRM
ZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEdQUlJlZyBsZW5ndGhHUFIs
IGJvb2wgaW5jbHVkZVRoaXMpCkBAIC03NjU1LDYgKzc2NzgsNzUgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09i
amVjdChOb2RlKiBub2RlKQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS0+c3Ry
dWN0dXJlU2V0KClbMF07CisKKyAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0g
bV9ub2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisgICAgICAgIAorICAgIEluZGV4
aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOworICAgIGJv
b2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGluZ0hlYWRlcihpbmRleGluZ1R5cGUpOwor
ICAgIGludDMyX3QgcHVibGljTGVuZ3RoID0gMDsKKyAgICBpbnQzMl90IHZlY3Rvckxlbmd0aCA9
IDA7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBFZGdl
IGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgIHN3
aXRjaCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIFB1
YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoID0gZWRnZS0+YXNJ
bnQzMigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZWN0b3JM
ZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9IGVkZ2UtPmFzSW50MzIo
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMp
OworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOworICAgIAorICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChy
ZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgMCwgdmVjdG9yTGVuZ3RoKTsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAg
ICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAg
ICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0
aWVzW2ldOworICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgIGNh
c2UgSW5kZXhlZFByb3BlcnR5UExvYzogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFs
dWUodGhpcywgZWRnZSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZVZhbHVlKAorICAgICAgICAg
ICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGRlc2NyaXB0b3IuaW5m
bygpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgTmFt
ZWRQcm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVtkZXNjcmlwdG9yLmluZm8oKV07CisgICAgICAgICAgICBmb3IgKFByb3Bl
cnR5TWFwRW50cnkgZW50cnkgOiBzdHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25jdXJyZW50bHko
KSkgeworICAgICAgICAgICAgICAgIGlmICh1aWQgIT0gZW50cnkua2V5KQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIGVkZ2UpOworICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gaXNJbmxpbmVP
ZmZzZXQoZW50cnkub2Zmc2V0KSA/IHJlc3VsdEdQUiA6IHN0b3JhZ2VHUFI7CisgICAgICAgICAg
ICAgICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUuanNWYWx1
ZVJlZ3MoKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQ
Uiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UoZW50cnkub2Zmc2V0KSkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MDEsNiArMjQwMSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleChOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlTGF6eUpTQ29uc3RhbnQoTm9kZSopOworICAgIHZvaWQgY29tcGlsZU1hdGVyaWFs
aXplTmV3T2JqZWN0KE5vZGUqKTsKICAgICAKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsK
ICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJlZyk7CkBAIC0yNTE2LDcgKzI1MTcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLT5jbGFz
c0luZm8oKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGli
bGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0QWxs
b2NhdGVKU0FycmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdl
R1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cyk7CisgICAgdm9pZCBlbWl0QWxsb2NhdGVSYXdPYmpl
Y3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAgIHZvaWQg
ZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGlu
Y2x1ZGVUaGlzID0gZmFsc2UpOwogICAgIHZvaWQgZW1pdEdldExlbmd0aChDb2RlT3JpZ2luLCBH
UFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjc4LDYgKzI3OCwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSksICF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+ZGZn
U2hvdWxkV2F0Y2goKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVj
dHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9ubHkgc3VwcG9y
dHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0IG9yIEpTQXJyYXkuCisgICAgICAg
ICAgICAgICAgICAgICAgICBWQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
bm9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5jbGFzc0luZm8o
KSA9PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
fCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTQXJyYXk6OmluZm8oKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBjZXJ0YWluIGluZGV4aW5nIHNoYXBl
cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0FueUFycmF5
U3RvcmFnZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICAgICAgICAg
IGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCBub2RlLT5pc051bWJlckNvbnN0YW50KCkpOwpAQCAtNDYxLDEzICs0NzIsNDIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAg
ICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUlt
bWVkaWF0ZToKLSAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAg
ICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAg
ICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCAhInVuZXhwZWN0ZWQgbm9kZSB0eXBlIGluIENQUyIpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0
OiB7CisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBhcnJheSBsZW5ndGhz
IHRvIGJlIGNvbnN0YW50LiBUaGlzIGNvbnN0cmFpbnQgb25seSBleGlzdHMKKyAgICAgICAgICAg
ICAgICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZlIERGRyBzdXBwb3J0IGZvciBhbnl0aGlu
ZyBtb3JlIGFuZCB3ZSBkb24ndCBuZWVkIGFueQorICAgICAgICAgICAgICAgICAgICAvLyBvdGhl
ciBraW5kIG9mIHN1cHBvcnQgZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG1fbm9kZS0+b2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0
YSgpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVy
dGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9j
YXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSArIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGll
c1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3Ro
UExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmlz
SW50MzJDb25zdGFudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3Mgb25lIHN0cnVjdHVy
ZS4KKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5zdHJ1Y3R1cmVT
ZXQoKS5zaXplKCkgPT0gMSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93
cyBpbnQzMiBhbmQgZG91YmxlIGFycmF5cy4gVGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNr
cyBhbmQKKyAgICAgICAgICAgICAgICAgICAgLy8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBu
ZWVkZWQgaW4gdGhlIERGRyByaWdodCBub3cuIFdlIHNob3VsZCBhZGQgc3VwcG9ydAorICAgICAg
ICAgICAgICAgICAgICAvLyBmb3IgdGhlc2UgaWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgorICAg
ICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0
dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhh
c0ludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
KSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBtX2dyYXBoLm1fZml4cG9pbnRTdGF0ZSAhPSBG
aXhwb2ludE5vdENvbnZlcmdlZCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNp
b24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzE2LDMyICszNzE2LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihwdWJsaWNMZW5ndGgsIGJ1dHRlcmZs
eSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAgICAgICAgIG1fb3V0LnN0
b3JlMzIodmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxl
bmd0aCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChoYXNEb3VibGUobV9ub2RlLT5p
bmRleGluZ1R5cGUoKSkpIHsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9vcCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdERvbmUg
PSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsK
LSAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50ZXIgPSBtX291dC5h
bmNob3IoYnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAg
ICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExv
b3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5p
dERvbmUpOwotICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291dC5p
bnQzMiwgb3JpZ2luYWxJbmRleCk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHBvaW50ZXIgPSBt
X291dC5waGkobV9vdXQuaW50UHRyLCBvcmlnaW5hbFBvaW50ZXIpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCi0gICAgICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKLSAgICAgICAgICAg
ICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMuYXRB
bnlJbmRleCgpLCBwb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
TFZhbHVlIG5leHRJbmRleCA9IG1fb3V0LnN1YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOwotICAg
ICAgICAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFuY2hvcihu
ZXh0SW5kZXgpKTsKLSAgICAgICAgICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKHBvaW50
ZXIsIG1fb3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRlciwgbV9vdXQuaW50UHRyRWlnaHQpKSk7
Ci0gICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBtX291
dC5ub3RaZXJvMzIobmV4dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25l
KSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW5p
dERvbmUsIGluaXRMYXN0TmV4dCk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGluaXRp
YWxpemVBcnJheUVsZW1lbnRzKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCksIHZlY3Rvckxlbmd0aCwg
YnV0dGVyZmx5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFz
dFJlc3VsdCA9IG1fb3V0LmFuY2hvcihvYmplY3QpOwogICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwpAQCAtNjI4NiwxMSArNjI2MiwyMSBAQCBwcml2YXRlOgogICAgICAgICAv
LyBMb3dlciB0aGUgdmFsdWVzIGZpcnN0LCB0byBhdm9pZCBjcmVhdGluZyB2YWx1ZXMgaW5zaWRl
IGEgY29udHJvbCBmbG93IGRpYW1vbmQuCiAgICAgICAgIAogICAgICAgICBWZWN0b3I8TFZhbHVl
LCA4PiB2YWx1ZXM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJv
cGVydGllcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1
ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpKSk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKTsKKyAg
ICAgICAgICAgIHN3aXRjaCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAg
ICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0
aFBMb2M6CisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dJbnQzMihlZGdlKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShlZGdlKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0
cnVjdHVyZVNldCYgc2V0ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKLSAgICAgICAgCisKICAg
ICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrLCAxPiBibG9ja3Moc2V0LnNpemUoKSk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IHNldC5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBibG9ja3Nb
aV0gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNjMxNSwyMSArNjMwMSw0OSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgTFZhbHVlIG9iamVjdDsKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
fHwgaGFzSW5kZXhpbmdIZWFkZXIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAg
ICAgICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0
aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgICAgIE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gJnZtKCkuaGVhcC5hbGxvY2F0b3JGb3JPYmplY3RX
aXRob3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisKKyAgICAgICAgICAgICAgICBib29s
IGhhc0luZGV4aW5nSGVhZGVyID0gSlNDOjpoYXNJbmRleGluZ0hlYWRlcihzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleGluZ0hlYWRlclNp
emUgPSAwOworICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRl
cyA9IG1fb3V0LmludFB0clplcm87CisgICAgICAgICAgICAgICAgTFZhbHVlIHZlY3Rvckxlbmd0
aCA9IG1fb3V0LmludDMyWmVybzsKKyAgICAgICAgICAgICAgICBMVmFsdWUgcHVibGljTGVuZ3Ro
ID0gbV9vdXQuaW50MzJaZXJvOworICAgICAgICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRl
cikgeworICAgICAgICAgICAgICAgICAgICBpbmRleGluZ0hlYWRlclNpemUgPSBzaXplb2YoSW5k
ZXhpbmdIZWFkZXIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRh
Lm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBy
b21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tp
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZl
Y3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3Ro
ID0gdmFsdWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzID0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0Lm11bChtX291dC56ZXJvRXh0UHRyKHZlY3Rvckxlbmd0aCksIG1fb3V0LmludFB0
ckVpZ2h0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBMVmFsdWUgYnV0
dGVyZmx5U2l6ZSA9IG1fb3V0LmFkZCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIoCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBpbmRleGluZ0hlYWRlclNpemUpLAorICAgICAgICAg
ICAgICAgICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFz
dE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIExWYWx1ZSBlbmRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUJh
c2ljU3RvcmFnZUFuZEdldEVuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQ
dHIoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpKSwKLSAg
ICAgICAgICAgICAgICAgICAgc2xvd1BhdGgpOwotICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIExWYWx1ZSBlbmRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUJhc2ljU3RvcmFnZUFuZEdldEVu
ZChidXR0ZXJmbHlTaXplLCBzbG93UGF0aCk7CisKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFz
dEJ1dHRlcmZseVZhbHVlID0gbV9vdXQuYWRkKAotICAgICAgICAgICAgICAgICAgICBtX291dC5j
b25zdEludFB0cihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgZW5kT2ZTdG9yYWdlKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9vdXQuc3ViKGVuZE9mU3RvcmFnZSwgaW5kZXhpbmdQYXlsb2FkU2l6
ZUluQnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzaXplb2Yo
SW5kZXhpbmdIZWFkZXIpIC0gaW5kZXhpbmdIZWFkZXJTaXplKSk7CisKKyAgICAgICAgICAgICAg
ICBtX291dC5zdG9yZTMyKHZlY3Rvckxlbmd0aCwgZmFzdEJ1dHRlcmZseVZhbHVlLCBtX2hlYXBz
LkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIExWYWx1ZSBmYXN0T2JqZWN0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdCgKICAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yKSwgc3RydWN0dXJlLCBmYXN0QnV0
dGVyZmx5VmFsdWUsIHNsb3dQYXRoKTsKQEAgLTYzNDAsMTIgKzYzNTQsMjQgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0
aCwgY29udGludWF0aW9uKTsKIAotICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93T2JqZWN0VmFs
dWUgPSBsYXp5U2xvd1BhdGgoCi0gICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9y
PExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRv
cigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0
dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd09iamVjdFZhbHVlOwor
ICAgICAgICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICAgICAgICAg
ICAgICBzbG93T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAg
ICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExh
enlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5k
VmVjdG9yTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNb
MF0uZGlyZWN0R1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZl
Y3Rvckxlbmd0aCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgc2xvd09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgICAgICAgICAg
ICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5
U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQ
UigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd09iamVjdCA9
IG1fb3V0LmFuY2hvcihzbG93T2JqZWN0VmFsdWUpOwogICAgICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dCdXR0ZXJmbHkgPSBtX291dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgICAg
IG1fb3V0LmxvYWRQdHIoc2xvd09iamVjdFZhbHVlLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRlcmZs
eSkpOwpAQCAtNjM1Niw2ICs2MzgyLDExMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIG9iamVjdCA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RPYmpl
Y3QsIHNsb3dPYmplY3QpOwogICAgICAgICAgICAgICAgIGJ1dHRlcmZseSA9IG1fb3V0LnBoaSht
X291dC5pbnRQdHIsIGZhc3RCdXR0ZXJmbHksIHNsb3dCdXR0ZXJmbHkpOworCisgICAgICAgICAg
ICAgICAgbV9vdXQuc3RvcmUzMihwdWJsaWNMZW5ndGgsIGZhc3RCdXR0ZXJmbHlWYWx1ZSwgbV9o
ZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKKworICAgICAgICAgICAgICAgIGluaXRpYWxp
emVBcnJheUVsZW1lbnRzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCksIHZlY3Rvckxlbmd0aCwg
YnV0dGVyZmx5KTsKKworICAgICAgICAgICAgICAgIEhhc2hNYXA8aW50MzJfdCwgTFZhbHVlPiBp
bmRleE1hcDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8aW50MzJfPiBpbmRpY2VzOworICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0t
OykgeworICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNj
cmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIGlmIChk
ZXNjcmlwdG9yLmtpbmQoKSAhPSBJbmRleGVkUHJvcGVydHlQTG9jKQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaW5kZXggPSBz
dGF0aWNfY2FzdDxpbnQzMl90PihkZXNjcmlwdG9yLmluZm8oKSk7CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGluZGV4TWFwLmFkZChpbmRl
eCwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBt
X25vZGUsIHJlc3VsdCk7IC8vIER1cGxpY2F0ZXMgYXJlIGlsbGVnYWwuCisKKyAgICAgICAgICAg
ICAgICAgICAgaW5kaWNlcy5hcHBlbmQoaW5kZXgpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGlmICghaW5kaWNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3RkOjpzb3J0KGluZGljZXMuYmVnaW4oKSwgaW5kaWNlcy5lbmQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb247
CisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaz4gYmxvY2tzV2l0aFN0b3Jl
cyhpbmRpY2VzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9j
az4gYmxvY2tzV2l0aENoZWNrcyhpbmRpY2VzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRpY2VzLnNpemUoKTsg
aS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzV2l0aFN0b3Jlc1tpXSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoQ2hlY2tz
W2ldID0gbV9vdXQubmV3QmxvY2soKTsgLy8gYmxvY2tzV2l0aENoZWNrc1swXSBpcyB0aGUgY29u
dGludWF0aW9uLgorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgaW5kZXhMYXN0TmV4dCA9IG1fb3V0Lm1fbmV4dEJsb2NrOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kaWNl
cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaW5kZXgg
PSBpbmRpY2VzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gaW5k
ZXhNYXAuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmJlbG93KG1fb3V0LmNvbnN0SW50MzIoaW5kZXgpLCBwdWJsaWNMZW5ndGgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc3VyZShibG9ja3NXaXRoU3RvcmVzW2ldKSwgdW5zdXJl
KGJsb2Nrc1dpdGhDaGVja3NbaV0pKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oYmxvY2tzV2l0aFN0b3Jlc1tpXSwgYmxvY2tzV2l0aENoZWNrc1tpXSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaGFzIHRvIHR5cGUtY2hlY2sgYW5kIGNvbnZl
cnQgaXRzIGlucHV0cywgYnV0IGl0IGNhbm5vdCBkbyBzbyBpbiBhCisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyB3YXkgdGhhdCB1cGRhdGVzIEFJLiBUaGF0J3MgYSBiaXQgYW5ub3lpbmcsIGJ1
dCBpZiB5b3UgdGhpbmsgYWJvdXQgaG93CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaW5r
aW5nIHdvcmtzLCBpdCdzIGFjdHVhbGx5IG5vdCBhIGJhZCB0aGluZy4gV2UgYXJlIHZpcnR1YWxs
eSBndWFyYW50ZWVkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IHRoZXNlIHR5cGUg
Y2hlY2tzIHdpbGwgbm90IGZhaWwsIHNpbmNlIHRoZSB0eXBlIGNoZWNrcyB0aGF0IGd1YXJkZWQK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBzdG9yZXMgdG8gdGhlIGFy
cmF5IGFyZSBzdGlsbCBzb21ld2hlcmUgYWJvdmUgdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIE91dHB1dDo6U3RvcmVUeXBlIHN0b3JlVHlwZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEluZGV4ZWRBYnN0cmFjdEhlYXAqIGhlYXA7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIHVzZSB0aGUgcHJvdmVuIHR5cGUgaWYgd2Ug
aGFkIHRoZSBFZGdlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1
ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTMxMQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBub1ZhbHVlKCksIG51bGxw
dHIsIGlzTm90SW50MzIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9y
ZVR5cGUgPSBTdG9yZTY0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9o
ZWFwcy5pbmRleGVkSW50MzJQcm9wZXJ0aWVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJ
TkdfVFlQRVM6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSWYgdGhl
IHNvdXJjZSBpcyBWYWx1ZVJlcCwgd2Ugc2hvdWxkIGF2b2lkIGVtaXR0aW5nIGFueQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrcy4gV2UgY291bGQgYWxzbyBhdm9pZCBlbWl0
dGluZyBjaGVja3MgaWYgd2UgaGFkIHRoZSBFZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhpcyB2YWx1ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTMxMQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW50
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJh
c2ljQmxvY2sgZG91YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHZhbHVl
KSwgdW5zdXJlKGludENhc2UpLCB1bnN1cmUoZG91YmxlQ2FzZSkpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbnRD
YXNlLCBkb3VibGVDYXNlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGludFJlc3VsdCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmFuY2hvcihtX291dC5pbnRUb0RvdWJsZSh1bmJveEludDMyKHZhbHVlKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwgbm9W
YWx1ZSgpLCBudWxscHRyLCBpc051bWJlcih2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGRvdWJsZVJlc3VsdCA9IG1fb3V0LmFuY2hvcih1bmJveERv
dWJsZSh2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlID0gbV9vdXQucGhpKERvdWJsZSwgaW50UmVzdWx0LCBkb3VibGVSZXN1bHQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IFN0b3JlRG91YmxlOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGll
czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19J
TkRFWElOR19UWVBFUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBT
dG9yZTY0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRl
eGVkQ29udGlndW91c1Byb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkludmFsaWQgaW5kZXhpbmcg
dHlwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX291dC5zdG9yZSh2YWx1ZSwgbV9vdXQuYWRkcmVzcyhidXR0ZXJmbHksIGhlYXAt
PmF0KGluZGV4KSksIHN0b3JlVHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
Lmp1bXAoYmxvY2tzV2l0aENoZWNrc1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoQ2hlY2tz
W2ldLCBpID8gYmxvY2tzV2l0aFN0b3Jlc1tpIC0gMV0gOiBpbmRleExhc3ROZXh0KTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGVhc3kgY2FzZSB3aGVyZSB3ZSBjYW4gZG8gYSBv
bmUtc2hvdCBhbGxvY2F0aW9uLCB3ZSBzaW1wbHkgYWxsb2NhdGUgdGhlCiAgICAgICAgICAgICAg
ICAgLy8gb2JqZWN0IHRvIGRpcmVjdGx5IGhhdmUgdGhlIGRlc2lyZWQgc3RydWN0dXJlLgpAQCAt
NjM2NSwxMiArNjQ5NywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
b3IgKFByb3BlcnR5TWFwRW50cnkgZW50cnkgOiBzdHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25j
dXJyZW50bHkoKSkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9w
cm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgICAgICBQaGFudG9tUHJv
cGVydHlWYWx1ZSB2YWx1ZSA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOwotICAgICAgICAgICAgICAg
ICAgICBpZiAobV9ncmFwaC5pZGVudGlmaWVycygpW3ZhbHVlLm1faWRlbnRpZmllck51bWJlcl0g
IT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3Jp
cHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAg
ICAgIGlmIChkZXNjcmlwdG9yLmtpbmQoKSAhPSBOYW1lZFByb3BlcnR5UExvYykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5pZGVudGlmaWVycygpW2Rlc2NyaXB0b3IuaW5mbygpXSAhPSBlbnRyeS5rZXkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gaXNJbmxpbmVPZmZzZXQoZW50cnkub2Zmc2V0KSA/
IG9iamVjdCA6IGJ1dHRlcmZseTsKLSAgICAgICAgICAgICAgICAgICAgc3RvcmVQcm9wZXJ0eSh2
YWx1ZXNbaV0sIGJhc2UsIHZhbHVlLm1faWRlbnRpZmllck51bWJlciwgZW50cnkub2Zmc2V0KTsK
KyAgICAgICAgICAgICAgICAgICAgc3RvcmVQcm9wZXJ0eSh2YWx1ZXNbaV0sIGJhc2UsIGRlc2Ny
aXB0b3IuaW5mbygpLCBlbnRyeS5vZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC02NDM1LDkgKzY1NjksMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGFjdGl2YXRpb24gPSBtX291dC5waGkobV9vdXQuaW50
UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGF0
YS5tX3Byb3BlcnRpZXMuc2l6ZSgpID09IHRhYmxlLT5zY29wZVNpemUoKSk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZXNbaV0sCi0gICAgICAgICAgICAgICAgYWN0
aXZhdGlvbiwKLSAgICAgICAgICAgICAgICBtX2hlYXBzLkpTRW52aXJvbm1lbnRSZWNvcmRfdmFy
aWFibGVzW2RhdGEubV9wcm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcl0pOworICAgICAg
ICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9w
ZXJ0aWVzW2ldOworICAgICAgICAgICAgQVNTRVJUKGRlc2NyaXB0b3Iua2luZCgpID09IENMb3N1
cmVWYXJQTG9jKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICAgICAg
dmFsdWVzW2ldLCBhY3RpdmF0aW9uLAorICAgICAgICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9u
bWVudFJlY29yZF92YXJpYWJsZXNbZGVzY3JpcHRvci5pbmZvKCldKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CkBAIC02NDQ2LDcgKzY1ODIsOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgZm9yIChhdXRvIGl0ZXIgPSB0YWJsZS0+YmVnaW4obG9ja2Vy
KSwgZW5kID0gdGFibGUtPmVuZChsb2NrZXIpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAg
ICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSA9PSBk
YXRhLm1fcHJvcGVydGllc1tpXS5tX2lkZW50aWZpZXJOdW1iZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9w
ZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkg
PT0gQ2xvc3VyZVZhclBMb2MpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUu
c2NvcGVPZmZzZXQoKS5vZmZzZXQoKSA9PSBkZXNjcmlwdG9yLmluZm8oKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTY5NzAsNiArNzEwOCwzOSBAQCBwcml2YXRl
OgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2b2lkIGlu
aXRpYWxpemVBcnJheUVsZW1lbnRzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIExWYWx1ZSB2
ZWN0b3JMZW5ndGgsIExWYWx1ZSBidXR0ZXJmbHkpCisgICAgeworICAgICAgICBpZiAoIWhhc0Rv
dWJsZShpbmRleGluZ1R5cGUpKSB7CisgICAgICAgICAgICAvLyBUaGUgR0MgYWxyZWFkeSBpbml0
aWFsaXplZCBldmVyeXRoaW5nIHRvIEpTVmFsdWUoKSBmb3IgdXMuCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBEb3VibGVzIG11c3QgYmUgaW5pdGlhbGl6ZWQg
dG8gUE5hTi4KKyAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExvb3AgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgIAorICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5jaG9y
KHZlY3Rvckxlbmd0aCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9
IG1fb3V0LmFuY2hvcihidXR0ZXJmbHkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAg
ICAgICBtX291dC5ub3RaZXJvMzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJlKGluaXRMb29wKSwgdW5z
dXJlKGluaXREb25lKSk7CisgICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOworICAgICAgICBMVmFsdWUg
aW5kZXggPSBtX291dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOworICAgICAgICBM
VmFsdWUgcG9pbnRlciA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7
CisgICAgICAgIAorICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAorICAgICAgICAgICAgVHlwZWRQ
b2ludGVyKG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2lu
dGVyKSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuc3ViKGlu
ZGV4LCBtX291dC5pbnQzMk9uZSk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkoaW5k
ZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdU
b1BoaShwb2ludGVyLCBtX291dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1fb3V0LmludFB0
ckVpZ2h0KSkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5ub3Ra
ZXJvMzIobmV4dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Cisg
ICAgICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5pdExhc3ROZXh0KTsK
KyAgICB9CiAgICAgCiAgICAgTFZhbHVlIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKExWYWx1ZSBv
YmplY3QsIFN0cnVjdHVyZSogcHJldmlvdXNTdHJ1Y3R1cmUpCiAgICAgewpAQCAtOTI1Nyw3ICs5
NDI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJl
dHVybiBtX291dC50ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CiAgICAg
fQotICAgIAorCiAgICAgTFZhbHVlIHVuYm94RG91YmxlKExWYWx1ZSBqc1ZhbHVlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fb3V0LmJpdENhc3QobV9vdXQuYWRkKGpzVmFsdWUsIG1fdGFnVHlw
ZU51bWJlciksIG1fb3V0LmRvdWJsZVR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwx
OSArNDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M6OkRGRzsKIAotZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIAotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5
ID0gQnV0dGVyZmx5OjpjcmVhdGUoCi0gICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigpLCAwKTsKLSAgICAK
LSAgICBKU09iamVjdCogcmVzdWx0ID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0cnVj
dHVyZSwgYnV0dGVyZmx5KTsKLSAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhh
dCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
IGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5P
U1IoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiog
bWF0ZXJpYWxpemF0aW9uLAogICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKiB2YWx1ZXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAgY2xhc3Mg
TGF6eVNsb3dQYXRoOwogCiBleHRlcm4gIkMiIHsKIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RG
X0lOVEVSTkFMOwotCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVP
YmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlv
biosIEVuY29kZWRKU1ZhbHVlKikgV1RGX0lOVEVSTkFMOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYg
Kzk2LDEwIEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKIAorICAgIC8vIFRoaXMgaXMgYSBzdXBlciBkYW5nZXJvdXMg
bWV0aG9kIGZvciBKSVRzLiBTb21ldGltZXMgdGhlIEpJVHMgd2lsbCB3YW50IHRvIGNyZWF0ZSBl
aXRoZXIgYQorICAgIC8vIEpTRmluYWxPYmplY3Qgb3IgYSBKU0FycmF5LiBUaGlzIGlzIHRoZSBt
ZXRob2QgdGhhdCB3aWxsIGRvIHRoYXQuCisgICAgSlNPYmplY3QqIGNyZWF0ZVJhd09iamVjdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqID0gbnVsbHB0
cik7CisKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUo
SlNDZWxsKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGNvcHlCYWNraW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pOwpA
QCAtMTAzNCw2ICsxMDM4LDIwIEBAIHByaXZhdGU6CiAKIEpTX0VYUE9SVF9QUklWQVRFIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKEV4ZWNT
dGF0ZSopOwogCitpbmxpbmUgSlNPYmplY3QqIEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoCisg
ICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0
ZXJmbHkpCit7CisgICAgSlNPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3ICgKKyAgICAgICAgTm90
TnVsbCwgCisgICAgICAgIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsT2JqZWN0PigKKyAgICAgICAgICAg
ICpleGVjLT5oZWFwKCksCisgICAgICAgICAgICBhbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlu
bGluZUNhcGFjaXR5KCkpCisgICAgICAgICkKKyAgICApIEpTT2JqZWN0KGV4ZWMtPnZtKCksIHN0
cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZt
KCkpOworICAgIHJldHVybiBmaW5hbE9iamVjdDsKK30KKwogaW5saW5lIEpTRmluYWxPYmplY3Qq
IEpTRmluYWxPYmplY3Q6OmNyZWF0ZSgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDYg
KzI2Miw4IEBAIFJlZ0V4cCogUmVnRXhwOjpjcmVhdGUoVk0mIHZtLCBjb25zdCBTdHIKIAogdm9p
ZCBSZWdFeHA6OmNvbXBpbGUoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7
CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBZYXJy
OjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3Ry
dWN0aW9uRXJyb3IpOwogICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTksOCArMzAxLDIyIEBAIGludCBSZWdF
eHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgU3RyaW5nJiAKICAgICByZXR1cm4gbWF0Y2hJbmxpbmUo
dm0sIHMsIHN0YXJ0T2Zmc2V0LCBvdmVjdG9yKTsKIH0KIAorYm9vbCBSZWdFeHA6Om1hdGNoQ29u
Y3VycmVudGx5KAorICAgIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgaW50JiBwb3NpdGlvbiwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKQoreworICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoIWhhc0NvZGVGb3Io
cy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcG9zaXRpb24gPSBtYXRjaCh2bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0
b3IpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNoT25s
eShWTSogdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKKyAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBh
dHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiAg
ICAgaWYgKG1fY29uc3RydWN0aW9uRXJyb3IpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTM0MCw2ICszNTYsOCBAQCBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNo
KFZNJiB2bSwgY29uc3QgCiAKIHZvaWQgUmVnRXhwOjpkZWxldGVDb2RlKCkKIHsKKyAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAgIGlmICghaGFzQ29kZSgp
KQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IE5vdENvbXBpbGVkOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw3IEBACiAjaWZuZGVmIFJlZ0V4cF9oCiAjZGVmaW5lIFJlZ0V4cF9oCiAKKyNpbmNs
dWRlICJDb25jdXJyZW50SklUTG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJNYXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlJlZ0V4cEtleS5oIgpAQCAt
NjQsNiArNjUsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29uc3RydWN0aW9uRXJyb3I7IH0KIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIGludCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBW
ZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOworCisgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB3ZSBj
b3VsZG4ndCBydW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgYW55IHJlYXNvbi4KKyAgICBi
b29sIG1hdGNoQ29uY3VycmVudGx5KFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7CisgICAgCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgTWF0Y2hSZXN1bHQgbWF0Y2goVk0mLCBjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBzdGFydE9mZnNldCk7CiAKICAgICAvLyBDYWxsIHRoZXNlIHZlcnNpb25zIG9m
IHRoZSBtYXRjaCBmdW5jdGlvbnMgaWYgeW91J3JlIGRlc3BlcmF0ZSBmb3IgcGVyZm9ybWFuY2Uu
CkBAIC03Nyw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc3RhdGUgIT0gTm90
Q29tcGlsZWQ7CiAgICAgfQogCisgICAgYm9vbCBoYXNDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6
ZSk7CisKICAgICB2b2lkIGRlbGV0ZUNvZGUoKTsKIAogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lO
RykKQEAgLTEzMiw2ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcnRNYXRjaENh
bGxDb3VudDsKICAgICB1bnNpZ25lZCBtX3J0TWF0Y2hGb3VuZENvdW50OwogI2VuZGlmCisgICAg
Q29uY3VycmVudEpJVExvY2sgbV9sb2NrOwogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgIFlh
cnI6OllhcnJDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAkocmV2aXNpb24gMTk3ODY5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NywyMCArNjcsMjcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYgLy8gUkVHRVhQX0ZV
TkNfVEVTVF9EQVRBX0dFTgogCi1BTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZO
ZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCitBTFdBWVNfSU5M
SU5FIGJvb2wgUmVnRXhwOjpoYXNDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkK
IHsKICAgICBpZiAoaGFzQ29kZSgpKSB7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgICAgICBp
ZiAobV9zdGF0ZSAhPSBKSVRDb2RlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjgpICYmICht
X3JlZ0V4cEpJVENvZGUuaGFzOEJpdENvZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFy
MTYpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzMTZCaXRDb2RlKCkpKQotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
KworQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZNJiB2bSwg
WWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQoreworICAgIGlmIChoYXNDb2RlRm9yKGNoYXJT
aXplKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgY29tcGlsZSgmdm0sIGNoYXJTaXplKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBA
QCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgCiAgICAgVmVj
dG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOwogICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4
cC0+bWF0Y2hJbmxpbmUodm0sIGlucHV0VmFsdWUsIHN0YXJ0T2Zmc2V0LCBzdWJwYXR0ZXJuUmVz
dWx0cyk7CisgICAgQVNTRVJUKHBvc2l0aW9uID09IHN1YnBhdHRlcm5SZXN1bHRzWzBdKTsKICAg
ICBpZiAocG9zaXRpb24gPT0gLTEpIHsKICAgICAgICAgcmVzdWx0ID0gTWF0Y2hSZXN1bHQ6OmZh
aWxlZCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273621</attachid>
            <date>2016-03-10 14:12:20 -0800</date>
            <delta_ts>2016-03-10 15:03:36 -0800</delta_ts>
            <desc>added RecordRegExpCachedResult</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>73094</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc4NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2
MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3
QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAv
KiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEw
QkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBD
NzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhG
NjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGgg
PSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMz
NUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAogCQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovLAogCQkJCUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOEND
MDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBG
RDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYg
Kzc0NDgsNyBAQAogCQkJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEg
LyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFp
bmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTk1Miw2ICsxOTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogog
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5
Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MjMsNiArOTIzLDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAg
ICAgICAgIGRlZihIZWFwTG9jYXRpb24oUmVnRXhwT2JqZWN0TGFzdEluZGV4TG9jLCBSZWdFeHBP
YmplY3RfbGFzdEluZGV4LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hl
ZFJlc3VsdDoKKyAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czogewogICAgICAgICBBYnN0cmFjdEhl
YXAgaGVhcChEaXJlY3RBcmd1bWVudHNQcm9wZXJ0aWVzLCBub2RlLT5jYXB0dXJlZEFyZ3VtZW50
c09mZnNldCgpLm9mZnNldCgpKTsKQEAgLTEwODYsNyArMTA5MCw5IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMygp
LnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJlYWQoUmVnRXhwU3RhdGUp
OworICAgICAgICAgICAgcmVhZChSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAg
IHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0
SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJlYWQoV29y
bGQpOwpAQCAtMTA5OCw3ICsxMTA0LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJl
Z0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09
IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAgICAgICAg
ICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUoUmVnRXhw
U3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxOTc4NjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNyw2ICsxMTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0
R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9u
IDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMDAsNiArMTMwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgU3RvcmVCYXJyaWVyOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoK
ICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGp1c3Qgbm9k
ZXMgdGhhdCB3ZSBkb24ndCBjdXJyZW50bHkgZXhwZWN0IHRvIHNlZSBkdXJpbmcgZml4dXAuCiAg
ICAgICAgICAgICAvLyBJZiB3ZSBldmVyIHdhbnRlZCB0byBpbnNlcnQgdGhlbSBwcmlvciB0byBm
aXh1cCwgdGhlbiB3ZSBqdXN0IGhhdmUgdG8gY3JlYXRlCiAgICAgICAgICAgICAvLyBmaXh1cCBy
dWxlcyBmb3IgdGhlbS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZp
c2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIK
ICNpbmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGEuaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKICNpbmNsdWRlICJERkdUcmFuc2l0
aW9uLmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNj
ZXNzRGF0YS5oIgpAQCAtMjE5LDIwICsyMjAsNiBAQCBzdHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsK
ICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hlZEF0KGZvcm1hdCwgbWFj
aGluZUxvY2FsKTsgfQogfTsKIAotLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFzc2luZyBhbiBpbW1l
ZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKLS8vIGRpc3Rpbmd1aXNoZXMgYW4g
aW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBkYXRh
IHN0cnVjdHVyZSAtIAotLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlkZW50aWZp
ZXIpIGZyb20gYSBOb2RlKi4KLXN0cnVjdCBPcEluZm8gewotICAgIE9wSW5mbygpIDogbV92YWx1
ZSgwKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8odWlu
dDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9
Ci0jaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQotICAgIGV4cGxpY2l0IE9wSW5mbyhz
aXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9
Ci0jZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICB1aW50cHRyX3QgbV92YWx1
ZTsKLX07Ci0KIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNpbmds
ZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDYgKzIy
NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhWYXJJbmpl
Y3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0UmVnRXhw
T2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXgsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhSZWNvcmRSZWdFeHBD
YWNoZWRSZXN1bHQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1h
Y3JvKENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrTm90RW1w
dHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0JhZENlbGwsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMTk3
ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3NCw3ICsxOTc0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6IHsKICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9PSBhbGxvY2F0aW9uLmlkZW50aWZp
ZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVuZChQaGFu
dG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRlc2NyaXB0b3IoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShibG9jaywgbG9jYXRpb24pOwogICAg
ICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyh2YWx1ZSkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKG1f
Ym90dG9tKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAg
ICBjYXNlIENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsb2Nh
dGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgICAg
ICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRvbVByb3BlcnR5VmFsdWUobG9jYXRp
b24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVu
ZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
c2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2JvdHRvbSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0
aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDMy
ICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXZvaWQgUGhh
bnRvbVByb3BlcnR5VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSAgICBv
dXQucHJpbnQoImlkIiwgbV9pZGVudGlmaWVyTnVtYmVyKTsKLX0KLQogdm9pZCBPYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0
LnByaW50KCJbIiwgbGlzdER1bXAobV9wcm9wZXJ0aWVzKSwgIl0iKTsKIH0KIAotZmxvYXQgT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6b25lV2F5U2ltaWxhcml0eVNjb3JlKAotICAgIGNvbnN0
IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBjb25zdAotewotICAgIHVuc2lnbmVk
IG51bUhpdHMgPSAwOwotICAgIGZvciAoUGhhbnRvbVByb3BlcnR5VmFsdWUgdmFsdWUgOiBtX3By
b3BlcnRpZXMpIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcHJvcGVydGllcy5jb250YWlucyh2YWx1
ZSkpCi0gICAgICAgICAgICBudW1IaXRzKys7Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxmbG9hdD4obnVtSGl0cykgLyBzdGF0aWNfY2FzdDxmbG9hdD4obV9wcm9wZXJ0aWVzLnNpemUo
KSk7Ci19Ci0KLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OnNpbWlsYXJpdHlTY29y
ZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3RkOjptaW4ob25lV2F5U2ltaWxhcml0eVNjb3JlKG90aGVyKSwgb3RoZXIub25lV2F5
U2ltaWxhcml0eVNjb3JlKCp0aGlzKSk7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgJKHJldmlz
aW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgiCiAjaW5j
bHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTM1LDM4ICszNiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKLXN0cnVjdCBQaGFudG9tUHJvcGVydHlWYWx1ZSB7Ci0gICAgUGhh
bnRvbVByb3BlcnR5VmFsdWUoKQotICAgICAgICA6IG1faWRlbnRpZmllck51bWJlcihVSU5UX01B
WCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlKHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVyTnVtYmVyKGlkZW50aWZp
ZXJOdW1iZXIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXJO
dW1iZXI7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBoYW50b21Qcm9wZXJ0eVZh
bHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJOdW1i
ZXIgPT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLX07Ci0KIHN0cnVjdCBPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhIHsKICAgICAvLyBEZXRlcm1pbmVzIHRoZSBtZWFuaW5nIG9mIHRoZSBwYXNzZWQgbm9k
ZXMuCi0gICAgVmVjdG9yPFBoYW50b21Qcm9wZXJ0eVZhbHVlPiBtX3Byb3BlcnRpZXM7CisgICAg
VmVjdG9yPFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yPiBtX3Byb3BlcnRpZXM7CiAgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gVGhlIGZyYWN0
aW9uIG9mIG15IHByb3BlcnRpZXMgdGhhdCB0aGUgb3RoZXIgZGF0YSBoYXMuCi0gICAgZmxvYXQg
b25lV2F5U2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmKSBj
b25zdDsKLSAgICAKLSAgICAvLyBUaGUgbWluaW11bSBvZiB0aGUgdHdvIHBvc3NpYmxlIG9uZS13
YXkgc2NvcmVzLgotICAgIGZsb2F0IHNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhJikgY29uc3Q7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBERkdPcEluZm9faAorI2RlZmluZSBERkdPcEluZm9faAorCisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFzc2luZyBhbiBp
bW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKKy8vIGRpc3Rpbmd1aXNoZXMg
YW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBk
YXRhIHN0cnVjdHVyZSAtIAorLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlkZW50
aWZpZXIpIGZyb20gYSBOb2RlKi4KK3N0cnVjdCBPcEluZm8geworICAgIE9wSW5mbygpIDogbV92
YWx1ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8o
dWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkg
eyB9CisjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQorICAgIGV4cGxpY2l0IE9wSW5m
byhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkg
eyB9CisjZW5kaWYKKyAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAgICB1aW50cHRyX3QgbV92
YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT3BJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc4NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDAxLDYgKzE0MDEsNTkgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVm
YXVsdEhhcwogICAgIHJldHVybiAwOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld1Jhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQz
Ml90IGxlbmd0aCkgV1RGX0lOVEVSTkFMCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBCdXR0ZXJm
bHkqIGJ1dHRlcmZseTsKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8
IGhhc0luZGV4aW5nSGVhZGVyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgICAg
IEluZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICAgICAgaGVhZGVyLnNldFZlY3Rvckxlbmd0aChs
ZW5ndGgpOworICAgICAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3RoKDApOworICAgICAgICAKKyAg
ICAgICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgICAgICB2bSwgbnVs
bHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAorICAgICAgICAgICAgaGFz
SW5kZXhpbmdIZWFkZXIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSksIGhlYWRlciwgbGVuZ3Ro
ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJ1dHRlcmZs
eSA9IG51bGxwdHI7CisKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0ZVJh
d09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0ZXJm
bHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAgICBy
ZXR1bnIgcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2Jq
ZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIAorICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVy
Zmx5OjpjcmVhdGUoCisgICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigpLCAwKTsKKyAgICAKKyAgICBKU09i
amVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUs
IGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhl
IGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRl
eGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBJbmRleGlu
Z0hlYWRlciBoZWFkZXI7CisgICAgaGVhZGVyLnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAg
IGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBC
dXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgaGVhZGVyLAorICAgICAgICBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpICogbGVuZ3RoKTsKKworICAgIC8vIFBhcmFkb3hpY2FsbHkgdGhpcyBtYXkgYWxsb2Nh
dGUgYSBKU0FycmF5LiBUaGF0J3MgdG90YWxseSBjb29sLgorICAgIEpTT2JqZWN0KiByZXN1bHQg
PSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsK
KyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlz
IGluIHRvLXNwYWNlLgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nREZHKEV4ZWNTdGF0ZSogZXhlYykgCiB7
CiAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVND
SUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVkIGZyb20gaW5zaWRlIERGRy4iKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3ODY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Nyw2ICsxNTcsMTAgQEAgaW50NjRfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbnZlcnREbwogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZhdWx0SGFzSW5z
dGFuY2UoRXhlY1N0YXRlKiwgSlNDZWxsKiB2YWx1ZSwgSlNDZWxsKiBwcm90byk7CiAKK2NoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRF
Uk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVy
Zmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSosIHVuc2lnbmVkIGxlbmd0aCkgV1RGX0lOVEVSTkFMOworCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqKSBXVEZfSU5URVJO
QUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25G
YWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NjgsNiArNjY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAg
ICAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4OgorICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3Vs
dDoKICAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDogewogICAgICAgICAgICAgLy8gVGhpcyBu
b2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24u
IEl0IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dz
IHRoaXMgcGhhc2UuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVk
SGVhcExvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNzQsNiArNzQsMTAgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIFBybwogICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6CiAgICAgICAgIG91dC5wcmlu
dCgiTmFtZWRQcm9wZXJ0eVBMb2MiKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJbmRl
eGVkUHJvcGVydHlQTG9jOgorICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eVBMb2Mi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEFyZ3VtZW50UExvYzoKICAg
ICAgICAgb3V0LnByaW50KCJBcmd1bWVudFBMb2MiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJKHJldmlzaW9uIDE5
Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyNSArMjgsNDEgQEAKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogCi0jaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkRGR0VkZ2UuaCIKKyNp
bmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0cnVjdCBOb2RlOworCisvLyBQcm9tb3Rl
ZCBsb2NhdGlvbnMgYXJlIGxpa2UgaGVhcCBsb2NhdGlvbnMgYnV0IGFyZSBtZWFudCB0byBiZSBt
b3JlIHByZWNpc2UuIEEgaGVhcCBsb2NhdGlvbiBpcworLy8gYXBwbGljYWJsZSB0byBDU0Ugc2Nl
bmFyaW9zLCB3aGVyZSBpdCBtYWtlcyBzZW5zZSB0byBzcGVhayBvZiBhIGxvY2F0aW9uIHZlcnkg
YWJzdHJhY3RseS4gQQorLy8gcHJvbW90ZWQgaGVhcCBsb2NhdGlvbiBpcyBmb3IgY2FzZXMgd2hl
cmUgd2Ugc3BlYWsgb2YgYSBzcGVjaWZpYyBvYmplY3QgYW5kIHRoZSBjb21waWxlciBrbm93cwor
Ly8gdGhpcyBvYmplY3QncyBpZGVudGl0eSAtIGZvciBleGFtcGxlLCB0aGUgb2JqZWN0IGFsbG9j
YXRpb24gaGFzIGJlZW4gZWxpbWluYXRlZCBhbmQgd2UgdHVybmVkIHRoZQorLy8gZmllbGRzIGlu
dG8gbG9jYWwgdmFyaWFibGVzLiBCZWNhdXNlIHRoZXNlIHR3byBjYXNlcyBoYXZlIHN1YnRseSBk
aWZmZXJlbnQgbmVlZHMsIHdlIHVzZSBzdWJ0bHkKKy8vIGRpZmZlcmVudCBzdHJ1Y3R1cmVzLiBP
bmUgb2YgdGhlIHJlYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpcyB0aGF0IHByb21vdGVk
IGxvY2F0aW9ucyBjYW4gYmUKKy8vIHNwb2tlbiBvZiB1c2luZyBlaXRoZXIgYSBkZXNjcmlwdG9y
IHdoaWNoIGRvZXMgbm90IHJlZmVyIHRvIGFueSBOb2RlKidzIG9yIHdpdGggYSBoZWFwIGxvY2F0
aW9uLAorLy8gd2hpY2ggaXMgYSBkZXNjcmlwdG9yIHdpdGggYSBOb2RlKiBiYXNlLgorCiBlbnVt
IFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBJbnZhbGlkUHJvbW90ZWRMb2NhdGlvbktpbmQs
CiAgICAgCi0gICAgU3RydWN0dXJlUExvYywKKyAgICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAg
IEFjdGl2YXRpb25TeW1ib2xUYWJsZVBMb2MsCi0gICAgTmFtZWRQcm9wZXJ0eVBMb2MsCi0gICAg
QXJndW1lbnRQTG9jLAogICAgIEFyZ3VtZW50Q291bnRQTG9jLAorICAgIEFyZ3VtZW50UExvYywK
ICAgICBBcmd1bWVudHNDYWxsZWVQTG9jLAotCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlUExvYywK
KyAgICBDbG9zdXJlVmFyUExvYywKICAgICBGdW5jdGlvbkFjdGl2YXRpb25QTG9jLAotICAgIEFj
dGl2YXRpb25TY29wZVBMb2MsCi0gICAgQ2xvc3VyZVZhclBMb2MKKyAgICBGdW5jdGlvbkV4ZWN1
dGFibGVQTG9jLAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsCisgICAgTmFtZWRQcm9wZXJ0eVBM
b2MsCisgICAgUHVibGljTGVuZ3RoUExvYywKKyAgICBTdHJ1Y3R1cmVQTG9jLAorICAgIFZlY3Rv
ckxlbmd0aFBMb2MKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZp
c2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAgY2Fz
ZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0
SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0Nyw2ICszMDQ3LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
ICAgICAKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogeworICAgICAgICBjb21w
aWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5h
cnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CiAgICAgICAgIApAQCAtMzQ5Miw3ICszNDk3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdl
R1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShy
ZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAg
ICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFn
ZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhl
IEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOCw3ICszNzMzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3Rv
cmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIs
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAg
IGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3Jh
Z2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChub2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAg
ICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVm
ZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTc4LDcgKzQ5ODMsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBub1Jlc3VsdChub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAKKyAgICBjYXNlIE1hdGVyaWFs
aXplTmV3T2JqZWN0OgorICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7
CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9u
IDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNzEsNiArMzE3MSwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2Fz
ZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzSlNBcnJh
eSgpKTsKQEAgLTM1NDIsNyArMzU0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAg
ICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VH
UFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1
bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBh
bm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAg
ICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAg
LTM3NzgsNyArMzc4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0
R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVu
dHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCks
IG5vZGUsIGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAgICAgICAgSlNWYWx1ZSogZGF0
YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50
KCkpOwpAQCAtNDk3MSw2ICs0OTc2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBNYXRlcmlhbGl6
ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwor
ICAgICAgICBicmVhazsKKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBD
aGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0g
bV9qaXQuYnJhbmNoQWRkMzIoCkBAIC01MDYxLDcgKzUwNzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAg
ICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAg
Y2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0YWNrOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywyNyArNzcsNDcgQEAgU3BlY3VsYXRpdmVK
SVQ6On5TcGVjdWxhdGl2ZUpJVCgpCiB7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRB
bGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQ
UlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cykKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCB2ZWN0b3JMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBo
YXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzQ29udGlndW91cyhzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9
IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9
IGhhc0luZGV4aW5nSGVhZGVyKGluZGV4aW5nVHlwZSk7CisKKyAgICB1bnNpZ25lZCBpbmxpbmVD
YXBhY2l0eSA9IHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKTsKKyAgICB1bnNpZ25lZCBvdXRP
ZkxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIo
dGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIEdQUlJl
ZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwotICAgIAotICAgIHVuc2lnbmVkIHZlY3Rv
ckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgbnVtRWxlbWVudHMpOworCisgICAg
QVNTRVJUKHZlY3Rvckxlbmd0aCA+PSBudW1FbGVtZW50cyk7CisgICAgdW5zaWduZWQgdmVjdG9y
TGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCB2ZWN0b3JMZW5ndGgpOwogICAgIAog
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgc2xvd0Nhc2Vz
LmFwcGVuZCgKLSAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKFRydXN0ZWRJbW0zMih2
ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwg
c3RvcmFnZUdQUikpOwotICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3Ro
ICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7Ci0gICAgZW1pdEFsbG9jYXRlSlNPYmpl
Y3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VH
UFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwotICAgIAotICAgIG1faml0
LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7Ci0gICAg
bV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7
Ci0gICAgCisKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVy
KQorICAgICAgICBzaXplICs9IHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSArIHNpemVv
ZihJbmRleGluZ0hlYWRlcik7CisgICAgc2l6ZSArPSBvdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVv
ZihKU1ZhbHVlKTsKKworICAgIGlmIChzaXplKSB7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3RlZEltbTMyKHNpemUp
LCBzdG9yYWdlR1BSKSk7CisgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAg
ICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFs
dWUpKSwgc3RvcmFnZUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faml0LmFkZFB0
cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpOworICAg
IH0gZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoMCksIHN0b3JhZ2VHUFIp
OworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlv
blNpemUoaW5saW5lQ2FwYWNpdHkpOworICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yUHRy
ID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Io
YWxsb2NhdGlvblNpemUpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3JQ
dHIpLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIHNj
cmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaDJH
UFIsIHNsb3dDYXNlcyk7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAgIG1f
aml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCksIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwor
CiAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSAmJiBudW1FbGVt
ZW50cyA8IHZlY3Rvckxlbmd0aCkgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHNjcmF0Y2hH
UFIpOwpAQCAtMTE3LDggKzEzNywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVKU0FycmF5CiAgICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JTbG93
UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAogICAgIC8vIG9mIHdvcmsgZm9yIGEg
dmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8KICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yPigKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXpl
LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uTmV3UmF3T2JqZWN0LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCiAgICAgICAgIHN0cnVjdHVy
ZSwgbnVtRWxlbWVudHMpKTsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAg
bV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsK
IH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcykKQEAg
LTc2NTUsNiArNzY3OCwxMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxhenlKU0Nv
bnN0YQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKiBub2RlKQorewor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS0+c3RydWN0dXJlU2V0KClbMF07CisKKyAg
ICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbV9ub2RlLT5vYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhKCk7CisgICAgICAgIAorICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUg
PSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOworICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIg
PSBoYXNJbmRleGluZ0hlYWRlcihpbmRleGluZ1R5cGUpOworICAgIGludDMyX3QgcHVibGljTGVu
Z3RoID0gMDsKKyAgICBpbnQzMl90IHZlY3Rvckxlbmd0aCA9IDA7CisKKyAgICBpZiAoaGFzSW5k
ZXhpbmdIZWFkZXIpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRp
ZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5tX3Byb3BlcnRp
ZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAg
ICAgICAgICAgICAgcHVibGljTGVuZ3RoID0gZWRnZS0+YXNJbnQzMigpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAg
ICAgICAgIHZlY3Rvckxlbmd0aCA9IGVkZ2UtPmFzSW50MzIoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOworICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigp
OworICAgIAorICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIHN0cnVjdHVyZSwg
c3RvcmFnZUdQUiwgMCwgdmVjdG9yTGVuZ3RoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IGRh
dGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICBFZGdlIGVkZ2UgPSBtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICBzd2l0
Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5UExv
YzogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSk7CisgICAg
ICAgICAgICBtX2ppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFsdWVS
ZWdzKCksCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGRlc2NyaXB0b3IuaW5mbygpKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6IHsKKyAg
ICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtkZXNjcmlw
dG9yLmluZm8oKV07CisgICAgICAgICAgICBmb3IgKFByb3BlcnR5TWFwRW50cnkgZW50cnkgOiBz
dHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25jdXJyZW50bHkoKSkgeworICAgICAgICAgICAgICAg
IGlmICh1aWQgIT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UpOworICAgICAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gaXNJbmxpbmVPZmZzZXQoZW50cnkub2Zmc2V0KSA/
IHJlc3VsdEdQUiA6IHN0b3JhZ2VHUFI7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVWYWx1
ZSgKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwKKyAgICAgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2UoZW50cnkub2Zmc2V0KSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1
bHQoTm9kZSogbm9kZSkKK3sKKyAgICBFZGdlIGNvbnN0cnVjdG9yRWRnZSA9IG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMCk7CisgICAgRWRnZSByZWdFeHBFZGdlID0gbV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxKTsKKyAgICBFZGdlIHN0cmluZ0VkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDIpOworICAgIEVkZ2Ugc3RhcnRFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAzKTsKKyAgICBFZGdlIGVuZEVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpOwor
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY29uc3RydWN0b3IodGhpcywgY29uc3RydWN0b3JF
ZGdlKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByZWdFeHAodGhpcywgcmVnRXhwRWRnZSk7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3RyaW5nKHRoaXMsIHJlZ0V4cEVkZ2UpOworICAg
IFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzdGFydCh0aGlzLCBzdGFydEVkZ2UpOworICAgIFNwZWN1
bGF0ZUludDMyT3BlcmFuZCBlbmQodGhpcywgZW5kRWRnZSk7CisKKyAgICBHUFJSZWcgY29uc3Ry
dWN0b3JHUFIgPSBjb25zdHJ1Y3Rvci5ncHIoKTsKKyAgICBHUFJSZWcgcmVnRXhwR1BSID0gcmVn
RXhwLmdwcigpOworICAgIEdQUlJlZyBzdHJpbmdHUFIgPSBzdHJpbmcuZ3ByKCk7CisgICAgR1BS
UmVnIHN0YXJ0R1BSID0gc3RhcnQuZ3ByKCk7CisgICAgR1BSUmVnIGVuZEdQUiA9IGVuZC5ncHIo
KTsKKworICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZD
YWNoZWRSZXN1bHQoKTsKKworICAgIG1faml0LnN0b3JlUHRyKAorICAgICAgICByZWdFeHBHUFIs
CisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBS
ZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4cCgpKSk7CisgICAgbV9qaXQuc3Rv
cmVQdHIoCisgICAgICAgIHN0cmluZ0dQUiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
Y29uc3RydWN0b3JHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0
SW5wdXQoKSkpOworICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgIHN0YXJ0R1BSLAorICAgICAg
ICBKSVRDb21waWxlcjo6QWRkcmVzcygKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yR1BSLAorICAg
ICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsg
T0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBzdGFydCkpKTsKKyAgICBtX2ppdC5zdG9yZTMy
KAorICAgICAgICBlbmRHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzKAorICAgICAg
ICAgICAgY29uc3RydWN0b3JHUFIsCisgICAgICAgICAgICBvZmZzZXQgKyBSZWdFeHBDYWNoZWRS
ZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIGVu
ZCkpKTsKKyAgICBtX2ppdC5zdG9yZTgoCisgICAgICAgIFRydXN0ZWRJbW0zMigwKSwKKyAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY29uc3RydWN0b3JHUFIsIG9mZnNldCArIFJlZ0V4cENh
Y2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZWlmaWVkKCkpKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOwor
fQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTk3ODY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDAxLDYgKzI0MDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxl
R2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTZXRSZWdF
eHBPYmplY3RMYXN0SW5kZXgoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUxhenlKU0NvbnN0YW50
KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKik7Cisg
ICAgdm9pZCBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqKTsKICAgICAKICAg
ICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJlZyk7
CkBAIC0yNTE2LDcgKzI1MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlLT5jbGFzc0luZm8oKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSk7
CiAgICAgfQogCi0gICAgdm9pZCBlbWl0QWxsb2NhdGVKU0FycmF5KEdQUlJlZyByZXN1bHRHUFIs
IFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cyk7Cisg
ICAgdm9pZCBlbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJl
KiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0
b3JMZW5ndGgpOwogICAgIAogICAgIHZvaWQgZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUq
LCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwogICAgIHZvaWQg
ZW1pdEdldExlbmd0aChDb2RlT3JpZ2luLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVU
aGlzID0gZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzg2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsMTEgKzI1MywxNSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6IHsKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJ
ZDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAgICAgICAgY2FzZSBQdXRC
eUlkRGlyZWN0OgorICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CisgICAgICAgICAgICBj
YXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogewogICAgICAgICAgICAgICAgIGNvbnNpZGVy
QmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgY2FzZSBQdXRDbG9zdXJl
VmFyOgogICAgICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2Ug
U2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgpAQCAtMjY2LDEzICsyNzAsNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6
Ci0gICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6IHsKLSAgICAgICAgICAgICAgICBjb25z
aWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6IHsKICAgICAgICAg
ICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDIoKSwgbV9ub2RlLT5jaGlsZDMo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNzgsNiArMjc4
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwg
IXZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5kZmdTaG91bGRXYXRjaCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICAgICAgICAgICAg
ICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1Y3R1cmVzIHRo
YXQgYXJlIEpTRmluYWxPYmplY3Qgb3IgSlNBcnJheS4KKyAgICAgICAgICAgICAgICAgICAgICAg
IFZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTRmluYWxPYmpl
Y3Q6OmluZm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0cnVjdHVyZS0+Y2xh
c3NJbmZvKCkgPT0gSlNBcnJheTo6aW5mbygpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gV2Ugb25seSBzdXBwb3J0IGNlcnRhaW4gaW5kZXhpbmcgc2hhcGVzLgorICAgICAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzQW55QXJyYXlTdG9yYWdlKHN0cnVjdHVy
ZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBJbnQ1MkNvbnN0
YW50OgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPmlzTnVtYmVy
Q29uc3RhbnQoKSk7CkBAIC00NjEsMTMgKzQ3Miw0MiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0SGlu
dDoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgotICAgICAg
ICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRT
dGFjazoKICAgICAgICAgICAgICAgICBjYXNlIEtpbGxTdGFjazoKICAgICAgICAgICAgICAgICBj
YXNlIEdldFN0YWNrOgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEidW5l
eHBlY3RlZCBub2RlIHR5cGUgaW4gQ1BTIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6IHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQ1BTIG9ubHkgYWxsb3dzIGFycmF5IGxlbmd0aHMgdG8gYmUgY29uc3RhbnQu
IFRoaXMgY29uc3RyYWludCBvbmx5IGV4aXN0cworICAgICAgICAgICAgICAgICAgICAvLyBiZWNh
dXNlIHdlIGRvbid0IGhhdmUgREZHIHN1cHBvcnQgZm9yIGFueXRoaW5nIG1vcmUgYW5kIHdlIGRv
bid0IG5lZWQgYW55CisgICAgICAgICAgICAgICAgICAgIC8vIG90aGVyIGtpbmQgb2Ygc3VwcG9y
dCBmb3Igbm93LgorICAgICAgICAgICAgICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
JiBkYXRhID0gbV9ub2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0t
OykgeworICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3Ig
ZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICAg
ICAgRWRnZSBlZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEubV9wcm9wZXJ0aWVzW2ldLmtpbmQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aXNJbnQzMkNvbnN0YW50KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBvbmUgc3RydWN0dXJlLgorICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKSA9PSAx
KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBDUFMgZGlzYWxsb3dzIGludDMyIGFuZCBkb3Vi
bGUgYXJyYXlzLiBUaG9zZSByZXF1aXJlIHdlaXJkIHR5cGUgY2hlY2tzIGFuZAorICAgICAgICAg
ICAgICAgICAgICAvLyBjb252ZXJzaW9ucy4gVGhleSBhcmUgbm90IG5lZWRlZCBpbiB0aGUgREZH
IHJpZ2h0IG5vdy4gV2Ugc2hvdWxkIGFkZCBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgIC8v
IGZvciB0aGVzZSBpZiB0aGUgREZHIGV2ZXIgbmVlZHMgaXQuCisgICAgICAgICAgICAgICAgICAg
IGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzSW50MzIoc3RydWN0dXJl
LT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5v
ZGUpLCAhaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgICAgICBWQUxJ
REFURSgobm9kZSksIG1fZ3JhcGgubV9maXhwb2ludFN0YXRlICE9IEZpeHBvaW50Tm90Q29udmVy
Z2VkKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNp
b24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDExIEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU1N5bWJvbFRhYmxlT2JqZWN0X3N5bWJv
bFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpIFwKICAg
ICBtYWNybyhKU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSwgSlNXcmFwcGVyT2JqZWN0Ojpp
bnRlcm5hbFZhbHVlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhNYXJrZWRBbGxvY2F0b3JfZnJlZUxp
c3RIZWFkLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpIFwKKyAgICBt
YWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCwgUmVnRXhwQ29u
c3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9m
ZnNldE9mTGFzdFJlZ0V4cCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVk
UmVzdWx0X2xhc3RJbnB1dCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0
KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpIFwKKyAgICBtYWNy
byhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0LCBSZWdFeHBDb25z
dHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zm
c2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSBcCisg
ICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9lbmQsIFJlZ0V4
cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0
OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSBc
CisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3JlaWZpZWQsIFJlZ0V4
cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0
OjpvZmZzZXRPZlJlaWZpZWQoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgs
IFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXgoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9i
amVjdF9sYXN0SW5kZXhJc1dyaXRhYmxlLCBSZWdFeHBPYmplY3Q6Om9mZnNldE9mTGFzdEluZGV4
SXNXcml0YWJsZSgpKSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzX292ZXJyb2RlVGhpbmdz
LCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJvZGVUaGluZ3MoKSkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24g
MTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICBjYXNlIEdl
dFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRl
eDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgLy8gVGhlc2Ug
YXJlIE9LLgogICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MzgsNiArOTM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0
SW5kZXg6CiAgICAgICAgICAgICBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KCk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6
CisgICAgICAgICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KCk7CisgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBM
b29wSGludDoKQEAgLTM3MTYsMzIgKzM3MTksOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBz
LkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0
b3JMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGhhc0RvdWJsZShtX25vZGUtPmluZGV4aW5nVHlw
ZSgpKSkgewotICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMb29wID0gbV9vdXQubmV3
QmxvY2soKTsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgb3JpZ2luYWxJbmRleCA9IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5ndGgpOwotICAgICAgICAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFuY2hvcihidXR0
ZXJmbHkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQubm90WmVybzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShpbml0TG9vcCksIHVuc3Vy
ZShpbml0RG9uZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGluaXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7Ci0g
ICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0LmludDMyLCBvcmln
aW5hbEluZGV4KTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1fb3V0LnBoaSht
X291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAotICAgICAgICAgICAgICAgICAgICBU
eXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFueUluZGV4KCks
IHBvaW50ZXIpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFsdWUgbmV4
dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5pbnQzMk9uZSk7Ci0gICAgICAgICAgICAg
ICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRleCkp
OwotICAgICAgICAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkocG9pbnRlciwgbV9vdXQu
YW5jaG9yKG1fb3V0LmFkZChwb2ludGVyLCBtX291dC5pbnRQdHJFaWdodCkpKTsKLSAgICAgICAg
ICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8z
MihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5p
dExhc3ROZXh0KTsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5pdGlhbGl6ZUFycmF5
RWxlbWVudHMobV9ub2RlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKG9iamVjdCk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CkBAIC02Mjg2LDExICs2MjY1LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIExvd2VyIHRo
ZSB2YWx1ZXMgZmlyc3QsIHRvIGF2b2lkIGNyZWF0aW5nIHZhbHVlcyBpbnNpZGUgYSBjb250cm9s
IGZsb3cgZGlhbW9uZC4KICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxMVmFsdWUsIDg+IHZhbHVl
czsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dKU1ZhbHVlKG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobV9ub2RlLCAxICsgaSkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBFZGdl
IGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpOworICAgICAgICAgICAg
c3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2Ug
UHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAg
ICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFsdWVz
LmFwcGVuZChsb3dKU1ZhbHVlKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0
JiBzZXQgPSBtX25vZGUtPnN0cnVjdHVyZVNldCgpOwotICAgICAgICAKKwogICAgICAgICBWZWN0
b3I8TEJhc2ljQmxvY2ssIDE+IGJsb2NrcyhzZXQuc2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGJsb2Nrc1tpXSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CkBAIC02MzE1LDIxICs2MzA0LDQ5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBMVmFsdWUgb2JqZWN0OwogICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewor
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJbmRl
eGluZ0hlYWRlcihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgICAg
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0
cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAgICAgTWFya2VkQWxsb2Nh
dG9yKiBhbGxvY2F0b3IgPSAmdm0oKS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0
cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKworICAgICAgICAgICAgICAgIGJvb2wgaGFzSW5kZXhp
bmdIZWFkZXIgPSBKU0M6Omhhc0luZGV4aW5nSGVhZGVyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4aW5nSGVhZGVyU2l6ZSA9IDA7Cisg
ICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzID0gbV9vdXQu
aW50UHRyWmVybzsKKyAgICAgICAgICAgICAgICBMVmFsdWUgdmVjdG9yTGVuZ3RoID0gbV9vdXQu
aW50MzJaZXJvOworICAgICAgICAgICAgICAgIExWYWx1ZSBwdWJsaWNMZW5ndGggPSBtX291dC5p
bnQzMlplcm87CisgICAgICAgICAgICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAg
ICAgICAgICAgICAgICAgIGluZGV4aW5nSGVhZGVyU2l6ZSA9IHNpemVvZihJbmRleGluZ0hlYWRl
cik7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0
aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2Nh
dGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpY0xlbmd0aCA9IHZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3Ro
UExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGggPSB2YWx1ZXNb
aV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW5k
ZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPQorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
bXVsKG1fb3V0Lnplcm9FeHRQdHIodmVjdG9yTGVuZ3RoKSwgbV9vdXQuaW50UHRyRWlnaHQpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXpl
ID0gbV9vdXQuYWRkKAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cigKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNp
emVvZihKU1ZhbHVlKSArIGluZGV4aW5nSGVhZGVyU2l6ZSksCisgICAgICAgICAgICAgICAgICAg
IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9yYWdl
QW5kR2V0RW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpLAotICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aCk7Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgTFZh
bHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5kKGJ1dHRlcmZs
eVNpemUsIHNsb3dQYXRoKTsKKwogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5
VmFsdWUgPSBtX291dC5hZGQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBlbmRPZlN0b3JhZ2UpOworICAgICAgICAgICAgICAg
ICAgICBtX291dC5zdWIoZW5kT2ZTdG9yYWdlLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyks
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hl
YWRlcikgLSBpbmRleGluZ0hlYWRlclNpemUpKTsKKworICAgICAgICAgICAgICAgIG1fb3V0LnN0
b3JlMzIodmVjdG9yTGVuZ3RoLCBmYXN0QnV0dGVyZmx5VmFsdWUsIG1faGVhcHMuQnV0dGVyZmx5
X3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTFZhbHVl
IGZhc3RPYmplY3RWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0KAogICAgICAgICAgICAgICAgICAgICBt
X291dC5jb25zdEludFB0cihhbGxvY2F0b3IpLCBzdHJ1Y3R1cmUsIGZhc3RCdXR0ZXJmbHlWYWx1
ZSwgc2xvd1BhdGgpOwpAQCAtNjM0MCwxMiArNjM1NywyNCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51
YXRpb24pOwogCi0gICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlT
bG93UGF0aCgKLSAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+
JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxv
Y2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Ci0gICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93T2JqZWN0VmFsdWU7CisgICAgICAgICAg
ICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHNsb3dP
YmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAo
Y29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRo
OjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
TGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJh
dGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbG93T2Jq
ZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKGNv
bnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6
R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxh
enlDYWxsR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRp
b25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93T2JqZWN0ID0gbV9vdXQuYW5j
aG9yKHNsb3dPYmplY3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d0J1dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9h
ZFB0cihzbG93T2JqZWN0VmFsdWUsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5KSk7CkBAIC02
MzU2LDYgKzYzODUsMTEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgb2JqZWN0ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdE9iamVjdCwgc2xvd09i
amVjdCk7CiAgICAgICAgICAgICAgICAgYnV0dGVyZmx5ID0gbV9vdXQucGhpKG1fb3V0LmludFB0
ciwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSk7CisKKyAgICAgICAgICAgICAgICBtX291
dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgZmFzdEJ1dHRlcmZseVZhbHVlLCBtX2hlYXBzLkJ1dHRl
cmZseV9wdWJsaWNMZW5ndGgpOworCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUFycmF5RWxl
bWVudHMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkp
OworCisgICAgICAgICAgICAgICAgSGFzaE1hcDxpbnQzMl90LCBMVmFsdWU+IGluZGV4TWFwOwor
ICAgICAgICAgICAgICAgIFZlY3RvcjxpbnQzMl8+IGluZGljZXM7CisgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBk
YXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
a2luZCgpICE9IEluZGV4ZWRQcm9wZXJ0eVBMb2MpCisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9IHN0YXRpY19jYXN0
PGludDMyX3Q+KGRlc2NyaXB0b3IuaW5mbygpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5kZXhNYXAuYWRkKGluZGV4LCB2YWx1ZXNb
aV0pOworICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgcmVz
dWx0KTsgLy8gRHVwbGljYXRlcyBhcmUgaWxsZWdhbC4KKworICAgICAgICAgICAgICAgICAgICBp
bmRpY2VzLmFwcGVuZChpbmRleCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKCFpbmRpY2VzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBzdGQ6OnNv
cnQoaW5kaWNlcy5iZWdpbigpLCBpbmRpY2VzLmVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbjsKKyAgICAgICAg
ICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoU3RvcmVzKGluZGljZXMu
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrPiBibG9ja3NX
aXRoQ2hlY2tzKGluZGljZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoU3RvcmVzW2ldID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3NbaV0gPSBtX291
dC5uZXdCbG9jaygpOyAvLyBibG9ja3NXaXRoQ2hlY2tzWzBdIGlzIHRoZSBjb250aW51YXRpb24u
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBpbmRleExhc3ROZXh0ID0gbV9vdXQubV9uZXh0QmxvY2s7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRpY2VzLnNpemUoKTsg
aS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9IGluZGljZXNb
aV07CisgICAgICAgICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBpbmRleE1hcC5nZXQo
aW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYmVsb3co
bV9vdXQuY29uc3RJbnQzMihpbmRleCksIHB1YmxpY0xlbmd0aCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zdXJlKGJsb2Nrc1dpdGhTdG9yZXNbaV0pLCB1bnN1cmUoYmxvY2tzV2l0
aENoZWNrc1tpXSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhi
bG9ja3NXaXRoU3RvcmVzW2ldLCBibG9ja3NXaXRoQ2hlY2tzW2ldKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gVGhpcyBoYXMgdG8gdHlwZS1jaGVjayBhbmQgY29udmVydCBpdHMgaW5w
dXRzLCBidXQgaXQgY2Fubm90IGRvIHNvIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHdheSB0aGF0IHVwZGF0ZXMgQUkuIFRoYXQncyBhIGJpdCBhbm5veWluZywgYnV0IGlmIHlvdSB0
aGluayBhYm91dCBob3cKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpbmtpbmcgd29ya3Ms
IGl0J3MgYWN0dWFsbHkgbm90IGEgYmFkIHRoaW5nLiBXZSBhcmUgdmlydHVhbGx5IGd1YXJhbnRl
ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhlc2UgdHlwZSBjaGVja3Mgd2ls
bCBub3QgZmFpbCwgc2luY2UgdGhlIHR5cGUgY2hlY2tzIHRoYXQgZ3VhcmRlZAorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIHN0b3JlcyB0byB0aGUgYXJyYXkgYXJlIHN0
aWxsIHNvbWV3aGVyZSBhYm92ZSB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAgICAgICAg
T3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOworICAgICAgICAgICAgICAgICAgICAgICAgSW5k
ZXhlZEFic3RyYWN0SGVhcCogaGVhcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgY291bGQgdXNlIHRoZSBwcm92ZW4gdHlwZSBpZiB3ZSBoYWQgdGhlIEVk
Z2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzExCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOb3RJ
bnQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IFN0
b3JlNjQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4
ZWRJbnQzMlByb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzog
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgc291cmNlIGlz
IFZhbHVlUmVwLCB3ZSBzaG91bGQgYXZvaWQgZW1pdHRpbmcgYW55CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY2hlY2tzLiBXZSBjb3VsZCBhbHNvIGF2b2lkIGVtaXR0aW5nIGNoZWNr
cyBpZiB3ZSBoYWQgdGhlIEVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0
aGlzIHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzEx
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBk
b3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzSW50MzIodmFsdWUpLCB1bnN1cmUo
aW50Q2FzZSksIHVuc3VyZShkb3VibGVDYXNlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENhc2UsIGRvdWJs
ZUNhc2UpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW50
UmVzdWx0ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYW5jaG9yKG1f
b3V0LmludFRvRG91YmxlKHVuYm94SW50MzIodmFsdWUpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBub1ZhbHVlKCksIG51
bGxwdHIsIGlzTnVtYmVyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgZG91YmxlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHVuYm94RG91YmxlKHZhbHVl
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX291
dC5waGkoRG91YmxlLCBpbnRSZXN1bHQsIGRvdWJsZVJlc3VsdCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RvcmVUeXBlID0gU3RvcmVEb3VibGU7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZ
UEVTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IFN0b3JlNjQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWRDb250aWd1
b3VzUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiSW52YWxpZCBpbmRleGluZyB0eXBlIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LnN0b3JlKHZhbHVlLCBtX291dC5hZGRyZXNzKGJ1dHRlcmZseSwgaGVhcC0+YXQoaW5kZXgp
KSwgc3RvcmVUeXBlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChibG9j
a3NXaXRoQ2hlY2tzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3NbaV0sIGkgPyBi
bG9ja3NXaXRoU3RvcmVzW2kgLSAxXSA6IGluZGV4TGFzdE5leHQpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAvLyBJbiB0aGUgZWFzeSBjYXNlIHdoZXJlIHdlIGNhbiBkbyBhIG9uZS1zaG90IGFs
bG9jYXRpb24sIHdlIHNpbXBseSBhbGxvY2F0ZSB0aGUKICAgICAgICAgICAgICAgICAvLyBvYmpl
Y3QgdG8gZGlyZWN0bHkgaGF2ZSB0aGUgZGVzaXJlZCBzdHJ1Y3R1cmUuCkBAIC02MzY1LDEyICs2
NTAwLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoUHJvcGVy
dHlNYXBFbnRyeSBlbnRyeSA6IHN0cnVjdHVyZS0+Z2V0UHJvcGVydGllc0NvbmN1cnJlbnRseSgp
KSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMu
c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVl
IHZhbHVlID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLmlkZW50aWZpZXJzKClbdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyXSAhPSBlbnRyeS5r
ZXkpCisgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2Ny
aXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRl
c2NyaXB0b3Iua2luZCgpICE9IE5hbWVkUHJvcGVydHlQTG9jKQorICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZp
ZXJzKClbZGVzY3JpcHRvci5pbmZvKCldICE9IGVudHJ5LmtleSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgTFZhbHVlIGJhc2UgPSBpc0lubGluZU9mZnNldChlbnRyeS5vZmZzZXQpID8gb2JqZWN0IDog
YnV0dGVyZmx5OwotICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwg
YmFzZSwgdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyLCBlbnRyeS5vZmZzZXQpOworICAgICAgICAg
ICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgZGVzY3JpcHRvci5pbmZv
KCksIGVudHJ5Lm9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTY0MzUsOSArNjU3MiwxMSBAQCBwcml2YXRlOgog
ICAgICAgICBMVmFsdWUgYWN0aXZhdGlvbiA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RS
ZXN1bHQsIHNsb3dSZXN1bHQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChkYXRhLm1fcHJvcGVy
dGllcy5zaXplKCkgPT0gdGFibGUtPnNjb3BlU2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICBtX291dC5zdG9yZTY0KHZhbHVlc1tpXSwKLSAgICAgICAgICAgICAgICBhY3RpdmF0aW9uLAot
ICAgICAgICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGF0
YS5tX3Byb3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAgICAgICBQcm9t
b3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07
CisgICAgICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ0xvc3VyZVZhclBMb2Mp
OworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgICAgICB2YWx1ZXNbaV0s
IGFjdGl2YXRpb24sCisgICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3Jk
X3ZhcmlhYmxlc1tkZXNjcmlwdG9yLmluZm8oKV0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHZhbGlkYXRpb25FbmFibGVkKCkpIHsKQEAgLTY0NDYsNyArNjU4NSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbihsb2NrZXIpLCBlbmQgPSB0
YWJsZS0+ZW5kKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgICAgICAg
ICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09IGRhdGEubV9wcm9w
ZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcikgeworICAgICAgICAgICAgICAgICAgICBQcm9t
b3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9PSBDbG9zdXJl
VmFyUExvYyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNl
dCgpLm9mZnNldCgpID09IGRlc2NyaXB0b3IuaW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtNjYxMyw2ICs2NzU0LDI4IEBAIHByaXZhdGU6CiAgICAgICAg
IG1fb3V0LnN0b3JlNjQodmFsdWUsIHJlZ0V4cCwgbV9oZWFwcy5SZWdFeHBPYmplY3RfbGFzdElu
ZGV4KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQo
KQorICAgIHsKKyAgICAgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG1fbm9kZSwgMCk7CisgICAgICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9ncmFwaC52YXJB
cmdDaGlsZChtX25vZGUsIDIpOworICAgICAgICBFZGdlIHN0YXJ0RWRnZSA9IG1fZ3JhcGgudmFy
QXJnQ2hpbGQobV9ub2RlLCAzKTsKKyAgICAgICAgRWRnZSBlbmRFZGdlID0gbV9ncmFwaC52YXJB
cmdDaGlsZChtX25vZGUsIDQpOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIGNvbnN0cnVjdG9y
ID0gbG93Q2VsbChjb25zdHJ1Y3RvckVkZ2UpOworICAgICAgICBMVmFsdWUgcmVnRXhwID0gbG93
Q2VsbChyZWdFeHApOworICAgICAgICBMVmFsdWUgc3RyaW5nID0gbG93Q2VsbChzdHJpbmcpOwor
ICAgICAgICBMVmFsdWUgc3RhcnQgPSBsb3dJbnQzMihzdGFydCk7CisgICAgICAgIExWYWx1ZSBl
bmQgPSBsb3dJbnQzMihlbmQpOworCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHJlZ0V4cCwgY29u
c3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RSZWdF
eHApOworICAgICAgICBtX291dC5zdG9yZVB0cihzdHJpbmcsIGNvbnN0cnVjdG9yLCBtX2hlYXBz
LlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0SW5wdXQpOworICAgICAgICBtX291
dC5zdG9yZTMyKHN0YXJ0LCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9j
YWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0KTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihzdGFydCwg
Y29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3Vs
dF9lbmQpOworICAgICAgICBtX291dC5zdG9yZTgoCisgICAgICAgICAgICBtX291dC5jb25zdElu
dDMyKDApLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1
bHRfcmVpZmllZCk7CisgICAgfQorCiAgICAgTFZhbHVlIGRpZE92ZXJmbG93U3RhY2soKQogICAg
IHsKICAgICAgICAgLy8gVGhpcyBkb2VzIGEgdmVyeSBzaW1wbGUgbGVhZiBmdW5jdGlvbiBhbmFs
eXNpcy4gVGhlIGludmFyaWFudCBvZiBGVEwgY2FsbApAQCAtNjk3MCw2ICs3MTMzLDM5IEBAIHBy
aXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKworICAgIHZv
aWQgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMoSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgTFZh
bHVlIHZlY3Rvckxlbmd0aCwgTFZhbHVlIGJ1dHRlcmZseSkKKyAgICB7CisgICAgICAgIGlmICgh
aGFzRG91YmxlKGluZGV4aW5nVHlwZSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBHQyBhbHJlYWR5
IGluaXRpYWxpemVkIGV2ZXJ5dGhpbmcgdG8gSlNWYWx1ZSgpIGZvciB1cy4KKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERvdWJsZXMgbXVzdCBiZSBpbml0aWFs
aXplZCB0byBQTmFOLgorICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGluaXREb25lID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291dC5h
bmNob3IodmVjdG9yTGVuZ3RoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxQb2lu
dGVyID0gbV9vdXQuYW5jaG9yKGJ1dHRlcmZseSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAg
ICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExvb3Ap
LCB1bnN1cmUoaW5pdERvbmUpKTsKKyAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGluaXRM
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7CisgICAgICAgIExW
YWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgb3JpZ2luYWxJbmRleCk7CisgICAg
ICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQb2lu
dGVyKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICBtX291
dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksCisgICAgICAgICAgICBU
eXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFueUluZGV4KCks
IHBvaW50ZXIpKTsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5z
dWIoaW5kZXgsIG1fb3V0LmludDMyT25lKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1Bo
aShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRleCkpOworICAgICAgICBtX291dC5hZGRJbmNv
bWluZ1RvUGhpKHBvaW50ZXIsIG1fb3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRlciwgbV9vdXQu
aW50UHRyRWlnaHQpKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0
Lm5vdFplcm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUp
KTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGluaXREb25lLCBpbml0TGFzdE5l
eHQpOworICAgIH0KICAgICAKICAgICBMVmFsdWUgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTFZh
bHVlIG9iamVjdCwgU3RydWN0dXJlKiBwcmV2aW91c1N0cnVjdHVyZSkKICAgICB7CkBAIC05MjU3
LDcgKzk0NTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAg
ICAgcmV0dXJuIG1fb3V0LnRlc3ROb25aZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKTsK
ICAgICB9Ci0gICAgCisKICAgICBMVmFsdWUgdW5ib3hEb3VibGUoTFZhbHVlIGpzVmFsdWUpCiAg
ICAgewogICAgICAgICByZXR1cm4gbV9vdXQuYml0Q2FzdChtX291dC5hZGQoanNWYWx1ZSwgbV90
YWdUeXBlTnVtYmVyKSwgbV9vdXQuZG91YmxlVHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDE5ICs0MSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzo6REZHOwogCi1leHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgCi0gICAgQnV0dGVyZmx5KiBidXR0
ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKLSAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIEluZGV4aW5nSGVhZGVyKCksIDApOwot
ICAgIAotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhlYywg
c3RydWN0dXJlLCBidXR0ZXJmbHkpOwotICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3Vy
ZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCi0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQogZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmpl
Y3RJbk9TUigKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0
aW9uKiBtYXRlcmlhbGl6YXRpb24sCiAgICAgRW5jb2RlZEpTVmFsdWUqIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUqIHZhbHVlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBAQCBj
bGFzcyBMYXp5U2xvd1BhdGg7CiAKIGV4dGVybiAiQyIgewogCi1KU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
KSBXVEZfSU5URVJOQUw7Ci0KIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlh
bGl6ZU9iamVjdEluT1NSKAogICAgIEV4ZWNTdGF0ZSosIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxp
emF0aW9uKiwgRW5jb2RlZEpTVmFsdWUqKSBXVEZfSU5URVJOQUw7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTk3ODY5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
OTYsNiArOTYsMTAgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCisgICAgLy8gVGhpcyBpcyBhIHN1cGVyIGRhbmdl
cm91cyBtZXRob2QgZm9yIEpJVHMuIFNvbWV0aW1lcyB0aGUgSklUcyB3aWxsIHdhbnQgdG8gY3Jl
YXRlIGVpdGhlciBhCisgICAgLy8gSlNGaW5hbE9iamVjdCBvciBhIEpTQXJyYXkuIFRoaXMgaXMg
dGhlIG1ldGhvZCB0aGF0IHdpbGwgZG8gdGhhdC4KKyAgICBKU09iamVjdCogY3JlYXRlUmF3T2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogPSBu
dWxscHRyKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVk
U2l6ZShKU0NlbGwqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tl
bik7CkBAIC0xMDM0LDYgKzEwMzgsMjAgQEAgcHJpdmF0ZToKIAogSlNfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2Yo
RXhlY1N0YXRlKik7CiAKK2lubGluZSBKU09iamVjdCogSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVj
dCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkq
IGJ1dHRlcmZseSkKK3sKKyAgICBKU09iamVjdCogZmluYWxPYmplY3QgPSBuZXcgKAorICAgICAg
ICBOb3ROdWxsLCAKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KAorICAgICAg
ICAgICAgKmV4ZWMtPmhlYXAoKSwKKyAgICAgICAgICAgIGFsbG9jYXRpb25TaXplKHN0cnVjdHVy
ZS0+aW5saW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgKQorICAgICkgSlNPYmplY3QoZXhlYy0+dm0o
KSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+dm0oKSk7CisgICAgcmV0dXJuIGZpbmFsT2JqZWN0OworfQorCiBpbmxpbmUgSlNGaW5hbE9i
amVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjIsNiArMjYyLDggQEAgUmVnRXhwKiBSZWdFeHA6OmNyZWF0ZShWTSYgdm0sIGNvbnN0IFN0cgog
CiB2b2lkIFJlZ0V4cDo6Y29tcGlsZShWTSogdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6
ZSkKIHsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAg
IFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCAmbV9j
b25zdHJ1Y3Rpb25FcnJvcik7CiAgICAgaWYgKG1fY29uc3RydWN0aW9uRXJyb3IpIHsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5OSw4ICszMDEsMjIgQEAgaW50
IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcmIAogICAgIHJldHVybiBtYXRjaElu
bGluZSh2bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOwogfQogCitib29sIFJlZ0V4cDo6bWF0
Y2hDb25jdXJyZW50bHkoCisgICAgVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpCit7Cisg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmICghaGFzQ29k
ZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBwb3NpdGlvbiA9IG1hdGNoKHZtLCBzLCBzdGFydE9mZnNldCwg
b3ZlY3Rvcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0
Y2hPbmx5KFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRl
cm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9y
KTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzQwLDYgKzM1Niw4IEBAIE1hdGNoUmVzdWx0IFJlZ0V4cDo6
bWF0Y2goVk0mIHZtLCBjb25zdCAKIAogdm9pZCBSZWdFeHA6OmRlbGV0ZUNvZGUoKQogeworICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgaWYgKCFoYXND
b2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRlID0gTm90Q29tcGlsZWQ7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMTk3ODY5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYgUmVnRXhwX2gKICNkZWZpbmUgUmVnRXhwX2gKIAor
I2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9j
YXRvci5oIgogI2luY2x1ZGUgIk1hdGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiUmVnRXhwS2V5Lmgi
CkBAIC02NCw2ICs2NSwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25FcnJvcjsgfQogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgaW50IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7CisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlm
IHdlIGNvdWxkbid0IHJ1biB0aGUgcmVndWxhciBleHByZXNzaW9uIGZvciBhbnkgcmVhc29uLgor
ICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsKKyAg
ICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBNYXRjaFJlc3VsdCBtYXRjaChWTSYsIGNvbnN0IFN0
cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKIAogICAgIC8vIENhbGwgdGhlc2UgdmVyc2lv
bnMgb2YgdGhlIG1hdGNoIGZ1bmN0aW9ucyBpZiB5b3UncmUgZGVzcGVyYXRlIGZvciBwZXJmb3Jt
YW5jZS4KQEAgLTc3LDYgKzgyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdGF0ZSAh
PSBOb3RDb21waWxlZDsKICAgICB9CiAKKyAgICBib29sIGhhc0NvZGVGb3IoWWFycjo6WWFyckNo
YXJTaXplKTsKKwogICAgIHZvaWQgZGVsZXRlQ29kZSgpOwogCiAjaWYgRU5BQkxFKFJFR0VYUF9U
UkFDSU5HKQpAQCAtMTMyLDYgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ydE1h
dGNoQ2FsbENvdW50OwogICAgIHVuc2lnbmVkIG1fcnRNYXRjaEZvdW5kQ291bnQ7CiAjZW5kaWYK
KyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAg
ICAgWWFycjo6WWFyckNvZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkocmV2aXNp
b24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVk
UmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCisgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkxhc3RSZWdFeHAoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2Fj
aGVkUmVzdWx0LCBtX2xhc3RSZWdFeHApOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
Zkxhc3RJbnB1dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQs
IG1fbGFzdElucHV0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZXN1bHQoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX3Jlc3VsdCk7IH0K
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVpZmllZCgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fcmVpZmllZCk7IH0KKwogcHJpdmF0ZToKICAg
ICBNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKICAgICBib29sIG1fcmVpZmllZDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2
aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFJlZ0V4cENvbnN0cnVjdG9yLCBtX2NhY2hlZFJlc3VsdCk7IH0KKwogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBSZWdFeHBQcm90b3R5cGUqLCBHZXR0
ZXJTZXR0ZXIqIHNwZWNpZXMpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwSW5saW5lcy5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDIw
ICs2NywyNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZiAvLyBSRUdFWFBfRlVOQ19URVNUX0RBVEFf
R0VOCiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYg
dm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBSZWdF
eHA6Omhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewogICAgIGlmICho
YXNDb2RlKCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0YXRlICE9
IEpJVENvZGUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29k
ZS5oYXM4Qml0Q29kZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVn
RXhwSklUQ29kZS5oYXMxNkJpdENvZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAjZW5kaWYKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5M
SU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hh
clNpemUgY2hhclNpemUpCit7CisgICAgaWYgKGhhc0NvZGVGb3IoY2hhclNpemUpKQorICAgICAg
ICByZXR1cm47CiAKICAgICBjb21waWxlKCZ2bSwgY2hhclNpemUpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJl
dmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1h
dGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIEFMV0FZU19JTkxJ
TkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2gKICAgICAKICAgICBWZWN0b3I8aW50LCAzMj4g
c3VicGF0dGVyblJlc3VsdHM7CiAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGlu
ZSh2bSwgaW5wdXRWYWx1ZSwgc3RhcnRPZmZzZXQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICBB
U1NFUlQocG9zaXRpb24gPT0gc3VicGF0dGVyblJlc3VsdHNbMF0pOwogICAgIGlmIChwb3NpdGlv
biA9PSAtMSkgewogICAgICAgICByZXN1bHQgPSBNYXRjaFJlc3VsdDo6ZmFpbGVkKCk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273628</attachid>
            <date>2016-03-10 15:03:36 -0800</date>
            <delta_ts>2016-03-10 15:35:42 -0800</delta_ts>
            <desc>inching towards victory!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>82641</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc4NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2
MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3
QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAv
KiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEw
QkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBD
NzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhG
NjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGgg
PSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMz
NUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAogCQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovLAogCQkJCUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOEND
MDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBG
RDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYg
Kzc0NDgsNyBAQAogCQkJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEg
LyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFp
bmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTk1Miw2ICsxOTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogog
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5
Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MjMsNiArOTIzLDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAg
ICAgICAgIGRlZihIZWFwTG9jYXRpb24oUmVnRXhwT2JqZWN0TGFzdEluZGV4TG9jLCBSZWdFeHBP
YmplY3RfbGFzdEluZGV4LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hl
ZFJlc3VsdDoKKyAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czogewogICAgICAgICBBYnN0cmFjdEhl
YXAgaGVhcChEaXJlY3RBcmd1bWVudHNQcm9wZXJ0aWVzLCBub2RlLT5jYXB0dXJlZEFyZ3VtZW50
c09mZnNldCgpLm9mZnNldCgpKTsKQEAgLTEwODYsNyArMTA5MCw5IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMygp
LnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJlYWQoUmVnRXhwU3RhdGUp
OworICAgICAgICAgICAgcmVhZChSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAg
IHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0
SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJlYWQoV29y
bGQpOwpAQCAtMTA5OCw3ICsxMTA0LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJl
Z0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09
IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAgICAgICAg
ICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUoUmVnRXhw
U3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxOTc4NjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNyw2ICsxMTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0
R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9u
IDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMDAsNiArMTMwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgU3RvcmVCYXJyaWVyOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoK
ICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGp1c3Qgbm9k
ZXMgdGhhdCB3ZSBkb24ndCBjdXJyZW50bHkgZXhwZWN0IHRvIHNlZSBkdXJpbmcgZml4dXAuCiAg
ICAgICAgICAgICAvLyBJZiB3ZSBldmVyIHdhbnRlZCB0byBpbnNlcnQgdGhlbSBwcmlvciB0byBm
aXh1cCwgdGhlbiB3ZSBqdXN0IGhhdmUgdG8gY3JlYXRlCiAgICAgICAgICAgICAvLyBmaXh1cCBy
dWxlcyBmb3IgdGhlbS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0
aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
c2VydGlvblNldC5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBA
QCB2b2lkIEluc2VydGlvblNldDo6aW5zZXJ0U2xvdyhjb25zdCBJbnNlCiAgICAgbV9pbnNlcnRp
b25zLmluc2VydCgwLCBpbnNlcnRpb24pOwogfQogCi12b2lkIEluc2VydGlvblNldDo6ZXhlY3V0
ZShCYXNpY0Jsb2NrKiBibG9jaykKK3NpemVfdCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNC
bG9jayogYmxvY2spCiB7Ci0gICAgZXhlY3V0ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2VydGlv
bnMpOworICAgIHJldHVybiBleGVjdXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9ucyk7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUg
IkRGR05vZGVPcmlnaW4uaCIKICNpbmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRG
R09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKICNp
bmNsdWRlICJERkdUcmFuc2l0aW9uLmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1
ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgpAQCAtMjE5LDIwICsyMjAsNiBAQCBzdHJ1Y3Qg
U3RhY2tBY2Nlc3NEYXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1
c2hlZEF0KGZvcm1hdCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAotLy8gVGhpcyB0eXBlIHVzZWQg
aW4gcGFzc2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKLS8v
IGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50
byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAotLy8gYSBjb25zdGFudCBpbmRleCwgYXJn
dW1lbnQsIG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KLXN0cnVjdCBPcEluZm8gewotICAg
IE9wSW5mbygpIDogbV92YWx1ZSgwKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2
YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICBl
eHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KHZhbHVlKSkgeyB9Ci0jaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQotICAg
IGV4cGxpY2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KHZhbHVlKSkgeyB9Ci0jZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFs
dWUpIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAg
ICB1aW50cHRyX3QgbV92YWx1ZTsKLX07Ci0KIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUg
cmVwcmVzZW50cyBhIHNpbmdsZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE5Nzg2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjI0LDYgKzIyNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhWYXJJbmplY3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBt
YWNybyhSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFz
VmFyQXJncykgXAogICAgIG1hY3JvKENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKENoZWNrTm90RW1wdHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a0JhZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3NCw3
ICsxOTc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0
eVBMb2M6IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9PSBh
bGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9w
ZXJ0aWVzLmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRlc2Ny
aXB0b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShibG9j
aywgbG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5j
b250YWlucyh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW4uYXBwZW5kKG1fYm90dG9tKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkp
OwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRvbVBy
b3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEu
bV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAgICAg
ICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2JvdHRv
bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDMyICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKLXZvaWQgUGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQoImlkIiwgbV9pZGVudGlmaWVyTnVtYmVyKTsKLX0K
LQogdm9pZCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCJbIiwgbGlzdER1bXAobV9wcm9wZXJ0aWVzKSwgIl0i
KTsKIH0KIAotZmxvYXQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6b25lV2F5U2ltaWxhcml0
eVNjb3JlKAotICAgIGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBjb25z
dAotewotICAgIHVuc2lnbmVkIG51bUhpdHMgPSAwOwotICAgIGZvciAoUGhhbnRvbVByb3BlcnR5
VmFsdWUgdmFsdWUgOiBtX3Byb3BlcnRpZXMpIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcHJvcGVy
dGllcy5jb250YWlucyh2YWx1ZSkpCi0gICAgICAgICAgICBudW1IaXRzKys7Ci0gICAgfQotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obnVtSGl0cykgLyBzdGF0aWNfY2FzdDxmbG9hdD4o
bV9wcm9wZXJ0aWVzLnNpemUoKSk7Ci19Ci0KLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRh
dGE6OnNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhl
cikgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjptaW4ob25lV2F5U2ltaWxhcml0eVNjb3JlKG90
aGVyKSwgb3RoZXIub25lV2F5U2ltaWxhcml0eVNjb3JlKCp0aGlzKSk7Ci19Ci0KIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1Byb21vdGVkSGVh
cExvY2F0aW9uLmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTM1LDM4ICszNiwxMSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0cnVjdCBQaGFudG9tUHJvcGVy
dHlWYWx1ZSB7Ci0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUoKQotICAgICAgICA6IG1faWRlbnRp
Zmllck51bWJlcihVSU5UX01BWCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFBoYW50b21Qcm9w
ZXJ0eVZhbHVlKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCi0gICAgICAgIDogbV9pZGVudGlm
aWVyTnVtYmVyKGlkZW50aWZpZXJOdW1iZXIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB1bnNp
Z25lZCBtX2lkZW50aWZpZXJOdW1iZXI7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFBoYW50b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2lkZW50aWZpZXJOdW1iZXIgPT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLX07Ci0KIHN0cnVjdCBP
YmplY3RNYXRlcmlhbGl6YXRpb25EYXRhIHsKICAgICAvLyBEZXRlcm1pbmVzIHRoZSBtZWFuaW5n
IG9mIHRoZSBwYXNzZWQgbm9kZXMuCi0gICAgVmVjdG9yPFBoYW50b21Qcm9wZXJ0eVZhbHVlPiBt
X3Byb3BlcnRpZXM7CisgICAgVmVjdG9yPFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yPiBtX3By
b3BlcnRpZXM7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAg
Ci0gICAgLy8gVGhlIGZyYWN0aW9uIG9mIG15IHByb3BlcnRpZXMgdGhhdCB0aGUgb3RoZXIgZGF0
YSBoYXMuCi0gICAgZmxvYXQgb25lV2F5U2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEmKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgbWluaW11bSBvZiB0aGUg
dHdvIHBvc3NpYmxlIG9uZS13YXkgc2NvcmVzLgotICAgIGZsb2F0IHNpbWlsYXJpdHlTY29yZShj
b25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJikgY29uc3Q7CiB9OwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdPcEluZm9faAorI2RlZmluZSBERkdPcElu
Zm9faAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKERGR19K
SVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyB0eXBlIHVz
ZWQgaW4gcGFzc2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsK
Ky8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXgg
aW50byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAorLy8gYSBjb25zdGFudCBpbmRleCwg
YXJndW1lbnQsIG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KK3N0cnVjdCBPcEluZm8gewor
ICAgIE9wSW5mbygpIDogbV92YWx1ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oaW50MzJf
dCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAg
ICBleHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQor
ICAgIGV4cGxpY2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisjZW5kaWYKKyAgICBleHBsaWNpdCBPcEluZm8odm9pZCog
dmFsdWUpIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0K
KyAgICB1aW50cHRyX3QgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
KworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT3BJbmZvX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAxLDYgKzE0MDEsNTkgQEAgc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhcwogICAgIHJldHVybiAwOwogfQogCitjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCkgV1RGX0lOVEVSTkFMCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7CisKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0luZGV4aW5nSGVhZGVyKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkpKSB7CisgICAgICAgIEluZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICAgICAgaGVhZGVy
LnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAgICAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3Ro
KDApOworICAgICAgICAKKyAgICAgICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisg
ICAgICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LAorICAgICAgICAgICAgaGFzSW5kZXhpbmdIZWFkZXIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KSksIGhlYWRlciwgbGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGJ1dHRlcmZseSA9IG51bGxwdHI7CisKKyAgICBKU09iamVjdCogcmVzdWx0ID0g
SlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Cisg
ICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBp
biB0by1zcGFjZS4KKyAgICByZXR1bnIgcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIAorICAgIEJ1dHRlcmZseSog
YnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIHZtLCBudWxscHRyLCAwLCBz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigpLCAw
KTsKKyAgICAKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVj
dChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsg
Ly8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0
aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7CisKKyAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAgaGVhZGVyLnNldFZlY3Rvckxl
bmd0aChsZW5ndGgpOworICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7CisgICAgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgdm0sIG51bGxwdHIs
IDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgaGVhZGVyLAorICAgICAg
ICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogbGVuZ3RoKTsKKworICAgIC8vIFBhcmFkb3hpY2Fs
bHkgdGhpcyBtYXkgYWxsb2NhdGUgYSBKU0FycmF5LiBUaGF0J3MgdG90YWxseSBjb29sLgorICAg
IEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMsIHN0cnVj
dHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhh
dCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nREZHKEV4
ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmlsZXJMb2coKS0+cHJv
Y2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVkIGZyb20gaW5zaWRl
IERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsMTAgQEAgaW50NjRfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnREbwogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNDZWxsKiB2YWx1ZSwgSlNDZWxs
KiBwcm90byk7CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0KEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCkgV1RGX0lOVEVSTkFMOworCiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhFeGVj
U3RhdGUqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09wZXJhdGlv
blByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikgV1RGX0lO
VEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjgsNiArNjY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBHZXRTdGFjazoKICAgICAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAg
ICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgICAgICBjYXNlIFJlY29y
ZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDogewogICAg
ICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3Rh
Z2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1
cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAkocmV2aXNpb24g
MTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsNiArNzQsMTAgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFBybwogICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6
CiAgICAgICAgIG91dC5wcmludCgiTmFtZWRQcm9wZXJ0eVBMb2MiKTsKICAgICAgICAgcmV0dXJu
OworCisgICAgY2FzZSBJbmRleGVkUHJvcGVydHlQTG9jOgorICAgICAgICBvdXQucHJpbnQoIklu
ZGV4ZWRQcm9wZXJ0eVBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IEFyZ3VtZW50UExvYzoKICAgICAgICAgb3V0LnByaW50KCJBcmd1bWVudFBMb2MiKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJvbW90ZWRIZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyNSArMjgsNDEg
QEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1
ZGUgIkRGR0VkZ2UuaCIKKyNpbmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiREZH
T3BJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0cnVjdCBO
b2RlOworCisvLyBQcm9tb3RlZCBsb2NhdGlvbnMgYXJlIGxpa2UgaGVhcCBsb2NhdGlvbnMgYnV0
IGFyZSBtZWFudCB0byBiZSBtb3JlIHByZWNpc2UuIEEgaGVhcCBsb2NhdGlvbiBpcworLy8gYXBw
bGljYWJsZSB0byBDU0Ugc2NlbmFyaW9zLCB3aGVyZSBpdCBtYWtlcyBzZW5zZSB0byBzcGVhayBv
ZiBhIGxvY2F0aW9uIHZlcnkgYWJzdHJhY3RseS4gQQorLy8gcHJvbW90ZWQgaGVhcCBsb2NhdGlv
biBpcyBmb3IgY2FzZXMgd2hlcmUgd2Ugc3BlYWsgb2YgYSBzcGVjaWZpYyBvYmplY3QgYW5kIHRo
ZSBjb21waWxlciBrbm93cworLy8gdGhpcyBvYmplY3QncyBpZGVudGl0eSAtIGZvciBleGFtcGxl
LCB0aGUgb2JqZWN0IGFsbG9jYXRpb24gaGFzIGJlZW4gZWxpbWluYXRlZCBhbmQgd2UgdHVybmVk
IHRoZQorLy8gZmllbGRzIGludG8gbG9jYWwgdmFyaWFibGVzLiBCZWNhdXNlIHRoZXNlIHR3byBj
YXNlcyBoYXZlIHN1YnRseSBkaWZmZXJlbnQgbmVlZHMsIHdlIHVzZSBzdWJ0bHkKKy8vIGRpZmZl
cmVudCBzdHJ1Y3R1cmVzLiBPbmUgb2YgdGhlIHJlYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNl
cyBpcyB0aGF0IHByb21vdGVkIGxvY2F0aW9ucyBjYW4gYmUKKy8vIHNwb2tlbiBvZiB1c2luZyBl
aXRoZXIgYSBkZXNjcmlwdG9yIHdoaWNoIGRvZXMgbm90IHJlZmVyIHRvIGFueSBOb2RlKidzIG9y
IHdpdGggYSBoZWFwIGxvY2F0aW9uLAorLy8gd2hpY2ggaXMgYSBkZXNjcmlwdG9yIHdpdGggYSBO
b2RlKiBiYXNlLgorCiBlbnVtIFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBJbnZhbGlkUHJv
bW90ZWRMb2NhdGlvbktpbmQsCiAgICAgCi0gICAgU3RydWN0dXJlUExvYywKKyAgICBBY3RpdmF0
aW9uU2NvcGVQTG9jLAogICAgIEFjdGl2YXRpb25TeW1ib2xUYWJsZVBMb2MsCi0gICAgTmFtZWRQ
cm9wZXJ0eVBMb2MsCi0gICAgQXJndW1lbnRQTG9jLAogICAgIEFyZ3VtZW50Q291bnRQTG9jLAor
ICAgIEFyZ3VtZW50UExvYywKICAgICBBcmd1bWVudHNDYWxsZWVQTG9jLAotCi0gICAgRnVuY3Rp
b25FeGVjdXRhYmxlUExvYywKKyAgICBDbG9zdXJlVmFyUExvYywKICAgICBGdW5jdGlvbkFjdGl2
YXRpb25QTG9jLAotICAgIEFjdGl2YXRpb25TY29wZVBMb2MsCi0gICAgQ2xvc3VyZVZhclBMb2MK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsCisg
ICAgTmFtZWRQcm9wZXJ0eVBMb2MsCisgICAgUHVibGljTGVuZ3RoUExvYywKKyAgICBTdHJ1Y3R1
cmVQTG9jLAorICAgIFZlY3Rvckxlbmd0aFBMb2MKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRp
b25EZXNjcmlwdG9yIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFN0cmlu
Z1JlcGxhY2U6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBT
ZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1
bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0Nyw2ICszMDQ3
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3Vs
dDogeworICAgICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAg
ICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CiAgICAgICAgIApAQCAt
MzQ5Miw3ICszNDk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAg
ICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1p
dEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxl
bWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3Ry
dWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJl
c3VsdEdQUiBhbmQgc3RvcmFnZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0
aGUgSlNBcnJheSBhbmQgdGhlIEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOCw3ICsz
NzMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRl
SlNBcnJheShyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1l
bnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGlu
ZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdp
dGhEb3VibGUpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJs
b2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTc4LDcg
KzQ5ODMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAK
KyAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICBjb21waWxlTWF0ZXJpYWxp
emVOZXdPYmplY3Qobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBVbnJlYWNoYWJs
ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNzEsNiArMzE3MSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNv
bXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KKworICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBp
bGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFy
cmF5TW9kZSgpLmlzSlNBcnJheSgpKTsKQEAgLTM1NDIsNyArMzU0Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3Jh
Z2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBz
dHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxv
Y2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVu
dHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBw
b2ludCwgb25lIHdheSBvciBhbm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBw
b2ludGVycyB0bwogICAgICAgICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHks
IHJlc3BlY3RpdmVseS4KQEAgLTM3NzgsNyArMzc4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7
CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGlu
Z1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2Nh
dGVSYXdPYmplY3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1F
bGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBERkdfQVNT
RVJUKG1faml0LmdyYXBoKCksIG5vZGUsIGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAg
ICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihu
b2RlLT5zdGFydENvbnN0YW50KCkpOwpAQCAtNDk3MSw2ICs0OTc2LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXpl
TmV3T2JqZWN0KG5vZGUpOworICAgICAgICBicmVhazsKKwogI2lmIEVOQUJMRShGVExfSklUKSAg
ICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoQWRkMzIoCkBAIC01MDYxLDcgKzUwNzAsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmVJbW1lZGlhdGU6Ci0gICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1h
dGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2Ug
S2lsbFN0YWNrOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywyNyArNzcs
NDcgQEAgU3BlY3VsYXRpdmVKSVQ6On5TcGVjdWxhdGl2ZUpJVCgpCiB7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cykK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0
R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVj
aWRlZChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwg
aGFzQ29udGlndW91cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgSW5kZXhpbmdU
eXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBo
YXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4aW5nSGVhZGVyKGluZGV4aW5nVHlwZSk7CisKKyAg
ICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKTsK
KyAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKTsKICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwotICAgIAot
ICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgbnVt
RWxlbWVudHMpOworCisgICAgQVNTRVJUKHZlY3Rvckxlbmd0aCA+PSBudW1FbGVtZW50cyk7Cisg
ICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCB2ZWN0
b3JMZW5ndGgpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0g
ICAgCi0gICAgc2xvd0Nhc2VzLmFwcGVuZCgKLSAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9y
YWdlKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2Yo
SW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZUdQUikpOwotICAgIG1faml0LnN1YlB0cihUcnVzdGVk
SW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7Ci0gICAg
ZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMp
OwotICAgIAotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1Ymxp
Y0xlbmd0aCgpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3Ro
KSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRP
ZlZlY3Rvckxlbmd0aCgpKSk7Ci0gICAgCisKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgaWYg
KGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAgICBzaXplICs9IHZlY3Rvckxlbmd0aCAqIHNpemVv
ZihKU1ZhbHVlKSArIHNpemVvZihJbmRleGluZ0hlYWRlcik7CisgICAgc2l6ZSArPSBvdXRPZkxp
bmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKKworICAgIGlmIChzaXplKSB7CisgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoCisgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2Uo
VHJ1c3RlZEltbTMyKHNpemUpLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIGlmIChoYXNJbmRleGlu
Z0hlYWRlcikKKyAgICAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVu
Z3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSks
IHN0b3JhZ2VHUFIpOworICAgIH0gZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIoMCksIHN0b3JhZ2VHUFIpOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5h
bE9iamVjdDo6YWxsb2NhdGlvblNpemUoaW5saW5lQ2FwYWNpdHkpOworICAgIE1hcmtlZEFsbG9j
YXRvciogYWxsb2NhdG9yUHRyID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0
V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihhbGxvY2F0b3JQdHIpLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0QWxsb2NhdGVKU09i
amVjdChyZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3Rv
cmFnZUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdI
ZWFkZXIpCisgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZW
ZWN0b3JMZW5ndGgoKSkpOworCiAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKSAmJiBudW1FbGVtZW50cyA8IHZlY3Rvckxlbmd0aCkgewogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90
PihQTmFOKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTE3LDggKzEzNywxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5CiAgICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAogICAg
IC8vIG9mIHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8K
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9j
YXRvclNsb3dQYXRoR2VuZXJhdG9yPigKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCisgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uTmV3UmF3T2JqZWN0LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIs
CiAgICAgICAgIHN0cnVjdHVyZSwgbnVtRWxlbWVudHMpKTsKKworICAgIGlmIChoYXNJbmRleGlu
Z0hlYWRlcikKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobnVtRWxlbWVudHMp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9m
UHVibGljTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0
aChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGxlbmd0aEdQUiwgYm9v
bCBpbmNsdWRlVGhpcykKQEAgLTc2NTUsNiArNzY3OCwxMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUxhenlKU0NvbnN0YQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVj
dChOb2RlKiBub2RlKQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS0+c3RydWN0
dXJlU2V0KClbMF07CisKKyAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbV9u
b2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisgICAgICAgIAorICAgIEluZGV4aW5n
VHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOworICAgIGJvb2wg
aGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGluZ0hlYWRlcihpbmRleGluZ1R5cGUpOworICAg
IGludDMyX3QgcHVibGljTGVuZ3RoID0gMDsKKyAgICBpbnQzMl90IHZlY3Rvckxlbmd0aCA9IDA7
CisKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBFZGdlIGVk
Z2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgIHN3aXRj
aCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIFB1Ymxp
Y0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoID0gZWRnZS0+YXNJbnQz
MigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5n
dGhQTG9jOgorICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9IGVkZ2UtPmFzSW50MzIoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwor
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHN0b3JhZ2VH
UFIgPSBzdG9yYWdlLmdwcigpOworICAgIAorICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1
bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgMCwgdmVjdG9yTGVuZ3RoKTsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAg
UHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVz
W2ldOworICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgIGNhc2Ug
SW5kZXhlZFByb3BlcnR5UExvYzogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgZWRnZSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAg
ICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGRlc2NyaXB0b3IuaW5mbygp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgTmFtZWRQ
cm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRl
bnRpZmllcnMoKVtkZXNjcmlwdG9yLmluZm8oKV07CisgICAgICAgICAgICBmb3IgKFByb3BlcnR5
TWFwRW50cnkgZW50cnkgOiBzdHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25jdXJyZW50bHkoKSkg
eworICAgICAgICAgICAgICAgIGlmICh1aWQgIT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIGVkZ2UpOworICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gaXNJbmxpbmVPZmZz
ZXQoZW50cnkub2Zmc2V0KSA/IHJlc3VsdEdQUiA6IHN0b3JhZ2VHUFI7CisgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUuanNWYWx1ZVJl
Z3MoKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
b2Zmc2V0UmVsYXRpdmVUb0Jhc2UoZW50cnkub2Zmc2V0KSkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWNv
cmRSZWdFeHBDYWNoZWRSZXN1bHQoTm9kZSogbm9kZSkKK3sKKyAgICBFZGdlIGNvbnN0cnVjdG9y
RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCk7CisgICAgRWRnZSByZWdFeHBFZGdl
ID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICBFZGdlIHN0cmluZ0VkZ2UgPSBt
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpOworICAgIEVkZ2Ugc3RhcnRFZGdlID0gbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKTsKKyAgICBFZGdlIGVuZEVkZ2UgPSBtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDQpOworCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY29uc3RydWN0b3Io
dGhpcywgY29uc3RydWN0b3JFZGdlKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByZWdFeHAo
dGhpcywgcmVnRXhwRWRnZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3RyaW5nKHRoaXMs
IHJlZ0V4cEVkZ2UpOworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzdGFydCh0aGlzLCBzdGFy
dEVkZ2UpOworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBlbmQodGhpcywgZW5kRWRnZSk7CisK
KyAgICBHUFJSZWcgY29uc3RydWN0b3JHUFIgPSBjb25zdHJ1Y3Rvci5ncHIoKTsKKyAgICBHUFJS
ZWcgcmVnRXhwR1BSID0gcmVnRXhwLmdwcigpOworICAgIEdQUlJlZyBzdHJpbmdHUFIgPSBzdHJp
bmcuZ3ByKCk7CisgICAgR1BSUmVnIHN0YXJ0R1BSID0gc3RhcnQuZ3ByKCk7CisgICAgR1BSUmVn
IGVuZEdQUiA9IGVuZC5ncHIoKTsKKworICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBSZWdFeHBDb25z
dHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKTsKKworICAgIG1faml0LnN0b3JlUHRyKAor
ICAgICAgICByZWdFeHBHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVj
dG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4cCgp
KSk7CisgICAgbV9qaXQuc3RvcmVQdHIoCisgICAgICAgIHN0cmluZ0dQUiwKKyAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3MoY29uc3RydWN0b3JHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJl
c3VsdDo6b2Zmc2V0T2ZMYXN0SW5wdXQoKSkpOworICAgIG1faml0LnN0b3JlMzIoCisgICAgICAg
IHN0YXJ0R1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcygKKyAgICAgICAgICAgIGNv
bnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0Ojpv
ZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBzdGFydCkpKTsK
KyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBlbmRHUFIsCisgICAgICAgIEpJVENvbXBpbGVy
OjphZGRyZXNzKAorICAgICAgICAgICAgY29uc3RydWN0b3JHUFIsCisgICAgICAgICAgICBvZmZz
ZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VU
T0YoTWF0Y2hSZXN1bHQsIGVuZCkpKTsKKyAgICBtX2ppdC5zdG9yZTgoCisgICAgICAgIFRydXN0
ZWRJbW0zMigwKSwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY29uc3RydWN0b3JHUFIs
IG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZWlmaWVkKCkpKTsKKworICAg
IG5vUmVzdWx0KG5vZGUpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAxLDYgKzI0MDEsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZUxhenlKU0NvbnN0YW50KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVNYXRlcmlhbGl6ZU5l
d09iamVjdChOb2RlKik7CisgICAgdm9pZCBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0
KE5vZGUqKTsKICAgICAKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lkIG1v
dmVGYWxzZVRvKEdQUlJlZyk7CkBAIC0yNTE2LDcgKzI1MTgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLT5jbGFzc0luZm8oKSksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNs
YXNzSW5mb09mZnNldCgpKSk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0QWxsb2NhdGVKU0FycmF5
KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25l
ZCBudW1FbGVtZW50cyk7CisgICAgdm9pZCBlbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJl
c3VsdEdQUiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAgIHZvaWQgZW1pdEdldExlbmd0
aChJbmxpbmVDYWxsRnJhbWUqLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0g
ZmFsc2UpOwogICAgIHZvaWQgZW1pdEdldExlbmd0aChDb2RlT3JpZ2luLCBHUFJSZWcgbGVuZ3Ro
R1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsMTEgKzI1
MywxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6IHsKKyAgICAg
ICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAg
ICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgorICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1
cmU6CisgICAgICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogewogICAgICAg
ICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAg
ICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoK
ICAgICAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgpAQCAtMjY2LDEzICsy
NzAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgotICAgICAgICAgICAg
Y2FzZSBQdXRCeUlkRmx1c2g6Ci0gICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6IHsKLSAg
ICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGNhc2UgUHV0QnlP
ZmZzZXQ6IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDIo
KSwgbV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw2ICsz
MzYsMTIxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgUmVnRXhwRXhlYzoKKyAgICAgICAgY2FzZSBSZWdFeHBUZXN0OiB7CisgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ub2RlLT5jaGlsZDEoKS0+ZHlu
YW1pY0Nhc3RDb25zdGFudDxKU0dsb2JhbE9iamVjdCo+KCk7CisgICAgICAgICAgICBpZiAoIWds
b2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgaWYgKGds
b2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICBOb2RlKiByZWdFeHBPYmplY3ROb2RlID0gbV9ib2RlLT5jaGlsZDIoKS5u
b2RlKCk7CisgICAgICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCA9IG1fbm9kZS0+
Y2hpbGQyKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8UmVnRXhwT2JqZWN0Kj4oKTsKKyAgICAgICAg
ICAgIGlmICghcmVnRXhwT2JqZWN0KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBOb2RlKiBzdHJpbmdOb2RlID0gbV9ub2RlLT5jaGlsZDMoKS5ub2RlKCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIE5PVEU6IFRoaXMgbW9zdGx5IGFscmVhZHkgcHJvdGVjdHMg
dXMgZnJvbSBoYXZpbmcgdGhlIGNvbXBpbGVyIGV4ZWN1dGUgYSByZWdleHAKKyAgICAgICAgICAg
IC8vIG9wZXJhdGlvbiBvbiBhIGdpbm9ybW91cyBzdHJpbmcgYnkgcHJldmVudGluZyB1cyBmcm9t
IGdldHRpbmcgb3VyIGhhbmRzIG9uIGdpbm9ybW91cworICAgICAgICAgICAgLy8gc3RyaW5ncyBp
biB0aGUgZmlyc3QgcGxhY2UuCisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nID0gbV9ub2RlLT5j
aGlsZDMoKS0+dHJ5R2V0U3RyaW5nKG1fZ3JhcGgpOworICAgICAgICAgICAgaWYgKCFzdHJpbmcp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIFJlZ0V4cCogcmVnRXhwID0g
cmVnRXhwT2JqZWN0LT5yZWdFeHAoKTsKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiByZWdFeHBG
cm96ZW5WYWx1ZSA9IG1fZ3JhcGguZnJlZXplKHJlZ0V4cCk7CisKKyAgICAgICAgICAgIHVuc2ln
bmVkIGxhc3RJbmRleDsKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgb25seSB3b3JrIGlmIHdlIGNhbiBwcm92
ZSB3aGF0IHRoZSB2YWx1ZSBvZiBsYXN0SW5kZXggaXMuIFRvIGRvIHRoaXMKKyAgICAgICAgICAg
ICAgICAvLyBzYWZlbHksIHdlIG5lZWQgdG8gZXhlY3V0ZSB0aGUgaW5zZXJ0aW9uIHNldCBzbyB0
aGF0IHdlIHNlZSBhbnkgcHJldmlvdXMgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAvLyByZWR1
Y3Rpb25zLiBUaGlzIGlzIG5lZWRlZCBmb3Igc291bmRuZXNzIHNpbmNlIG90aGVyd2lzZSB0aGUg
ZWZmZWN0ZnVsbmVzcyBvZiBhbnkKKyAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBzdHJlbmd0
aCByZWR1Y3Rpb25zIHdvdWxkIGJlIGludmlzaWJsZSB0byB1cy4KKyAgICAgICAgICAgICAgICBl
eGVjdXRlSW5zZXJ0aW9uU2V0KCk7CisgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gVUlOVF9N
QVg7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBvdGhlck5vZGVJbmRleCA9IG1fbm9k
ZUluZGV4OyBvdGhlck5vZGVJbmRleC0tOykgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBv
dGhlck5vZGUgPSBtX2Jsb2NrLT5hdChvdGhlck5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChvdGhlck5vZGUgPT0gcmVnRXhwT2JqZWN0Tm9kZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgbGFzdEluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChvdGhlck5vZGUt
Pm9wKCkgPT0gU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4CisgICAgICAgICAgICAgICAgICAgICAg
ICAmJiBvdGhlck5vZGUtPmNoaWxkMSgpID09IHJlZ0V4cE9iamVjdE5vZGUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQyKCktPmlzSW50MzJDb25zdGFudCgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlck5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCkg
Pj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG90aGVyTm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAod3JpdGVzT3ZlcmxhcChtX2dyYXBoLCBvdGhlck5vZGUsIFJlZ0V4cE9iamVjdF9s
YXN0SW5kZXgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGlmIChsYXN0SW5kZXggPT0gVUlOVF9NQVgpCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
bGFzdEluZGV4ID0gMDsKKworICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExh
emlseShnbG9iYWxPYmplY3QtPmhhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCgpKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnJl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpOworICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBSZWdFeHBD
b25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9y
KCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogY29uc3RydWN0b3JGcm96ZW5WYWx1ZSA9IG1f
Z3JhcGguZnJlZXplKGNvbnN0cnVjdG9yKTsKKworICAgICAgICAgICAgaW50IHBvc2l0aW9uOwor
ICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IG92ZWN0b3I7CisgICAgICAgICAgICBpZiAoIXJl
Z0V4cC0+bWF0Y2hDb25jdXJyZW50bHkodm0oKSwgc3RyaW5nLCBsYXN0SW5kZXgsIHBvc2l0aW9u
LCBvdmVjdG9yKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLy8gV2Un
dmUgY29uc3RhbnQtZm9sZGVkIHRoZSByZWdleHAuIE5vdyB3ZSdyZSBjb21taXR0ZWQgdG8gcmVw
bGFjaW5nIFJlZ0V4cEV4ZWMvVGVzdC4KKworICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsK
KworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICBtX25vZGVJbmRleCwgU3BlY05vbmUsIENoZWNrLCBtX25vZGUtPm9yaWdpbiwgbV9ub2RlLT5j
aGlsZHJlbi5qdXN0Q2hlY2tzKCkpOworCisgICAgICAgICAgICAvLyBXaGV0aGVyIGl0J3MgRXhl
YyBvciBUZXN0LCB3ZSBuZWVkIHRvIHRlbGwgdGhlIGNvbnN0cnVjdG9yIGFuZCBSZWdFeHBPYmpl
Y3Qgd2hhdCdzIHVwLgorICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9IC0xKSB7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5z
aXplKCk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2Uo
CisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGNv
bnN0cnVjdG9yRnJvemVuVmFsdWUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCByZWdFeHBGcm96ZW5WYWx1ZSwgS25vd25DZWxs
VXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChF
ZGdlKHN0cmluZ05vZGUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2Rl
SW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBqc051bWJlcihwb3NpdGlvbiksIEtub3duSW50MzJVc2Up
KTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwganNOdW1i
ZXIob3ZlY3RvclsxXSksIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3Bl
Y05vbmUsIE5vZGU6OlZhckFyZywgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX25vZGUtPm9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKCksIE9wSW5mbygpLCBmaXJzdENoaWxk
LCBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPmdsb2JhbE9yU3Rp
Y2t5KCkpIHsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIFNldFJlZ0V4cE9iamVjdExh
c3RJbmRleCwgbV9ub2RlLT5vcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShyZWdF
eHBPYmplY3ROb2RlLCBSZWdFeHBPYmplY3RVc2UpLAorICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGpz
TnVtYmVyKHBvc2l0aW9uID09IC0xID8gMCA6IG92ZWN0b3JbMV0pKSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChtX25vZGUtPm9wY29kZSgpID09IFJlZ0V4cFRlc3QpIHsKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNCb29sZWFu
KHBvc2l0aW9uICE9IC0xKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHNvcnQgb2YgZGlmZmljdWx0IHBhcnQuCisg
ICAgICAgICAgICBGSVhNRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zODAsNiArNDk1
LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisK
KyAgICB2b2lkIGV4ZWN1dGVJbnNlcnRpb25TZXQoKQorICAgIHsKKyAgICAgICAgbV9ub2RlSW5k
ZXggPSBtX2luc2VydGlvblNldC5leGVjdXRlKG1fYmxvY2spOworICAgIH0KICAgICAKICAgICBJ
bnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAx
OTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3OCw2ICsyNzgsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0
aW9uKCktPmRmZ1Nob3VsZFdhdGNoKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdP
YmplY3Q6CisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBu
b2RlLT5zdHJ1Y3R1cmVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBv
bmx5IHN1cHBvcnRzIHN0cnVjdHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5
LgorICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCkgPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0FycmF5OjppbmZvKCkpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgY2VydGFpbiBpbmRl
eGluZyBzaGFwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFo
YXNBbnlBcnJheVN0b3JhZ2Uoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAg
ICAgICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICAgICAgICAgIFZBTElE
QVRFKChub2RlKSwgbm9kZS0+aXNOdW1iZXJDb25zdGFudCgpKTsKQEAgLTQ2MSwxMyArNDcyLDQy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAg
ICAgICAgICAgICAgICAgY2FzZSBQdXRIaW50OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09i
amVjdDoKICAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgS2ls
bFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgISJ1bmV4cGVjdGVkIG5vZGUgdHlwZSBpbiBDUFMiKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6
ZU5ld09iamVjdDogeworICAgICAgICAgICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3MgYXJy
YXkgbGVuZ3RocyB0byBiZSBjb25zdGFudC4gVGhpcyBjb25zdHJhaW50IG9ubHkgZXhpc3RzCisg
ICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBERkcgc3VwcG9ydCBm
b3IgYW55dGhpbmcgbW9yZSBhbmQgd2UgZG9uJ3QgbmVlZCBhbnkKKyAgICAgICAgICAgICAgICAg
ICAgLy8gb3RoZXIga2luZCBvZiBzdXBwb3J0IGZvciBub3cuCisgICAgICAgICAgICAgICAgICAg
IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBtX25vZGUtPm9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0
YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNb
aV07CisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5t
X3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFB1
YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0
aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2Up
LCBlZGdlLT5pc0ludDMyQ29uc3RhbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIG9ubHkgYWxsb3dzIG9u
ZSBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+
c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpOworCisgICAgICAgICAgICAgICAgICAgIC8vIENQ
UyBkaXNhbGxvd3MgaW50MzIgYW5kIGRvdWJsZSBhcnJheXMuIFRob3NlIHJlcXVpcmUgd2VpcmQg
dHlwZSBjaGVja3MgYW5kCisgICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLiBUaGV5
IGFyZSBub3QgbmVlZGVkIGluIHRoZSBERkcgcmlnaHQgbm93LiBXZSBzaG91bGQgYWRkIHN1cHBv
cnQKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoZXNlIGlmIHRoZSBERkcgZXZlciBuZWVk
cyBpdC4KKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5v
ZGUtPnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgo
bm9kZSksICFoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206
CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbV9ncmFwaC5tX2ZpeHBvaW50
U3RhdGUgIT0gRml4cG9pbnROb3RDb252ZXJnZWQpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAt
NzcsNiArNzcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3Jv
KEpTU3ltYm9sVGFibGVPYmplY3Rfc3ltYm9sVGFibGUsIEpTU3ltYm9sVGFibGVPYmplY3Q6Om9m
ZnNldE9mU3ltYm9sVGFibGUoKSkgXAogICAgIG1hY3JvKEpTV3JhcHBlck9iamVjdF9pbnRlcm5h
bFZhbHVlLCBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWVPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKE1hcmtlZEFsbG9jYXRvcl9mcmVlTGlzdEhlYWQsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0
T2ZGcmVlTGlzdEhlYWQoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJl
c3VsdF9sYXN0UmVnRXhwLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQo
KSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkpIFwKKyAgICBtYWNy
byhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdElucHV0LCBSZWdFeHBDb25zdHJ1
Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0
T2ZMYXN0SW5wdXQoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3Vs
dF9yZXN1bHRfc3RhcnQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgp
ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9G
KE1hdGNoUmVzdWx0LCBzdGFydCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNo
ZWRSZXN1bHRfcmVzdWx0X2VuZCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVz
dWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1RfT0ZG
U0VUT0YoTWF0Y2hSZXN1bHQsIGVuZCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9j
YWNoZWRSZXN1bHRfcmVpZmllZCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVz
dWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSBcCiAgICAgbWFj
cm8oUmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRl
eCgpKSBcCiAgICAgbWFjcm8oUmVnRXhwT2JqZWN0X2xhc3RJbmRleElzV3JpdGFibGUsIFJlZ0V4
cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXhJc1dyaXRhYmxlKCkpIFwKICAgICBtYWNybyhTY29w
ZWRBcmd1bWVudHNfb3ZlcnJvZGVUaGluZ3MsIFNjb3BlZEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVy
cm9kZVRoaW5ncygpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgs
NyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBT
dHJpbmdSZXBsYWNlOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgIGNh
c2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVk
UmVzdWx0OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZp
c2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzOCw2ICs5MzgsOSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgICAgIGNvbXBpbGVTZXRS
ZWdFeHBPYmplY3RMYXN0SW5kZXgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKKyAgICAgICAgICAgIGNvbXBpbGVSZWNvcmRSZWdF
eHBDYWNoZWRSZXN1bHQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUGhh
bnRvbUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtMzcxNiwzMiArMzcxOSw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVibGlj
TGVuZ3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAgICAg
ICAgICAgICBtX291dC5zdG9yZTMyKHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1
dHRlcmZseV92ZWN0b3JMZW5ndGgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaGFz
RG91YmxlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgTEJhc2lj
QmxvY2sgaW5pdExvb3AgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGluaXREb25lID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5jaG9y
KHZlY3Rvckxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxQ
b2ludGVyID0gbV9vdXQuYW5jaG9yKGJ1dHRlcmZseSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQu
YnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIodmVjdG9yTGVuZ3Ro
KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExhc3ROZXh0ID0gbV9vdXQuYXBwZW5k
VG8oaW5pdExvb3AsIGluaXREb25lKTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgaW5kZXggPSBt
X291dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOwotICAgICAgICAgICAgICAgIExW
YWx1ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQb2ludGVyKTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KAotICAgICAg
ICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFO
KSksCi0gICAgICAgICAgICAgICAgICAgIFR5cGVkUG9pbnRlcihtX2hlYXBzLmluZGV4ZWREb3Vi
bGVQcm9wZXJ0aWVzLmF0QW55SW5kZXgoKSwgcG9pbnRlcikpOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5zdWIoaW5kZXgsIG1fb3V0
LmludDMyT25lKTsKLSAgICAgICAgICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKGluZGV4
LCBtX291dC5hbmNob3IobmV4dEluZGV4KSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYWRkSW5j
b21pbmdUb1BoaShwb2ludGVyLCBtX291dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1fb3V0
LmludFB0ckVpZ2h0KSkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAg
ICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKG5leHRJbmRleCksIHVuc3VyZShpbml0TG9vcCks
IHVuc3VyZShpbml0RG9uZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGluaXREb25lLCBpbml0TGFzdE5leHQpOwotICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhtX25vZGUtPmluZGV4aW5nVHlwZSgp
LCB2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3Iob2JqZWN0KTsKICAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTYyODYsMTEgKzYyNjUsMjEgQEAgcHJp
dmF0ZToKICAgICAgICAgLy8gTG93ZXIgdGhlIHZhbHVlcyBmaXJzdCwgdG8gYXZvaWQgY3JlYXRp
bmcgdmFsdWVzIGluc2lkZSBhIGNvbnRyb2wgZmxvdyBkaWFtb25kLgogICAgICAgICAKICAgICAg
ICAgVmVjdG9yPExWYWx1ZSwgOD4gdmFsdWVzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICB2YWx1ZXMu
YXBwZW5kKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKSkpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAxICsgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEubV9wcm9wZXJ0aWVzW2ldLmtp
bmQoKSkgeworICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAgICAg
Y2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93
SW50MzIoZWRnZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0pTVmFsdWUoZWRnZSkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCA9IG1fbm9kZS0+c3RydWN0dXJlU2V0KCk7
Ci0gICAgICAgIAorCiAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaywgMT4gYmxvY2tzKHNldC5z
aXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBpLS07KQogICAg
ICAgICAgICAgYmxvY2tzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTYzMTUsMjEgKzYzMDQs
NDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBvYmplY3Q7CiAgICAgICAgICAgICBM
VmFsdWUgYnV0dGVyZmx5OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0luZGV4aW5nSGVhZGVyKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkpKSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5h
bE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAg
ICAgICAgICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9ICZ2bSgpLmhlYXAuYWxs
b2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworCisgICAg
ICAgICAgICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IEpTQzo6aGFzSW5kZXhpbmdIZWFk
ZXIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW5kZXhpbmdIZWFkZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBMVmFsdWUgaW5kZXhpbmdQ
YXlsb2FkU2l6ZUluQnl0ZXMgPSBtX291dC5pbnRQdHJaZXJvOworICAgICAgICAgICAgICAgIExW
YWx1ZSB2ZWN0b3JMZW5ndGggPSBtX291dC5pbnQzMlplcm87CisgICAgICAgICAgICAgICAgTFZh
bHVlIHB1YmxpY0xlbmd0aCA9IG1fb3V0LmludDMyWmVybzsKKyAgICAgICAgICAgICAgICBpZiAo
aGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmdIZWFkZXJT
aXplID0gc2l6ZW9mKEluZGV4aW5nSGVhZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0
YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRlc2Ny
aXB0b3Iua2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0
aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoID0gdmFsdWVz
W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZlY3Rvckxlbmd0aCA9IHZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX291dC5tdWwobV9vdXQuemVyb0V4dFB0cih2ZWN0b3JMZW5n
dGgpLCBtX291dC5pbnRQdHJFaWdodCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgTFZhbHVlIGJ1dHRlcmZseVNpemUgPSBtX291dC5hZGQoCisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50UHRyKAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpICsgaW5kZXhpbmdIZWFkZXJT
aXplKSwKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0g
bV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQ
YXRoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9y
YWdlID0gYWxsb2NhdGVCYXNpY1N0b3JhZ2VBbmRHZXRFbmQoCi0gICAgICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVv
ZihKU1ZhbHVlKSksCi0gICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsKLSAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9yYWdlID0gYWxsb2NhdGVCYXNp
Y1N0b3JhZ2VBbmRHZXRFbmQoYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpOworCiAgICAgICAgICAg
ICAgICAgTFZhbHVlIGZhc3RCdXR0ZXJmbHlWYWx1ZSA9IG1fb3V0LmFkZCgKLSAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIGVuZE9m
U3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN1YihlbmRPZlN0b3JhZ2UsIGlu
ZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSAtIGluZGV4aW5nSGVhZGVyU2l6ZSkpOwor
CisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgsIGZhc3RCdXR0ZXJm
bHlWYWx1ZSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdE9iamVjdFZhbHVlID0gYWxsb2NhdGVPYmpl
Y3QoCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvciksIHN0
cnVjdHVyZSwgZmFzdEJ1dHRlcmZseVZhbHVlLCBzbG93UGF0aCk7CkBAIC02MzQwLDEyICs2MzU3
LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgICAgICBMVmFs
dWUgc2xvd09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAotICAgICAgICAgICAgICAgICAgICBb
PV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93
UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
TGF6eUNhbGxHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9u
TmV3T2JqZWN0V2l0aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNs
b3dPYmplY3RWYWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsK
KyAgICAgICAgICAgICAgICAgICAgc2xvd09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAg
ICAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlv
bnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJ
bmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25z
WzFdLmRpcmVjdEdQUigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25z
KSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0
aW9uc1swXS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHNsb3dPYmplY3QgPSBtX291dC5hbmNob3Ioc2xvd09iamVjdFZhbHVlKTsKICAgICAgICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93QnV0dGVyZmx5ID0gbV9vdXQuYW5jaG9yKAogICAg
ICAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKHNsb3dPYmplY3RWYWx1ZSwgbV9oZWFwcy5K
U09iamVjdF9idXR0ZXJmbHkpKTsKQEAgLTYzNTYsNiArNjM4NSwxMTIgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBvYmplY3QgPSBtX291dC5waGkobV9vdXQu
aW50UHRyLCBmYXN0T2JqZWN0LCBzbG93T2JqZWN0KTsKICAgICAgICAgICAgICAgICBidXR0ZXJm
bHkgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVyZmx5
KTsKKworICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVibGljTGVuZ3RoLCBmYXN0QnV0
dGVyZmx5VmFsdWUsIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisKKyAgICAgICAg
ICAgICAgICBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
LCB2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSk7CisKKyAgICAgICAgICAgICAgICBIYXNoTWFwPGlu
dDMyX3QsIExWYWx1ZT4gaW5kZXhNYXA7CisgICAgICAgICAgICAgICAgVmVjdG9yPGludDMyXz4g
aW5kaWNlczsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVy
dGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlv
bkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAg
ICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5raW5kKCkgIT0gSW5kZXhlZFByb3BlcnR5UExvYykK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBp
bnQzMl90IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVzY3JpcHRvci5pbmZvKCkpOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBp
bmRleE1hcC5hZGQoaW5kZXgsIHZhbHVlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbV9ub2RlLCByZXN1bHQpOyAvLyBEdXBsaWNhdGVzIGFyZSBpbGxlZ2Fs
LgorCisgICAgICAgICAgICAgICAgICAgIGluZGljZXMuYXBwZW5kKGluZGV4KTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWluZGljZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c29ydChpbmRpY2VzLmJlZ2luKCksIGluZGljZXMuZW5k
KCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uOworICAgICAgICAgICAgICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2s+
IGJsb2Nrc1dpdGhTdG9yZXMoaW5kaWNlcy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBW
ZWN0b3I8TEJhc2ljQmxvY2s+IGJsb2Nrc1dpdGhDaGVja3MoaW5kaWNlcy5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
aW5kaWNlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dp
dGhTdG9yZXNbaV0gPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAg
YmxvY2tzV2l0aENoZWNrc1tpXSA9IG1fb3V0Lm5ld0Jsb2NrKCk7IC8vIGJsb2Nrc1dpdGhDaGVj
a3NbMF0gaXMgdGhlIGNvbnRpbnVhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluZGV4TGFzdE5leHQgPSBtX291dC5tX25leHRC
bG9jazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90IGluZGV4ID0gaW5kaWNlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExW
YWx1ZSB2YWx1ZSA9IGluZGV4TWFwLmdldChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX291dC5iZWxvdyhtX291dC5jb25zdEludDMyKGluZGV4KSwgcHVibGlj
TGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN1cmUoYmxvY2tzV2l0aFN0
b3Jlc1tpXSksIHVuc3VyZShibG9ja3NXaXRoQ2hlY2tzW2ldKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1dpdGhTdG9yZXNbaV0sIGJsb2Nrc1dpdGhD
aGVja3NbaV0pOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcyB0byB0eXBl
LWNoZWNrIGFuZCBjb252ZXJ0IGl0cyBpbnB1dHMsIGJ1dCBpdCBjYW5ub3QgZG8gc28gaW4gYQor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2F5IHRoYXQgdXBkYXRlcyBBSS4gVGhhdCdzIGEg
Yml0IGFubm95aW5nLCBidXQgaWYgeW91IHRoaW5rIGFib3V0IGhvdworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc2lua2luZyB3b3JrcywgaXQncyBhY3R1YWxseSBub3QgYSBiYWQgdGhpbmcu
IFdlIGFyZSB2aXJ0dWFsbHkgZ3VhcmFudGVlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dGhhdCB0aGVzZSB0eXBlIGNoZWNrcyB3aWxsIG5vdCBmYWlsLCBzaW5jZSB0aGUgdHlwZSBjaGVj
a3MgdGhhdCBndWFyZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwg
c3RvcmVzIHRvIHRoZSBhcnJheSBhcmUgc3RpbGwgc29tZXdoZXJlIGFib3ZlIHRoaXMgcG9pbnQu
CisgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6OlN0b3JlVHlwZSBzdG9yZVR5cGU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBJbmRleGVkQWJzdHJhY3RIZWFwKiBoZWFwOworICAgICAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgdGhlIHBy
b3ZlbiB0eXBlIGlmIHdlIGhhZCB0aGUgRWRnZSBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTUzMTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwg
bm9WYWx1ZSgpLCBudWxscHRyLCBpc05vdEludDMyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RvcmVUeXBlID0gU3RvcmU2NDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGllczsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBB
TExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IElmIHRoZSBzb3VyY2UgaXMgVmFsdWVSZXAsIHdlIHNob3VsZCBhdm9pZCBlbWl0
dGluZyBhbnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVja3MuIFdlIGNvdWxk
IGFsc28gYXZvaWQgZW1pdHRpbmcgY2hlY2tzIGlmIHdlIGhhZCB0aGUgRWRnZSBvZgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTEKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFu
Y2goaXNJbnQzMih2YWx1ZSksIHVuc3VyZShpbnRDYXNlKSwgdW5zdXJlKGRvdWJsZUNhc2UpKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayBpbnRSZXN1bHQgPQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5hbmNob3IobV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMih2YWx1
ZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVD
YXNlLCBjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3Vs
YXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOdW1iZXIodmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBkb3VibGVSZXN1bHQgPSBtX291
dC5hbmNob3IodW5ib3hEb3VibGUodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IG1fb3V0LnBoaShEb3VibGUsIGludFJlc3VsdCwgZG91Ymxl
UmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBTdG9yZURv
dWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhl
ZERvdWJsZVByb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RvcmVUeXBlID0gU3RvcmU2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFw
ID0gJm1faGVhcHMuaW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJJ
bnZhbGlkIGluZGV4aW5nIHR5cGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUodmFsdWUsIG1fb3V0LmFkZHJlc3Mo
YnV0dGVyZmx5LCBoZWFwLT5hdChpbmRleCkpLCBzdG9yZVR5cGUpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5qdW1wKGJsb2Nrc1dpdGhDaGVja3NbaV0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmxvY2tzV2l0aENoZWNrc1tpXSwgaSA/IGJsb2Nrc1dpdGhTdG9yZXNbaSAtIDFdIDogaW5kZXhM
YXN0TmV4dCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEluIHRoZSBlYXN5IGNhc2Ugd2hl
cmUgd2UgY2FuIGRvIGEgb25lLXNob3QgYWxsb2NhdGlvbiwgd2Ugc2ltcGx5IGFsbG9jYXRlIHRo
ZQogICAgICAgICAgICAgICAgIC8vIG9iamVjdCB0byBkaXJlY3RseSBoYXZlIHRoZSBkZXNpcmVk
IHN0cnVjdHVyZS4KQEAgLTYzNjUsMTIgKzY1MDAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IAogICAgICAgICAgICAgZm9yIChQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0dXJlLT5n
ZXRQcm9wZXJ0aWVzQ29uY3VycmVudGx5KCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAg
ICAgICAgUGhhbnRvbVByb3BlcnR5VmFsdWUgdmFsdWUgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaWRlbnRpZmllcnMoKVt2YWx1ZS5tX2lk
ZW50aWZpZXJOdW1iZXJdICE9IGVudHJ5LmtleSkKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90
ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5raW5kKCkgIT0gTmFtZWRQcm9wZXJ0
eVBMb2MpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGguaWRlbnRpZmllcnMoKVtkZXNjcmlwdG9yLmluZm8oKV0gIT0gZW50
cnkua2V5KQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGlzSW5saW5lT2Zmc2V0
KGVudHJ5Lm9mZnNldCkgPyBvYmplY3QgOiBidXR0ZXJmbHk7Ci0gICAgICAgICAgICAgICAgICAg
IHN0b3JlUHJvcGVydHkodmFsdWVzW2ldLCBiYXNlLCB2YWx1ZS5tX2lkZW50aWZpZXJOdW1iZXIs
IGVudHJ5Lm9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkodmFsdWVz
W2ldLCBiYXNlLCBkZXNjcmlwdG9yLmluZm8oKSwgZW50cnkub2Zmc2V0KTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNjQz
NSw5ICs2NTcyLDExIEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBhY3RpdmF0aW9uID0gbV9v
dXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKSA9PSB0YWJsZS0+c2NvcGVTaXpl
KCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWVzW2ldLAotICAg
ICAgICAgICAgICAgIGFjdGl2YXRpb24sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmly
b25tZW50UmVjb3JkX3ZhcmlhYmxlc1tkYXRhLm1fcHJvcGVydGllc1tpXS5tX2lkZW50aWZpZXJO
dW1iZXJdKTsKKyAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0
b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9y
LmtpbmQoKSA9PSBDTG9zdXJlVmFyUExvYyk7CisgICAgICAgICAgICBtX291dC5zdG9yZTY0KAor
ICAgICAgICAgICAgICAgIHZhbHVlc1tpXSwgYWN0aXZhdGlvbiwKKyAgICAgICAgICAgICAgICBt
X2hlYXBzLkpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzW2Rlc2NyaXB0b3IuaW5mbygpXSk7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewpAQCAtNjQ0
Niw3ICs2NTg1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFi
bGUtPmJlZ2luKGxvY2tlciksIGVuZCA9IHRhYmxlLT5lbmQobG9ja2VyKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewogICAgICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLnNjb3BlT2Zmc2V0
KCkub2Zmc2V0KCkgPT0gZGF0YS5tX3Byb3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyKSB7
CisgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0
b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRl
c2NyaXB0b3Iua2luZCgpID09IENsb3N1cmVWYXJQTG9jKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ZXItPnZhbHVlLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgPT0gZGVzY3JpcHRvci5pbmZv
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC02NjEzLDYgKzY3
NTQsMjggQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgcmVnRXhwLCBt
X2hlYXBzLlJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGls
ZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCgpCisgICAgeworICAgICAgICBFZGdlIGNvbnN0cnVj
dG9yRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKTsKKyAgICAgICAgRWRnZSBy
ZWdFeHBFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpOworICAgICAgICBFZGdl
IHN0cmluZ0VkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMik7CisgICAgICAgIEVk
Z2Ugc3RhcnRFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpOworICAgICAgICBF
ZGdlIGVuZEVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgNCk7CisgICAgICAgIAor
ICAgICAgICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKGNvbnN0cnVjdG9yRWRnZSk7Cisg
ICAgICAgIExWYWx1ZSByZWdFeHAgPSBsb3dDZWxsKHJlZ0V4cCk7CisgICAgICAgIExWYWx1ZSBz
dHJpbmcgPSBsb3dDZWxsKHN0cmluZyk7CisgICAgICAgIExWYWx1ZSBzdGFydCA9IGxvd0ludDMy
KHN0YXJ0KTsKKyAgICAgICAgTFZhbHVlIGVuZCA9IGxvd0ludDMyKGVuZCk7CisKKyAgICAgICAg
bV9vdXQuc3RvcmVQdHIocmVnRXhwLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1
Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0
cmluZywgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0
X2xhc3RJbnB1dCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIoc3RhcnQsIGNvbnN0cnVjdG9yLCBt
X2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZXN1bHRfc3RhcnQpOworICAg
ICAgICBtX291dC5zdG9yZTMyKHN0YXJ0LCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25z
dHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X2VuZCk7CisgICAgICAgIG1fb3V0LnN0b3JlOCgK
KyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoMCksIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJl
Z0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZWlmaWVkKTsKKyAgICB9CisKICAgICBMVmFs
dWUgZGlkT3ZlcmZsb3dTdGFjaygpCiAgICAgewogICAgICAgICAvLyBUaGlzIGRvZXMgYSB2ZXJ5
IHNpbXBsZSBsZWFmIGZ1bmN0aW9uIGFuYWx5c2lzLiBUaGUgaW52YXJpYW50IG9mIEZUTCBjYWxs
CkBAIC02OTcwLDYgKzcxMzMsMzkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQorCisgICAgdm9pZCBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhJbmRl
eGluZ1R5cGUgaW5kZXhpbmdUeXBlLCBMVmFsdWUgdmVjdG9yTGVuZ3RoLCBMVmFsdWUgYnV0dGVy
Zmx5KQorICAgIHsKKyAgICAgICAgaWYgKCFoYXNEb3VibGUoaW5kZXhpbmdUeXBlKSkgeworICAg
ICAgICAgICAgLy8gVGhlIEdDIGFscmVhZHkgaW5pdGlhbGl6ZWQgZXZlcnl0aGluZyB0byBKU1Zh
bHVlKCkgZm9yIHVzLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gRG91YmxlcyBtdXN0IGJlIGluaXRpYWxpemVkIHRvIFBOYU4uCisgICAgICAgIExCYXNpY0Js
b2NrIGluaXRMb29wID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaW5p
dERvbmUgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgb3JpZ2luYWxJbmRleCA9IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5ndGgpOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50ZXIgPSBtX291dC5hbmNob3IoYnV0dGVyZmx5KTsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKHZlY3Rv
ckxlbmd0aCksIHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShpbml0RG9uZSkpOworICAgICAgICAK
KyAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW5pdExv
b3AsIGluaXREb25lKTsKKyAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0Lmlu
dDMyLCBvcmlnaW5hbEluZGV4KTsKKyAgICAgICAgTFZhbHVlIHBvaW50ZXIgPSBtX291dC5waGko
bV9vdXQuaW50UHRyLCBvcmlnaW5hbFBvaW50ZXIpOworICAgICAgICAKKyAgICAgICAgbV9vdXQu
c3RvcmU2NCgKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0
X3Q+KFBOYU4pKSwKKyAgICAgICAgICAgIFR5cGVkUG9pbnRlcihtX2hlYXBzLmluZGV4ZWREb3Vi
bGVQcm9wZXJ0aWVzLmF0QW55SW5kZXgoKSwgcG9pbnRlcikpOworICAgICAgICAKKyAgICAgICAg
TFZhbHVlIG5leHRJbmRleCA9IG1fb3V0LnN1YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOworICAg
ICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKGluZGV4LCBtX291dC5hbmNob3IobmV4dEluZGV4
KSk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkocG9pbnRlciwgbV9vdXQuYW5jaG9y
KG1fb3V0LmFkZChwb2ludGVyLCBtX291dC5pbnRQdHJFaWdodCkpKTsKKyAgICAgICAgbV9vdXQu
YnJhbmNoKAorICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKG5leHRJbmRleCksIHVuc3VyZShp
bml0TG9vcCksIHVuc3VyZShpbml0RG9uZSkpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oaW5pdERvbmUsIGluaXRMYXN0TmV4dCk7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBh
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZShMVmFsdWUgb2JqZWN0LCBTdHJ1Y3R1cmUqIHByZXZpb3Vz
U3RydWN0dXJlKQogICAgIHsKQEAgLTkyNTcsNyArOTQ1Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gcHJvdmVuOwogICAgICAgICByZXR1cm4gbV9vdXQudGVzdE5vblplcm82NChq
c1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KLSAgICAKKwogICAgIExWYWx1ZSB1bmJv
eERvdWJsZShMVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5iaXRD
YXN0KG1fb3V0LmFkZChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpLCBtX291dC5kb3VibGVUeXBl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTkgKzQxLDYgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7CiAKLWV4dGVybiAi
QyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHko
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
LSAgICAKLSAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAotICAg
ICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxz
ZSwgSW5kZXhpbmdIZWFkZXIoKSwgMCk7Ci0gICAgCi0gICAgSlNPYmplY3QqIHJlc3VsdCA9IEpT
RmluYWxPYmplY3Q6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Ci0gICAgcmVz
dWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1z
cGFjZS4KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKAogICAgIEV4ZWNTdGF0ZSogZXhlYywg
RXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24qIG1hdGVyaWFsaXphdGlvbiwKICAgICBFbmNv
ZGVkSlNWYWx1ZSogZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSogdmFsdWVzKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5Nzg2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw4ICszNyw2IEBAIGNsYXNzIExhenlTbG93UGF0aDsKIAogZXh0ZXJuICJD
IiB7CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVy
Zmx5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKLQogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgRXhlY1N0YXRl
KiwgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24qLCBFbmNvZGVkSlNWYWx1ZSopIFdURl9J
TlRFUk5BTDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5NiwxMCBAQCBjbGFzcyBKU09iamVjdCA6
IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAg
ICAvLyBUaGlzIGlzIGEgc3VwZXIgZGFuZ2Vyb3VzIG1ldGhvZCBmb3IgSklUcy4gU29tZXRpbWVz
IHRoZSBKSVRzIHdpbGwgd2FudCB0byBjcmVhdGUgZWl0aGVyIGEKKyAgICAvLyBKU0ZpbmFsT2Jq
ZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBpcyB0aGUgbWV0aG9kIHRoYXQgd2lsbCBkbyB0aGF0Lgor
ICAgIEpTT2JqZWN0KiBjcmVhdGVSYXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQnV0dGVyZmx5KiA9IG51bGxwdHIpOworCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2Vs
bCosIENvcHlWaXNpdG9yJiwgQ29weVRva2VuKTsKQEAgLTEwMzQsNiArMTAzOCwyMCBAQCBwcml2
YXRlOgogCiBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZihFeGVjU3RhdGUqKTsKIAoraW5saW5lIEpTT2JqZWN0
KiBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KAorICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQoreworICAgIEpTT2JqZWN0KiBm
aW5hbE9iamVjdCA9IG5ldyAoCisgICAgICAgIE5vdE51bGwsIAorICAgICAgICBhbGxvY2F0ZUNl
bGw8SlNGaW5hbE9iamVjdD4oCisgICAgICAgICAgICAqZXhlYy0+aGVhcCgpLAorICAgICAgICAg
ICAgYWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKQorICAgICAgICAp
CisgICAgKSBKU09iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAgICByZXR1cm4gZmluYWxPYmpl
Y3Q7Cit9CisKIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoCiAg
ICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0
ZXJmbHkpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJ
KHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsOCBAQCBSZWdFeHAqIFJlZ0V4cDo6
Y3JlYXRlKFZNJiB2bSwgY29uc3QgU3RyCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwg
WWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3Bh
dHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9j
b25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjk5LDggKzMwMSwyMiBAQCBpbnQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0
cmluZyYgCiAgICAgcmV0dXJuIG1hdGNoSW5saW5lKHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rv
cik7CiB9CiAKK2Jvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSgKKyAgICBWTSYgdm0sIGNv
bnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3Rv
cjxpbnQsIDMyPiYgb3ZlY3RvcikKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlciht
X2xvY2spOworCisgICAgaWYgKCFoYXNDb2RlRm9yKHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6
IFlhcnI6OkNoYXIxNikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHBvc2l0aW9uID0g
bWF0Y2godm0sIHMsIHN0YXJ0T2Zmc2V0LCBvdmVjdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwogdm9pZCBSZWdFeHA6OmNvbXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNp
emUgY2hhclNpemUpCiB7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KyAgICAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9m
bGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IpOwogICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9y
KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zNDAsNiArMzU2
LDggQEAgTWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IAogCiB2b2lkIFJl
Z0V4cDo6ZGVsZXRlQ29kZSgpCiB7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAKICAgICBpZiAoIWhhc0NvZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
c3RhdGUgPSBOb3RDb21waWxlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cC5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBSZWdF
eHBfaAogI2RlZmluZSBSZWdFeHBfaAogCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIK
ICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiTWF0Y2hSZXN1bHQu
aCIKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKQEAgLTU2LDYgKzU3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdub3JlQ2Fz
ZTsgfQogICAgIGJvb2wgbXVsdGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdN
dWx0aWxpbmU7IH0KICAgICBib29sIHN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBG
bGFnU3RpY2t5OyB9CisgICAgYm9vbCBnbG9iYWxPclN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIGds
b2JhbCgpIHx8IHN0aWNreSgpOyB9CiAgICAgYm9vbCB1bmljb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFncyAmIEZsYWdVbmljb2RlOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHBhdHRlcm4oKSBj
b25zdCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KQEAgLTY0LDYgKzY2LDEwIEBAIHB1Ymxp
YzoKICAgICBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0
cnVjdGlvbkVycm9yOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgbWF0Y2goVk0mLCBj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVj
dG9yKTsKKworICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2UgY291bGRuJ3QgcnVuIHRoZSByZWd1
bGFyIGV4cHJlc3Npb24gZm9yIGFueSByZWFzb24uCisgICAgYm9vbCBtYXRjaENvbmN1cnJlbnRs
eShWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9u
LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOworICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IE1hdGNoUmVzdWx0IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpOwogCiAgICAgLy8gQ2FsbCB0aGVzZSB2ZXJzaW9ucyBvZiB0aGUgbWF0Y2ggZnVuY3Rpb25z
IGlmIHlvdSdyZSBkZXNwZXJhdGUgZm9yIHBlcmZvcm1hbmNlLgpAQCAtNzcsNiArODMsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX3N0YXRlICE9IE5vdENvbXBpbGVkOwogICAgIH0KIAor
ICAgIGJvb2wgaGFzQ29kZUZvcihZYXJyOjpZYXJyQ2hhclNpemUpOworCiAgICAgdm9pZCBkZWxl
dGVDb2RlKCk7CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC0xMzIsNiArMTQwLDcg
QEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3J0TWF0Y2hDYWxsQ291bnQ7CiAgICAgdW5zaWdu
ZWQgbV9ydE1hdGNoRm91bmRDb3VudDsKICNlbmRpZgorICAgIENvbmN1cnJlbnRKSVRMb2NrIG1f
bG9jazsKIAogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrIG1f
cmVnRXhwSklUQ29kZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENhY2hlZFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzQsNiArNzQsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJik7CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGFzdFJlZ0V4cCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fbGFzdFJlZ0V4cCk7
IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGFzdElucHV0KCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKFJlZ0V4cENhY2hlZFJlc3VsdCwgbV9sYXN0SW5wdXQpOyB9CisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlc3VsdCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihS
ZWdFeHBDYWNoZWRSZXN1bHQsIG1fcmVzdWx0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZSZWlmaWVkKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENhY2hlZFJlc3Vs
dCwgbV9yZWlmaWVkKTsgfQorCiBwcml2YXRlOgogICAgIE1hdGNoUmVzdWx0IG1fcmVzdWx0Owog
ICAgIGJvb2wgbV9yZWlmaWVkOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZDYWNoZWRSZXN1bHQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ29uc3RydWN0
b3IsIG1fY2FjaGVkUmVzdWx0KTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIFJlZ0V4cFByb3RvdHlwZSosIEdldHRlclNldHRlciogc3BlY2llcyk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgJKHJl
dmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsMjAgKzY3LDI3IEBAIHByaXZhdGU6CiB9Owog
I2VuZGlmIC8vIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4KIAotQUxXQVlTX0lOTElORSB2b2lk
IFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNo
YXJTaXplKQorQUxXQVlTX0lOTElORSBib29sIFJlZ0V4cDo6aGFzQ29kZUZvcihZYXJyOjpZYXJy
Q2hhclNpemUgY2hhclNpemUpCiB7CiAgICAgaWYgKGhhc0NvZGUoKSkgewogI2lmIEVOQUJMRShZ
QVJSX0pJVCkKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gSklUQ29kZSkKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09
IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczhCaXRDb2RlKCkpKQotICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICgoY2hh
clNpemUgPT0gWWFycjo6Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczE2Qml0Q29kZSgp
KSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJ
Zk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK3sKKyAgICBp
ZiAoaGFzQ29kZUZvcihjaGFyU2l6ZSkpCisgICAgICAgIHJldHVybjsKIAogICAgIGNvbXBpbGUo
JnZtLCBjaGFyU2l6ZSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDYgKzU2LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBN
YXRjaAogICAgIAogICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKICAgICBp
bnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoSW5saW5lKHZtLCBpbnB1dFZhbHVlLCBzdGFydE9m
ZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOworICAgIEFTU0VSVChwb3NpdGlvbiA9PSBzdWJwYXR0
ZXJuUmVzdWx0c1swXSk7CiAgICAgaWYgKHBvc2l0aW9uID09IC0xKSB7CiAgICAgICAgIHJlc3Vs
dCA9IE1hdGNoUmVzdWx0OjpmYWlsZWQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5s
aW5lcy5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAg
SlNWYWx1ZSBSZWdFeHBPYmplY3Q6OmV4ZWNJbmxpbmUoRXhlY1N0YQogICAgIFN0cmluZyBpbnB1
dCA9IHN0cmluZy0+dmFsdWUoZXhlYyk7IC8vIEZJWE1FOiBIYW5kbGUgZXJyb3JzLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ1CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogCi0gICAgYm9vbCBnbG9iYWxPclN0aWNreSA9IHJlZ0V4cC0+Z2xv
YmFsKCkgfHwgcmVnRXhwLT5zdGlja3koKTsKKyAgICBib29sIGdsb2JhbE9yU3RpY2t5ID0gcmVn
RXhwLT5nbG9iYWxPclN0aWNreSgpOwogCiAgICAgdW5zaWduZWQgbGFzdEluZGV4OwogICAgIGlm
IChnbG9iYWxPclN0aWNreSkgewpJbmRleDogU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgJKHJldmlzaW9uIDE5Nzg2OSkK
KysrIFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTU1LDE0ICs1NSwxNSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0
VmVjdG9yVHlwZSwgdHlwZW5hbWUgSW5zZXJ0aW9uVmVjdG9yVHlwZT4KLXZvaWQgZXhlY3V0ZUlu
c2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlwZSYgdGFyZ2V0LCBJbnNlcnRpb25WZWN0b3JUeXBlJiBp
bnNlcnRpb25zKQorc2l6ZV90IGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUmIHRh
cmdldCwgSW5zZXJ0aW9uVmVjdG9yVHlwZSYgaW5zZXJ0aW9ucykKIHsKLSAgICBpZiAoIWluc2Vy
dGlvbnMuc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNp
emUoKSArIGluc2VydGlvbnMuc2l6ZSgpKTsKKyAgICBzaXplX3QgbnVtSW5zZXJ0aW9ucyA9IGlu
c2VydGlvbnMuc2l6ZSgpOworICAgIGlmICghbnVtSW5zZXJ0aW9ucykKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUoKSArIG51bUluc2VydGlvbnMpOwogICAg
IHNpemVfdCBsYXN0SW5kZXggPSB0YXJnZXQuc2l6ZSgpOwogICAgIHNpemVfdCBvcmlnaW5hbFRh
cmdldFNpemUgPSB0YXJnZXQuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRp
b25zID0gaW5zZXJ0aW9ucy5zaXplKCk7IGluZGV4SW5JbnNlcnRpb25zLS07KSB7CisgICAgZm9y
IChzaXplX3QgaW5kZXhJbkluc2VydGlvbnMgPSBudW1JbnNlcnRpb25zOyBpbmRleEluSW5zZXJ0
aW9ucy0tOykgewogICAgICAgICBBU1NFUlQoIWluZGV4SW5JbnNlcnRpb25zIHx8IGluc2VydGlv
bnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4KCkgPj0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0
aW9ucyAtIDFdLmluZGV4KCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9yaWdpbmFsVGFyZ2V0
U2l6ZSwgaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSA8IG9yaWdpbmFsVGFy
Z2V0U2l6ZSk7CiAgICAgICAgIHNpemVfdCBmaXJzdEluZGV4ID0gaW5zZXJ0aW9uc1tpbmRleElu
SW5zZXJ0aW9uc10uaW5kZXgoKSArIGluZGV4SW5JbnNlcnRpb25zOwpAQCAtNzMsNiArNzQsNyBA
QCB2b2lkIGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUmCiAgICAgICAgIGxhc3RJ
bmRleCA9IGZpcnN0SW5kZXg7CiAgICAgfQogICAgIGluc2VydGlvbnMucmVzaXplKDApOworICAg
IHJldHVybiBudW1JbnNlcnRpb25zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273638</attachid>
            <date>2016-03-10 15:35:42 -0800</date>
            <delta_ts>2016-03-10 18:54:43 -0800</delta_ts>
            <desc>it is written</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>87127</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc4NjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2
MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3
QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAv
KiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEw
QkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBD
NzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhG
NjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGgg
PSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMz
NUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAogCQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovLAogCQkJCUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOEND
MDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBG
RDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYg
Kzc0NDgsNyBAQAogCQkJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEg
LyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFp
bmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTk1Miw2ICsxOTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogog
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5
Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MjMsNiArOTIzLDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAg
ICAgICAgIGRlZihIZWFwTG9jYXRpb24oUmVnRXhwT2JqZWN0TGFzdEluZGV4TG9jLCBSZWdFeHBP
YmplY3RfbGFzdEluZGV4LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hl
ZFJlc3VsdDoKKyAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czogewogICAgICAgICBBYnN0cmFjdEhl
YXAgaGVhcChEaXJlY3RBcmd1bWVudHNQcm9wZXJ0aWVzLCBub2RlLT5jYXB0dXJlZEFyZ3VtZW50
c09mZnNldCgpLm9mZnNldCgpKTsKQEAgLTEwODYsNyArMTA5MCw5IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMygp
LnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJlYWQoUmVnRXhwU3RhdGUp
OworICAgICAgICAgICAgcmVhZChSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAg
IHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0
SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJlYWQoV29y
bGQpOwpAQCAtMTA5OCw3ICsxMTA0LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJl
Z0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09
IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAgICAgICAg
ICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUoUmVnRXhw
U3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxOTc4NjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNyw2ICsxMTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0
R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9u
IDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMDAsNiArMTMwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgU3RvcmVCYXJyaWVyOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoK
ICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGp1c3Qgbm9k
ZXMgdGhhdCB3ZSBkb24ndCBjdXJyZW50bHkgZXhwZWN0IHRvIHNlZSBkdXJpbmcgZml4dXAuCiAg
ICAgICAgICAgICAvLyBJZiB3ZSBldmVyIHdhbnRlZCB0byBpbnNlcnQgdGhlbSBwcmlvciB0byBm
aXh1cCwgdGhlbiB3ZSBqdXN0IGhhdmUgdG8gY3JlYXRlCiAgICAgICAgICAgICAvLyBmaXh1cCBy
dWxlcyBmb3IgdGhlbS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0
aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
c2VydGlvblNldC5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBA
QCB2b2lkIEluc2VydGlvblNldDo6aW5zZXJ0U2xvdyhjb25zdCBJbnNlCiAgICAgbV9pbnNlcnRp
b25zLmluc2VydCgwLCBpbnNlcnRpb24pOwogfQogCi12b2lkIEluc2VydGlvblNldDo6ZXhlY3V0
ZShCYXNpY0Jsb2NrKiBibG9jaykKK3NpemVfdCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNC
bG9jayogYmxvY2spCiB7Ci0gICAgZXhlY3V0ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2VydGlv
bnMpOworICAgIHJldHVybiBleGVjdXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9ucyk7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUg
IkRGR05vZGVPcmlnaW4uaCIKICNpbmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRG
R09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKICNp
bmNsdWRlICJERkdUcmFuc2l0aW9uLmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1
ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgpAQCAtMjE5LDIwICsyMjAsNiBAQCBzdHJ1Y3Qg
U3RhY2tBY2Nlc3NEYXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1
c2hlZEF0KGZvcm1hdCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAotLy8gVGhpcyB0eXBlIHVzZWQg
aW4gcGFzc2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKLS8v
IGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50
byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAotLy8gYSBjb25zdGFudCBpbmRleCwgYXJn
dW1lbnQsIG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KLXN0cnVjdCBPcEluZm8gewotICAg
IE9wSW5mbygpIDogbV92YWx1ZSgwKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2
YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICBl
eHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KHZhbHVlKSkgeyB9Ci0jaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQotICAg
IGV4cGxpY2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KHZhbHVlKSkgeyB9Ci0jZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFs
dWUpIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAg
ICB1aW50cHRyX3QgbV92YWx1ZTsKLX07Ci0KIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUg
cmVwcmVzZW50cyBhIHNpbmdsZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE5Nzg2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjI0LDYgKzIyNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhWYXJJbmplY3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBt
YWNybyhSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFz
VmFyQXJncykgXAogICAgIG1hY3JvKENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKENoZWNrTm90RW1wdHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a0JhZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3NCw3
ICsxOTc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0
eVBMb2M6IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9PSBh
bGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9w
ZXJ0aWVzLmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRlc2Ny
aXB0b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShibG9j
aywgbG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5j
b250YWlucyh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW4uYXBwZW5kKG1fYm90dG9tKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkp
OwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRvbVBy
b3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEu
bV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAgICAg
ICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2JvdHRv
bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDMyICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKLXZvaWQgUGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQoImlkIiwgbV9pZGVudGlmaWVyTnVtYmVyKTsKLX0K
LQogdm9pZCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCJbIiwgbGlzdER1bXAobV9wcm9wZXJ0aWVzKSwgIl0i
KTsKIH0KIAotZmxvYXQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6b25lV2F5U2ltaWxhcml0
eVNjb3JlKAotICAgIGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBjb25z
dAotewotICAgIHVuc2lnbmVkIG51bUhpdHMgPSAwOwotICAgIGZvciAoUGhhbnRvbVByb3BlcnR5
VmFsdWUgdmFsdWUgOiBtX3Byb3BlcnRpZXMpIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcHJvcGVy
dGllcy5jb250YWlucyh2YWx1ZSkpCi0gICAgICAgICAgICBudW1IaXRzKys7Ci0gICAgfQotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obnVtSGl0cykgLyBzdGF0aWNfY2FzdDxmbG9hdD4o
bV9wcm9wZXJ0aWVzLnNpemUoKSk7Ci19Ci0KLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRh
dGE6OnNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhl
cikgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjptaW4ob25lV2F5U2ltaWxhcml0eVNjb3JlKG90
aGVyKSwgb3RoZXIub25lV2F5U2ltaWxhcml0eVNjb3JlKCp0aGlzKSk7Ci19Ci0KIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1Byb21vdGVkSGVh
cExvY2F0aW9uLmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTM1LDM4ICszNiwxMSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0cnVjdCBQaGFudG9tUHJvcGVy
dHlWYWx1ZSB7Ci0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUoKQotICAgICAgICA6IG1faWRlbnRp
Zmllck51bWJlcihVSU5UX01BWCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFBoYW50b21Qcm9w
ZXJ0eVZhbHVlKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCi0gICAgICAgIDogbV9pZGVudGlm
aWVyTnVtYmVyKGlkZW50aWZpZXJOdW1iZXIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB1bnNp
Z25lZCBtX2lkZW50aWZpZXJOdW1iZXI7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFBoYW50b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2lkZW50aWZpZXJOdW1iZXIgPT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLX07Ci0KIHN0cnVjdCBP
YmplY3RNYXRlcmlhbGl6YXRpb25EYXRhIHsKICAgICAvLyBEZXRlcm1pbmVzIHRoZSBtZWFuaW5n
IG9mIHRoZSBwYXNzZWQgbm9kZXMuCi0gICAgVmVjdG9yPFBoYW50b21Qcm9wZXJ0eVZhbHVlPiBt
X3Byb3BlcnRpZXM7CisgICAgVmVjdG9yPFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yPiBtX3By
b3BlcnRpZXM7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAg
Ci0gICAgLy8gVGhlIGZyYWN0aW9uIG9mIG15IHByb3BlcnRpZXMgdGhhdCB0aGUgb3RoZXIgZGF0
YSBoYXMuCi0gICAgZmxvYXQgb25lV2F5U2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEmKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgbWluaW11bSBvZiB0aGUg
dHdvIHBvc3NpYmxlIG9uZS13YXkgc2NvcmVzLgotICAgIGZsb2F0IHNpbWlsYXJpdHlTY29yZShj
b25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJikgY29uc3Q7CiB9OwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdPcEluZm9faAorI2RlZmluZSBERkdPcElu
Zm9faAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKERGR19K
SVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyB0eXBlIHVz
ZWQgaW4gcGFzc2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsK
Ky8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXgg
aW50byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAorLy8gYSBjb25zdGFudCBpbmRleCwg
YXJndW1lbnQsIG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KK3N0cnVjdCBPcEluZm8gewor
ICAgIE9wSW5mbygpIDogbV92YWx1ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oaW50MzJf
dCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAg
ICBleHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQor
ICAgIGV4cGxpY2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisjZW5kaWYKKyAgICBleHBsaWNpdCBPcEluZm8odm9pZCog
dmFsdWUpIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0K
KyAgICB1aW50cHRyX3QgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
KworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT3BJbmZvX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAxLDYgKzE0MDEsNTkgQEAgc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhcwogICAgIHJldHVybiAwOwogfQogCitjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCkgV1RGX0lOVEVSTkFMCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7CisKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0luZGV4aW5nSGVhZGVyKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkpKSB7CisgICAgICAgIEluZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICAgICAgaGVhZGVy
LnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAgICAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3Ro
KDApOworICAgICAgICAKKyAgICAgICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisg
ICAgICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LAorICAgICAgICAgICAgaGFzSW5kZXhpbmdIZWFkZXIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KSksIGhlYWRlciwgbGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGJ1dHRlcmZseSA9IG51bGxwdHI7CisKKyAgICBKU09iamVjdCogcmVzdWx0ID0g
SlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Cisg
ICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBp
biB0by1zcGFjZS4KKyAgICByZXR1bnIgcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIAorICAgIEJ1dHRlcmZseSog
YnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIHZtLCBudWxscHRyLCAwLCBz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigpLCAw
KTsKKyAgICAKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVj
dChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsg
Ly8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0
aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7CisKKyAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAgaGVhZGVyLnNldFZlY3Rvckxl
bmd0aChsZW5ndGgpOworICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7CisgICAgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgdm0sIG51bGxwdHIs
IDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgaGVhZGVyLAorICAgICAg
ICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogbGVuZ3RoKTsKKworICAgIC8vIFBhcmFkb3hpY2Fs
bHkgdGhpcyBtYXkgYWxsb2NhdGUgYSBKU0FycmF5LiBUaGF0J3MgdG90YWxseSBjb29sLgorICAg
IEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMsIHN0cnVj
dHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhh
dCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nREZHKEV4
ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmlsZXJMb2coKS0+cHJv
Y2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVkIGZyb20gaW5zaWRl
IERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsMTAgQEAgaW50NjRfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnREbwogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNDZWxsKiB2YWx1ZSwgSlNDZWxs
KiBwcm90byk7CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0KEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCkgV1RGX0lOVEVSTkFMOworCiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhFeGVj
U3RhdGUqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09wZXJhdGlv
blByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikgV1RGX0lO
VEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjgsNiArNjY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBHZXRTdGFjazoKICAgICAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAg
ICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgICAgICBjYXNlIFJlY29y
ZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDogewogICAg
ICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3Rh
Z2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1
cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAkocmV2aXNpb24g
MTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsNiArNzQsMTAgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFBybwogICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6
CiAgICAgICAgIG91dC5wcmludCgiTmFtZWRQcm9wZXJ0eVBMb2MiKTsKICAgICAgICAgcmV0dXJu
OworCisgICAgY2FzZSBJbmRleGVkUHJvcGVydHlQTG9jOgorICAgICAgICBvdXQucHJpbnQoIklu
ZGV4ZWRQcm9wZXJ0eVBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IEFyZ3VtZW50UExvYzoKICAgICAgICAgb3V0LnByaW50KCJBcmd1bWVudFBMb2MiKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJvbW90ZWRIZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyNSArMjgsNDEg
QEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1
ZGUgIkRGR0VkZ2UuaCIKKyNpbmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiREZH
T3BJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0cnVjdCBO
b2RlOworCisvLyBQcm9tb3RlZCBsb2NhdGlvbnMgYXJlIGxpa2UgaGVhcCBsb2NhdGlvbnMgYnV0
IGFyZSBtZWFudCB0byBiZSBtb3JlIHByZWNpc2UuIEEgaGVhcCBsb2NhdGlvbiBpcworLy8gYXBw
bGljYWJsZSB0byBDU0Ugc2NlbmFyaW9zLCB3aGVyZSBpdCBtYWtlcyBzZW5zZSB0byBzcGVhayBv
ZiBhIGxvY2F0aW9uIHZlcnkgYWJzdHJhY3RseS4gQQorLy8gcHJvbW90ZWQgaGVhcCBsb2NhdGlv
biBpcyBmb3IgY2FzZXMgd2hlcmUgd2Ugc3BlYWsgb2YgYSBzcGVjaWZpYyBvYmplY3QgYW5kIHRo
ZSBjb21waWxlciBrbm93cworLy8gdGhpcyBvYmplY3QncyBpZGVudGl0eSAtIGZvciBleGFtcGxl
LCB0aGUgb2JqZWN0IGFsbG9jYXRpb24gaGFzIGJlZW4gZWxpbWluYXRlZCBhbmQgd2UgdHVybmVk
IHRoZQorLy8gZmllbGRzIGludG8gbG9jYWwgdmFyaWFibGVzLiBCZWNhdXNlIHRoZXNlIHR3byBj
YXNlcyBoYXZlIHN1YnRseSBkaWZmZXJlbnQgbmVlZHMsIHdlIHVzZSBzdWJ0bHkKKy8vIGRpZmZl
cmVudCBzdHJ1Y3R1cmVzLiBPbmUgb2YgdGhlIHJlYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNl
cyBpcyB0aGF0IHByb21vdGVkIGxvY2F0aW9ucyBjYW4gYmUKKy8vIHNwb2tlbiBvZiB1c2luZyBl
aXRoZXIgYSBkZXNjcmlwdG9yIHdoaWNoIGRvZXMgbm90IHJlZmVyIHRvIGFueSBOb2RlKidzIG9y
IHdpdGggYSBoZWFwIGxvY2F0aW9uLAorLy8gd2hpY2ggaXMgYSBkZXNjcmlwdG9yIHdpdGggYSBO
b2RlKiBiYXNlLgorCiBlbnVtIFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBJbnZhbGlkUHJv
bW90ZWRMb2NhdGlvbktpbmQsCiAgICAgCi0gICAgU3RydWN0dXJlUExvYywKKyAgICBBY3RpdmF0
aW9uU2NvcGVQTG9jLAogICAgIEFjdGl2YXRpb25TeW1ib2xUYWJsZVBMb2MsCi0gICAgTmFtZWRQ
cm9wZXJ0eVBMb2MsCi0gICAgQXJndW1lbnRQTG9jLAogICAgIEFyZ3VtZW50Q291bnRQTG9jLAor
ICAgIEFyZ3VtZW50UExvYywKICAgICBBcmd1bWVudHNDYWxsZWVQTG9jLAotCi0gICAgRnVuY3Rp
b25FeGVjdXRhYmxlUExvYywKKyAgICBDbG9zdXJlVmFyUExvYywKICAgICBGdW5jdGlvbkFjdGl2
YXRpb25QTG9jLAotICAgIEFjdGl2YXRpb25TY29wZVBMb2MsCi0gICAgQ2xvc3VyZVZhclBMb2MK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsCisg
ICAgTmFtZWRQcm9wZXJ0eVBMb2MsCisgICAgUHVibGljTGVuZ3RoUExvYywKKyAgICBTdHJ1Y3R1
cmVQTG9jLAorICAgIFZlY3Rvckxlbmd0aFBMb2MKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRp
b25EZXNjcmlwdG9yIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFN0cmlu
Z1JlcGxhY2U6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBT
ZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1
bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0Nyw2ICszMDQ3
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3Vs
dDogeworICAgICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAg
ICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CiAgICAgICAgIApAQCAt
MzQ5Miw3ICszNDk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAg
ICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1p
dEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxl
bWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3Ry
dWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJl
c3VsdEdQUiBhbmQgc3RvcmFnZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0
aGUgSlNBcnJheSBhbmQgdGhlIEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOCw3ICsz
NzMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRl
SlNBcnJheShyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1l
bnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGlu
ZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdp
dGhEb3VibGUpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJs
b2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTc4LDcg
KzQ5ODMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAK
KyAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICBjb21waWxlTWF0ZXJpYWxp
emVOZXdPYmplY3Qobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBVbnJlYWNoYWJs
ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNzEsNiArMzE3MSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNv
bXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KKworICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBp
bGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFy
cmF5TW9kZSgpLmlzSlNBcnJheSgpKTsKQEAgLTM1NDIsNyArMzU0Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3Jh
Z2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBz
dHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxv
Y2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVu
dHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBw
b2ludCwgb25lIHdheSBvciBhbm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBw
b2ludGVycyB0bwogICAgICAgICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHks
IHJlc3BlY3RpdmVseS4KQEAgLTM3NzgsNyArMzc4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7
CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGlu
Z1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2Nh
dGVSYXdPYmplY3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1F
bGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBERkdfQVNT
RVJUKG1faml0LmdyYXBoKCksIG5vZGUsIGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAg
ICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihu
b2RlLT5zdGFydENvbnN0YW50KCkpOwpAQCAtNDk3MSw2ICs0OTc2LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXpl
TmV3T2JqZWN0KG5vZGUpOworICAgICAgICBicmVhazsKKwogI2lmIEVOQUJMRShGVExfSklUKSAg
ICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoQWRkMzIoCkBAIC01MDYxLDcgKzUwNzAsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmVJbW1lZGlhdGU6Ci0gICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1h
dGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2Ug
S2lsbFN0YWNrOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywyNyArNzcs
NDcgQEAgU3BlY3VsYXRpdmVKSVQ6On5TcGVjdWxhdGl2ZUpJVCgpCiB7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cykK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0
R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVj
aWRlZChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwg
aGFzQ29udGlndW91cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgSW5kZXhpbmdU
eXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBo
YXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4aW5nSGVhZGVyKGluZGV4aW5nVHlwZSk7CisKKyAg
ICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKTsK
KyAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKTsKICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwotICAgIAot
ICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgbnVt
RWxlbWVudHMpOworCisgICAgQVNTRVJUKHZlY3Rvckxlbmd0aCA+PSBudW1FbGVtZW50cyk7Cisg
ICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCB2ZWN0
b3JMZW5ndGgpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0g
ICAgCi0gICAgc2xvd0Nhc2VzLmFwcGVuZCgKLSAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9y
YWdlKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2Yo
SW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZUdQUikpOwotICAgIG1faml0LnN1YlB0cihUcnVzdGVk
SW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7Ci0gICAg
ZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMp
OwotICAgIAotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1Ymxp
Y0xlbmd0aCgpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3Ro
KSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRP
ZlZlY3Rvckxlbmd0aCgpKSk7Ci0gICAgCisKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgaWYg
KGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAgICBzaXplICs9IHZlY3Rvckxlbmd0aCAqIHNpemVv
ZihKU1ZhbHVlKSArIHNpemVvZihJbmRleGluZ0hlYWRlcik7CisgICAgc2l6ZSArPSBvdXRPZkxp
bmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKKworICAgIGlmIChzaXplKSB7CisgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoCisgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2Uo
VHJ1c3RlZEltbTMyKHNpemUpLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIGlmIChoYXNJbmRleGlu
Z0hlYWRlcikKKyAgICAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVu
Z3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSks
IHN0b3JhZ2VHUFIpOworICAgIH0gZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIoMCksIHN0b3JhZ2VHUFIpOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5h
bE9iamVjdDo6YWxsb2NhdGlvblNpemUoaW5saW5lQ2FwYWNpdHkpOworICAgIE1hcmtlZEFsbG9j
YXRvciogYWxsb2NhdG9yUHRyID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0
V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihhbGxvY2F0b3JQdHIpLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0QWxsb2NhdGVKU09i
amVjdChyZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3Rv
cmFnZUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdI
ZWFkZXIpCisgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZW
ZWN0b3JMZW5ndGgoKSkpOworCiAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKSAmJiBudW1FbGVtZW50cyA8IHZlY3Rvckxlbmd0aCkgewogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90
PihQTmFOKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTE3LDggKzEzNywxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5CiAgICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAogICAg
IC8vIG9mIHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8K
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9j
YXRvclNsb3dQYXRoR2VuZXJhdG9yPigKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCisgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uTmV3UmF3T2JqZWN0LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIs
CiAgICAgICAgIHN0cnVjdHVyZSwgbnVtRWxlbWVudHMpKTsKKworICAgIGlmIChoYXNJbmRleGlu
Z0hlYWRlcikKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobnVtRWxlbWVudHMp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9m
UHVibGljTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0
aChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGxlbmd0aEdQUiwgYm9v
bCBpbmNsdWRlVGhpcykKQEAgLTc2NTUsNiArNzY3OCwxMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUxhenlKU0NvbnN0YQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVj
dChOb2RlKiBub2RlKQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS0+c3RydWN0
dXJlU2V0KClbMF07CisgICAgQVNTRVJUKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCktPmR5
bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSA9PSBzdHJ1Y3R1cmUpOworCisgICAgT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG1fbm9kZS0+b2JqZWN0TWF0ZXJpYWxpemF0
aW9uRGF0YSgpOworICAgICAgICAKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gc3Ry
dWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gaGFz
SW5kZXhpbmdIZWFkZXIoaW5kZXhpbmdUeXBlKTsKKyAgICBpbnQzMl90IHB1YmxpY0xlbmd0aCA9
IDA7CisgICAgaW50MzJfdCB2ZWN0b3JMZW5ndGggPSAwOworCisgICAgaWYgKGhhc0luZGV4aW5n
SGVhZGVyKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNp
emUoKTsgaS0tOykgeworICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxICsgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEubV9wcm9wZXJ0aWVzW2ld
LmtpbmQoKSkgeworICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAg
ICAgICAgIHB1YmxpY0xlbmd0aCA9IGVkZ2UtPmFzSW50MzIoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAg
ICB2ZWN0b3JMZW5ndGggPSBlZGdlLT5hc0ludDMyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKyAg
ICAKKyAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3Jh
Z2VHUFIsIDAsIHZlY3Rvckxlbmd0aCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1f
cHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlw
dG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgc3dpdGNoIChk
ZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICBjYXNlIEluZGV4ZWRQcm9wZXJ0eVBMb2M6IHsK
KyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UpOworICAgICAgICAg
ICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygp
LAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkgKiBkZXNjcmlwdG9yLmluZm8oKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOiB7CisgICAgICAg
ICAgICBTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5p
bmZvKCldOworICAgICAgICAgICAgZm9yIChQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0
dXJlLT5nZXRQcm9wZXJ0aWVzQ29uY3VycmVudGx5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
dWlkICE9IGVudHJ5LmtleSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGlzSW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNldCkgPyByZXN1
bHRHUFIgOiBzdG9yYWdlR1BSOworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlVmFsdWUoCisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksCisgICAgICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGVu
dHJ5Lm9mZnNldCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQor
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5v
ZGUqIG5vZGUpCit7CisgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDApOworICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSk7CisgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAyKTsKKyAgICBFZGdlIHN0YXJ0RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMyk7
CisgICAgRWRnZSBlbmRFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA0KTsKKworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIGNvbnN0cnVjdG9yRWRnZSk7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmVnRXhwKHRoaXMsIHJlZ0V4cEVkZ2UpOworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0aGlzLCByZWdFeHBFZGdlKTsKKyAgICBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQgc3RhcnQodGhpcywgc3RhcnRFZGdlKTsKKyAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgZW5kKHRoaXMsIGVuZEVkZ2UpOworCisgICAgR1BSUmVnIGNvbnN0cnVjdG9y
R1BSID0gY29uc3RydWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIHJlZ0V4cEdQUiA9IHJlZ0V4cC5n
cHIoKTsKKyAgICBHUFJSZWcgc3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOworICAgIEdQUlJlZyBz
dGFydEdQUiA9IHN0YXJ0LmdwcigpOworICAgIEdQUlJlZyBlbmRHUFIgPSBlbmQuZ3ByKCk7CisK
KyAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVk
UmVzdWx0KCk7CisKKyAgICBtX2ppdC5zdG9yZVB0cigKKyAgICAgICAgcmVnRXhwR1BSLAorICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsgUmVnRXhw
Q2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkpOworICAgIG1faml0LnN0b3JlUHRy
KAorICAgICAgICBzdHJpbmdHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0
cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0
KCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBzdGFydEdQUiwKKyAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICBjb25zdHJ1Y3RvckdQUiwKKyAgICAgICAg
ICAgIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVD
VF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSk7CisgICAgbV9qaXQuc3RvcmUzMigKKyAg
ICAgICAgZW5kR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6YWRkcmVzcygKKyAgICAgICAgICAg
IGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0
OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSk7
CisgICAgbV9qaXQuc3RvcmU4KAorICAgICAgICBUcnVzdGVkSW1tMzIoMCksCisgICAgICAgIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRS
ZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE5Nzg2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQwMSw2ICsyNDAxLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldFJl
Z0V4cE9iamVjdExhc3RJbmRleChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0UmVnRXhwT2Jq
ZWN0TGFzdEluZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMYXp5SlNDb25zdGFudChOb2Rl
Kik7CisgICAgdm9pZCBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChOb2RlKik7CiAgICAgCiAgICAgdm9p
ZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhHUFJSZWcpOwpAQCAt
MjUxNiw3ICsyNTE4LDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogICAg
IH0KIAotICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1
Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOworICAgIHZv
aWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQ
UlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVu
Z3RoKTsKICAgICAKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiwgR1BS
UmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKICAgICB2b2lkIGVtaXRH
ZXRMZW5ndGgoQ29kZU9yaWdpbiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9
IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVy
SW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc4NjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDExICsyNTMsMTUgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOiB7CisgICAgICAgICAgICBjYXNlIFB1dEJ5SWQ6Cisg
ICAgICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZERp
cmVjdDoKKyAgICAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgorICAgICAgICAgICAgY2FzZSBS
ZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJp
ZXIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoK
ICAgICAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIFNldFJl
Z0V4cE9iamVjdExhc3RJbmRleDoKQEAgLTI2NiwxMyArMjcwLDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgotICAg
ICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7Ci0gICAgICAgICAgICAgICAgY29uc2lkZXJC
YXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotCiAgICAgICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAgICAgICAg
ICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQyKCksIG1fbm9kZS0+Y2hpbGQzKCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc4
NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzM2LDYgKzMzNiwyMDAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBSZWdFeHBFeGVjOgor
ICAgICAgICBjYXNlIFJlZ0V4cFRlc3Q6IHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX25vZGUtPmNoaWxkMSgpLT5keW5hbWljQ2FzdENvbnN0YW50PEpTR2xv
YmFsT2JqZWN0Kj4oKTsKKyAgICAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FC
YWRUaW1lKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIE5vZGUqIHJl
Z0V4cE9iamVjdE5vZGUgPSBtX2JvZGUtPmNoaWxkMigpLm5vZGUoKTsKKyAgICAgICAgICAgIFJl
Z0V4cE9iamVjdCogcmVnRXhwT2JqZWN0ID0gbV9ub2RlLT5jaGlsZDIoKS0+ZHluYW1pY0Nhc3RD
b25zdGFudDxSZWdFeHBPYmplY3QqPigpOworICAgICAgICAgICAgaWYgKCFyZWdFeHBPYmplY3Qp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIE5vZGUqIHN0cmluZ05vZGUg
PSBtX25vZGUtPmNoaWxkMygpLm5vZGUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
Tk9URTogVGhpcyBtb3N0bHkgYWxyZWFkeSBwcm90ZWN0cyB1cyBmcm9tIGhhdmluZyB0aGUgY29t
cGlsZXIgZXhlY3V0ZSBhIHJlZ2V4cAorICAgICAgICAgICAgLy8gb3BlcmF0aW9uIG9uIGEgZ2lu
b3Jtb3VzIHN0cmluZyBieSBwcmV2ZW50aW5nIHVzIGZyb20gZ2V0dGluZyBvdXIgaGFuZHMgb24g
Z2lub3Jtb3VzCisgICAgICAgICAgICAvLyBzdHJpbmdzIGluIHRoZSBmaXJzdCBwbGFjZS4KKyAg
ICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBtX25vZGUtPmNoaWxkMygpLT50cnlHZXRTdHJpbmco
bV9ncmFwaCk7CisgICAgICAgICAgICBpZiAoIXN0cmluZykKKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgUmVnRXhwKiByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgp
OworICAgICAgICAgICAgRnJvemVuVmFsdWUqIHJlZ0V4cEZyb3plblZhbHVlID0gbV9ncmFwaC5m
cmVlemUocmVnRXhwKTsKKworICAgICAgICAgICAgLy8gUmVmdXNlIHRvIGRvIHRoaW5ncyB3aXRo
IHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBoYXZlIGEgZ2lub3Jtb3VzIG51bWJlciBvZgorICAg
ICAgICAgICAgLy8gc3VicGF0dGVybnMuCisgICAgICAgICAgICB1bnNpZ25lZCBnaW5vcm1vdXNO
dW1iZXJPZlN1YlBhdHRlcm5zID0gMTAwMDsKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPm51bVN1
YnBhdHRlcm5zKCkgPiBnaW5vcm1vdXNOdW1iZXJPZlN1YlBhdHRlcm5zKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CisgICAgICAgICAg
ICBpZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhp
cyB3aWxsIG9ubHkgd29yayBpZiB3ZSBjYW4gcHJvdmUgd2hhdCB0aGUgdmFsdWUgb2YgbGFzdElu
ZGV4IGlzLiBUbyBkbyB0aGlzCisgICAgICAgICAgICAgICAgLy8gc2FmZWx5LCB3ZSBuZWVkIHRv
IGV4ZWN1dGUgdGhlIGluc2VydGlvbiBzZXQgc28gdGhhdCB3ZSBzZWUgYW55IHByZXZpb3VzIHN0
cmVuZ3RoCisgICAgICAgICAgICAgICAgLy8gcmVkdWN0aW9ucy4gVGhpcyBpcyBuZWVkZWQgZm9y
IHNvdW5kbmVzcyBzaW5jZSBvdGhlcndpc2UgdGhlIGVmZmVjdGZ1bG5lc3Mgb2YgYW55CisgICAg
ICAgICAgICAgICAgLy8gcHJldmlvdXMgc3RyZW5ndGggcmVkdWN0aW9ucyB3b3VsZCBiZSBpbnZp
c2libGUgdG8gdXMuCisgICAgICAgICAgICAgICAgZXhlY3V0ZUluc2VydGlvblNldCgpOworICAg
ICAgICAgICAgICAgIGxhc3RJbmRleCA9IFVJTlRfTUFYOworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgb3RoZXJOb2RlSW5kZXggPSBtX25vZGVJbmRleDsgb3RoZXJOb2RlSW5kZXgtLTsp
IHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9ibG9jay0+YXQob3Ro
ZXJOb2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlID09IHJlZ0V4
cE9iamVjdE5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpID09IFNldFJlZ0V4cE9iamVjdExh
c3RJbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGlsZDEoKSA9
PSByZWdFeHBPYmplY3ROb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlck5vZGUt
PmNoaWxkMigpLT5pc0ludDMyQ29uc3RhbnQoKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYg
b3RoZXJOb2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpID49IDApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxhc3RJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvdGhlck5vZGUtPmNoaWxk
MigpLT5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlc092ZXJsYXAobV9n
cmFwaCwgb3RoZXJOb2RlLCBSZWdFeHBPYmplY3RfbGFzdEluZGV4KSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
bGFzdEluZGV4ID09IFVJTlRfTUFYKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IDA7CisKKyAgICAgICAg
ICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZpbmdB
QmFkVGltZVdhdGNocG9pbnQoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUo
KTsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpICE9IEFycmF5V2l0
aENvbnRpZ3VvdXMpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZ1cnRoZXIgcHJvdGVj
dGlvbiBhZ2FpbnN0IGEgcmFjZSB3aXRoIGhhdmVBQmFkVGltZS4KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVnRXhwQ29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3RvcigpOworICAg
ICAgICAgICAgRnJvemVuVmFsdWUqIGNvbnN0cnVjdG9yRnJvemVuVmFsdWUgPSBtX2dyYXBoLmZy
ZWV6ZShjb25zdHJ1Y3Rvcik7CisKKyAgICAgICAgICAgIGludCBwb3NpdGlvbjsKKyAgICAgICAg
ICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVjdG9yOworICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1h
dGNoQ29uY3VycmVudGx5KHZtKCksIHN0cmluZywgbGFzdEluZGV4LCBwb3NpdGlvbiwgb3ZlY3Rv
cikpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIC8vIFdlJ3ZlIGNvbnN0
YW50LWZvbGRlZCB0aGUgcmVnZXhwLiBOb3cgd2UncmUgY29tbWl0dGVkIHRvIHJlcGxhY2luZyBS
ZWdFeHBFeGVjL1Rlc3QuCisKKyAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisKKyAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9ub2Rl
SW5kZXgsIFNwZWNOb25lLCBDaGVjaywgbV9ub2RlLT5vcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4u
anVzdENoZWNrcygpKTsKKworICAgICAgICAgICAgLy8gV2hldGhlciBpdCdzIEV4ZWMgb3IgVGVz
dCwgd2UgbmVlZCB0byB0ZWxsIHRoZSBjb25zdHJ1Y3RvciBhbmQgUmVnRXhwT2JqZWN0IHdoYXQn
cyB1cC4KKyAgICAgICAgICAgIGlmIChwb3NpdGlvbiAhPSAtMSkgeworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOwor
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBjb25zdHJ1Y3Rv
ckZyb3plblZhbHVlLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
dmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUlu
ZGV4LCBtX25vZGUtPm9yaWdpbiwgcmVnRXhwRnJvemVuVmFsdWUsIEtub3duQ2VsbFVzZSkpOwor
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShzdHJp
bmdOb2RlLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBt
X25vZGUtPm9yaWdpbiwganNOdW1iZXIocG9zaXRpb24pLCBLbm93bkludDMyVXNlKSk7CisgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGpzTnVtYmVyKG92ZWN0
b3JbMV0pLCBLbm93bkludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBO
b2RlOjpWYXJBcmcsIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCwgbV9ub2RlLT5vcmlnaW4sCisg
ICAgICAgICAgICAgICAgICAgIE9wSW5mbygpLCBPcEluZm8oKSwgZmlyc3RDaGlsZCwgbV9ncmFw
aC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7
CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgs
IG1fbm9kZS0+b3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIEVkZ2UocmVnRXhwT2JqZWN0
Tm9kZSwgUmVnRXhwT2JqZWN0VXNlKSwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJ
bmRleCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBqc051bWJlcihw
b3NpdGlvbiA9PSAtMSA/IDAgOiBvdmVjdG9yWzFdKSkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAobV9ub2RlLT5vcGNvZGUoKSA9PSBSZWdFeHBUZXN0KSB7CisgICAgICAgICAg
ICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChtX25vZGUsIGpzQm9vbGVhbihwb3NpdGlv
biAhPSAtMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBTdHJ1Y3R1cmVTZXQqIHN0cnVjdHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJl
U2V0KHN0cnVjdHVyZSk7CisKKyAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBhcnJheSBtb2RlbGlu
ZyB0aGUgSlMgYXJyYXkgdGhhdCB3ZSB3aWxsIHRyeSB0byBhbGxvY2F0ZS4gVGhpcyBpcyBiYXNp
Y2FsbHkKKyAgICAgICAgICAgIC8vIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSBidXQgb3ZlciBD
Kysgc3RyaW5ncyBpbnN0ZWFkIG9mIEpTU3RyaW5ncy4KKyAgICAgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3VsdEFycmF5OworICAgICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKHN0cmluZy5z
dWJzdHJpbmcocG9zaXRpb24sIG92ZWN0b3JbMV0pKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7ICsraSkgeworICAgICAgICAg
ICAgICAgIGludCBzdGFydCA9IG92ZWN0b3JbMiAqIGldOworICAgICAgICAgICAgICAgIGlmIChz
dGFydCA+PSAwKQorICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheS5hcHBlbmQoc3RyaW5n
LnN1YnN0cmluZyhzdGFydCwgb3ZlY3RvclsyICogaSArIDFdIC0gc3RhcnQpKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5LmFwcGVuZChTdHJp
bmcoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVuc2lnbmVkIHB1YmxpY0xlbmd0
aCA9IHJlc3VsdEFycmF5LnNpemUoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0
aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgcHVibGljTGVuZ3RoKTsKKworICAgICAgICAg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIGluZGV4VUlEID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5pbmRl
eC5pbXBsKCk7CisgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaW5wdXRVSUQgPSB2bSgp
LnByb3BlcnR5TmFtZXMtPmlucHV0LmltcGwoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4
SW5kZXggPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGluZGV4VUlEKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGlucHV0SW5kZXggPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlu
cHV0VUlEKTsKKworICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5zaXplKCk7CisgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50
Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4s
IHN0cnVjdHVyZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICBPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhKiBkYXRhID0gbV9ncmFwaC5tX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuYWRk
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5h
cHBlbmQoCisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JV
c2UoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwganNO
dW1iZXIocHVibGljTGVuZ3RoKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgZGF0YS0+
bV9wcm9wZXJ0aWVzLmFwcGVuZChQdWJsaWNMZW5ndGhQTG9jKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAg
ICAgbV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBqc051bWJlcih2ZWN0b3JMZW5ndGgpLCBL
bm93bkludDMyVXNlKSk7CisgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKFZl
Y3Rvckxlbmd0aFBMb2MpOworCisgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4u
YXBwZW5kKAorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9y
VXNlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGpz
TnVtYmVyKHBvc2l0aW9uKSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgZGF0YS0+bV9wcm9w
ZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRv
cihOYW1lZFByb3BlcnR5UExvYywgaW5kZXhJbmRleCkpOworCisgICAgICAgICAgICBtX2dyYXBo
Lm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uoc3RyaW5nTm9kZSwgVW50eXBlZFVzZSkpOwor
ICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3BlcnR5UExvYywgaW5wdXRJbmRleCkp
OworCisgICAgICAgICAgICBhdXRvIG1hdGVyaWFsaXplU3RyaW5nID0gWyZdIChjb25zdCBTdHJp
bmcmIHN0cmluZykgLT4gTm9kZSogeworICAgICAgICAgICAgICAgIGlmIChzdHJpbmcuaXNOdWxs
KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAg
IGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm0oKS5z
bWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNw
ZWNOb25lLCBMYXp5SlNDb25zdGFudCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgIE9wSW5mbyhtX2dyYXBoLm1fbGF6eUpTVmFsdWVzLmFkZChMYXp5SlNWYWx1ZTo6bmV3U3Ry
aW5nKG1fZ3JhcGgsIHN0cmluZykpKSk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0QXJyYXkuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9IG1hdGVyaWFsaXplU3RyaW5nKHJlc3VsdEFycmF5
W2ldKSkgeworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBw
ZW5kKEVkZ2Uobm9kZSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5t
X3Byb3BlcnRpZXMuYXBwZW5kKFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKEluZGV4ZWRQcm9w
ZXJ0eVBMb2MsIGkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjQXJyYXksIE5vZGU6OlZh
ckFyZywgTWF0ZXJpYWxpemVOZXdPYmplY3QsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAg
ICAgIE9wSW5mbyhzdHJ1Y3R1cmVTZXQpLCBPcEluZm8oZGF0YSksIGZpcnN0Q2hpbGQsCisgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQp
OworCisgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24ocmVzdWx0Tm9kZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzgwLDYgKzU3NCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBleGVjdXRl
SW5zZXJ0aW9uU2V0KCkKKyAgICB7CisgICAgICAgIG1fbm9kZUluZGV4ID0gbV9pbnNlcnRpb25T
ZXQuZXhlY3V0ZShtX2Jsb2NrKTsKKyAgICB9CiAgICAgCiAgICAgSW5zZXJ0aW9uU2V0IG1faW5z
ZXJ0aW9uU2V0OwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NzgsNiArMjc4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KChub2RlKSwgIXZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5kZmdTaG91bGRX
YXRjaCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICAg
ICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1
Y3R1cmVzIHRoYXQgYXJlIEpTRmluYWxPYmplY3Qgb3IgSlNBcnJheS4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIFZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpT
RmluYWxPYmplY3Q6OmluZm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNBcnJheTo6aW5mbygpKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGNlcnRhaW4gaW5kZXhpbmcgc2hhcGVzLgorICAg
ICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzQW55QXJyYXlTdG9yYWdl
KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBJ
bnQ1MkNvbnN0YW50OgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUt
PmlzTnVtYmVyQ29uc3RhbnQoKSk7CkBAIC00NjEsMTMgKzQ3Miw0MiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgICAgIGNh
c2UgUHV0SGludDoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRl
OgotICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAg
ICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICAgICAg
Y2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBjYXNlIEtpbGxTdGFjazoKICAgICAgICAg
ICAgICAgICBjYXNlIEdldFN0YWNrOgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksICEidW5leHBlY3RlZCBub2RlIHR5cGUgaW4gQ1BTIik7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6IHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gQ1BTIG9ubHkgYWxsb3dzIGFycmF5IGxlbmd0aHMgdG8gYmUg
Y29uc3RhbnQuIFRoaXMgY29uc3RyYWludCBvbmx5IGV4aXN0cworICAgICAgICAgICAgICAgICAg
ICAvLyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgREZHIHN1cHBvcnQgZm9yIGFueXRoaW5nIG1vcmUg
YW5kIHdlIGRvbid0IG5lZWQgYW55CisgICAgICAgICAgICAgICAgICAgIC8vIG90aGVyIGtpbmQg
b2Ygc3VwcG9ydCBmb3Igbm93LgorICAgICAgICAgICAgICAgICAgICBPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhJiBkYXRhID0gbV9ub2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNp
emUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAg
ICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEubV9wcm9wZXJ0aWVzW2ldLmtp
bmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aXNJbnQzMkNv
bnN0YW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBvbmUgc3RydWN0dXJlLgorICAg
ICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPnN0cnVjdHVyZVNldCgpLnNp
emUoKSA9PSAxKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBDUFMgZGlzYWxsb3dzIGludDMy
IGFuZCBkb3VibGUgYXJyYXlzLiBUaG9zZSByZXF1aXJlIHdlaXJkIHR5cGUgY2hlY2tzIGFuZAor
ICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzaW9ucy4gVGhleSBhcmUgbm90IG5lZWRlZCBp
biB0aGUgREZHIHJpZ2h0IG5vdy4gV2Ugc2hvdWxkIGFkZCBzdXBwb3J0CisgICAgICAgICAgICAg
ICAgICAgIC8vIGZvciB0aGVzZSBpZiB0aGUgREZHIGV2ZXIgbmVlZHMgaXQuCisgICAgICAgICAg
ICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzSW50MzIo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUpLCAhaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAg
ICAgICBWQUxJREFURSgobm9kZSksIG1fZ3JhcGgubV9maXhwb2ludFN0YXRlICE9IEZpeHBvaW50
Tm90Q29udmVyZ2VkKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDExIEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU1N5bWJvbFRhYmxlT2Jq
ZWN0X3N5bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5bWJvbFRhYmxl
KCkpIFwKICAgICBtYWNybyhKU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSwgSlNXcmFwcGVy
T2JqZWN0OjppbnRlcm5hbFZhbHVlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhNYXJrZWRBbGxvY2F0
b3JfZnJlZUxpc3RIZWFkLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkp
IFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCwg
UmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRS
ZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4cCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0
b3JfY2FjaGVkUmVzdWx0X2xhc3RJbnB1dCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2Fj
aGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpIFwK
KyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0LCBS
ZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJl
c3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3Rh
cnQpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9l
bmQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2Fj
aGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0
LCBlbmQpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3JlaWZp
ZWQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2Fj
aGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZpZWQoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9s
YXN0SW5kZXgsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXgoKSkgXAogICAgIG1hY3Jv
KFJlZ0V4cE9iamVjdF9sYXN0SW5kZXhJc1dyaXRhYmxlLCBSZWdFeHBPYmplY3Q6Om9mZnNldE9m
TGFzdEluZGV4SXNXcml0YWJsZSgpKSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzX292ZXJy
b2RlVGhpbmdzLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJvZGVUaGluZ3MoKSkgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
cmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAg
ICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVj
dExhc3RJbmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAg
Ly8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3ODY5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MzgsNiArOTM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTZXRSZWdFeHBP
YmplY3RMYXN0SW5kZXg6CiAgICAgICAgICAgICBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQ6CisgICAgICAgICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KCk7
CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAg
ICAgY2FzZSBMb29wSGludDoKQEAgLTM3MTYsMzIgKzM3MTksOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5
LCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgbV9vdXQuc3Rv
cmUzMih2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVu
Z3RoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGhhc0RvdWJsZShtX25vZGUtPmlu
ZGV4aW5nVHlwZSgpKSkgewotICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMb29wID0g
bV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgb3JpZ2luYWxJbmRleCA9IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5ndGgpOwot
ICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFu
Y2hvcihidXR0ZXJmbHkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAg
ICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShpbml0TG9v
cCksIHVuc3VyZShpbml0RG9uZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGluaXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0
RG9uZSk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0Lmlu
dDMyLCBvcmlnaW5hbEluZGV4KTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1f
b3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAotICAgICAgICAgICAg
ICAgICAgICBUeXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFu
eUluZGV4KCksIHBvaW50ZXIpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBM
VmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5pbnQzMk9uZSk7Ci0gICAg
ICAgICAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5l
eHRJbmRleCkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkocG9pbnRl
ciwgbV9vdXQuYW5jaG9yKG1fb3V0LmFkZChwb2ludGVyLCBtX291dC5pbnRQdHJFaWdodCkpKTsK
LSAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0
Lm5vdFplcm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUp
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0
RG9uZSwgaW5pdExhc3ROZXh0KTsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5pdGlh
bGl6ZUFycmF5RWxlbWVudHMobV9ub2RlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBi
dXR0ZXJmbHkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG9iamVjdCk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CkBAIC02Mjg2LDExICs2MjY1LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IExvd2VyIHRoZSB2YWx1ZXMgZmlyc3QsIHRvIGF2b2lkIGNyZWF0aW5nIHZhbHVlcyBpbnNpZGUg
YSBjb250cm9sIGZsb3cgZGlhbW9uZC4KICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxMVmFsdWUs
IDg+IHZhbHVlczsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9w
ZXJ0aWVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dKU1ZhbHVl
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxICsgaSkpKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpOworICAg
ICAgICAgICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3Ro
UExvYzoKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgdmFsdWVzLmFwcGVuZChsb3dKU1ZhbHVlKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQgPSBtX25vZGUtPnN0cnVjdHVyZVNldCgpOwotICAgICAgICAKKwogICAg
ICAgICBWZWN0b3I8TEJhc2ljQmxvY2ssIDE+IGJsb2NrcyhzZXQuc2l6ZSgpKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGJsb2Nrc1tp
XSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC02MzE1LDIxICs2MzA0LDQ5IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBMVmFsdWUgb2JqZWN0OwogICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSkgeworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8
fCBoYXNJbmRleGluZ0hlYWRlcihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAg
ICAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRp
b25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAgICAgTWFy
a2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmdm0oKS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdp
dGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKworICAgICAgICAgICAgICAgIGJvb2wg
aGFzSW5kZXhpbmdIZWFkZXIgPSBKU0M6Omhhc0luZGV4aW5nSGVhZGVyKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4aW5nSGVhZGVyU2l6
ZSA9IDA7CisgICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVz
ID0gbV9vdXQuaW50UHRyWmVybzsKKyAgICAgICAgICAgICAgICBMVmFsdWUgdmVjdG9yTGVuZ3Ro
ID0gbV9vdXQuaW50MzJaZXJvOworICAgICAgICAgICAgICAgIExWYWx1ZSBwdWJsaWNMZW5ndGgg
PSBtX291dC5pbnQzMlplcm87CisgICAgICAgICAgICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVy
KSB7CisgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nSGVhZGVyU2l6ZSA9IHNpemVvZihJbmRl
eGluZ0hlYWRlcik7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEu
bV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgUHJv
bW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ld
OworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpY0xlbmd0aCA9IHZhbHVlc1tpXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmVj
dG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGgg
PSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9vdXQubXVsKG1fb3V0Lnplcm9FeHRQdHIodmVjdG9yTGVuZ3RoKSwgbV9vdXQuaW50UHRy
RWlnaHQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIExWYWx1ZSBidXR0
ZXJmbHlTaXplID0gbV9vdXQuYWRkKAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cigKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAqIHNpemVvZihKU1ZhbHVlKSArIGluZGV4aW5nSGVhZGVyU2l6ZSksCisgICAgICAgICAg
ICAgICAgICAgIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFz
aWNTdG9yYWdlQW5kR2V0RW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0
cihzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpLAotICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aCk7Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5k
KGJ1dHRlcmZseVNpemUsIHNsb3dQYXRoKTsKKwogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0
QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBlbmRPZlN0b3JhZ2UpOworICAgICAg
ICAgICAgICAgICAgICBtX291dC5zdWIoZW5kT2ZTdG9yYWdlLCBpbmRleGluZ1BheWxvYWRTaXpl
SW5CeXRlcyksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJ
bmRleGluZ0hlYWRlcikgLSBpbmRleGluZ0hlYWRlclNpemUpKTsKKworICAgICAgICAgICAgICAg
IG1fb3V0LnN0b3JlMzIodmVjdG9yTGVuZ3RoLCBmYXN0QnV0dGVyZmx5VmFsdWUsIG1faGVhcHMu
QnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgTFZhbHVlIGZhc3RPYmplY3RWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0KAogICAgICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IpLCBzdHJ1Y3R1cmUsIGZhc3RCdXR0
ZXJmbHlWYWx1ZSwgc2xvd1BhdGgpOwpAQCAtNjM0MCwxMiArNjM1NywyNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRo
LCBjb250aW51YXRpb24pOwogCi0gICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RWYWx1
ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8
TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0
ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93T2JqZWN0VmFsdWU7Cisg
ICAgICAgICAgICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6
eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRW
ZWN0b3JMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sw
XS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgdmVj
dG9yTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBzbG93T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAgICAg
ICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlT
bG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BS
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93T2JqZWN0ID0g
bV9vdXQuYW5jaG9yKHNsb3dPYmplY3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd0J1dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgICAgICAgICAg
bV9vdXQubG9hZFB0cihzbG93T2JqZWN0VmFsdWUsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5
KSk7CkBAIC02MzU2LDYgKzYzODUsMTEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgb2JqZWN0ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdE9iamVj
dCwgc2xvd09iamVjdCk7CiAgICAgICAgICAgICAgICAgYnV0dGVyZmx5ID0gbV9vdXQucGhpKG1f
b3V0LmludFB0ciwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSk7CisKKyAgICAgICAgICAg
ICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgZmFzdEJ1dHRlcmZseVZhbHVlLCBtX2hl
YXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOworCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6
ZUFycmF5RWxlbWVudHMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBi
dXR0ZXJmbHkpOworCisgICAgICAgICAgICAgICAgSGFzaE1hcDxpbnQzMl90LCBMVmFsdWU+IGlu
ZGV4TWFwOworICAgICAgICAgICAgICAgIFZlY3RvcjxpbnQzMl8+IGluZGljZXM7CisgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2Ny
aXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRl
c2NyaXB0b3Iua2luZCgpICE9IEluZGV4ZWRQcm9wZXJ0eVBMb2MpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KGRlc2NyaXB0b3IuaW5mbygpKTsKKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5kZXhNYXAuYWRkKGluZGV4
LCB2YWx1ZXNbaV0pOworICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1f
bm9kZSwgcmVzdWx0KTsgLy8gRHVwbGljYXRlcyBhcmUgaWxsZWdhbC4KKworICAgICAgICAgICAg
ICAgICAgICBpbmRpY2VzLmFwcGVuZChpbmRleCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKCFpbmRpY2VzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnNvcnQoaW5kaWNlcy5iZWdpbigpLCBpbmRpY2VzLmVuZCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbjsK
KyAgICAgICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoU3RvcmVz
KGluZGljZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2Nr
PiBibG9ja3NXaXRoQ2hlY2tzKGluZGljZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGluZGljZXMuc2l6ZSgpOyBp
LS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoU3RvcmVzW2ldID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3Nb
aV0gPSBtX291dC5uZXdCbG9jaygpOyAvLyBibG9ja3NXaXRoQ2hlY2tzWzBdIGlzIHRoZSBjb250
aW51YXRpb24uCisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBpbmRleExhc3ROZXh0ID0gbV9vdXQubV9uZXh0QmxvY2s7CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRpY2Vz
LnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9
IGluZGljZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBpbmRl
eE1hcC5nZXQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9v
dXQuYmVsb3cobV9vdXQuY29uc3RJbnQzMihpbmRleCksIHB1YmxpY0xlbmd0aCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGJsb2Nrc1dpdGhTdG9yZXNbaV0pLCB1bnN1cmUo
YmxvY2tzV2l0aENoZWNrc1tpXSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhibG9ja3NXaXRoU3RvcmVzW2ldLCBibG9ja3NXaXRoQ2hlY2tzW2ldKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBoYXMgdG8gdHlwZS1jaGVjayBhbmQgY29udmVy
dCBpdHMgaW5wdXRzLCBidXQgaXQgY2Fubm90IGRvIHNvIGluIGEKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHdheSB0aGF0IHVwZGF0ZXMgQUkuIFRoYXQncyBhIGJpdCBhbm5veWluZywgYnV0
IGlmIHlvdSB0aGluayBhYm91dCBob3cKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpbmtp
bmcgd29ya3MsIGl0J3MgYWN0dWFsbHkgbm90IGEgYmFkIHRoaW5nLiBXZSBhcmUgdmlydHVhbGx5
IGd1YXJhbnRlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhlc2UgdHlwZSBj
aGVja3Mgd2lsbCBub3QgZmFpbCwgc2luY2UgdGhlIHR5cGUgY2hlY2tzIHRoYXQgZ3VhcmRlZAor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIHN0b3JlcyB0byB0aGUgYXJy
YXkgYXJlIHN0aWxsIHNvbWV3aGVyZSBhYm92ZSB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAg
ICAgICAgICAgT3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOworICAgICAgICAgICAgICAgICAg
ICAgICAgSW5kZXhlZEFic3RyYWN0SGVhcCogaGVhcDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIHRoZSBwcm92ZW4gdHlwZSBpZiB3ZSBo
YWQgdGhlIEVkZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVl
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzExCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0
ciwgaXNOb3RJbnQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3Jl
VHlwZSA9IFN0b3JlNjQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hl
YXBzLmluZGV4ZWRJbnQzMlByb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElO
R19UWVBFUzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUg
c291cmNlIGlzIFZhbHVlUmVwLCB3ZSBzaG91bGQgYXZvaWQgZW1pdHRpbmcgYW55CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2tzLiBXZSBjb3VsZCBhbHNvIGF2b2lkIGVtaXR0
aW5nIGNoZWNrcyBpZiB3ZSBoYWQgdGhlIEVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB0aGlzIHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1MzExCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnRD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFz
aWNCbG9jayBkb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzSW50MzIodmFsdWUp
LCB1bnN1cmUoaW50Q2FzZSksIHVuc3VyZShkb3VibGVDYXNlKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENh
c2UsIGRvdWJsZUNhc2UpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgaW50UmVzdWx0ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
YW5jaG9yKG1fb3V0LmludFRvRG91YmxlKHVuYm94SW50MzIodmFsdWUpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9u
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBub1Zh
bHVlKCksIG51bGxwdHIsIGlzTnVtYmVyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgZG91YmxlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHVuYm94RG91
YmxlKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWUgPSBtX291dC5waGkoRG91YmxlLCBpbnRSZXN1bHQsIGRvdWJsZVJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gU3RvcmVEb3VibGU7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVz
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lO
REVYSU5HX1RZUEVTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IFN0
b3JlNjQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4
ZWRDb250aWd1b3VzUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiSW52YWxpZCBpbmRleGluZyB0
eXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LnN0b3JlKHZhbHVlLCBtX291dC5hZGRyZXNzKGJ1dHRlcmZseSwgaGVhcC0+
YXQoaW5kZXgpKSwgc3RvcmVUeXBlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
anVtcChibG9ja3NXaXRoQ2hlY2tzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3Nb
aV0sIGkgPyBibG9ja3NXaXRoU3RvcmVzW2kgLSAxXSA6IGluZGV4TGFzdE5leHQpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgZWFzeSBjYXNlIHdoZXJlIHdlIGNhbiBkbyBhIG9u
ZS1zaG90IGFsbG9jYXRpb24sIHdlIHNpbXBseSBhbGxvY2F0ZSB0aGUKICAgICAgICAgICAgICAg
ICAvLyBvYmplY3QgdG8gZGlyZWN0bHkgaGF2ZSB0aGUgZGVzaXJlZCBzdHJ1Y3R1cmUuCkBAIC02
MzY1LDEyICs2NTAwLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZv
ciAoUHJvcGVydHlNYXBFbnRyeSBlbnRyeSA6IHN0cnVjdHVyZS0+Z2V0UHJvcGVydGllc0NvbmN1
cnJlbnRseSgpKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3By
b3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIFBoYW50b21Qcm9w
ZXJ0eVZhbHVlIHZhbHVlID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClbdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyXSAh
PSBlbnRyeS5rZXkpCisgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlw
dG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGRlc2NyaXB0b3Iua2luZCgpICE9IE5hbWVkUHJvcGVydHlQTG9jKQorICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCldICE9IGVudHJ5LmtleSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBpc0lubGluZU9mZnNldChlbnRyeS5vZmZzZXQpID8g
b2JqZWN0IDogYnV0dGVyZmx5OwotICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZh
bHVlc1tpXSwgYmFzZSwgdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyLCBlbnRyeS5vZmZzZXQpOwor
ICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgZGVzY3Jp
cHRvci5pbmZvKCksIGVudHJ5Lm9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTY0MzUsOSArNjU3MiwxMSBAQCBw
cml2YXRlOgogICAgICAgICBMVmFsdWUgYWN0aXZhdGlvbiA9IG1fb3V0LnBoaShtX291dC5pbnRQ
dHIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChkYXRh
Lm1fcHJvcGVydGllcy5zaXplKCkgPT0gdGFibGUtPnNjb3BlU2l6ZSgpKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlc1tpXSwKLSAgICAgICAgICAgICAgICBhY3Rp
dmF0aW9uLAotICAgICAgICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJp
YWJsZXNbZGF0YS5tX3Byb3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAg
ICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3Bl
cnRpZXNbaV07CisgICAgICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ0xvc3Vy
ZVZhclBMb2MpOworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgICAgICB2
YWx1ZXNbaV0sIGFjdGl2YXRpb24sCisgICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25t
ZW50UmVjb3JkX3ZhcmlhYmxlc1tkZXNjcmlwdG9yLmluZm8oKV0pOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKQEAgLTY0NDYsNyArNjU4NSw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbihsb2NrZXIp
LCBlbmQgPSB0YWJsZS0+ZW5kKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAg
ICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09IGRh
dGEubV9wcm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcikgeworICAgICAgICAgICAgICAg
ICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3Bl
cnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9
PSBDbG9zdXJlVmFyUExvYyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5z
Y29wZU9mZnNldCgpLm9mZnNldCgpID09IGRlc2NyaXB0b3IuaW5mbygpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNjYxMyw2ICs2NzU0LDI4IEBAIHByaXZhdGU6
CiAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUsIHJlZ0V4cCwgbV9oZWFwcy5SZWdFeHBPYmpl
Y3RfbGFzdEluZGV4KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQoKQorICAgIHsKKyAgICAgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2dyYXBo
LnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CisgICAgICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9n
cmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpOworICAgICAgICBFZGdlIHN0YXJ0RWRnZSA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKTsKKyAgICAgICAgRWRnZSBlbmRFZGdlID0gbV9n
cmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIGNv
bnN0cnVjdG9yID0gbG93Q2VsbChjb25zdHJ1Y3RvckVkZ2UpOworICAgICAgICBMVmFsdWUgcmVn
RXhwID0gbG93Q2VsbChyZWdFeHApOworICAgICAgICBMVmFsdWUgc3RyaW5nID0gbG93Q2VsbChz
dHJpbmcpOworICAgICAgICBMVmFsdWUgc3RhcnQgPSBsb3dJbnQzMihzdGFydCk7CisgICAgICAg
IExWYWx1ZSBlbmQgPSBsb3dJbnQzMihlbmQpOworCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHJl
Z0V4cCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0
X2xhc3RSZWdFeHApOworICAgICAgICBtX291dC5zdG9yZVB0cihzdHJpbmcsIGNvbnN0cnVjdG9y
LCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0SW5wdXQpOworICAg
ICAgICBtX291dC5zdG9yZTMyKHN0YXJ0LCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25z
dHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0KTsKKyAgICAgICAgbV9vdXQuc3RvcmUz
MihzdGFydCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVz
dWx0X3Jlc3VsdF9lbmQpOworICAgICAgICBtX291dC5zdG9yZTgoCisgICAgICAgICAgICBtX291
dC5jb25zdEludDMyKDApLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9j
YWNoZWRSZXN1bHRfcmVpZmllZCk7CisgICAgfQorCiAgICAgTFZhbHVlIGRpZE92ZXJmbG93U3Rh
Y2soKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBkb2VzIGEgdmVyeSBzaW1wbGUgbGVhZiBmdW5j
dGlvbiBhbmFseXNpcy4gVGhlIGludmFyaWFudCBvZiBGVEwgY2FsbApAQCAtNjk3MCw2ICs3MTMz
LDM5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
KworICAgIHZvaWQgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMoSW5kZXhpbmdUeXBlIGluZGV4aW5n
VHlwZSwgTFZhbHVlIHZlY3Rvckxlbmd0aCwgTFZhbHVlIGJ1dHRlcmZseSkKKyAgICB7CisgICAg
ICAgIGlmICghaGFzRG91YmxlKGluZGV4aW5nVHlwZSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBH
QyBhbHJlYWR5IGluaXRpYWxpemVkIGV2ZXJ5dGhpbmcgdG8gSlNWYWx1ZSgpIGZvciB1cy4KKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERvdWJsZXMgbXVzdCBi
ZSBpbml0aWFsaXplZCB0byBQTmFOLgorICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGluaXREb25lID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXgg
PSBtX291dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3Jp
Z2luYWxQb2ludGVyID0gbV9vdXQuYW5jaG9yKGJ1dHRlcmZseSk7CisgICAgICAgIG1fb3V0LmJy
YW5jaCgKKyAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUo
aW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKKyAgICAgICAgCisgICAgICAgIExCYXNpY0Js
b2NrIGluaXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7Cisg
ICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgb3JpZ2luYWxJbmRl
eCk7CisgICAgICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3Jp
Z2luYWxQb2ludGVyKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAg
ICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksCisgICAg
ICAgICAgICBUeXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFu
eUluZGV4KCksIHBvaW50ZXIpKTsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSBuZXh0SW5kZXgg
PSBtX291dC5zdWIoaW5kZXgsIG1fb3V0LmludDMyT25lKTsKKyAgICAgICAgbV9vdXQuYWRkSW5j
b21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRleCkpOworICAgICAgICBtX291
dC5hZGRJbmNvbWluZ1RvUGhpKHBvaW50ZXIsIG1fb3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRl
ciwgbV9vdXQuaW50UHRyRWlnaHQpKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAg
ICAgIG1fb3V0Lm5vdFplcm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUo
aW5pdERvbmUpKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGluaXREb25lLCBp
bml0TGFzdE5leHQpOworICAgIH0KICAgICAKICAgICBMVmFsdWUgYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoTFZhbHVlIG9iamVjdCwgU3RydWN0dXJlKiBwcmV2aW91c1N0cnVjdHVyZSkKICAgICB7
CkBAIC05MjU3LDcgKzk0NTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHByb3Zl
bjsKICAgICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25aZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBl
TnVtYmVyKTsKICAgICB9Ci0gICAgCisKICAgICBMVmFsdWUgdW5ib3hEb3VibGUoTFZhbHVlIGpz
VmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuYml0Q2FzdChtX291dC5hZGQoanNW
YWx1ZSwgbV90YWdUeXBlTnVtYmVyKSwgbV9vdXQuZG91YmxlVHlwZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5Nzg2OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDE5ICs0MSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzo6REZHOwogCi1leHRlcm4gIkMiIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgCi0gICAgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKLSAgICAgICAgdm0sIG51bGxwdHIs
IDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIEluZGV4aW5nSGVhZGVy
KCksIDApOwotICAgIAotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU0ZpbmFsT2JqZWN0OjpjcmVh
dGUoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwotICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7
IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCi0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQogZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9w
dWxhdGVPYmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEV4aXRUaW1lT2JqZWN0TWF0
ZXJpYWxpemF0aW9uKiBtYXRlcmlhbGl6YXRpb24sCiAgICAgRW5jb2RlZEpTVmFsdWUqIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUqIHZhbHVlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCAr
MzcsNiBAQCBjbGFzcyBMYXp5U2xvd1BhdGg7CiAKIGV4dGVybiAiQyIgewogCi1KU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7Ci0KIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKAogICAgIEV4ZWNTdGF0ZSosIEV4aXRUaW1lT2JqZWN0
TWF0ZXJpYWxpemF0aW9uKiwgRW5jb2RlZEpTVmFsdWUqKSBXVEZfSU5URVJOQUw7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTk3ODY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtOTYsNiArOTYsMTAgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCisgICAgLy8gVGhpcyBpcyBhIHN1
cGVyIGRhbmdlcm91cyBtZXRob2QgZm9yIEpJVHMuIFNvbWV0aW1lcyB0aGUgSklUcyB3aWxsIHdh
bnQgdG8gY3JlYXRlIGVpdGhlciBhCisgICAgLy8gSlNGaW5hbE9iamVjdCBvciBhIEpTQXJyYXku
IFRoaXMgaXMgdGhlIG1ldGhvZCB0aGF0IHdpbGwgZG8gdGhhdC4KKyAgICBKU09iamVjdCogY3Jl
YXRlUmF3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRl
cmZseSogPSBudWxscHRyKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3Qg
ZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYs
IENvcHlUb2tlbik7CkBAIC0xMDM0LDYgKzEwMzgsMjAgQEAgcHJpdmF0ZToKIAogSlNfRVhQT1JU
X1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0lu
c3RhbmNlT2YoRXhlY1N0YXRlKik7CiAKK2lubGluZSBKU09iamVjdCogSlNPYmplY3Q6OmNyZWF0
ZVJhd09iamVjdCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBC
dXR0ZXJmbHkqIGJ1dHRlcmZseSkKK3sKKyAgICBKU09iamVjdCogZmluYWxPYmplY3QgPSBuZXcg
KAorICAgICAgICBOb3ROdWxsLCAKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+
KAorICAgICAgICAgICAgKmV4ZWMtPmhlYXAoKSwKKyAgICAgICAgICAgIGFsbG9jYXRpb25TaXpl
KHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgKQorICAgICkgSlNPYmplY3Qo
ZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24oZXhlYy0+dm0oKSk7CisgICAgcmV0dXJuIGZpbmFsT2JqZWN0OworfQorCiBpbmxpbmUg
SlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlKAogICAgIEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQogewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZpc2lvbiAxOTc4Njkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjIsNiArMjYyLDggQEAgUmVnRXhwKiBSZWdFeHA6OmNyZWF0ZShWTSYgdm0sIGNv
bnN0IFN0cgogCiB2b2lkIFJlZ0V4cDo6Y29tcGlsZShWTSogdm0sIFlhcnI6OllhcnJDaGFyU2l6
ZSBjaGFyU2l6ZSkKIHsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2Zs
YWdzLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiAgICAgaWYgKG1fY29uc3RydWN0aW9uRXJyb3Ip
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5OSw4ICszMDEs
MjIgQEAgaW50IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcmIAogICAgIHJldHVy
biBtYXRjaElubGluZSh2bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOwogfQogCitib29sIFJl
Z0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoCisgICAgVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0
b3IpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlm
ICghaGFzQ29kZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwb3NpdGlvbiA9IG1hdGNoKHZtLCBzLCBzdGFy
dE9mZnNldCwgb3ZlY3Rvcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVnRXhwOjpj
b21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewor
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6
WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVj
dGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzQwLDYgKzM1Niw4IEBAIE1hdGNoUmVzdWx0
IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCAKIAogdm9pZCBSZWdFeHA6OmRlbGV0ZUNvZGUo
KQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAg
aWYgKCFoYXNDb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRlID0gTm90Q29tcGls
ZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24g
MTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYgUmVnRXhwX2gKICNkZWZpbmUgUmVn
RXhwX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0
YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hdGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiUmVn
RXhwS2V5LmgiCkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlnbm9yZUNhc2Uo
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0KICAgICBib29sIG11
bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnTXVsdGlsaW5lOyB9CiAgICAg
Ym9vbCBzdGlja3koKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ1N0aWNreTsgfQorICAg
IGJvb2wgZ2xvYmFsT3JTdGlja3koKSBjb25zdCB7IHJldHVybiBnbG9iYWwoKSB8fCBzdGlja3ko
KTsgfQogICAgIGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnVW5p
Y29kZTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9w
YXR0ZXJuU3RyaW5nOyB9CkBAIC02NCw2ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hh
ciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25FcnJvcjsgfQog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7CisKKyAgICAvLyBS
ZXR1cm5zIGZhbHNlIGlmIHdlIGNvdWxkbid0IHJ1biB0aGUgcmVndWxhciBleHByZXNzaW9uIGZv
ciBhbnkgcmVhc29uLgorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0mLCBjb25zdCBTdHJp
bmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgVmVjdG9yPGludCwgMzI+
JiBvdmVjdG9yKTsKKyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBNYXRjaFJlc3VsdCBtYXRj
aChWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKIAogICAgIC8vIENh
bGwgdGhlc2UgdmVyc2lvbnMgb2YgdGhlIG1hdGNoIGZ1bmN0aW9ucyBpZiB5b3UncmUgZGVzcGVy
YXRlIGZvciBwZXJmb3JtYW5jZS4KQEAgLTc3LDYgKzgzLDggQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV9zdGF0ZSAhPSBOb3RDb21waWxlZDsKICAgICB9CiAKKyAgICBib29sIGhhc0NvZGVG
b3IoWWFycjo6WWFyckNoYXJTaXplKTsKKwogICAgIHZvaWQgZGVsZXRlQ29kZSgpOwogCiAjaWYg
RU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtMTMyLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9ydE1hdGNoQ2FsbENvdW50OwogICAgIHVuc2lnbmVkIG1fcnRNYXRjaEZvdW5k
Q291bnQ7CiAjZW5kaWYKKyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CiAKICNpZiBFTkFC
TEUoWUFSUl9KSVQpCiAgICAgWWFycjo6WWFyckNvZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRS
ZXN1bHQuaAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDExIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RSZWdFeHAoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX2xhc3RSZWdFeHApOyB9CisgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkxhc3RJbnB1dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdF
eHBDYWNoZWRSZXN1bHQsIG1fbGFzdElucHV0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZSZXN1bHQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0
LCBtX3Jlc3VsdCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVpZmllZCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fcmVpZmllZCk7IH0K
KwogcHJpdmF0ZToKICAgICBNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKICAgICBib29sIG1fcmVpZmll
ZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29u
c3RydWN0b3IuaAkocmV2aXNpb24gMTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkUmVzdWx0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENvbnN0cnVjdG9yLCBtX2NhY2hlZFJlc3Vs
dCk7IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBSZWdFeHBQ
cm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXMpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCShyZXZpc2lvbiAxOTc4NjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDIwICs2NywyNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZiAvLyBSRUdFWFBf
RlVOQ19URVNUX0RBVEFfR0VOCiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJ
Zk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19J
TkxJTkUgYm9vbCBSZWdFeHA6Omhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXpl
KQogewogICAgIGlmIChoYXNDb2RlKCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAg
IGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYg
KG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNo
YXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGUoKSkpCi0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitBTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoVk0mIHZt
LCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit7CisgICAgaWYgKGhhc0NvZGVGb3IoY2hh
clNpemUpKQorICAgICAgICByZXR1cm47CiAKICAgICBjb21waWxlKCZ2bSwgY2hhclNpemUpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0
Y2hlc0FycmF5LmgJKHJldmlzaW9uIDE5Nzg2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3
IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2gKICAgICAKICAgICBW
ZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CiAgICAgaW50IHBvc2l0aW9uID0gcmVn
RXhwLT5tYXRjaElubGluZSh2bSwgaW5wdXRWYWx1ZSwgc3RhcnRPZmZzZXQsIHN1YnBhdHRlcm5S
ZXN1bHRzKTsKKyAgICBBU1NFUlQocG9zaXRpb24gPT0gc3VicGF0dGVyblJlc3VsdHNbMF0pOwog
ICAgIGlmIChwb3NpdGlvbiA9PSAtMSkgewogICAgICAgICByZXN1bHQgPSBNYXRjaFJlc3VsdDo6
ZmFpbGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAkocmV2aXNpb24g
MTk3ODY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIEpTVmFsdWUgUmVnRXhwT2Jq
ZWN0OjpleGVjSW5saW5lKEV4ZWNTdGEKICAgICBTdHJpbmcgaW5wdXQgPSBzdHJpbmctPnZhbHVl
KGV4ZWMpOyAvLyBGSVhNRTogSGFuZGxlIGVycm9ycy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NTE0NQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
IAotICAgIGJvb2wgZ2xvYmFsT3JTdGlja3kgPSByZWdFeHAtPmdsb2JhbCgpIHx8IHJlZ0V4cC0+
c3RpY2t5KCk7CisgICAgYm9vbCBnbG9iYWxPclN0aWNreSA9IHJlZ0V4cC0+Z2xvYmFsT3JTdGlj
a3koKTsKIAogICAgIHVuc2lnbmVkIGxhc3RJbmRleDsKICAgICBpZiAoZ2xvYmFsT3JTdGlja3kp
IHsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0luc2VydGlvbi5oCShyZXZpc2lvbiAxOTc4NjkpCisrKyBTb3VyY2UvV1RGL3d0
Zi9JbnNlcnRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSwxNCArNTUsMTUgQEAg
cHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFZlY3RvclR5cGUsIHR5cGVu
YW1lIEluc2VydGlvblZlY3RvclR5cGU+Ci12b2lkIGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZl
Y3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0aW9uVmVjdG9yVHlwZSYgaW5zZXJ0aW9ucykKK3NpemVf
dCBleGVjdXRlSW5zZXJ0aW9ucyhUYXJnZXRWZWN0b3JUeXBlJiB0YXJnZXQsIEluc2VydGlvblZl
Y3RvclR5cGUmIGluc2VydGlvbnMpCiB7Ci0gICAgaWYgKCFpbnNlcnRpb25zLnNpemUoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIHRhcmdldC5ncm93KHRhcmdldC5zaXplKCkgKyBpbnNlcnRpb25z
LnNpemUoKSk7CisgICAgc2l6ZV90IG51bUluc2VydGlvbnMgPSBpbnNlcnRpb25zLnNpemUoKTsK
KyAgICBpZiAoIW51bUluc2VydGlvbnMpCisgICAgICAgIHJldHVybiAwOworICAgIHRhcmdldC5n
cm93KHRhcmdldC5zaXplKCkgKyBudW1JbnNlcnRpb25zKTsKICAgICBzaXplX3QgbGFzdEluZGV4
ID0gdGFyZ2V0LnNpemUoKTsKICAgICBzaXplX3Qgb3JpZ2luYWxUYXJnZXRTaXplID0gdGFyZ2V0
LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpbmRleEluSW5zZXJ0aW9ucyA9IGluc2VydGlvbnMu
c2l6ZSgpOyBpbmRleEluSW5zZXJ0aW9ucy0tOykgeworICAgIGZvciAoc2l6ZV90IGluZGV4SW5J
bnNlcnRpb25zID0gbnVtSW5zZXJ0aW9uczsgaW5kZXhJbkluc2VydGlvbnMtLTspIHsKICAgICAg
ICAgQVNTRVJUKCFpbmRleEluSW5zZXJ0aW9ucyB8fCBpbnNlcnRpb25zW2luZGV4SW5JbnNlcnRp
b25zXS5pbmRleCgpID49IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnMgLSAxXS5pbmRleCgp
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChvcmlnaW5hbFRhcmdldFNpemUsIGluc2VydGlvbnNb
aW5kZXhJbkluc2VydGlvbnNdLmluZGV4KCkgPCBvcmlnaW5hbFRhcmdldFNpemUpOwogICAgICAg
ICBzaXplX3QgZmlyc3RJbmRleCA9IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4
KCkgKyBpbmRleEluSW5zZXJ0aW9uczsKQEAgLTczLDYgKzc0LDcgQEAgdm9pZCBleGVjdXRlSW5z
ZXJ0aW9ucyhUYXJnZXRWZWN0b3JUeXBlJgogICAgICAgICBsYXN0SW5kZXggPSBmaXJzdEluZGV4
OwogICAgIH0KICAgICBpbnNlcnRpb25zLnJlc2l6ZSgwKTsKKyAgICByZXR1cm4gbnVtSW5zZXJ0
aW9uczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273665</attachid>
            <date>2016-03-10 18:54:43 -0800</date>
            <delta_ts>2016-03-10 19:36:13 -0800</delta_ts>
            <desc>it compiles!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>89238</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc5ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2
MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3
QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAv
KiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEw
QkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBD
NzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhG
NjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGgg
PSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMz
NUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAogCQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovLAogCQkJCUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOEND
MDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBG
RDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYg
Kzc0NDgsNyBAQAogCQkJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEg
LyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFp
bmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTk1Miw2ICsxOTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogog
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MjMsNiArOTIzLDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAg
ICAgICAgIGRlZihIZWFwTG9jYXRpb24oUmVnRXhwT2JqZWN0TGFzdEluZGV4TG9jLCBSZWdFeHBP
YmplY3RfbGFzdEluZGV4LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hl
ZFJlc3VsdDoKKyAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czogewogICAgICAgICBBYnN0cmFjdEhl
YXAgaGVhcChEaXJlY3RBcmd1bWVudHNQcm9wZXJ0aWVzLCBub2RlLT5jYXB0dXJlZEFyZ3VtZW50
c09mZnNldCgpLm9mZnNldCgpKTsKQEAgLTEwODYsNyArMTA5MCw5IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMygp
LnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJlYWQoUmVnRXhwU3RhdGUp
OworICAgICAgICAgICAgcmVhZChSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAg
IHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0
SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJlYWQoV29y
bGQpOwpAQCAtMTA5OCw3ICsxMTA0LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJl
Z0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09
IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAgICAgICAg
ICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUoUmVnRXhw
U3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNyw2ICsxMTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0
R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9u
IDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMDAsNiArMTMwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgU3RvcmVCYXJyaWVyOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoK
ICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGp1c3Qgbm9k
ZXMgdGhhdCB3ZSBkb24ndCBjdXJyZW50bHkgZXhwZWN0IHRvIHNlZSBkdXJpbmcgZml4dXAuCiAg
ICAgICAgICAgICAvLyBJZiB3ZSBldmVyIHdhbnRlZCB0byBpbnNlcnQgdGhlbSBwcmlvciB0byBm
aXh1cCwgdGhlbiB3ZSBqdXN0IGhhdmUgdG8gY3JlYXRlCiAgICAgICAgICAgICAvLyBmaXh1cCBy
dWxlcyBmb3IgdGhlbS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0
aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
c2VydGlvblNldC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBA
QCB2b2lkIEluc2VydGlvblNldDo6aW5zZXJ0U2xvdyhjb25zdCBJbnNlCiAgICAgbV9pbnNlcnRp
b25zLmluc2VydCgwLCBpbnNlcnRpb24pOwogfQogCi12b2lkIEluc2VydGlvblNldDo6ZXhlY3V0
ZShCYXNpY0Jsb2NrKiBibG9jaykKK3NpemVfdCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNC
bG9jayogYmxvY2spCiB7Ci0gICAgZXhlY3V0ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2VydGlv
bnMpOworICAgIHJldHVybiBleGVjdXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9ucyk7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jayk7CisgICAgc2l6ZV90IGV4
ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5zZXJ0U2xv
dyhjb25zdCBJbnNlcnRpb24mKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkRGR05vZGVPcmln
aW4uaCIKICNpbmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKICNpbmNsdWRlICJERkdU
cmFuc2l0aW9uLmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRGR1Zhcmlh
YmxlQWNjZXNzRGF0YS5oIgpAQCAtMjE5LDIwICsyMjAsNiBAQCBzdHJ1Y3QgU3RhY2tBY2Nlc3NE
YXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hlZEF0KGZvcm1h
dCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAotLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFzc2luZyBh
biBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKLS8vIGRpc3Rpbmd1aXNo
ZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9j
ayBkYXRhIHN0cnVjdHVyZSAtIAotLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlk
ZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KLXN0cnVjdCBPcEluZm8gewotICAgIE9wSW5mbygpIDog
bV92YWx1ZSgwKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICBleHBsaWNpdCBPcElu
Zm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVl
KSkgeyB9Ci0jaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQotICAgIGV4cGxpY2l0IE9w
SW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVl
KSkgeyB9Ci0jZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1
ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICB1aW50cHRyX3Qg
bV92YWx1ZTsKLX07Ci0KIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBh
IHNpbmdsZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0
LDYgKzIyNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhW
YXJJbmplY3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0
UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTZXRSZWdF
eHBPYmplY3RMYXN0SW5kZXgsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhSZWNvcmRS
ZWdFeHBDYWNoZWRSZXN1bHQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAog
ICAgIG1hY3JvKENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNr
Tm90RW1wdHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0JhZENlbGwsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3NCw3ICsxOTc0LDcgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6IHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9PSBhbGxvY2F0aW9uLmlk
ZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVu
ZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRlc2NyaXB0b3IoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShibG9jaywgbG9jYXRpb24p
OwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyh2YWx1
ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBw
ZW5kKG1fYm90dG9tKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
ICAgICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwotICAgICAgICAg
ICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRvbVByb3BlcnR5VmFsdWUo
bG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVz
LmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAgICAgICAgICAgICBOb2Rl
KiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2JvdHRvbSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDMyICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXZv
aWQgUGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsK
LSAgICBvdXQucHJpbnQoImlkIiwgbV9pZGVudGlmaWVyTnVtYmVyKTsKLX0KLQogdm9pZCBPYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAg
ICAgb3V0LnByaW50KCJbIiwgbGlzdER1bXAobV9wcm9wZXJ0aWVzKSwgIl0iKTsKIH0KIAotZmxv
YXQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6b25lV2F5U2ltaWxhcml0eVNjb3JlKAotICAg
IGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBjb25zdAotewotICAgIHVu
c2lnbmVkIG51bUhpdHMgPSAwOwotICAgIGZvciAoUGhhbnRvbVByb3BlcnR5VmFsdWUgdmFsdWUg
OiBtX3Byb3BlcnRpZXMpIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcHJvcGVydGllcy5jb250YWlu
cyh2YWx1ZSkpCi0gICAgICAgICAgICBudW1IaXRzKys7Ci0gICAgfQotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4obnVtSGl0cykgLyBzdGF0aWNfY2FzdDxmbG9hdD4obV9wcm9wZXJ0aWVz
LnNpemUoKSk7Ci19Ci0KLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OnNpbWlsYXJp
dHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikgY29uc3QKLXsK
LSAgICByZXR1cm4gc3RkOjptaW4ob25lV2F5U2ltaWxhcml0eVNjb3JlKG90aGVyKSwgb3RoZXIu
b25lV2F5U2ltaWxhcml0eVNjb3JlKCp0aGlzKSk7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgJ
KHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgi
CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTM1LDM4ICszNiwxMSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0cnVjdCBQaGFudG9tUHJvcGVydHlWYWx1ZSB7Ci0g
ICAgUGhhbnRvbVByb3BlcnR5VmFsdWUoKQotICAgICAgICA6IG1faWRlbnRpZmllck51bWJlcihV
SU5UX01BWCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlKHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVyTnVtYmVyKGlk
ZW50aWZpZXJOdW1iZXIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBtX2lkZW50
aWZpZXJOdW1iZXI7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBoYW50b21Qcm9w
ZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZp
ZXJOdW1iZXIgPT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLX07Ci0KIHN0cnVjdCBPYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhIHsKICAgICAvLyBEZXRlcm1pbmVzIHRoZSBtZWFuaW5nIG9mIHRoZSBwYXNz
ZWQgbm9kZXMuCi0gICAgVmVjdG9yPFBoYW50b21Qcm9wZXJ0eVZhbHVlPiBtX3Byb3BlcnRpZXM7
CisgICAgVmVjdG9yPFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yPiBtX3Byb3BlcnRpZXM7CiAg
ICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gVGhl
IGZyYWN0aW9uIG9mIG15IHByb3BlcnRpZXMgdGhhdCB0aGUgb3RoZXIgZGF0YSBoYXMuCi0gICAg
ZmxvYXQgb25lV2F5U2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRh
dGEmKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgbWluaW11bSBvZiB0aGUgdHdvIHBvc3NpYmxl
IG9uZS13YXkgc2NvcmVzLgotICAgIGZsb2F0IHNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RN
YXRlcmlhbGl6YXRpb25EYXRhJikgY29uc3Q7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBERkdPcEluZm9faAorI2RlZmluZSBERkdPcEluZm9faAorCisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFzc2lu
ZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKKy8vIGRpc3Rpbmd1
aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVC
bG9jayBkYXRhIHN0cnVjdHVyZSAtIAorLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9y
IGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KK3N0cnVjdCBPcEluZm8geworICAgIE9wSW5mbygp
IDogbV92YWx1ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBt
X3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAgICBleHBsaWNpdCBP
cEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZh
bHVlKSkgeyB9CisjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQorICAgIGV4cGxpY2l0
IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZh
bHVlKSkgeyB9CisjZW5kaWYKKyAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92
YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAgICB1aW50cHRy
X3QgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT3BJbmZvX2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc5ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAxLDYgKzE0MDEsNjAgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVmYXVsdEhhcwogICAgIHJldHVybiAwOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld1Jhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIEJ1dHRlcmZseSogYnV0
dGVyZmx5OworICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgaGFzSW5k
ZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKKyAgICAgICAgSW5k
ZXhpbmdIZWFkZXIgaGVhZGVyOworICAgICAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxlbmd0
aCk7CisgICAgICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7CisgICAgICAgIAorICAgICAg
ICBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgICAgIHZtLCBudWxscHRy
LCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksCisgICAgICAgICAgICBoYXNJbmRl
eGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgaGVhZGVyLAorICAgICAg
ICAgICAgbGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgfSBlbHNlCisgICAg
ICAgIGJ1dHRlcmZseSA9IG51bGxwdHI7CisKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmpl
Y3Q6OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVz
dWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1z
cGFjZS4KKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihyZXN1bHQpOworfQorCitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIAor
ICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIHZt
LCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRl
eGluZ0hlYWRlcigpLCAwKTsKKyAgICAKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6
OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0
LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFj
ZS4KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0
aChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAgaGVh
ZGVyLnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgo
MCk7CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAg
ICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwg
aGVhZGVyLAorICAgICAgICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogbGVuZ3RoKTsKKworICAg
IC8vIFBhcmFkb3hpY2FsbHkgdGhpcyBtYXkgYWxsb2NhdGUgYSBKU0FycmF5LiBUaGF0J3MgdG90
YWxseSBjb29sLgorICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2Jq
ZWN0KGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgp
OyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVBy
b2ZpbGVyTG9nREZHKEV4ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBlUHJv
ZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2Fs
bGVkIGZyb20gaW5zaWRlIERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsMTAg
QEAgaW50NjRfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnREbwogCiBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNDZWxs
KiB2YWx1ZSwgSlNDZWxsKiBwcm90byk7CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3UmF3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5B
TDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5k
VmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCkgV1RG
X0lOVEVSTkFMOworCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9m
aWxlckxvZ0RGRyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElP
TiBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQq
LCB2b2lkKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjgsNiArNjY4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgY2FzZSBHZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAg
ICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgY2FzZSBMYXp5SlND
b25zdGFudDogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNp
YmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAgICAgICAvLyBp
bnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9u
LmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsNiArNzQsMTAg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFBybwogICAgIGNhc2UgTmFt
ZWRQcm9wZXJ0eVBMb2M6CiAgICAgICAgIG91dC5wcmludCgiTmFtZWRQcm9wZXJ0eVBMb2MiKTsK
ICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJbmRleGVkUHJvcGVydHlQTG9jOgorICAgICAg
ICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eVBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBjYXNlIEFyZ3VtZW50UExvYzoKICAgICAgICAgb3V0LnByaW50KCJBcmd1bWVu
dFBMb2MiKTsKQEAgLTEwMiw2ICsxMDYsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIFBybwogICAgIGNhc2UgQ2xvc3VyZVZhclBMb2M6CiAgICAgICAgIG91dC5wcmlu
dCgiQ2xvc3VyZVZhclBMb2MiKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBQdWJsaWNM
ZW5ndGhQTG9jOgorICAgICAgICBvdXQucHJpbnQoIlB1YmxpY0xlbmd0aFBMb2MiKTsKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICBvdXQucHJp
bnQoIlZlY3Rvckxlbmd0aFBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAkocmV2aXNpb24gMTk3
OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDI1ICsyOCw0MSBAQAogCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAKLSNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiREZHRWRnZS5oIgorI2lu
Y2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaFRhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAorc3RydWN0IE5vZGU7CisKKy8vIFByb21vdGVk
IGxvY2F0aW9ucyBhcmUgbGlrZSBoZWFwIGxvY2F0aW9ucyBidXQgYXJlIG1lYW50IHRvIGJlIG1v
cmUgcHJlY2lzZS4gQSBoZWFwIGxvY2F0aW9uIGlzCisvLyBhcHBsaWNhYmxlIHRvIENTRSBzY2Vu
YXJpb3MsIHdoZXJlIGl0IG1ha2VzIHNlbnNlIHRvIHNwZWFrIG9mIGEgbG9jYXRpb24gdmVyeSBh
YnN0cmFjdGx5LiBBCisvLyBwcm9tb3RlZCBoZWFwIGxvY2F0aW9uIGlzIGZvciBjYXNlcyB3aGVy
ZSB3ZSBzcGVhayBvZiBhIHNwZWNpZmljIG9iamVjdCBhbmQgdGhlIGNvbXBpbGVyIGtub3dzCisv
LyB0aGlzIG9iamVjdCdzIGlkZW50aXR5IC0gZm9yIGV4YW1wbGUsIHRoZSBvYmplY3QgYWxsb2Nh
dGlvbiBoYXMgYmVlbiBlbGltaW5hdGVkIGFuZCB3ZSB0dXJuZWQgdGhlCisvLyBmaWVsZHMgaW50
byBsb2NhbCB2YXJpYWJsZXMuIEJlY2F1c2UgdGhlc2UgdHdvIGNhc2VzIGhhdmUgc3VidGx5IGRp
ZmZlcmVudCBuZWVkcywgd2UgdXNlIHN1YnRseQorLy8gZGlmZmVyZW50IHN0cnVjdHVyZXMuIE9u
ZSBvZiB0aGUgcmVhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2VzIGlzIHRoYXQgcHJvbW90ZWQg
bG9jYXRpb25zIGNhbiBiZQorLy8gc3Bva2VuIG9mIHVzaW5nIGVpdGhlciBhIGRlc2NyaXB0b3Ig
d2hpY2ggZG9lcyBub3QgcmVmZXIgdG8gYW55IE5vZGUqJ3Mgb3Igd2l0aCBhIGhlYXAgbG9jYXRp
b24sCisvLyB3aGljaCBpcyBhIGRlc2NyaXB0b3Igd2l0aCBhIE5vZGUqIGJhc2UuCisKIGVudW0g
UHJvbW90ZWRMb2NhdGlvbktpbmQgewogICAgIEludmFsaWRQcm9tb3RlZExvY2F0aW9uS2luZCwK
ICAgICAKLSAgICBTdHJ1Y3R1cmVQTG9jLAorICAgIEFjdGl2YXRpb25TY29wZVBMb2MsCiAgICAg
QWN0aXZhdGlvblN5bWJvbFRhYmxlUExvYywKLSAgICBOYW1lZFByb3BlcnR5UExvYywKLSAgICBB
cmd1bWVudFBMb2MsCiAgICAgQXJndW1lbnRDb3VudFBMb2MsCisgICAgQXJndW1lbnRQTG9jLAog
ICAgIEFyZ3VtZW50c0NhbGxlZVBMb2MsCi0KLSAgICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLAor
ICAgIENsb3N1cmVWYXJQTG9jLAogICAgIEZ1bmN0aW9uQWN0aXZhdGlvblBMb2MsCi0gICAgQWN0
aXZhdGlvblNjb3BlUExvYywKLSAgICBDbG9zdXJlVmFyUExvYworICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZVBMb2MsCisgICAgSW5kZXhlZFByb3BlcnR5UExvYywKKyAgICBOYW1lZFByb3BlcnR5UExv
YywKKyAgICBQdWJsaWNMZW5ndGhQTG9jLAorICAgIFN0cnVjdHVyZVBMb2MsCisgICAgVmVjdG9y
TGVuZ3RoUExvYwogfTsKIAogY2xhc3MgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICBjYXNl
IEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJ
bmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBjYXNlIEJvdHRvbVZhbHVlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAx
OTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQ3LDYgKzMwNDcsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIAorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBp
bGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFy
cmF5TW9kZSgpLmlzSlNBcnJheSgpKTsKICAgICAgICAgCkBAIC0zNDkyLDcgKzM0OTcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VH
UFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJl
c3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAg
ICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIs
IG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IEF0IHRoaXMgcG9pbnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdl
R1BSIGhhdmUgcG9pbnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUg
QnV0dGVyZmx5LCByZXNwZWN0aXZlbHkuCkBAIC0zNzI4LDcgKzM3MzMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9y
YWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwg
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24oaW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAg
ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgc3RvcmFn
ZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKG5vZGUtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkgewogICAgICAg
ICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZm
ZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQ5NzgsNyArNDk4MywxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG5vUmVzdWx0KG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIAorICAgIGNhc2UgTWF0ZXJpYWxp
emVOZXdPYmplY3Q6CisgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChub2RlKTsK
KyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24g
MTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3MSw2ICszMTcxLDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZVNldFJlZ0V4cE9iamVj
dExhc3RJbmRleChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBSZWNv
cmRSZWdFeHBDYWNoZWRSZXN1bHQ6IHsKKyAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hl
ZFJlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNl
IEFycmF5UHVzaDogewogICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNKU0FycmF5
KCkpOwpAQCAtMzU0Miw3ICszNTQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
ICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAg
ICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQ
UiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3Vs
dEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFu
b3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFnZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAg
ICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhlIEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAt
Mzc3OCw3ICszNzgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAg
ICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1p
dEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIs
IG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRH
UFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50
cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgaW5kZXhpbmdUeXBlICYgSXNBcnJheSk7CiAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRh
ID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQo
KSk7CkBAIC00OTcxLDYgKzQ5NzYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE1hdGVyaWFsaXpl
TmV3T2JqZWN0OgorICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7Cisg
ICAgICAgIGJyZWFrOworCiAjaWYgRU5BQkxFKEZUTF9KSVQpICAgICAgICAKICAgICBjYXNlIENo
ZWNrVGllclVwSW5Mb29wOiB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBt
X2ppdC5icmFuY2hBZGQzMigKQEAgLTUwNjEsNyArNTA3MCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAg
ICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKLSAgICBj
YXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3Rp
dmF0aW9uOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2
aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXJCdWZmZXIuaCIKQEAgLTc3LDI3ICs3OCw0
NyBAQCBTcGVjdWxhdGl2ZUpJVDo6flNwZWN1bGF0aXZlSklUKCkKIHsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRH
UFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKIHsKLSAgICBBU1NFUlQoaGFzVW5kZWNp
ZGVkKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBo
YXNDb250aWd1b3VzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICBib29sIGhh
c0luZGV4aW5nSGVhZGVyID0gaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKTsKKwor
ICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgp
OworICAgIHVuc2lnbmVkIG91dE9mTGluZUNhcGFjaXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7Ci0gICAg
Ci0gICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBu
dW1FbGVtZW50cyk7CisKKyAgICBBU1NFUlQodmVjdG9yTGVuZ3RoID49IG51bUVsZW1lbnRzKTsK
KyAgICB2ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIHZlY3Rvckxlbmd0
aCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICAKLSAg
ICBzbG93Q2FzZXMuYXBwZW5kKAotICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1
c3RlZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSArIHNpemVvZihJbmRleGlu
Z0hlYWRlcikpLCBzdG9yYWdlR1BSKSk7Ci0gICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJbW0zMih2
ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkpLCBzdG9yYWdlR1BSKTsKLSAgICBlbWl0QWxs
b2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7Ci0gICAg
Ci0gICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKTsKLSAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGgpLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9y
TGVuZ3RoKCkpKTsKLSAgICAKKworICAgIHNpemVfdCBzaXplID0gMDsKKyAgICBpZiAoaGFzSW5k
ZXhpbmdIZWFkZXIpCisgICAgICAgIHNpemUgKz0gdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFs
dWUpICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKTsKKyAgICBzaXplICs9IG91dE9mTGluZUNhcGFj
aXR5ICogc2l6ZW9mKEpTVmFsdWUpOworCisgICAgaWYgKHNpemUpIHsKKyAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZCgKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShUcnVzdGVk
SW1tMzIoc2l6ZSksIHN0b3JhZ2VHUFIpKTsKKyAgICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVy
KQorICAgICAgICAgICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBz
aXplb2YoSlNWYWx1ZSkpLCBzdG9yYWdlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFn
ZUdQUik7CisgICAgfSBlbHNlCisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cigwKSwg
c3RvcmFnZUdQUik7CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0
OjphbGxvY2F0aW9uU2l6ZShpbmxpbmVDYXBhY2l0eSk7CisgICAgTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3JQdHIgPSAmbV9qaXQudm0oKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0
RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KGFsbG9jYXRvclB0ciksIHNjcmF0Y2hHUFIpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJl
c3VsdEdQUiwgc2NyYXRjaEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BS
LCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikK
KyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxl
bmd0aCgpKSk7CisKICAgICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkp
ICYmIG51bUVsZW1lbnRzIDwgdmVjdG9yTGVuZ3RoKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4p
KSwgc2NyYXRjaEdQUik7CkBAIC0xMTcsOCArMTM4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRBbGxvY2F0ZUpTQXJyYXkKICAgICAvLyB3aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFs
bG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90CiAgICAgLy8gb2Yg
d29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkuIDotLwogICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3I+KAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0Fy
cmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwKKyAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25OZXdSYXdPYmplY3QsIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwKICAgICAg
ICAgc3RydWN0dXJlLCBudW1FbGVtZW50cykpOworCisgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVy
KQorICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihudW1FbGVtZW50cyksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNM
ZW5ndGgoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3RoKElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1
ZGVUaGlzKQpAQCAtNzY1NSw2ICs3Njc5LDEyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTGF6eUpTQ29uc3RhCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0K
IAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KE5vZGUq
IG5vZGUpCit7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmVTZXQo
KVswXTsKKyAgICBBU1NFUlQobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKS0+ZHlu
YW1pY0Nhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpID09IHN0cnVjdHVyZSk7CisKKyAgICBPYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+b2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YSgpOworICAgICAgICAKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gaGFzSW5k
ZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKTsKKyAgICBpbnQzMl90IHB1YmxpY0xlbmd0aCA9
IDA7CisgICAgaW50MzJfdCB2ZWN0b3JMZW5ndGggPSAwOworCisgICAgaWYgKGhhc0luZGV4aW5n
SGVhZGVyKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNp
emUoKTsgaS0tOykgeworICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEubV9wcm9wZXJ0
aWVzW2ldLmtpbmQoKSkgeworICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgorICAg
ICAgICAgICAgICAgIHB1YmxpY0xlbmd0aCA9IGVkZ2UtPmFzSW50MzIoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAg
ICAgICAgICB2ZWN0b3JMZW5ndGggPSBlZGdlLT5hc0ludDMyKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIo
KTsKKyAgICAKKyAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUs
IHN0b3JhZ2VHUFIsIDAsIHZlY3Rvckxlbmd0aCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBk
YXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgRWRnZSBlZGdlID0gbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgIFByb21vdGVkTG9j
YXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAg
ICAgc3dpdGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICBjYXNlIEluZGV4ZWRQcm9w
ZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2Up
OworICAgICAgICAgICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZS5q
c1ZhbHVlUmVncygpLAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHN0b3Jh
Z2VHUFIsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBkZXNjcmlwdG9yLmluZm8oKSkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQ
TG9jOiB7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiB1aWQgPSBtX2ppdC5ncmFwaCgpLmlkZW50
aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCldOworICAgICAgICAgICAgZm9yIChQcm9wZXJ0eU1h
cEVudHJ5IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVzQ29uY3VycmVudGx5KCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAodWlkICE9IGVudHJ5LmtleSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBlZGdlKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGlzSW5saW5lT2Zmc2V0
KGVudHJ5Lm9mZnNldCkgPyByZXN1bHRHUFIgOiBzdG9yYWdlR1BSOworICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdz
KCksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9m
ZnNldFJlbGF0aXZlVG9CYXNlKGVudHJ5Lm9mZnNldCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqIG5vZGUpCit7CisgICAgRWRnZSBjb25zdHJ1Y3RvckVk
Z2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAgIEVkZ2UgcmVnRXhw
RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgRWRnZSBzdHJp
bmdFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsKKyAgICBFZGdlIHN0
YXJ0RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMyk7CisgICAgRWRnZSBl
bmRFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCA0KTsKKworICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIGNvbnN0cnVjdG9yRWRnZSk7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmVnRXhwKHRoaXMsIHJlZ0V4cEVkZ2UpOworICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0aGlzLCBzdHJpbmdFZGdlKTsKKyAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgc3RhcnQodGhpcywgc3RhcnRFZGdlKTsKKyAgICBTcGVjdWxhdGVJbnQzMk9w
ZXJhbmQgZW5kKHRoaXMsIGVuZEVkZ2UpOworCisgICAgR1BSUmVnIGNvbnN0cnVjdG9yR1BSID0g
Y29uc3RydWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIHJlZ0V4cEdQUiA9IHJlZ0V4cC5ncHIoKTsK
KyAgICBHUFJSZWcgc3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOworICAgIEdQUlJlZyBzdGFydEdQ
UiA9IHN0YXJ0LmdwcigpOworICAgIEdQUlJlZyBlbmRHUFIgPSBlbmQuZ3ByKCk7CisKKyAgICBw
dHJkaWZmX3Qgb2Zmc2V0ID0gUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0
KCk7CisKKyAgICBtX2ppdC5zdG9yZVB0cigKKyAgICAgICAgcmVnRXhwR1BSLAorICAgICAgICBK
SVRDb21waWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVk
UmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkpOworICAgIG1faml0LnN0b3JlUHRyKAorICAg
ICAgICBzdHJpbmdHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9y
R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpKTsK
KyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBzdGFydEdQUiwKKyAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3MoCisgICAgICAgICAgICBjb25zdHJ1Y3RvckdQUiwKKyAgICAgICAgICAgIG9m
ZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZT
RVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSk7CisgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAg
ZW5kR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcygKKyAgICAgICAgICAgIGNvbnN0
cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZz
ZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSk7CisgICAg
bV9qaXQuc3RvcmU4KAorICAgICAgICBUcnVzdGVkSW1tMzIoMCksCisgICAgICAgIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6
Om9mZnNldE9mUmVpZmllZCgpKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQwMSw2ICsyNDAxLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldFJlZ0V4cE9i
amVjdExhc3RJbmRleChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFz
dEluZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMYXp5SlNDb25zdGFudChOb2RlKik7Cisg
ICAgdm9pZCBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSopOworICAgIHZvaWQgY29t
cGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChOb2RlKik7CiAgICAgCiAgICAgdm9pZCBtb3Zl
VHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhHUFJSZWcpOwpAQCAtMjUxNiw3
ICsyNTE4LDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogICAgIH0KIAot
ICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUq
LCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOworICAgIHZvaWQgZW1p
dEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBz
dG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsK
ICAgICAKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiwgR1BSUmVnIGxl
bmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKICAgICB2b2lkIGVtaXRHZXRMZW5n
dGgoQ29kZU9yaWdpbiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUzLDExICsyNTMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGNhc2UgUHV0U3RydWN0dXJlOiB7CisgICAgICAgICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAg
ICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoK
KyAgICAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgorICAgICAgICAgICAgY2FzZSBSZWNvcmRS
ZWdFeHBDYWNoZWRSZXN1bHQ6IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9u
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICAg
ICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIFNldFJlZ0V4cE9i
amVjdExhc3RJbmRleDoKQEAgLTI2NiwxMyArMjcwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGNhc2UgUHV0QnlJZDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgotICAgICAgICAg
ICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7Ci0gICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVy
KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotCiAgICAgICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAgICAgICAgICAgY29u
c2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQyKCksIG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVt
cC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgPGNzdGRsaWI+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKQEAgLTMzNiw2ICszMzcsMjAyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgUmVnRXhwRXhlYzoKKyAgICAgICAgY2FzZSBSZWdFeHBU
ZXN0OiB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ub2Rl
LT5jaGlsZDEoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0dsb2JhbE9iamVjdCo+KCk7CisgICAg
ICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBOb2RlKiByZWdFeHBPYmplY3ROb2RlID0gbV9u
b2RlLT5jaGlsZDIoKS5ub2RlKCk7CisgICAgICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cE9i
amVjdCA9IG1fbm9kZS0+Y2hpbGQyKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8UmVnRXhwT2JqZWN0
Kj4oKTsKKyAgICAgICAgICAgIGlmICghcmVnRXhwT2JqZWN0KQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBOb2RlKiBzdHJpbmdOb2RlID0gbV9ub2RlLT5jaGlsZDMoKS5u
b2RlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE5PVEU6IFRoaXMgbW9zdGx5IGFs
cmVhZHkgcHJvdGVjdHMgdXMgZnJvbSBoYXZpbmcgdGhlIGNvbXBpbGVyIGV4ZWN1dGUgYSByZWdl
eHAKKyAgICAgICAgICAgIC8vIG9wZXJhdGlvbiBvbiBhIGdpbm9ybW91cyBzdHJpbmcgYnkgcHJl
dmVudGluZyB1cyBmcm9tIGdldHRpbmcgb3VyIGhhbmRzIG9uIGdpbm9ybW91cworICAgICAgICAg
ICAgLy8gc3RyaW5ncyBpbiB0aGUgZmlyc3QgcGxhY2UuCisgICAgICAgICAgICBTdHJpbmcgc3Ry
aW5nID0gbV9ub2RlLT5jaGlsZDMoKS0+dHJ5R2V0U3RyaW5nKG1fZ3JhcGgpOworICAgICAgICAg
ICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIFJl
Z0V4cCogcmVnRXhwID0gcmVnRXhwT2JqZWN0LT5yZWdFeHAoKTsKKyAgICAgICAgICAgIEZyb3pl
blZhbHVlKiByZWdFeHBGcm96ZW5WYWx1ZSA9IG1fZ3JhcGguZnJlZXplKHJlZ0V4cCk7CisKKyAg
ICAgICAgICAgIC8vIFJlZnVzZSB0byBkbyB0aGluZ3Mgd2l0aCByZWd1bGFyIGV4cHJlc3Npb25z
IHRoYXQgaGF2ZSBhIGdpbm9ybW91cyBudW1iZXIgb2YKKyAgICAgICAgICAgIC8vIHN1YnBhdHRl
cm5zLgorICAgICAgICAgICAgdW5zaWduZWQgZ2lub3Jtb3VzTnVtYmVyT2ZTdWJQYXR0ZXJucyA9
IDEwMDA7CisgICAgICAgICAgICBpZiAocmVnRXhwLT5udW1TdWJwYXR0ZXJucygpID4gZ2lub3Jt
b3VzTnVtYmVyT2ZTdWJQYXR0ZXJucykKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgdW5zaWduZWQgbGFzdEluZGV4OworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFs
T3JTdGlja3koKSkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBvbmx5IHdvcmsgaWYg
d2UgY2FuIHByb3ZlIHdoYXQgdGhlIHZhbHVlIG9mIGxhc3RJbmRleCBpcy4gVG8gZG8gdGhpcwor
ICAgICAgICAgICAgICAgIC8vIHNhZmVseSwgd2UgbmVlZCB0byBleGVjdXRlIHRoZSBpbnNlcnRp
b24gc2V0IHNvIHRoYXQgd2Ugc2VlIGFueSBwcmV2aW91cyBzdHJlbmd0aAorICAgICAgICAgICAg
ICAgIC8vIHJlZHVjdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGZvciBzb3VuZG5lc3Mgc2luY2Ugb3Ro
ZXJ3aXNlIHRoZSBlZmZlY3RmdWxuZXNzIG9mIGFueQorICAgICAgICAgICAgICAgIC8vIHByZXZp
b3VzIHN0cmVuZ3RoIHJlZHVjdGlvbnMgd291bGQgYmUgaW52aXNpYmxlIHRvIHVzLgorICAgICAg
ICAgICAgICAgIGV4ZWN1dGVJbnNlcnRpb25TZXQoKTsKKyAgICAgICAgICAgICAgICBsYXN0SW5k
ZXggPSBVSU5UX01BWDsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG90aGVyTm9kZUlu
ZGV4ID0gbV9ub2RlSW5kZXg7IG90aGVyTm9kZUluZGV4LS07KSB7CisgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fYmxvY2stPmF0KG90aGVyTm9kZUluZGV4KTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZSA9PSByZWdFeHBPYmplY3ROb2RlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSAwOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYg
KG90aGVyTm9kZS0+b3AoKSA9PSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQxKCkgPT0gcmVnRXhwT2JqZWN0Tm9kZQor
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNv
bnN0YW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQyKCkt
PmFzSW50MzIoKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ob3RoZXJOb2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmICh3cml0ZXNPdmVybGFwKG1fZ3JhcGgsIG90aGVyTm9kZSwgUmVn
RXhwT2JqZWN0X2xhc3RJbmRleCkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA9PSBVSU5UX01B
WCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBsYXN0SW5kZXggPSAwOworCisgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9p
bnRzKCkuYWRkTGF6aWx5KGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2Jh
bE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCk7CisgICAgICAgICAgICBpZiAo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSAhPSBBcnJheVdpdGhDb250aWd1b3VzKSB7CisgICAg
ICAgICAgICAgICAgLy8gVGhpcyBpcyBmdXJ0aGVyIHByb3RlY3Rpb24gYWdhaW5zdCBhIHJhY2Ug
d2l0aCBoYXZlQUJhZFRpbWUuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IGds
b2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKTsKKyAgICAgICAgICAgIEZyb3plblZhbHVl
KiBjb25zdHJ1Y3RvckZyb3plblZhbHVlID0gbV9ncmFwaC5mcmVlemUoY29uc3RydWN0b3IpOwor
CisgICAgICAgICAgICBpbnQgcG9zaXRpb247CisgICAgICAgICAgICBWZWN0b3I8aW50LCAzMj4g
b3ZlY3RvcjsKKyAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgp
LCBzdHJpbmcsIGxhc3RJbmRleCwgcG9zaXRpb24sIG92ZWN0b3IpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAvLyBXZSd2ZSBjb25zdGFudC1mb2xkZWQgdGhlIHJlZ2V4
cC4gTm93IHdlJ3JlIGNvbW1pdHRlZCB0byByZXBsYWNpbmcgUmVnRXhwRXhlYy9UZXN0LgorCisg
ICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworCisgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgQ2hl
Y2ssIG1fbm9kZS0+b3JpZ2luLCBtX25vZGUtPmNoaWxkcmVuLmp1c3RDaGVja3MoKSk7CisKKyAg
ICAgICAgICAgIC8vIFdoZXRoZXIgaXQncyBFeGVjIG9yIFRlc3QsIHdlIG5lZWQgdG8gdGVsbCB0
aGUgY29uc3RydWN0b3IgYW5kIFJlZ0V4cE9iamVjdCB3aGF0J3MgdXAuCisgICAgICAgICAgICBp
ZiAocG9zaXRpb24gIT0gLTEpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBmaXJzdENoaWxk
ID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKTsKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
bm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwgY29uc3RydWN0b3JGcm96ZW5WYWx1ZSwgS25vd25D
ZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JV
c2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4s
IHJlZ0V4cEZyb3plblZhbHVlLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uoc3RyaW5nTm9kZSwgS25vd25DZWxsVXNl
KSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGpzTnVt
YmVyKHBvc2l0aW9uKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2Rl
SW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBqc051bWJlcihvdmVjdG9yWzFdKSwgS25vd25JbnQzMlVz
ZSkpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgTm9kZTo6VmFyQXJnLCBSZWNvcmRS
ZWdFeHBDYWNoZWRSZXN1bHQsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBP
cEluZm8oKSwgT3BJbmZvKCksIGZpcnN0Q2hpbGQsIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5z
aXplKCkgLSBmaXJzdENoaWxkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsT3JTdGlja3koKSkgeworICAgICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4
LCBTcGVjTm9uZSwgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBtX25vZGUtPm9yaWdpbiwKKyAg
ICAgICAgICAgICAgICAgICAgRWRnZShyZWdFeHBPYmplY3ROb2RlLCBSZWdFeHBPYmplY3RVc2Up
LAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVz
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGpzTnVtYmVyKHBvc2l0aW9uID09IC0xID8gMCA6IG92
ZWN0b3JbMV0pLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChtX25vZGUtPm9wKCkgPT0gUmVnRXhwVGVzdCkgeworICAgICAgICAgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc0Jvb2xlYW4ocG9zaXRpb24gIT0gLTEpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3RydWN0
dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUp
OworCisgICAgICAgICAgICAvLyBDcmVhdGUgYW4gYXJyYXkgbW9kZWxpbmcgdGhlIEpTIGFycmF5
IHRoYXQgd2Ugd2lsbCB0cnkgdG8gYWxsb2NhdGUuIFRoaXMgaXMgYmFzaWNhbGx5CisgICAgICAg
ICAgICAvLyBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0IG92ZXIgQysrIHN0cmluZ3MgaW5z
dGVhZCBvZiBKU1N0cmluZ3MuCisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRBcnJh
eTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5LmFwcGVuZChzdHJpbmcuc3Vic3RyaW5nKHBvc2l0
aW9uLCBvdmVjdG9yWzFdKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
cmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpbnQgc3Rh
cnQgPSBvdmVjdG9yWzIgKiBpXTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcoc3Rh
cnQsIG92ZWN0b3JbMiAqIGkgKyAxXSAtIHN0YXJ0KSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheS5hcHBlbmQoU3RyaW5nKCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBwdWJsaWNMZW5ndGggPSByZXN1bHRBcnJh
eS5zaXplKCk7CisgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChC
QVNFX1ZFQ1RPUl9MRU4sIHB1YmxpY0xlbmd0aCk7CisKKyAgICAgICAgICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiBpbmRleFVJRCA9IHZtKCkucHJvcGVydHlOYW1lcy0+aW5kZXguaW1wbCgpOworICAg
ICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlucHV0VUlEID0gdm0oKS5wcm9wZXJ0eU5hbWVz
LT5pbnB1dC5pbXBsKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleEluZGV4ID0gbV9ncmFw
aC5pZGVudGlmaWVycygpLmVuc3VyZShpbmRleFVJRCk7CisgICAgICAgICAgICB1bnNpZ25lZCBp
bnB1dEluZGV4ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpbnB1dFVJRCk7CisKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4u
c2l6ZSgpOworICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAg
ICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBzdHJ1Y3R1cmUsIEtu
b3duQ2VsbFVzZSkpOworICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSogZGF0
YSA9IG1fZ3JhcGgubV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmFkZCgpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAg
ICAgICAgICAgICBtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGpzTnVtYmVyKHB1YmxpY0xl
bmd0aCksIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5h
cHBlbmQoUHVibGljTGVuZ3RoUExvYyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4
LCBtX25vZGUtPm9yaWdpbiwganNOdW1iZXIodmVjdG9yTGVuZ3RoKSwgS25vd25JbnQzMlVzZSkp
OworICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZChWZWN0b3JMZW5ndGhQTG9j
KTsKKworICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLCBqc051bWJlcihwb3NpdGlv
biksIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQo
CisgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoTmFtZWRQcm9wZXJ0
eVBMb2MsIGluZGV4SW5kZXgpKTsKKworICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZChFZGdlKHN0cmluZ05vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgIGRh
dGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlv
bkRlc2NyaXB0b3IoTmFtZWRQcm9wZXJ0eVBMb2MsIGlucHV0SW5kZXgpKTsKKworICAgICAgICAg
ICAgYXV0byBtYXRlcmlhbGl6ZVN0cmluZyA9IFsmXSAoY29uc3QgU3RyaW5nJiBzdHJpbmcpIC0+
IE5vZGUqIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgbV9ub2Rl
LT5vcmlnaW4sIHZtKCkuc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBMYXp5SlNDb25zdGFu
dCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1f
bGF6eUpTVmFsdWVzLmFkZChMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIHN0cmluZykp
KSk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVzdWx0QXJyYXkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoTm9kZSog
bm9kZSA9IG1hdGVyaWFsaXplU3RyaW5nKHJlc3VsdEFycmF5W2ldKSkgeworICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uobm9kZSwgVW50eXBl
ZFVzZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKFBy
b21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKEluZGV4ZWRQcm9wZXJ0eVBMb2MsIGkpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5v
ZGUqIHJlc3VsdE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgIG1fbm9kZUluZGV4LCBTcGVjQXJyYXksIE5vZGU6OlZhckFyZywgTWF0ZXJpYWxpemVOZXdP
YmplY3QsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgIE9wSW5mbyhzdHJ1Y3R1cmVT
ZXQpLCBPcEluZm8oZGF0YSksIGZpcnN0Q2hpbGQsCisgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOworCisgICAgICAgICAgICBtX25v
ZGUtPmNvbnZlcnRUb0lkZW50aXR5T24ocmVzdWx0Tm9kZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtMzgwLDYgKzU3NywxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBleGVjdXRlSW5zZXJ0aW9uU2V0KCkKKyAgICB7
CisgICAgICAgIG1fbm9kZUluZGV4ID0gbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShtX2Jsb2NrKTsK
KyAgICB9CiAgICAgCiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OwogICAgIEJhc2lj
QmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNzgsNiArMjc4LDE4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIXZhcmlhbnQub2xk
U3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5kZmdTaG91bGRXYXRjaCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVj
dHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1Y3R1cmVzIHRoYXQgYXJlIEpTRmlu
YWxPYmplY3Qgb3IgSlNBcnJheS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTRmluYWxPYmplY3Q6OmluZm8oKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0g
SlNBcnJheTo6aW5mbygpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBz
dXBwb3J0IGNlcnRhaW4gaW5kZXhpbmcgc2hhcGVzLgorICAgICAgICAgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUpLCAhaGFzQW55QXJyYXlTdG9yYWdlKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICAgICAgICAg
IGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCBub2RlLT5pc051bWJlckNvbnN0YW50KCkpOwpAQCAtNDYxLDEzICs0NzMsNDIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAg
ICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUlt
bWVkaWF0ZToKLSAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAg
ICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAg
ICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCAhInVuZXhwZWN0ZWQgbm9kZSB0eXBlIGluIENQUyIpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0
OiB7CisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBhcnJheSBsZW5ndGhz
IHRvIGJlIGNvbnN0YW50LiBUaGlzIGNvbnN0cmFpbnQgb25seSBleGlzdHMKKyAgICAgICAgICAg
ICAgICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZlIERGRyBzdXBwb3J0IGZvciBhbnl0aGlu
ZyBtb3JlIGFuZCB3ZSBkb24ndCBuZWVkIGFueQorICAgICAgICAgICAgICAgICAgICAvLyBvdGhl
ciBraW5kIG9mIHN1cHBvcnQgZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEo
KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRp
ZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAg
ICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEg
KyBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmlzSW50MzJDb25zdGFu
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3Mgb25lIHN0cnVjdHVyZS4KKyAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkg
PT0gMSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQzMiBhbmQg
ZG91YmxlIGFycmF5cy4gVGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQKKyAgICAg
ICAgICAgICAgICAgICAgLy8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQgaW4gdGhl
IERGRyByaWdodCBub3cuIFdlIHNob3VsZCBhZGQgc3VwcG9ydAorICAgICAgICAgICAgICAgICAg
ICAvLyBmb3IgdGhlc2UgaWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgorICAgICAgICAgICAgICAg
ICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0ludDMyKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KChub2RlKSwgIWhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUpLCBtX2dyYXBoLm1fZml4cG9pbnRTdGF0ZSAhPSBGaXhwb2ludE5vdENv
bnZlcmdlZCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTY29wZS5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2
aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDExIEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU1N5bWJvbFRhYmxlT2JqZWN0X3N5
bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpIFwK
ICAgICBtYWNybyhKU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSwgSlNXcmFwcGVyT2JqZWN0
OjppbnRlcm5hbFZhbHVlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhNYXJrZWRBbGxvY2F0b3JfZnJl
ZUxpc3RIZWFkLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpIFwKKyAg
ICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCwgUmVnRXhw
Q29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6
Om9mZnNldE9mTGFzdFJlZ0V4cCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2Fj
aGVkUmVzdWx0X2xhc3RJbnB1dCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVz
dWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpIFwKKyAgICBt
YWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0LCBSZWdFeHBD
b25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6
b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSBc
CisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9lbmQsIFJl
Z0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVz
dWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQp
KSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3JlaWZpZWQsIFJl
Z0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVz
dWx0OjpvZmZzZXRPZlJlaWZpZWQoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9sYXN0SW5k
ZXgsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXgoKSkgXAogICAgIG1hY3JvKFJlZ0V4
cE9iamVjdF9sYXN0SW5kZXhJc1dyaXRhYmxlLCBSZWdFeHBPYmplY3Q6Om9mZnNldE9mTGFzdElu
ZGV4SXNXcml0YWJsZSgpKSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzX292ZXJyb2RlVGhp
bmdzLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJvZGVUaGluZ3MoKSkgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDcgQEAgaW5saW5lIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICBjYXNl
IEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJ
bmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgLy8gVGhl
c2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MzgsNiArOTM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RM
YXN0SW5kZXg6CiAgICAgICAgICAgICBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1
bHQ6CisgICAgICAgICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KCk7CisgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2Fz
ZSBMb29wSGludDoKQEAgLTM3MTYsMzIgKzM3MTksOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5LCBtX2hl
YXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2
ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGhhc0RvdWJsZShtX25vZGUtPmluZGV4aW5n
VHlwZSgpKSkgewotICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMb29wID0gbV9vdXQu
bmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgb3JpZ2luYWxJbmRleCA9IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5ndGgpOwotICAgICAg
ICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFuY2hvcihi
dXR0ZXJmbHkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAg
ICAgICAgbV9vdXQubm90WmVybzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShpbml0TG9vcCksIHVu
c3VyZShpbml0RG9uZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGluaXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7
Ci0gICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0LmludDMyLCBv
cmlnaW5hbEluZGV4KTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1fb3V0LnBo
aShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAotICAgICAgICAgICAgICAgICAg
ICBUeXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFueUluZGV4
KCksIHBvaW50ZXIpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFsdWUg
bmV4dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5pbnQzMk9uZSk7Ci0gICAgICAgICAg
ICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRl
eCkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkocG9pbnRlciwgbV9v
dXQuYW5jaG9yKG1fb3V0LmFkZChwb2ludGVyLCBtX291dC5pbnRQdHJFaWdodCkpKTsKLSAgICAg
ICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFpl
cm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwg
aW5pdExhc3ROZXh0KTsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5pdGlhbGl6ZUFy
cmF5RWxlbWVudHMobV9ub2RlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJm
bHkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKG9iamVjdCk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CkBAIC02Mjg2LDExICs2MjY1LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIExvd2Vy
IHRoZSB2YWx1ZXMgZmlyc3QsIHRvIGF2b2lkIGNyZWF0aW5nIHZhbHVlcyBpbnNpZGUgYSBjb250
cm9sIGZsb3cgZGlhbW9uZC4KICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxMVmFsdWUsIDg+IHZh
bHVlczsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVz
LnNpemUoKTsgKytpKQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dKU1ZhbHVlKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxICsgaSkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBF
ZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpOworICAgICAgICAg
ICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAgIGNh
c2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoK
KyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFs
dWVzLmFwcGVuZChsb3dKU1ZhbHVlKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY29uc3QgU3RydWN0dXJl
U2V0JiBzZXQgPSBtX25vZGUtPnN0cnVjdHVyZVNldCgpOwotICAgICAgICAKKwogICAgICAgICBW
ZWN0b3I8TEJhc2ljQmxvY2ssIDE+IGJsb2NrcyhzZXQuc2l6ZSgpKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGJsb2Nrc1tpXSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CkBAIC02MzE1LDIxICs2MzA0LDUxIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBMVmFsdWUgb2JqZWN0OwogICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkg
eworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJ
bmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAg
ICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25T
aXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAgICAgTWFya2Vk
QWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmdm0oKS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhv
dXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKworICAgICAgICAgICAgICAgIGJvb2wgaGFz
SW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleGluZ0hlYWRlclNpemUgPSAw
OworICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9IG1f
b3V0LmludFB0clplcm87CisgICAgICAgICAgICAgICAgTFZhbHVlIHZlY3Rvckxlbmd0aCA9IG1f
b3V0LmludDMyWmVybzsKKyAgICAgICAgICAgICAgICBMVmFsdWUgcHVibGljTGVuZ3RoID0gbV9v
dXQuaW50MzJaZXJvOworICAgICAgICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgewor
ICAgICAgICAgICAgICAgICAgICBpbmRleGluZ0hlYWRlclNpemUgPSBzaXplb2YoSW5kZXhpbmdI
ZWFkZXIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJv
cGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZlY3Rvckxl
bmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gdmFs
dWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5tdWwobV9vdXQuemVyb0V4dFB0cih2ZWN0b3JMZW5ndGgpLCBtX291
dC5pbnRQdHJFaWdodCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTFZh
bHVlIGJ1dHRlcmZseVNpemUgPSBtX291dC5hZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50UHRyKAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpICsgaW5kZXhpbmdIZWFkZXJTaXplKSwKKyAg
ICAgICAgICAgICAgICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3
QmxvY2soKTsKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9yYWdlID0gYWxs
b2NhdGVCYXNpY1N0b3JhZ2VBbmRHZXRFbmQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVl
KSksCi0gICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsKLSAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9yYWdlID0gYWxsb2NhdGVCYXNpY1N0b3JhZ2VB
bmRHZXRFbmQoYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpOworCiAgICAgICAgICAgICAgICAgTFZh
bHVlIGZhc3RCdXR0ZXJmbHlWYWx1ZSA9IG1fb3V0LmFkZCgKLSAgICAgICAgICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIGVuZE9mU3RvcmFnZSk7
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN1YihlbmRPZlN0b3JhZ2UsIGluZGV4aW5nUGF5
bG9hZFNpemVJbkJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
c2l6ZW9mKEluZGV4aW5nSGVhZGVyKSAtIGluZGV4aW5nSGVhZGVyU2l6ZSkpOworCisgICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgsIGZhc3RCdXR0ZXJmbHlWYWx1ZSwg
bV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBMVmFsdWUgZmFzdE9iamVjdFZhbHVlID0gYWxsb2NhdGVPYmplY3QoCiAgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvciksIHN0cnVjdHVyZSwg
ZmFzdEJ1dHRlcmZseVZhbHVlLCBzbG93UGF0aCk7CkBAIC02MzQwLDEyICs2MzU5LDI0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd09i
amVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAotICAgICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0
IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2Vu
ZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxH
ZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0
V2l0aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKLSAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RW
YWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgc2xvd09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAg
ICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJl
ZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hl
YWRlckFuZFZlY3Rvckxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb25zWzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzFdLmRpcmVj
dEdQUigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICB2ZWN0b3JMZW5ndGgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQ
dHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0aW9uc1swXS5k
aXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dP
YmplY3QgPSBtX291dC5hbmNob3Ioc2xvd09iamVjdFZhbHVlKTsKICAgICAgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBzbG93QnV0dGVyZmx5ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAg
ICAgICAgICBtX291dC5sb2FkUHRyKHNsb3dPYmplY3RWYWx1ZSwgbV9oZWFwcy5KU09iamVjdF9i
dXR0ZXJmbHkpKTsKQEAgLTYzNTYsNiArNjM4NywxMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBvYmplY3QgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBm
YXN0T2JqZWN0LCBzbG93T2JqZWN0KTsKICAgICAgICAgICAgICAgICBidXR0ZXJmbHkgPSBtX291
dC5waGkobV9vdXQuaW50UHRyLCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVyZmx5KTsKKworICAg
ICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVibGljTGVuZ3RoLCBmYXN0QnV0dGVyZmx5VmFs
dWUsIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisKKyAgICAgICAgICAgICAgICBp
bml0aWFsaXplQXJyYXlFbGVtZW50cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpLCB2ZWN0b3JM
ZW5ndGgsIGJ1dHRlcmZseSk7CisKKyAgICAgICAgICAgICAgICBIYXNoTWFwPGludDMyX3QsIExW
YWx1ZT4gaW5kZXhNYXA7CisgICAgICAgICAgICAgICAgVmVjdG9yPGludDMyX3Q+IGluZGljZXM7
CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6
ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlw
dG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGRlc2NyaXB0b3Iua2luZCgpICE9IEluZGV4ZWRQcm9wZXJ0eVBMb2MpCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBp
bmRleCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRlc2NyaXB0b3IuaW5mbygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5kZXhNYXAu
YWRkKGluZGV4LCB2YWx1ZXNbaV0pOworICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG1fbm9kZSwgcmVzdWx0KTsgLy8gRHVwbGljYXRlcyBhcmUgaWxsZWdhbC4KKworICAg
ICAgICAgICAgICAgICAgICBpbmRpY2VzLmFwcGVuZChpbmRleCk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgaWYgKCFpbmRpY2VzLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnNvcnQoaW5kaWNlcy5iZWdpbigpLCBpbmRpY2VzLmVuZCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9j
az4gYmxvY2tzV2l0aFN0b3JlcyhpbmRpY2VzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAg
IFZlY3RvcjxMQmFzaWNCbG9jaz4gYmxvY2tzV2l0aENoZWNrcyhpbmRpY2VzLnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBpbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tz
V2l0aFN0b3Jlc1tpXSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBibG9ja3NXaXRoQ2hlY2tzW2ldID0gbV9vdXQubmV3QmxvY2soKTsgLy8gYmxvY2tzV2l0aENo
ZWNrc1swXSBpcyB0aGUgY29udGludWF0aW9uLgorICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5kZXhMYXN0TmV4dCA9IG1fb3V0Lm1fbmV4
dEJsb2NrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gaW5kaWNlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGludDMyX3QgaW5kZXggPSBpbmRpY2VzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAg
TFZhbHVlIHZhbHVlID0gaW5kZXhNYXAuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmJlbG93KG1fb3V0LmNvbnN0SW50MzIoaW5kZXgpLCBwdWJs
aWNMZW5ndGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3VyZShibG9ja3NXaXRo
U3RvcmVzW2ldKSwgdW5zdXJlKGJsb2Nrc1dpdGhDaGVja3NbaV0pKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzV2l0aFN0b3Jlc1tpXSwgYmxvY2tzV2l0
aENoZWNrc1tpXSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaGFzIHRvIHR5
cGUtY2hlY2sgYW5kIGNvbnZlcnQgaXRzIGlucHV0cywgYnV0IGl0IGNhbm5vdCBkbyBzbyBpbiBh
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YXkgdGhhdCB1cGRhdGVzIEFJLiBUaGF0J3Mg
YSBiaXQgYW5ub3lpbmcsIGJ1dCBpZiB5b3UgdGhpbmsgYWJvdXQgaG93CisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBzaW5raW5nIHdvcmtzLCBpdCdzIGFjdHVhbGx5IG5vdCBhIGJhZCB0aGlu
Zy4gV2UgYXJlIHZpcnR1YWxseSBndWFyYW50ZWVkCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyB0aGF0IHRoZXNlIHR5cGUgY2hlY2tzIHdpbGwgbm90IGZhaWwsIHNpbmNlIHRoZSB0eXBlIGNo
ZWNrcyB0aGF0IGd1YXJkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5h
bCBzdG9yZXMgdG8gdGhlIGFycmF5IGFyZSBzdGlsbCBzb21ld2hlcmUgYWJvdmUgdGhpcyBwb2lu
dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDo6U3RvcmVUeXBlIHN0b3JlVHlwZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4ZWRBYnN0cmFjdEhlYXAqIGhlYXA7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIHVzZSB0aGUg
cHJvdmVuIHR5cGUgaWYgd2UgaGFkIHRoZSBFZGdlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB2YWx1ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTMxMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBl
LCBub1ZhbHVlKCksIG51bGxwdHIsIGlzTm90SW50MzIodmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlNjQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWRJbnQzMlByb3BlcnRpZXM7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgc291cmNlIGlzIFZhbHVlUmVwLCB3ZSBzaG91bGQg
YXZvaWQgZW1pdHRpbmcgYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2tz
LiBXZSBjb3VsZCBhbHNvIGF2b2lkIGVtaXR0aW5nIGNoZWNrcyBpZiB3ZSBoYWQgdGhlIEVkZ2Ug
b2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHZhbHVlLiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzExCisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51
YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9vdXQuYnJhbmNoKGlzSW50MzIodmFsdWUpLCB1bnN1cmUoaW50Q2FzZSksIHVuc3VyZShkb3Vi
bGVDYXNlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENhc2UsIGRvdWJsZUNhc2UpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW50UmVzdWx0ID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYW5jaG9yKG1fb3V0LmludFRvRG91YmxlKHVuYm94
SW50MzIodmFsdWUpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBub1ZhbHVlKCksIG51bGxwdHIsIGlzTnVtYmVyKHZhbHVl
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZG91YmxlUmVz
dWx0ID0gbV9vdXQuYW5jaG9yKHVuYm94RG91YmxlKHZhbHVlKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX291dC5waGkoRG91YmxlLCBpbnRSZXN1
bHQsIGRvdWJsZVJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBl
ID0gT3V0cHV0OjpTdG9yZURvdWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFw
ID0gJm1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZTY0OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRleGVkQ29udGlndW91c1By
b3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREZH
X0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkludmFsaWQgaW5kZXhpbmcgdHlwZSIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5z
dG9yZSh2YWx1ZSwgbV9vdXQuYWRkcmVzcyhidXR0ZXJmbHksIGhlYXAtPmF0KGluZGV4KSksIHN0
b3JlVHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoYmxvY2tzV2l0
aENoZWNrc1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbygKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoQ2hlY2tzW2ldLCBpID8gYmxvY2tz
V2l0aFN0b3Jlc1tpIC0gMV0gOiBpbmRleExhc3ROZXh0KTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgLy8gSW4gdGhlIGVhc3kgY2FzZSB3aGVyZSB3ZSBjYW4gZG8gYSBvbmUtc2hvdCBhbGxvY2F0
aW9uLCB3ZSBzaW1wbHkgYWxsb2NhdGUgdGhlCiAgICAgICAgICAgICAgICAgLy8gb2JqZWN0IHRv
IGRpcmVjdGx5IGhhdmUgdGhlIGRlc2lyZWQgc3RydWN0dXJlLgpAQCAtNjM2NSwxMiArNjUwMSwx
NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKFByb3BlcnR5TWFw
RW50cnkgZW50cnkgOiBzdHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25jdXJyZW50bHkoKSkgewog
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUo
KTsgaS0tOykgewotICAgICAgICAgICAgICAgICAgICBQaGFudG9tUHJvcGVydHlWYWx1ZSB2YWx1
ZSA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5pZGVudGlmaWVycygpW3ZhbHVlLm1faWRlbnRpZmllck51bWJlcl0gIT0gZW50cnkua2V5KQor
ICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9y
ID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlw
dG9yLmtpbmQoKSAhPSBOYW1lZFByb3BlcnR5UExvYykKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pZGVudGlmaWVycygp
W2Rlc2NyaXB0b3IuaW5mbygpXSAhPSBlbnRyeS5rZXkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIExW
YWx1ZSBiYXNlID0gaXNJbmxpbmVPZmZzZXQoZW50cnkub2Zmc2V0KSA/IG9iamVjdCA6IGJ1dHRl
cmZseTsKLSAgICAgICAgICAgICAgICAgICAgc3RvcmVQcm9wZXJ0eSh2YWx1ZXNbaV0sIGJhc2Us
IHZhbHVlLm1faWRlbnRpZmllck51bWJlciwgZW50cnkub2Zmc2V0KTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RvcmVQcm9wZXJ0eSh2YWx1ZXNbaV0sIGJhc2UsIGRlc2NyaXB0b3IuaW5mbygpLCBl
bnRyeS5vZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CkBAIC02NDM1LDkgKzY1NzMsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgTFZhbHVlIGFjdGl2YXRpb24gPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGF0YS5tX3Byb3BlcnRpZXMu
c2l6ZSgpID09IHRhYmxlLT5zY29wZVNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgbV9v
dXQuc3RvcmU2NCh2YWx1ZXNbaV0sCi0gICAgICAgICAgICAgICAgYWN0aXZhdGlvbiwKLSAgICAg
ICAgICAgICAgICBtX2hlYXBzLkpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzW2RhdGEubV9w
cm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcl0pOworICAgICAgICAgICAgUHJvbW90ZWRM
b2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAg
ICAgICAgICAgQVNTRVJUKGRlc2NyaXB0b3Iua2luZCgpID09IENsb3N1cmVWYXJQTG9jKTsKKyAg
ICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICAgICAgdmFsdWVzW2ldLCBhY3Rp
dmF0aW9uLAorICAgICAgICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJp
YWJsZXNbZGVzY3JpcHRvci5pbmZvKCldKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh2YWxp
ZGF0aW9uRW5hYmxlZCgpKSB7CkBAIC02NDQ2LDcgKzY1ODYsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgZm9yIChhdXRvIGl0ZXIgPSB0YWJsZS0+YmVnaW4obG9ja2VyKSwgZW5kID0gdGFibGUt
PmVuZChsb2NrZXIpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgICAgICAgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoaXRlci0+dmFsdWUuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSA9PSBkYXRhLm1fcHJvcGVydGll
c1tpXS5tX2lkZW50aWZpZXJOdW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRM
b2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ2xvc3VyZVZhclBM
b2MpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUuc2NvcGVPZmZzZXQoKS5v
ZmZzZXQoKSA9PSBkZXNjcmlwdG9yLmluZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
Zm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIH0KQEAgLTY2MTMsNiArNjc1NSwyOSBAQCBwcml2YXRlOgogICAgICAgICBtX291
dC5zdG9yZTY0KHZhbHVlLCByZWdFeHAsIG1faGVhcHMuUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7
CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KCkKKyAg
ICB7CisgICAgICAgIEVkZ2UgY29uc3RydWN0b3JFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZCht
X25vZGUsIDApOworICAgICAgICBFZGdlIHJlZ0V4cEVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMSk7CisgICAgICAgIEVkZ2Ugc3RyaW5nRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAyKTsKKyAgICAgICAgRWRnZSBzdGFydEVkZ2UgPSBtX2dyYXBoLnZhckFyZ0No
aWxkKG1fbm9kZSwgMyk7CisgICAgICAgIEVkZ2UgZW5kRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCA0KTsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxv
d0NlbGwoY29uc3RydWN0b3JFZGdlKTsKKyAgICAgICAgTFZhbHVlIHJlZ0V4cCA9IGxvd0NlbGwo
cmVnRXhwRWRnZSk7CisgICAgICAgIExWYWx1ZSBzdHJpbmcgPSBsb3dDZWxsKHN0cmluZ0VkZ2Up
OworICAgICAgICBMVmFsdWUgc3RhcnQgPSBsb3dJbnQzMihzdGFydEVkZ2UpOworICAgICAgICBM
VmFsdWUgZW5kID0gbG93SW50MzIoZW5kRWRnZSk7CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
cmVnRXhwLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1
bHRfbGFzdFJlZ0V4cCk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0cmluZywgY29uc3RydWN0
b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RJbnB1dCk7Cisg
ICAgICAgIG1fb3V0LnN0b3JlMzIoc3RhcnQsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENv
bnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZXN1bHRfc3RhcnQpOworICAgICAgICBtX291dC5zdG9y
ZTMyKGVuZCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVz
dWx0X3Jlc3VsdF9lbmQpOworICAgICAgICBtX291dC5zdG9yZTMyQXM4KAorICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnQzMigwKSwKKyAgICAgICAgICAgIG1fb3V0LmFkZHJlc3MoY29uc3RydWN0
b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3JlaWZpZWQpKTsKKyAg
ICB9CisKICAgICBMVmFsdWUgZGlkT3ZlcmZsb3dTdGFjaygpCiAgICAgewogICAgICAgICAvLyBU
aGlzIGRvZXMgYSB2ZXJ5IHNpbXBsZSBsZWFmIGZ1bmN0aW9uIGFuYWx5c2lzLiBUaGUgaW52YXJp
YW50IG9mIEZUTCBjYWxsCkBAIC02OTcwLDYgKzcxMzUsMzkgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCisgICAgdm9pZCBpbml0aWFsaXplQXJy
YXlFbGVtZW50cyhJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlLCBMVmFsdWUgdmVjdG9yTGVuZ3Ro
LCBMVmFsdWUgYnV0dGVyZmx5KQorICAgIHsKKyAgICAgICAgaWYgKCFoYXNEb3VibGUoaW5kZXhp
bmdUeXBlKSkgeworICAgICAgICAgICAgLy8gVGhlIEdDIGFscmVhZHkgaW5pdGlhbGl6ZWQgZXZl
cnl0aGluZyB0byBKU1ZhbHVlKCkgZm9yIHVzLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gRG91YmxlcyBtdXN0IGJlIGluaXRpYWxpemVkIHRvIFBOYU4uCisg
ICAgICAgIExCYXNpY0Jsb2NrIGluaXRMb29wID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgaW5pdERvbmUgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxJbmRleCA9IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5n
dGgpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50ZXIgPSBtX291dC5hbmNo
b3IoYnV0dGVyZmx5KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQu
bm90WmVybzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShpbml0RG9u
ZSkpOworICAgICAgICAKKyAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8oaW5pdExvb3AsIGluaXREb25lKTsKKyAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9v
dXQucGhpKG1fb3V0LmludDMyLCBvcmlnaW5hbEluZGV4KTsKKyAgICAgICAgTFZhbHVlIHBvaW50
ZXIgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBvcmlnaW5hbFBvaW50ZXIpOworICAgICAgICAK
KyAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0
d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKKyAgICAgICAgICAgIFR5cGVkUG9pbnRlcihtX2hl
YXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzLmF0QW55SW5kZXgoKSwgcG9pbnRlcikpOworICAg
ICAgICAKKyAgICAgICAgTFZhbHVlIG5leHRJbmRleCA9IG1fb3V0LnN1YihpbmRleCwgbV9vdXQu
aW50MzJPbmUpOworICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKGluZGV4LCBtX291dC5h
bmNob3IobmV4dEluZGV4KSk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkocG9pbnRl
ciwgbV9vdXQuYW5jaG9yKG1fb3V0LmFkZChwb2ludGVyLCBtX291dC5pbnRQdHJFaWdodCkpKTsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKG5leHRJ
bmRleCksIHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShpbml0RG9uZSkpOworICAgICAgICAKKyAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oaW5pdERvbmUsIGluaXRMYXN0TmV4dCk7CisgICAgfQogICAg
IAogICAgIExWYWx1ZSBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShMVmFsdWUgb2JqZWN0LCBTdHJ1
Y3R1cmUqIHByZXZpb3VzU3RydWN0dXJlKQogICAgIHsKQEAgLTkyNTcsNyArOTQ1NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwogICAgICAgICByZXR1cm4gbV9vdXQu
dGVzdE5vblplcm82NChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KLSAgICAKKwog
ICAgIExWYWx1ZSB1bmJveERvdWJsZShMVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX291dC5iaXRDYXN0KG1fb3V0LmFkZChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpLCBt
X291dC5kb3VibGVUeXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTkgKzQxLDYgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOjpE
Rkc7CiAKLWV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVj
dFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKLSAgICAKLSAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZs
eTo6Y3JlYXRlKAotICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpLCBmYWxzZSwgSW5kZXhpbmdIZWFkZXIoKSwgMCk7Ci0gICAgCi0gICAgSlNPYmpl
Y3QqIHJlc3VsdCA9IEpTRmluYWxPYmplY3Q6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRl
cmZseSk7Ci0gICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRl
cmZseSBpcyBpbiB0by1zcGFjZS4KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBleHRlcm4gIkMi
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKAogICAgIEV4
ZWNTdGF0ZSogZXhlYywgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24qIG1hdGVyaWFsaXph
dGlvbiwKICAgICBFbmNvZGVkSlNWYWx1ZSogZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSog
dmFsdWVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgJ
KHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw2IEBAIGNsYXNzIExhenlTbG93UGF0
aDsKIAogZXh0ZXJuICJDIiB7CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdP
YmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsK
LQogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1Io
CiAgICAgRXhlY1N0YXRlKiwgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24qLCBFbmNvZGVk
SlNWYWx1ZSopIFdURl9JTlRFUk5BTDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5NiwxMCBAQCBj
bGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlND
ZWxsIEJhc2U7CiAKKyAgICAvLyBUaGlzIGlzIGEgc3VwZXIgZGFuZ2Vyb3VzIG1ldGhvZCBmb3Ig
SklUcy4gU29tZXRpbWVzIHRoZSBKSVRzIHdpbGwgd2FudCB0byBjcmVhdGUgZWl0aGVyIGEKKyAg
ICAvLyBKU0ZpbmFsT2JqZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBpcyB0aGUgbWV0aG9kIHRoYXQg
d2lsbCBkbyB0aGF0LgorICAgIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUmF3T2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogPSBudWxscHRyKTsK
KwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0Nl
bGwqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
Y29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tlbik7CkBAIC0x
MDM0LDYgKzEwMzgsMjAgQEAgcHJpdmF0ZToKIAogSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YoRXhlY1N0YXRl
Kik7CiAKK2lubGluZSBKU09iamVjdCogSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdCgKKyAgICBF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSkKK3sKKyAgICBKU09iamVjdCogZmluYWxPYmplY3QgPSBuZXcgKAorICAgICAgICBOb3ROdWxs
LCAKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KAorICAgICAgICAgICAgKmV4
ZWMtPmhlYXAoKSwKKyAgICAgICAgICAgIEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0
cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgKQorICAgICkgSlNPYmplY3QoZXhl
Yy0+dm0oKSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIGZpbmFsT2JqZWN0LT5maW5pc2hD
cmVhdGlvbihleGVjLT52bSgpKTsKKyAgICByZXR1cm4gZmluYWxPYmplY3Q7Cit9CisKIGlubGlu
ZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCiB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9uIDE5Nzk4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2Miw2ICsyNjIsOCBAQCBSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRlKFZNJiB2bSwg
Y29uc3QgU3RyCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFycjo6WWFyckNoYXJT
aXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1f
ZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJv
cikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk5LDggKzMw
MSwyMiBAQCBpbnQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYgCiAgICAgcmV0
dXJuIG1hdGNoSW5saW5lKHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7CiB9CiAKK2Jvb2wg
UmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSgKKyAgICBWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3RvcjxpbnQsIDMyPiYgb3Zl
Y3RvcikKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAg
aWYgKCFoYXNDb2RlRm9yKHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHBvc2l0aW9uID0gbWF0Y2godm0sIHMsIHN0
YXJ0T2Zmc2V0LCBvdmVjdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZWdFeHA6
OmNvbXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7
CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBZYXJy
OjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3Ry
dWN0aW9uRXJyb3IpOwogICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zNDAsNiArMzU2LDggQEAgTWF0Y2hSZXN1
bHQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IAogCiB2b2lkIFJlZ0V4cDo6ZGVsZXRlQ29k
ZSgpCiB7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAg
ICBpZiAoIWhhc0NvZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBOb3RDb21w
aWxlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lv
biAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBSZWdFeHBfaAogI2RlZmluZSBS
ZWdFeHBfaAogCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKICNpbmNsdWRlICJFeGVj
dXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiTWF0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJS
ZWdFeHBLZXkuaCIKQEAgLTU2LDYgKzU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaWdub3JlQ2Fz
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdub3JlQ2FzZTsgfQogICAgIGJvb2wg
bXVsdGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdNdWx0aWxpbmU7IH0KICAg
ICBib29sIHN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnU3RpY2t5OyB9Cisg
ICAgYm9vbCBnbG9iYWxPclN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIGdsb2JhbCgpIHx8IHN0aWNr
eSgpOyB9CiAgICAgYm9vbCB1bmljb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdV
bmljb2RlOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBt
X3BhdHRlcm5TdHJpbmc7IH0KQEAgLTY0LDYgKzY2LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBj
aGFyKiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdGlvbkVycm9yOyB9
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgbWF0Y2goVk0mLCBjb25zdCBTdHJpbmcmLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsKKworICAgIC8v
IFJldHVybnMgZmFsc2UgaWYgd2UgY291bGRuJ3QgcnVuIHRoZSByZWd1bGFyIGV4cHJlc3Npb24g
Zm9yIGFueSByZWFzb24uCisgICAgYm9vbCBtYXRjaENvbmN1cnJlbnRseShWTSYsIGNvbnN0IFN0
cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50LCAz
Mj4mIG92ZWN0b3IpOworICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIE1hdGNoUmVzdWx0IG1h
dGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpOwogCiAgICAgLy8g
Q2FsbCB0aGVzZSB2ZXJzaW9ucyBvZiB0aGUgbWF0Y2ggZnVuY3Rpb25zIGlmIHlvdSdyZSBkZXNw
ZXJhdGUgZm9yIHBlcmZvcm1hbmNlLgpAQCAtNzcsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3N0YXRlICE9IE5vdENvbXBpbGVkOwogICAgIH0KIAorICAgIGJvb2wgaGFzQ29k
ZUZvcihZYXJyOjpZYXJyQ2hhclNpemUpOworCiAgICAgdm9pZCBkZWxldGVDb2RlKCk7CiAKICNp
ZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC0xMzIsNiArMTQwLDcgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX3J0TWF0Y2hDYWxsQ291bnQ7CiAgICAgdW5zaWduZWQgbV9ydE1hdGNoRm91
bmRDb3VudDsKICNlbmRpZgorICAgIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKIAogI2lmIEVO
QUJMRShZQVJSX0pJVCkKICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrIG1fcmVnRXhwSklUQ29kZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hl
ZFJlc3VsdC5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTEg
QEAgcHVibGljOgogCiAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGFzdFJlZ0V4cCgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fbGFzdFJlZ0V4cCk7IH0KKyAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mTGFzdElucHV0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJl
Z0V4cENhY2hlZFJlc3VsdCwgbV9sYXN0SW5wdXQpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlJlc3VsdCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1
bHQsIG1fcmVzdWx0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZWlmaWVkKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENhY2hlZFJlc3VsdCwgbV9yZWlmaWVkKTsg
fQorCiBwcml2YXRlOgogICAgIE1hdGNoUmVzdWx0IG1fcmVzdWx0OwogICAgIGJvb2wgbV9yZWlm
aWVkOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw4
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRSZXN1bHQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ29uc3RydWN0b3IsIG1fY2FjaGVkUmVz
dWx0KTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFJlZ0V4
cFByb3RvdHlwZSosIEdldHRlclNldHRlciogc3BlY2llcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzk4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsMjAgKzY3LDI3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmIC8vIFJFR0VY
UF9GVU5DX1RFU1RfREFUQV9HRU4KIAotQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGls
ZUlmTmVjZXNzYXJ5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQorQUxXQVlT
X0lOTElORSBib29sIFJlZ0V4cDo6aGFzQ29kZUZvcihZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNp
emUpCiB7CiAgICAgaWYgKGhhc0NvZGUoKSkgewogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICAg
ICAgaWYgKG1fc3RhdGUgIT0gSklUQ29kZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXI4KSAm
JiAobV9yZWdFeHBKSVRDb2RlLmhhczhCaXRDb2RlKCkpKQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6
Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczE2Qml0Q29kZSgpKSkKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYg
dm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK3sKKyAgICBpZiAoaGFzQ29kZUZvcihj
aGFyU2l6ZSkpCisgICAgICAgIHJldHVybjsKIAogICAgIGNvbXBpbGUoJnZtLCBjaGFyU2l6ZSk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJy
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2
LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaAogICAgIAogICAg
IFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKICAgICBpbnQgcG9zaXRpb24gPSBy
ZWdFeHAtPm1hdGNoSW5saW5lKHZtLCBpbnB1dFZhbHVlLCBzdGFydE9mZnNldCwgc3VicGF0dGVy
blJlc3VsdHMpOworICAgIEFTU0VSVChwb3NpdGlvbiA9PSBzdWJwYXR0ZXJuUmVzdWx0c1swXSk7
CiAgICAgaWYgKHBvc2l0aW9uID09IC0xKSB7CiAgICAgICAgIHJlc3VsdCA9IE1hdGNoUmVzdWx0
OjpmYWlsZWQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCShyZXZpc2lv
biAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgSlNWYWx1ZSBSZWdFeHBP
YmplY3Q6OmV4ZWNJbmxpbmUoRXhlY1N0YQogICAgIFN0cmluZyBpbnB1dCA9IHN0cmluZy0+dmFs
dWUoZXhlYyk7IC8vIEZJWE1FOiBIYW5kbGUgZXJyb3JzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ1CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogCi0gICAgYm9vbCBnbG9iYWxPclN0aWNreSA9IHJlZ0V4cC0+Z2xvYmFsKCkgfHwgcmVnRXhw
LT5zdGlja3koKTsKKyAgICBib29sIGdsb2JhbE9yU3RpY2t5ID0gcmVnRXhwLT5nbG9iYWxPclN0
aWNreSgpOwogCiAgICAgdW5zaWduZWQgbGFzdEluZGV4OwogICAgIGlmIChnbG9iYWxPclN0aWNr
eSkgewpJbmRleDogU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9XVEYv
d3RmL0luc2VydGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDE0ICs1NSwxNSBA
QCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0VmVjdG9yVHlwZSwgdHlw
ZW5hbWUgSW5zZXJ0aW9uVmVjdG9yVHlwZT4KLXZvaWQgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0
VmVjdG9yVHlwZSYgdGFyZ2V0LCBJbnNlcnRpb25WZWN0b3JUeXBlJiBpbnNlcnRpb25zKQorc2l6
ZV90IGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0aW9u
VmVjdG9yVHlwZSYgaW5zZXJ0aW9ucykKIHsKLSAgICBpZiAoIWluc2VydGlvbnMuc2l6ZSgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUoKSArIGluc2VydGlv
bnMuc2l6ZSgpKTsKKyAgICBzaXplX3QgbnVtSW5zZXJ0aW9ucyA9IGluc2VydGlvbnMuc2l6ZSgp
OworICAgIGlmICghbnVtSW5zZXJ0aW9ucykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdGFyZ2V0
Lmdyb3codGFyZ2V0LnNpemUoKSArIG51bUluc2VydGlvbnMpOwogICAgIHNpemVfdCBsYXN0SW5k
ZXggPSB0YXJnZXQuc2l6ZSgpOwogICAgIHNpemVfdCBvcmlnaW5hbFRhcmdldFNpemUgPSB0YXJn
ZXQuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gaW5zZXJ0aW9u
cy5zaXplKCk7IGluZGV4SW5JbnNlcnRpb25zLS07KSB7CisgICAgZm9yIChzaXplX3QgaW5kZXhJ
bkluc2VydGlvbnMgPSBudW1JbnNlcnRpb25zOyBpbmRleEluSW5zZXJ0aW9ucy0tOykgewogICAg
ICAgICBBU1NFUlQoIWluZGV4SW5JbnNlcnRpb25zIHx8IGluc2VydGlvbnNbaW5kZXhJbkluc2Vy
dGlvbnNdLmluZGV4KCkgPj0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9ucyAtIDFdLmluZGV4
KCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9yaWdpbmFsVGFyZ2V0U2l6ZSwgaW5zZXJ0aW9u
c1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSA8IG9yaWdpbmFsVGFyZ2V0U2l6ZSk7CiAgICAg
ICAgIHNpemVfdCBmaXJzdEluZGV4ID0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5k
ZXgoKSArIGluZGV4SW5JbnNlcnRpb25zOwpAQCAtNzMsNiArNzQsNyBAQCB2b2lkIGV4ZWN1dGVJ
bnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUmCiAgICAgICAgIGxhc3RJbmRleCA9IGZpcnN0SW5k
ZXg7CiAgICAgfQogICAgIGluc2VydGlvbnMucmVzaXplKDApOworICAgIHJldHVybiBudW1JbnNl
cnRpb25zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273670</attachid>
            <date>2016-03-10 19:36:13 -0800</date>
            <delta_ts>2016-03-10 19:58:05 -0800</delta_ts>
            <desc>it does things!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>94000</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc5ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2
MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3
QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAv
KiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEw
QkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBD
NzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhG
NjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGgg
PSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMz
NUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAogCQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovLAogCQkJCUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOEND
MDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBG
RDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYg
Kzc0NDgsNyBAQAogCQkJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEg
LyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFp
bmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTk1Miw2ICsxOTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogog
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MjMsNiArOTIzLDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAg
ICAgICAgIGRlZihIZWFwTG9jYXRpb24oUmVnRXhwT2JqZWN0TGFzdEluZGV4TG9jLCBSZWdFeHBP
YmplY3RfbGFzdEluZGV4LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hl
ZFJlc3VsdDoKKyAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czogewogICAgICAgICBBYnN0cmFjdEhl
YXAgaGVhcChEaXJlY3RBcmd1bWVudHNQcm9wZXJ0aWVzLCBub2RlLT5jYXB0dXJlZEFyZ3VtZW50
c09mZnNldCgpLm9mZnNldCgpKTsKQEAgLTEwODYsNyArMTA5MCw5IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMygp
LnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJlYWQoUmVnRXhwU3RhdGUp
OworICAgICAgICAgICAgcmVhZChSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAg
IHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0
SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJlYWQoV29y
bGQpOwpAQCAtMTA5OCw3ICsxMTA0LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJl
Z0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09
IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAgICAgICAg
ICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUoUmVnRXhw
U3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNyw2ICsxMTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0
R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9u
IDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMDAsNiArMTMwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgU3RvcmVCYXJyaWVyOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoK
ICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGp1c3Qgbm9k
ZXMgdGhhdCB3ZSBkb24ndCBjdXJyZW50bHkgZXhwZWN0IHRvIHNlZSBkdXJpbmcgZml4dXAuCiAg
ICAgICAgICAgICAvLyBJZiB3ZSBldmVyIHdhbnRlZCB0byBpbnNlcnQgdGhlbSBwcmlvciB0byBm
aXh1cCwgdGhlbiB3ZSBqdXN0IGhhdmUgdG8gY3JlYXRlCiAgICAgICAgICAgICAvLyBmaXh1cCBy
dWxlcyBmb3IgdGhlbS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1LDYgKzMxNSw4IEBAIHZvaWQgR3JhcGg6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgICAgIG91dC5wcmludChhbm90aGVyQ29t
bWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KGZyZWV6ZShtX2NvZGVCbG9jay0+Y29uc3RhbnRCdWZm
ZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKVtpXSksIGNvbnRleHQpKTsKICAgICAgICAgb3V0LnBy
aW50KCJdIik7CiAgICAgfQorICAgIGlmIChub2RlLT5oYXNMYXp5SlNWYWx1ZSgpKQorICAgICAg
ICBvdXQucHJpbnQoY29tbWEsIG5vZGUtPmxhenlKU1ZhbHVlKCkpOwogICAgIGlmIChub2RlLT5o
YXNJbmRleGluZ1R5cGUoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBJbmRleGluZ1R5cGVE
dW1wKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgaWYgKG5vZGUtPmhhc1R5cGVkQXJyYXlU
eXBlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25T
ZXQuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1LDkgQEAgdm9pZCBJ
bnNlcnRpb25TZXQ6Omluc2VydFNsb3coY29uc3QgSW5zZQogICAgIG1faW5zZXJ0aW9ucy5pbnNl
cnQoMCwgaW5zZXJ0aW9uKTsKIH0KIAotdm9pZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNC
bG9jayogYmxvY2spCitzaXplX3QgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJs
b2NrKQogewotICAgIGV4ZWN1dGVJbnNlcnRpb25zKCpibG9jaywgbV9pbnNlcnRpb25zKTsKKyAg
ICByZXR1cm4gZXhlY3V0ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2VydGlvbnMpOwogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsx
MjksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spOworICAgIHNpemVfdCBleGVjdXRlKEJh
c2ljQmxvY2sqIGJsb2NrKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluc2VydFNsb3coY29uc3Qg
SW5zZXJ0aW9uJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCiAj
aW5jbHVkZSAiREZHTm9kZVR5cGUuaCIKICNpbmNsdWRlICJERkdPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCiAjaW5jbHVkZSAiREZHVHJhbnNpdGlv
bi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vz
c0RhdGEuaCIKQEAgLTIxOSwyMCArMjIwLDYgQEAgc3RydWN0IFN0YWNrQWNjZXNzRGF0YSB7CiAg
ICAgRmx1c2hlZEF0IGZsdXNoZWRBdCgpIHsgcmV0dXJuIEZsdXNoZWRBdChmb3JtYXQsIG1hY2hp
bmVMb2NhbCk7IH0KIH07CiAKLS8vIFRoaXMgdHlwZSB1c2VkIGluIHBhc3NpbmcgYW4gaW1tZWRp
YXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7Ci0vLyBkaXN0aW5ndWlzaGVzIGFuIGlt
bWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxvY2sgZGF0YSBz
dHJ1Y3R1cmUgLSAKLS8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBpZGVudGlmaWVy
KSBmcm9tIGEgTm9kZSouCi1zdHJ1Y3QgT3BJbmZvIHsKLSAgICBPcEluZm8oKSA6IG1fdmFsdWUo
MCkgeyB9Ci0gICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAgZXhwbGljaXQgT3BJbmZvKHVpbnQz
Ml90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQot
I2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKLSAgICBleHBsaWNpdCBPcEluZm8oc2l6
ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQot
I2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAgdWludHB0cl90IG1fdmFsdWU7
Ci19OwotCiAvLyA9PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUg
b3BlcmF0aW9uIGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw2ICsyMjQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVmFySW5qZWN0
aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldFJlZ0V4cE9i
amVjdExhc3RJbmRleCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2V0UmVnRXhwT2JqZWN0
TGFzdEluZGV4LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUmVjb3JkUmVnRXhwQ2Fj
aGVkUmVzdWx0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNy
byhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja05vdEVtcHR5
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tCYWRDZWxsLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzk4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzQsNyArMTk3NCw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOiB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRv
bVByb3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGEubV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2Jv
dHRvbSk7CkBAIC0yMDI0LDcgKzIwMjQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Y2FzZSBDbG9zdXJlVmFyUExvYzogewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobG9jYXRp
b24uYmFzZSgpID09IGFsbG9jYXRpb24uaWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Qcm9wZXJ0eVZhbHVlKGxvY2F0aW9u
LmluZm8oKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQo
bG9jYXRpb24uZGVzY3JpcHRvcigpKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUg
PSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3Np
bmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ib3R0b20pOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwzMiAr
MzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIFBoYW50
b21Qcm9wZXJ0eVZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0
LnByaW50KCJpZCIsIG1faWRlbnRpZmllck51bWJlcik7Ci19Ci0KIHZvaWQgT2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91dC5w
cmludCgiWyIsIGxpc3REdW1wKG1fcHJvcGVydGllcyksICJdIik7CiB9CiAKLWZsb2F0IE9iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGE6Om9uZVdheVNpbWlsYXJpdHlTY29yZSgKLSAgICBjb25zdCBP
YmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBu
dW1IaXRzID0gMDsKLSAgICBmb3IgKFBoYW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVlIDogbV9wcm9w
ZXJ0aWVzKSB7Ci0gICAgICAgIGlmIChvdGhlci5tX3Byb3BlcnRpZXMuY29udGFpbnModmFsdWUp
KQotICAgICAgICAgICAgbnVtSGl0cysrOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KG51bUhpdHMpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fcHJvcGVydGllcy5zaXplKCkp
OwotfQotCi1mbG9hdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpzaW1pbGFyaXR5U2NvcmUo
Y29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHN0ZDo6bWluKG9uZVdheVNpbWlsYXJpdHlTY29yZShvdGhlciksIG90aGVyLm9uZVdheVNp
bWlsYXJpdHlTY29yZSgqdGhpcykpOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAK
ICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCShyZXZpc2lv
biAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIgogI2luY2x1
ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CkBAIC0zNSwzOCArMzYsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCi1zdHJ1Y3QgUGhhbnRvbVByb3BlcnR5VmFsdWUgewotICAgIFBoYW50
b21Qcm9wZXJ0eVZhbHVlKCkKLSAgICAgICAgOiBtX2lkZW50aWZpZXJOdW1iZXIoVUlOVF9NQVgp
Ci0gICAgewotICAgIH0KLSAgICAKLSAgICBQaGFudG9tUHJvcGVydHlWYWx1ZSh1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyKQotICAgICAgICA6IG1faWRlbnRpZmllck51bWJlcihpZGVudGlmaWVy
TnVtYmVyKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgbV9pZGVudGlmaWVyTnVt
YmVyOwotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQaGFudG9tUHJvcGVydHlWYWx1
ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyTnVtYmVy
ID09IG90aGVyLm1faWRlbnRpZmllck51bWJlcjsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Q7Ci19OwotCiBzdHJ1Y3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YSB7CiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgbWVhbmluZyBvZiB0aGUgcGFzc2VkIG5vZGVz
LgotICAgIFZlY3RvcjxQaGFudG9tUHJvcGVydHlWYWx1ZT4gbV9wcm9wZXJ0aWVzOworICAgIFZl
Y3RvcjxQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcj4gbV9wcm9wZXJ0aWVzOwogICAgIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwotICAgIAotICAgIC8vIFRoZSBmcmFjdGlv
biBvZiBteSBwcm9wZXJ0aWVzIHRoYXQgdGhlIG90aGVyIGRhdGEgaGFzLgotICAgIGZsb2F0IG9u
ZVdheVNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJikgY29u
c3Q7Ci0gICAgCi0gICAgLy8gVGhlIG1pbmltdW0gb2YgdGhlIHR3byBwb3NzaWJsZSBvbmUtd2F5
IHNjb3Jlcy4KLSAgICBmbG9hdCBzaW1pbGFyaXR5U2NvcmUoY29uc3QgT2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YSYpIGNvbnN0OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgREZHT3BJbmZvX2gKKyNkZWZpbmUgREZHT3BJbmZvX2gKKworI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CisKKy8vIFRoaXMgdHlwZSB1c2VkIGluIHBhc3NpbmcgYW4gaW1t
ZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7CisvLyBkaXN0aW5ndWlzaGVzIGFu
IGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxvY2sgZGF0
YSBzdHJ1Y3R1cmUgLSAKKy8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBpZGVudGlm
aWVyKSBmcm9tIGEgTm9kZSouCitzdHJ1Y3QgT3BJbmZvIHsKKyAgICBPcEluZm8oKSA6IG1fdmFs
dWUoMCkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92YWx1ZShz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKHVp
bnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsg
fQorI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKKyAgICBleHBsaWNpdCBPcEluZm8o
c2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsg
fQorI2VuZGlmCisgICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisgICAgdWludHB0cl90IG1fdmFs
dWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKKworI2VuZGlmIC8vIERGR09wSW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQwMSw2ICsxNDAxLDYwIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmF1
bHRIYXMKICAgICByZXR1cm4gMDsKIH0KIAorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdSYXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsK
KyAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgICAgIEluZGV4aW5nSGVh
ZGVyIGhlYWRlcjsKKyAgICAgICAgaGVhZGVyLnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAg
ICAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3RoKDApOworICAgICAgICAKKyAgICAgICAgYnV0dGVy
Zmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAorICAgICAgICAgICAgaGFzSW5kZXhlZFByb3Bl
cnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSksIGhlYWRlciwKKyAgICAgICAgICAgIGxl
bmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOworICAgIH0gZWxzZQorICAgICAgICBidXR0
ZXJmbHkgPSBudWxscHRyOworCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTT2JqZWN0OjpjcmVh
dGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIHJlc3VsdC0+YnV0
dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCisg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4ocmVzdWx0KTsKK30KKworSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICAKKyAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAorICAgICAgICB2bSwgbnVsbHB0
ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwgSW5kZXhpbmdIZWFk
ZXIoKSwgMCk7CisgICAgCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTT2JqZWN0OjpjcmVhdGVS
YXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIHJlc3VsdC0+YnV0dGVy
Zmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09i
amVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworCisgICAgSW5kZXhpbmdIZWFkZXIgaGVhZGVyOworICAgIGhlYWRlci5zZXRW
ZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3RoKDApOworICAg
IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIHZtLCBu
dWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsIGhlYWRlciwK
KyAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGxlbmd0aCk7CisKKyAgICAvLyBQYXJh
ZG94aWNhbGx5IHRoaXMgbWF5IGFsbG9jYXRlIGEgSlNBcnJheS4gVGhhdCdzIHRvdGFsbHkgY29v
bC4KKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdChleGVj
LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5z
dXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxv
Z0RGRyhFeGVjU3RhdGUqIGV4ZWMpIAogewogICAgIGV4ZWMtPnZtKCkudHlwZVByb2ZpbGVyTG9n
KCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiTG9nIEZ1bGwsIGNhbGxlZCBmcm9t
IGluc2lkZSBERkcuIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDEwIEBAIGludDY0
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG8KIAogc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSosIEpTQ2VsbCogdmFsdWUs
IEpTQ2VsbCogcHJvdG8pOwogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jhd09i
amVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxl
bmd0aChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpIFdURl9JTlRFUk5B
TDsKKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2dE
RkcoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gZGVidWdP
cGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCop
IFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY4LDYgKzY2OCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICAgICAgY2Fz
ZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6
IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0
aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAgICAgICAgLy8gaW5zZXJ0ZWQg
YnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAJKHJl
dmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRI
ZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDYgKzc0LDEwIEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQcm8KICAgICBjYXNlIE5hbWVkUHJvcGVy
dHlQTG9jOgogICAgICAgICBvdXQucHJpbnQoIk5hbWVkUHJvcGVydHlQTG9jIik7CiAgICAgICAg
IHJldHVybjsKKworICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5UExvYzoKKyAgICAgICAgb3V0LnBy
aW50KCJJbmRleGVkUHJvcGVydHlQTG9jIik7CisgICAgICAgIHJldHVybjsKICAgICAgICAgCiAg
ICAgY2FzZSBBcmd1bWVudFBMb2M6CiAgICAgICAgIG91dC5wcmludCgiQXJndW1lbnRQTG9jIik7
CkBAIC0xMDIsNiArMTA2LDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBQcm8KICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1
cmVWYXJQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUHVibGljTGVuZ3RoUExv
YzoKKyAgICAgICAgb3V0LnByaW50KCJQdWJsaWNMZW5ndGhQTG9jIik7CisgICAgICAgIHJldHVy
bjsKKworICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0
b3JMZW5ndGhQTG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOCwyNSArMjgsNDEgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQog
Ci0jaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkRGR0VkZ2UuaCIKKyNpbmNsdWRlICJE
RkdOb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0cnVjdCBOb2RlOworCisvLyBQcm9tb3RlZCBsb2NhdGlv
bnMgYXJlIGxpa2UgaGVhcCBsb2NhdGlvbnMgYnV0IGFyZSBtZWFudCB0byBiZSBtb3JlIHByZWNp
c2UuIEEgaGVhcCBsb2NhdGlvbiBpcworLy8gYXBwbGljYWJsZSB0byBDU0Ugc2NlbmFyaW9zLCB3
aGVyZSBpdCBtYWtlcyBzZW5zZSB0byBzcGVhayBvZiBhIGxvY2F0aW9uIHZlcnkgYWJzdHJhY3Rs
eS4gQQorLy8gcHJvbW90ZWQgaGVhcCBsb2NhdGlvbiBpcyBmb3IgY2FzZXMgd2hlcmUgd2Ugc3Bl
YWsgb2YgYSBzcGVjaWZpYyBvYmplY3QgYW5kIHRoZSBjb21waWxlciBrbm93cworLy8gdGhpcyBv
YmplY3QncyBpZGVudGl0eSAtIGZvciBleGFtcGxlLCB0aGUgb2JqZWN0IGFsbG9jYXRpb24gaGFz
IGJlZW4gZWxpbWluYXRlZCBhbmQgd2UgdHVybmVkIHRoZQorLy8gZmllbGRzIGludG8gbG9jYWwg
dmFyaWFibGVzLiBCZWNhdXNlIHRoZXNlIHR3byBjYXNlcyBoYXZlIHN1YnRseSBkaWZmZXJlbnQg
bmVlZHMsIHdlIHVzZSBzdWJ0bHkKKy8vIGRpZmZlcmVudCBzdHJ1Y3R1cmVzLiBPbmUgb2YgdGhl
IHJlYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpcyB0aGF0IHByb21vdGVkIGxvY2F0aW9u
cyBjYW4gYmUKKy8vIHNwb2tlbiBvZiB1c2luZyBlaXRoZXIgYSBkZXNjcmlwdG9yIHdoaWNoIGRv
ZXMgbm90IHJlZmVyIHRvIGFueSBOb2RlKidzIG9yIHdpdGggYSBoZWFwIGxvY2F0aW9uLAorLy8g
d2hpY2ggaXMgYSBkZXNjcmlwdG9yIHdpdGggYSBOb2RlKiBiYXNlLgorCiBlbnVtIFByb21vdGVk
TG9jYXRpb25LaW5kIHsKICAgICBJbnZhbGlkUHJvbW90ZWRMb2NhdGlvbktpbmQsCiAgICAgCi0g
ICAgU3RydWN0dXJlUExvYywKKyAgICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIEFjdGl2YXRp
b25TeW1ib2xUYWJsZVBMb2MsCi0gICAgTmFtZWRQcm9wZXJ0eVBMb2MsCi0gICAgQXJndW1lbnRQ
TG9jLAogICAgIEFyZ3VtZW50Q291bnRQTG9jLAorICAgIEFyZ3VtZW50UExvYywKICAgICBBcmd1
bWVudHNDYWxsZWVQTG9jLAotCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlUExvYywKKyAgICBDbG9z
dXJlVmFyUExvYywKICAgICBGdW5jdGlvbkFjdGl2YXRpb25QTG9jLAotICAgIEFjdGl2YXRpb25T
Y29wZVBMb2MsCi0gICAgQ2xvc3VyZVZhclBMb2MKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsCisgICAgTmFtZWRQcm9wZXJ0eVBMb2MsCisgICAg
UHVibGljTGVuZ3RoUExvYywKKyAgICBTdHJ1Y3R1cmVQTG9jLAorICAgIFZlY3Rvckxlbmd0aFBM
b2MKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAgY2FzZSBHZXRSZWdF
eHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6Cisg
ICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTk3OTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzA0Nyw2ICszMDQ3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAg
ICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogeworICAgICAgICBjb21waWxlUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAg
IAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUo
KS5pc0pTQXJyYXkoKSk7CiAgICAgICAgIApAQCAtMzQ5Miw3ICszNDk3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3Rv
cmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIs
IHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFs
bG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVt
ZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBBdCB0aGlz
IHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFnZUdQUiBoYXZl
IHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhlIEJ1dHRlcmZs
eSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOCw3ICszNzMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIo
KTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4
aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxv
Y2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51
bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChu
b2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgICAg
ICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUt
PnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTc4LDcgKzQ5ODMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAKKyAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2Jq
ZWN0OgorICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxNzEsNiArMzE3MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5k
ZXgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1
c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzSlNBcnJheSgpKTsKQEAg
LTM1NDIsNyArMzU0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVs
ZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIHN0
cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBhbm90aGVyLCBy
ZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAgICAgICAgLy8g
dGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAgLTM3NzgsNyAr
Mzc4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJS
ZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0
ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVt
ZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihp
bmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIGlu
ZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0
LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwpAQCAt
NDk3MSw2ICs0OTc2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVj
dDoKKyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOworICAgICAgICBi
cmVhazsKKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJV
cEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJh
bmNoQWRkMzIoCkBAIC01MDYxLDcgKzUwNzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBQ
dXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAgY2FzZSBNYXRl
cmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0YWNrOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
U2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgi
CiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyQnVmZmVyLmgiCkBAIC03NywyNyArNzgsNDcgQEAgU3Bl
Y3VsYXRpdmVKSVQ6On5TcGVjdWxhdGl2ZUpJVCgpCiB7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cykKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlw
ZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzQ29udGln
dW91cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgSW5kZXhpbmdUeXBlIGluZGV4
aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBoYXNJbmRleGlu
Z0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CisKKyAgICB1bnNp
Z25lZCBpbmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKTsKKyAgICB1
bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KTsKICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaDIodGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigp
OwogICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwotICAgIAotICAgIHVu
c2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgbnVtRWxlbWVu
dHMpOworCisgICAgQVNTRVJUKHZlY3Rvckxlbmd0aCA+PSBudW1FbGVtZW50cyk7CisgICAgdmVj
dG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCB2ZWN0b3JMZW5ndGgpOwogICAg
IAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgc2xvd0Nh
c2VzLmFwcGVuZCgKLSAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKFRydXN0ZWRJbW0z
Mih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIp
KSwgc3RvcmFnZUdQUikpOwotICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVu
Z3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7Ci0gICAgZW1pdEFsbG9jYXRlSlNP
YmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3Jh
Z2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwotICAgIAotICAgIG1f
aml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7Ci0g
ICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgp
KSk7Ci0gICAgCisKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgaWYgKGhhc0luZGV4aW5nSGVh
ZGVyKQorICAgICAgICBzaXplICs9IHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSArIHNp
emVvZihJbmRleGluZ0hlYWRlcik7CisgICAgc2l6ZSArPSBvdXRPZkxpbmVDYXBhY2l0eSAqIHNp
emVvZihKU1ZhbHVlKTsKKworICAgIGlmIChzaXplKSB7CisgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoCisgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3RlZEltbTMyKHNp
emUpLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAg
ICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpT
VmFsdWUpKSwgc3RvcmFnZUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faml0LmFk
ZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpOwor
ICAgIH0gZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoMCksIHN0b3JhZ2VH
UFIpOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2Nh
dGlvblNpemUoaW5saW5lQ2FwYWNpdHkpOworICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
UHRyID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0
b3IoYWxsb2NhdGlvblNpemUpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0
b3JQdHIpLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIs
IHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRj
aDJHUFIsIHNsb3dDYXNlcyk7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAg
IG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCksIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkp
OworCiAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSAmJiBudW1F
bGVtZW50cyA8IHZlY3Rvckxlbmd0aCkgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHNjcmF0
Y2hHUFIpOwpAQCAtMTE3LDggKzEzOCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxs
b2NhdGVKU0FycmF5CiAgICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAogICAgIC8vIG9mIHdvcmsgZm9y
IGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8KICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yPigKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplLCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCi0gICAgICAgIHN0cnVjdHVyZSwgbnVtRWxlbWVu
dHMpKTsKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdSYXdPYmplY3QsIHJl
c3VsdEdQUiwgc3RvcmFnZUdQUiwKKyAgICAgICAgc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpKTsK
KworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVz
dGVkSW1tMzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwg
R1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcykKQEAgLTc2NTUsNiArNzY3OSwxMjUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YQogICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKiBub2RlKQoreworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbm9kZS0+c3RydWN0dXJlU2V0KClbMF07CisgICAgQVNTRVJUKG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4o
KSA9PSBzdHJ1Y3R1cmUpOworCisgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9
IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgCisgICAgSW5kZXhp
bmdUeXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9v
bCBoYXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7
CisgICAgaW50MzJfdCBwdWJsaWNMZW5ndGggPSAwOworICAgIGludDMyX3QgdmVjdG9yTGVuZ3Ro
ID0gMDsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIEVk
Z2UgZWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpOworICAgICAg
ICAgICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAg
IGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSBl
ZGdlLT5hc0ludDMyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gZWRnZS0+
YXNJbnQzMigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0b3Jh
Z2UodGhpcyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJS
ZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgCisgICAgZW1pdEFsbG9jYXRlUmF3
T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCAwLCB2ZWN0b3JMZW5ndGgp
OworICAgIAorICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tMzIocHVibGljTGVuZ3RoKSwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgRWRn
ZSBlZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAg
IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGll
c1tpXTsKKyAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICBjYXNl
IEluZGV4ZWRQcm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIGVkZ2UpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAg
ICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBkZXNjcmlwdG9yLmlu
Zm8oKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIE5h
bWVkUHJvcGVydHlQTG9jOiB7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiB1aWQgPSBtX2ppdC5n
cmFwaCgpLmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCldOworICAgICAgICAgICAgZm9y
IChQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVzQ29uY3Vy
cmVudGx5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodWlkICE9IGVudHJ5LmtleSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGlz
SW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNldCkgPyByZXN1bHRHUFIgOiBzdG9yYWdlR1BSOworICAg
ICAgICAgICAgICAgIG1faml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgICAgIHZhbHVl
LmpzVmFsdWVSZWdzKCksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGVudHJ5Lm9mZnNldCkpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqIG5vZGUpCit7CisgICAgRWRnZSBj
b25zdHJ1Y3RvckVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAg
IEVkZ2UgcmVnRXhwRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7Cisg
ICAgRWRnZSBzdHJpbmdFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsK
KyAgICBFZGdlIHN0YXJ0RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMyk7
CisgICAgRWRnZSBlbmRFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCA0KTsK
KworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIGNvbnN0cnVjdG9y
RWRnZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmVnRXhwKHRoaXMsIHJlZ0V4cEVkZ2Up
OworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0aGlzLCBzdHJpbmdFZGdlKTsKKyAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc3RhcnQodGhpcywgc3RhcnRFZGdlKTsKKyAgICBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQgZW5kKHRoaXMsIGVuZEVkZ2UpOworCisgICAgR1BSUmVnIGNvbnN0
cnVjdG9yR1BSID0gY29uc3RydWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIHJlZ0V4cEdQUiA9IHJl
Z0V4cC5ncHIoKTsKKyAgICBHUFJSZWcgc3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOworICAgIEdQ
UlJlZyBzdGFydEdQUiA9IHN0YXJ0LmdwcigpOworICAgIEdQUlJlZyBlbmRHUFIgPSBlbmQuZ3By
KCk7CisKKyAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9m
Q2FjaGVkUmVzdWx0KCk7CisKKyAgICBtX2ppdC5zdG9yZVB0cigKKyAgICAgICAgcmVnRXhwR1BS
LAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsg
UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkpOworICAgIG1faml0LnN0
b3JlUHRyKAorICAgICAgICBzdHJpbmdHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFz
dElucHV0KCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBzdGFydEdQUiwKKyAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICBjb25zdHJ1Y3RvckdQUiwKKyAg
ICAgICAgICAgIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSAr
IE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSk7CisgICAgbV9qaXQuc3RvcmUz
MigKKyAgICAgICAgZW5kR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcygKKyAgICAg
ICAgICAgIGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVk
UmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBl
bmQpKSk7CisgICAgbV9qaXQuc3RvcmU4KAorICAgICAgICBUcnVzdGVkSW1tMzIoMCksCisgICAg
ICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBD
YWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsK
K30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE5Nzk4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQwMSw2ICsyNDAxLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGls
ZUdldFJlZ0V4cE9iamVjdExhc3RJbmRleChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMYXp5SlNDb25zdGFu
dChOb2RlKik7CisgICAgdm9pZCBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChOb2RlKik7CiAgICAgCiAg
ICAgdm9pZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhHUFJSZWcp
OwpAQCAtMjUxNiw3ICsyNTE4LDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkp
OwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BS
LCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOwor
ICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVy
ZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVj
dG9yTGVuZ3RoKTsKICAgICAKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1l
KiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKICAgICB2b2lk
IGVtaXRHZXRMZW5ndGgoQ29kZU9yaWdpbiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRl
VGhpcyA9IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDExICsyNTMsMTkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNo
OgorICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBQdXRT
dHJ1Y3R1cmU6IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgCisKKyAgICAgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7Cisg
ICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2Rl
LCAwKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6
CiAgICAgICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKQEAgLTI2NiwxMyAr
Mjc0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgICAg
IGNhc2UgUHV0QnlJZEZsdXNoOgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7Ci0g
ICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBjYXNlIFB1dEJ5
T2Zmc2V0OiB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQy
KCksIG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCiAjaW5j
bHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgPGNzdGRsaWI+CiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTMzMSwxMSArMzMyLDIzNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGlmICghIXN0cmluZykgewogICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNOdW1iZXIoc3RyaW5nLmxl
bmd0aCgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRHbG9iYWxPYmpl
Y3Q6IHsKKyAgICAgICAgICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0gbV9ub2RlLT5jaGlsZDEo
KS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU09iamVjdCo+KCkpIHsKKyAgICAgICAgICAgICAgICBt
X2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwgb2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7
CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBSZWdFeHBFeGVjOgorICAgICAgICBjYXNlIFJlZ0V4cFRlc3Q6IHsKKyAgICAgICAg
ICAgIGRhdGFMb2coIkhlcmUhXG4iKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX25vZGUtPmNoaWxkMSgpLT5keW5hbWljQ2FzdENvbnN0YW50PEpTR2xvYmFs
T2JqZWN0Kj4oKTsKKyAgICAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBkYXRhTG9nKCJIZXJlLlxuIik7CisKKyAgICAgICAg
ICAgIGlmIChnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgZGF0YUxvZygiR2V0dGluZyByZWdleHAhXG4iKTsKKwor
ICAgICAgICAgICAgTm9kZSogcmVnRXhwT2JqZWN0Tm9kZSA9IG1fbm9kZS0+Y2hpbGQyKCkubm9k
ZSgpOworICAgICAgICAgICAgUmVnRXhwKiByZWdFeHA7CisgICAgICAgICAgICBpZiAoUmVnRXhw
T2JqZWN0KiByZWdFeHBPYmplY3QgPSByZWdFeHBPYmplY3ROb2RlLT5keW5hbWljQ2FzdENvbnN0
YW50PFJlZ0V4cE9iamVjdCo+KCkpCisgICAgICAgICAgICAgICAgcmVnRXhwID0gcmVnRXhwT2Jq
ZWN0LT5yZWdFeHAoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ0V4cE9iamVjdE5vZGUtPm9w
KCkgPT0gTmV3UmVnZXhwKQorICAgICAgICAgICAgICAgIHJlZ0V4cCA9IGNvZGVCbG9jaygpLT5y
ZWdleHAocmVnRXhwT2JqZWN0Tm9kZS0+cmVnZXhwSW5kZXgoKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIE5vZGUqIHN0cmluZ05vZGUg
PSBtX25vZGUtPmNoaWxkMygpLm5vZGUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZGF0
YUxvZygiU3RpbGwgaGVyZSFcbiIpOworCisgICAgICAgICAgICAvLyBOT1RFOiBUaGlzIG1vc3Rs
eSBhbHJlYWR5IHByb3RlY3RzIHVzIGZyb20gaGF2aW5nIHRoZSBjb21waWxlciBleGVjdXRlIGEg
cmVnZXhwCisgICAgICAgICAgICAvLyBvcGVyYXRpb24gb24gYSBnaW5vcm1vdXMgc3RyaW5nIGJ5
IHByZXZlbnRpbmcgdXMgZnJvbSBnZXR0aW5nIG91ciBoYW5kcyBvbiBnaW5vcm1vdXMKKyAgICAg
ICAgICAgIC8vIHN0cmluZ3MgaW4gdGhlIGZpcnN0IHBsYWNlLgorICAgICAgICAgICAgU3RyaW5n
IHN0cmluZyA9IG1fbm9kZS0+Y2hpbGQzKCktPnRyeUdldFN0cmluZyhtX2dyYXBoKTsKKyAgICAg
ICAgICAgIGlmICghc3RyaW5nKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICBGcm96ZW5WYWx1ZSogcmVnRXhwRnJvemVuVmFsdWUgPSBtX2dyYXBoLmZyZWV6ZShyZWdFeHAp
OworCisgICAgICAgICAgICAvLyBSZWZ1c2UgdG8gZG8gdGhpbmdzIHdpdGggcmVndWxhciBleHBy
ZXNzaW9ucyB0aGF0IGhhdmUgYSBnaW5vcm1vdXMgbnVtYmVyIG9mCisgICAgICAgICAgICAvLyBz
dWJwYXR0ZXJucy4KKyAgICAgICAgICAgIHVuc2lnbmVkIGdpbm9ybW91c051bWJlck9mU3ViUGF0
dGVybnMgPSAxMDAwOworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSA+
IGdpbm9ybW91c051bWJlck9mU3ViUGF0dGVybnMpCisgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGRhdGFMb2coIkFuZCBzdGlsbCBoZXJlIVxuIik7CisKKyAgICAgICAgICAg
IHVuc2lnbmVkIGxhc3RJbmRleDsKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPmdsb2JhbE9yU3Rp
Y2t5KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgb25seSB3b3JrIGlmIHdlIGNh
biBwcm92ZSB3aGF0IHRoZSB2YWx1ZSBvZiBsYXN0SW5kZXggaXMuIFRvIGRvIHRoaXMKKyAgICAg
ICAgICAgICAgICAvLyBzYWZlbHksIHdlIG5lZWQgdG8gZXhlY3V0ZSB0aGUgaW5zZXJ0aW9uIHNl
dCBzbyB0aGF0IHdlIHNlZSBhbnkgcHJldmlvdXMgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAv
LyByZWR1Y3Rpb25zLiBUaGlzIGlzIG5lZWRlZCBmb3Igc291bmRuZXNzIHNpbmNlIG90aGVyd2lz
ZSB0aGUgZWZmZWN0ZnVsbmVzcyBvZiBhbnkKKyAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBz
dHJlbmd0aCByZWR1Y3Rpb25zIHdvdWxkIGJlIGludmlzaWJsZSB0byB1cy4KKyAgICAgICAgICAg
ICAgICBleGVjdXRlSW5zZXJ0aW9uU2V0KCk7CisgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0g
VUlOVF9NQVg7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBvdGhlck5vZGVJbmRleCA9
IG1fbm9kZUluZGV4OyBvdGhlck5vZGVJbmRleC0tOykgeworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBvdGhlck5vZGUgPSBtX2Jsb2NrLT5hdChvdGhlck5vZGVJbmRleCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChvdGhlck5vZGUgPT0gcmVnRXhwT2JqZWN0Tm9kZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChvdGhl
ck5vZGUtPm9wKCkgPT0gU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4CisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiBvdGhlck5vZGUtPmNoaWxkMSgpID09IHJlZ0V4cE9iamVjdE5vZGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQyKCktPmlzSW50MzJDb25zdGFu
dCgpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlck5vZGUtPmNoaWxkMigpLT5hc0lu
dDMyKCkgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG90aGVyTm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBpZiAod3JpdGVzT3ZlcmxhcChtX2dyYXBoLCBvdGhlck5vZGUsIFJlZ0V4cE9i
amVjdF9sYXN0SW5kZXgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChsYXN0SW5kZXggPT0gVUlOVF9NQVgpCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgbGFzdEluZGV4ID0gMDsKKworICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygp
LmFkZExhemlseShnbG9iYWxPYmplY3QtPmhhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCgpKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpOworICAgICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkgIT0gQXJyYXlXaXRoQ29udGlndW91cykgeworICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgZnVydGhlciBwcm90ZWN0aW9uIGFnYWluc3QgYSByYWNlIHdpdGgg
aGF2ZUFCYWRUaW1lLgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBnbG9iYWxP
YmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCk7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogY29u
c3RydWN0b3JGcm96ZW5WYWx1ZSA9IG1fZ3JhcGguZnJlZXplKGNvbnN0cnVjdG9yKTsKKworICAg
ICAgICAgICAgaW50IHBvc2l0aW9uOworICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IG92ZWN0
b3I7CisgICAgICAgICAgICBpZiAoIXJlZ0V4cC0+bWF0Y2hDb25jdXJyZW50bHkodm0oKSwgc3Ry
aW5nLCBsYXN0SW5kZXgsIHBvc2l0aW9uLCBvdmVjdG9yKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgLy8gV2UndmUgY29uc3RhbnQtZm9sZGVkIHRoZSByZWdleHAuIE5v
dyB3ZSdyZSBjb21taXR0ZWQgdG8gcmVwbGFjaW5nIFJlZ0V4cEV4ZWMvVGVzdC4KKworICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4g
PSBtX25vZGUtPm9yaWdpbjsKKworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4s
IG1fbm9kZS0+Y2hpbGRyZW4uanVzdENoZWNrcygpKTsKKworICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0KiBz
dHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpOworCisgICAg
ICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IG1vZGVsaW5nIHRoZSBKUyBhcnJheSB0aGF0
IHdlIHdpbGwgdHJ5IHRvIGFsbG9jYXRlLiBUaGlzIGlzCisgICAgICAgICAgICAgICAgLy8gYmFz
aWNhbGx5IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSBidXQgb3ZlciBDKysgc3RyaW5ncyBpbnN0
ZWFkIG9mIEpTU3RyaW5ncy4KKyAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRB
cnJheTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheS5hcHBlbmQoc3RyaW5nLnN1YnN0cmlu
Zyhwb3NpdGlvbiwgb3ZlY3RvclsxXSkpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDE7IGkgPD0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaW50IHN0YXJ0ID0gb3ZlY3RvclsyICogaV07CisgICAgICAgICAgICAgICAgICAg
IGlmIChzdGFydCA+PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkuYXBw
ZW5kKHN0cmluZy5zdWJzdHJpbmcoc3RhcnQsIG92ZWN0b3JbMiAqIGkgKyAxXSAtIHN0YXJ0KSk7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5LmFwcGVuZChTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgdW5zaWduZWQgcHVibGljTGVuZ3RoID0gcmVzdWx0QXJyYXkuc2l6ZSgpOworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xF
TiwgcHVibGljTGVuZ3RoKTsKKworICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBp
bmRleFVJRCA9IHZtKCkucHJvcGVydHlOYW1lcy0+aW5kZXguaW1wbCgpOworICAgICAgICAgICAg
ICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbnB1dFVJRCA9IHZtKCkucHJvcGVydHlOYW1lcy0+aW5w
dXQuaW1wbCgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5kZXggPSBtX2dyYXBo
LmlkZW50aWZpZXJzKCkuZW5zdXJlKGluZGV4VUlEKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnB1dEluZGV4ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpbnB1dFVJRCk7CisK
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBmaXJzdENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLnNpemUoKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4u
YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFu
dEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHN0
cnVjdHVyZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmFk
ZCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29u
c3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2lu
LCBqc051bWJlcihwdWJsaWNMZW5ndGgpLCBLbm93bkludDMyVXNlKSk7CisgICAgICAgICAgICAg
ICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZChQdWJsaWNMZW5ndGhQTG9jKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIodmVj
dG9yTGVuZ3RoKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJv
cGVydGllcy5hcHBlbmQoVmVjdG9yTGVuZ3RoUExvYyk7CisKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
bm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHBvc2l0aW9uKSwgVW50eXBlZFVzZSkpOworICAg
ICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBpbmRleElu
ZGV4KSk7CisKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5k
KEVkZ2Uoc3RyaW5nTm9kZSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgIGRhdGEtPm1f
cHJvcGVydGllcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25E
ZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBpbnB1dEluZGV4KSk7CisKKyAgICAgICAgICAg
ICAgICBhdXRvIG1hdGVyaWFsaXplU3RyaW5nID0gWyZdIChjb25zdCBTdHJpbmcmIHN0cmluZykg
LT4gTm9kZSogeworICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAg
IGlmIChzdHJpbmcuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwgdm0oKS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKSk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRl
eCwgU3BlY05vbmUsIExhenlKU0NvbnN0YW50LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
ICAgICBPcEluZm8obV9ncmFwaC5tX2xhenlKU1ZhbHVlcy5hZGQoTGF6eUpTVmFsdWU6Om5ld1N0
cmluZyhtX2dyYXBoLCBzdHJpbmcpKSkpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0QXJyYXkuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSBtYXRlcmlhbGl6ZVN0cmlu
ZyhyZXN1bHRBcnJheVtpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShub2RlLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKEluZGV4ZWRQcm9wZXJ0eVBM
b2MsIGkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdE5vZGUgPSBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0FycmF5
LCBOb2RlOjpWYXJBcmcsIE1hdGVyaWFsaXplTmV3T2JqZWN0LCBvcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgIE9wSW5mbyhzdHJ1Y3R1cmVTZXQpLCBPcEluZm8oZGF0YSksIGZpcnN0Q2hpbGQs
CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBm
aXJzdENoaWxkKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX25vZGUtPmNv
bnZlcnRUb0lkZW50aXR5T24ocmVzdWx0Tm9kZSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNCb29sZWFuKHBv
c2l0aW9uICE9IC0xKSk7CisKKyAgICAgICAgICAgIC8vIFdoZXRoZXIgaXQncyBFeGVjIG9yIFRl
c3QsIHdlIG5lZWQgdG8gdGVsbCB0aGUgY29uc3RydWN0b3IgYW5kIFJlZ0V4cE9iamVjdCB3aGF0
J3MgdXAuCisgICAgICAgICAgICBpZiAocG9zaXRpb24gIT0gLTEpIHsKKyAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBmaXJzdENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKTsK
KyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGNvbnN0cnVjdG9yRnJvemVu
VmFsdWUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdD
aGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9y
aWdpbiwgcmVnRXhwRnJvemVuVmFsdWUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShzdHJpbmdOb2RlLCBLbm93bkNl
bGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5k
KAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVz
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVy
KHBvc2l0aW9uKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5k
ZXgsIG9yaWdpbiwganNOdW1iZXIob3ZlY3RvclsxXSksIEtub3duSW50MzJVc2UpKTsKKyAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICBtX25vZGVJbmRleCwgU3BlY05vbmUsIE5vZGU6OlZhckFyZywgUmVjb3JkUmVnRXhwQ2FjaGVk
UmVzdWx0LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbygpLCBPcEluZm8oKSwg
Zmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQp
OworCisgICAgICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocmVnRXhwLT5nbG9i
YWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBTZXRSZWdFeHBP
YmplY3RMYXN0SW5kZXgsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShyZWdFeHBP
YmplY3ROb2RlLCBSZWdFeHBPYmplY3RVc2UpLAorICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
bm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGpzTnVt
YmVyKHBvc2l0aW9uID09IC0xID8gMCA6IG92ZWN0b3JbMV0pLCBVbnR5cGVkVXNlKSk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlk
RXhpdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX25vZGUtPm9yaWdpbiA9IG9y
aWdpbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zODAsNiArNjA2LDExIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGV4
ZWN1dGVJbnNlcnRpb25TZXQoKQorICAgIHsKKyAgICAgICAgbV9ub2RlSW5kZXggPSBtX2luc2Vy
dGlvblNldC5leGVjdXRlKG1fYmxvY2spOworICAgIH0KICAgICAKICAgICBJbnNlcnRpb25TZXQg
bV9pbnNlcnRpb25TZXQ7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3OCw2ICsyNzgsMTggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUpLCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPmRmZ1No
b3VsZFdhdGNoKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAg
ICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1
cmVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHN1cHBvcnRz
IHN0cnVjdHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5LgorICAgICAgICAg
ICAgICAgICAgICAgICAgVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v
ZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkg
PT0gSlNGaW5hbE9iamVjdDo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwg
c3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0FycmF5OjppbmZvKCkpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgY2VydGFpbiBpbmRleGluZyBzaGFwZXMu
CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNBbnlBcnJheVN0
b3JhZ2Uoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgRG91Ymxl
Q29uc3RhbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPmlzTnVtYmVyQ29uc3RhbnQoKSk7CkBA
IC00NjEsMTMgKzQ3Myw0MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlB
cmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAgICAgICAg
ICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgotICAgICAgICAgICAgICAgIGNhc2Ug
TWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNy
ZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAg
ICAgICAgICBjYXNlIEtpbGxTdGFjazoKICAgICAgICAgICAgICAgICBjYXNlIEdldFN0YWNrOgog
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEidW5leHBlY3RlZCBub2RlIHR5
cGUgaW4gQ1BTIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BT
IG9ubHkgYWxsb3dzIGFycmF5IGxlbmd0aHMgdG8gYmUgY29uc3RhbnQuIFRoaXMgY29uc3RyYWlu
dCBvbmx5IGV4aXN0cworICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGhh
dmUgREZHIHN1cHBvcnQgZm9yIGFueXRoaW5nIG1vcmUgYW5kIHdlIGRvbid0IG5lZWQgYW55Cisg
ICAgICAgICAgICAgICAgICAgIC8vIG90aGVyIGtpbmQgb2Ygc3VwcG9ydCBmb3Igbm93LgorICAg
ICAgICAgICAgICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+
b2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSgpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRh
Lm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpOworICAgICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWZWN0b3JM
ZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBl
ZGdlKSwgZWRnZS0+aXNJbnQzMkNvbnN0YW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93
cyBvbmUgc3RydWN0dXJlLgorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5v
ZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKSA9PSAxKTsKKworICAgICAgICAgICAgICAgICAgICAv
LyBDUFMgZGlzYWxsb3dzIGludDMyIGFuZCBkb3VibGUgYXJyYXlzLiBUaG9zZSByZXF1aXJlIHdl
aXJkIHR5cGUgY2hlY2tzIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzaW9ucy4g
VGhleSBhcmUgbm90IG5lZWRlZCBpbiB0aGUgREZHIHJpZ2h0IG5vdy4gV2Ugc2hvdWxkIGFkZCBz
dXBwb3J0CisgICAgICAgICAgICAgICAgICAgIC8vIGZvciB0aGVzZSBpZiB0aGUgREZHIGV2ZXIg
bmVlZHMgaXQuCisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
OiBub2RlLT5zdHJ1Y3R1cmVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCAhaGFzSW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzRG91YmxlKHN0cnVjdHVyZS0+
aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFu
dG9tOgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG1fZ3JhcGgubV9maXhw
b2ludFN0YXRlICE9IEZpeHBvaW50Tm90Q29udmVyZ2VkKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFi
bGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNiArNzcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpTU3ltYm9sVGFibGVPYmplY3Rfc3ltYm9sVGFibGUsIEpTU3ltYm9sVGFibGVPYmplY3Q6
Om9mZnNldE9mU3ltYm9sVGFibGUoKSkgXAogICAgIG1hY3JvKEpTV3JhcHBlck9iamVjdF9pbnRl
cm5hbFZhbHVlLCBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWVPZmZzZXQoKSkgXAogICAg
IG1hY3JvKE1hcmtlZEFsbG9jYXRvcl9mcmVlTGlzdEhlYWQsIE1hcmtlZEFsbG9jYXRvcjo6b2Zm
c2V0T2ZGcmVlTGlzdEhlYWQoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hl
ZFJlc3VsdF9sYXN0UmVnRXhwLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1
bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkpIFwKKyAgICBt
YWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdElucHV0LCBSZWdFeHBDb25z
dHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zm
c2V0T2ZMYXN0SW5wdXQoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJl
c3VsdF9yZXN1bHRfc3RhcnQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3Vs
dCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNF
VE9GKE1hdGNoUmVzdWx0LCBzdGFydCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9j
YWNoZWRSZXN1bHRfcmVzdWx0X2VuZCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVk
UmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIGVuZCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rv
cl9jYWNoZWRSZXN1bHRfcmVpZmllZCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVk
UmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSBcCiAgICAg
bWFjcm8oUmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJ
bmRleCgpKSBcCiAgICAgbWFjcm8oUmVnRXhwT2JqZWN0X2xhc3RJbmRleElzV3JpdGFibGUsIFJl
Z0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXhJc1dyaXRhYmxlKCkpIFwKICAgICBtYWNybyhT
Y29wZWRBcmd1bWVudHNfb3ZlcnJvZGVUaGluZ3MsIFNjb3BlZEFyZ3VtZW50czo6b2Zmc2V0T2ZP
dmVycm9kZVRoaW5ncygpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsy
MjgsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2Fz
ZSBTdHJpbmdSZXBsYWNlOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAg
IGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2Fj
aGVkUmVzdWx0OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShy
ZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzOCw2ICs5MzgsOSBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgICAgIGNvbXBpbGVT
ZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKKyAgICAgICAgICAgIGNvbXBpbGVSZWNvcmRS
ZWdFeHBDYWNoZWRSZXN1bHQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
UGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtMzcxNiwzMiArMzcxOSw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVi
bGljTGVuZ3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAg
ICAgICAgICAgICBtX291dC5zdG9yZTMyKHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBz
LkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
aGFzRG91YmxlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgTEJh
c2ljQmxvY2sgaW5pdExvb3AgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGluaXREb25lID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5j
aG9yKHZlY3Rvckxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2lu
YWxQb2ludGVyID0gbV9vdXQuYW5jaG9yKGJ1dHRlcmZseSk7Ci0gICAgICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIodmVjdG9yTGVu
Z3RoKSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oaW5pdExvb3AsIGluaXREb25lKTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgaW5kZXgg
PSBtX291dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOwotICAgICAgICAgICAgICAg
IExWYWx1ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQb2ludGVy
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KAotICAg
ICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQ
TmFOKSksCi0gICAgICAgICAgICAgICAgICAgIFR5cGVkUG9pbnRlcihtX2hlYXBzLmluZGV4ZWRE
b3VibGVQcm9wZXJ0aWVzLmF0QW55SW5kZXgoKSwgcG9pbnRlcikpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5zdWIoaW5kZXgsIG1f
b3V0LmludDMyT25lKTsKLSAgICAgICAgICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKGlu
ZGV4LCBtX291dC5hbmNob3IobmV4dEluZGV4KSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYWRk
SW5jb21pbmdUb1BoaShwb2ludGVyLCBtX291dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1f
b3V0LmludFB0ckVpZ2h0KSkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAg
ICAgICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKG5leHRJbmRleCksIHVuc3VyZShpbml0TG9v
cCksIHVuc3VyZShpbml0RG9uZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGluaXREb25lLCBpbml0TGFzdE5leHQpOwotICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhtX25vZGUtPmluZGV4aW5nVHlw
ZSgpLCB2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3Iob2JqZWN0KTsKICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTYyODYsMTEgKzYyNjUsMjEgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gTG93ZXIgdGhlIHZhbHVlcyBmaXJzdCwgdG8gYXZvaWQgY3Jl
YXRpbmcgdmFsdWVzIGluc2lkZSBhIGNvbnRyb2wgZmxvdyBkaWFtb25kLgogICAgICAgICAKICAg
ICAgICAgVmVjdG9yPExWYWx1ZSwgOD4gdmFsdWVzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICB2YWx1
ZXMuYXBwZW5kKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKSkp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCAxICsgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEubV9wcm9wZXJ0aWVzW2ld
LmtpbmQoKSkgeworICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAg
ICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQo
bG93SW50MzIoZWRnZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0pTVmFsdWUoZWRnZSkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCA9IG1fbm9kZS0+c3RydWN0dXJlU2V0
KCk7Ci0gICAgICAgIAorCiAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaywgMT4gYmxvY2tzKHNl
dC5zaXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBpLS07KQog
ICAgICAgICAgICAgYmxvY2tzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTYzMTUsMjEgKzYz
MDQsNTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBvYmplY3Q7CiAgICAgICAgICAg
ICBMVmFsdWUgYnV0dGVyZmx5OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0g
SlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgp
KTsKICAgICAgICAgICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9ICZ2bSgpLmhl
YXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOwor
CisgICAgICAgICAgICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGluZGV4aW5nSGVhZGVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4
aW5nUGF5bG9hZFNpemVJbkJ5dGVzID0gbV9vdXQuaW50UHRyWmVybzsKKyAgICAgICAgICAgICAg
ICBMVmFsdWUgdmVjdG9yTGVuZ3RoID0gbV9vdXQuaW50MzJaZXJvOworICAgICAgICAgICAgICAg
IExWYWx1ZSBwdWJsaWNMZW5ndGggPSBtX291dC5pbnQzMlplcm87CisgICAgICAgICAgICAgICAg
aWYgKGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nSGVh
ZGVyU2l6ZSA9IHNpemVvZihJbmRleGluZ0hlYWRlcik7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9
IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChk
ZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQdWJsaWNM
ZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY0xlbmd0aCA9IHZh
bHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZWN0b3JMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nUGF5bG9hZFNp
emVJbkJ5dGVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lm11bChtX291dC56ZXJv
RXh0UHRyKHZlY3Rvckxlbmd0aCksIG1fb3V0LmludFB0ckVpZ2h0KTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBMVmFsdWUgYnV0dGVyZmx5U2l6ZSA9IG1fb3V0LmFkZCgK
KyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBpbmRleGluZ0hlYWRlclNpemUpLAorICAgICAgICAgICAgICAgICAgICBpbmRleGluZ1BheWxv
YWRTaXplSW5CeXRlcyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTEJhc2lj
QmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdC
bG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IExWYWx1ZSBlbmRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUJhc2ljU3RvcmFnZUFuZEdldEVuZCgKLSAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpKSwKLSAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGgpOwotICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIExWYWx1ZSBlbmRPZlN0b3Jh
Z2UgPSBhbGxvY2F0ZUJhc2ljU3RvcmFnZUFuZEdldEVuZChidXR0ZXJmbHlTaXplLCBzbG93UGF0
aCk7CisKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRlcmZseVZhbHVlID0gbV9vdXQu
YWRkKAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhp
bmdIZWFkZXIpKSwgZW5kT2ZTdG9yYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3Vi
KGVuZE9mU3RvcmFnZSwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpLAorICAgICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhpbmdIZWFkZXIpIC0gaW5kZXhp
bmdIZWFkZXJTaXplKSk7CisKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHZlY3Rvckxl
bmd0aCwgZmFzdEJ1dHRlcmZseVZhbHVlLCBtX2hlYXBzLkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0T2JqZWN0VmFs
dWUgPSBhbGxvY2F0ZU9iamVjdCgKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQ
dHIoYWxsb2NhdG9yKSwgc3RydWN0dXJlLCBmYXN0QnV0dGVyZmx5VmFsdWUsIHNsb3dQYXRoKTsK
QEAgLTYzNDAsMTIgKzYzNTksMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKIAotICAg
ICAgICAgICAgICAgIExWYWx1ZSBzbG93T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCi0gICAg
ICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAt
PiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGly
ZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICBMVmFsdWUgc2xvd09iamVjdFZhbHVlOworICAgICAgICAgICAgICAgIGlmIChoYXNJ
bmRleGluZ0hlYWRlcikgeworICAgICAgICAgICAgICAgICAgICBzbG93T2JqZWN0VmFsdWUgPSBs
YXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxM
b2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJh
dG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RX
aXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd09iamVjdFZhbHVlID0gbGF6
eVNsb3dQYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9j
YXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRv
cigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0
aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd09iamVjdCA9IG1fb3V0LmFuY2hvcihzbG93T2JqZWN0
VmFsdWUpOwogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dCdXR0ZXJmbHkgPSBt
X291dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoc2xvd09iamVj
dFZhbHVlLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRlcmZseSkpOwpAQCAtNjM1Niw2ICs2Mzg3LDEx
MyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG9iamVjdCA9
IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RPYmplY3QsIHNsb3dPYmplY3QpOwogICAgICAg
ICAgICAgICAgIGJ1dHRlcmZseSA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RCdXR0ZXJm
bHksIHNsb3dCdXR0ZXJmbHkpOworCisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihwdWJs
aWNMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKKwor
ICAgICAgICAgICAgICAgIGluaXRpYWxpemVBcnJheUVsZW1lbnRzKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCksIHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5KTsKKworICAgICAgICAgICAgICAgIEhh
c2hNYXA8CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QsIExWYWx1ZSwgRGVmYXVsdEhhc2g8
aW50MzJfdD46Okhhc2gsCisgICAgICAgICAgICAgICAgICAgIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8aW50MzJfdD4+IGluZGV4TWFwOworICAgICAgICAgICAgICAgIFZlY3Rv
cjxpbnQzMl90PiBpbmRpY2VzOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRh
dGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICBQcm9t
b3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07
CisgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmtpbmQoKSAhPSBJbmRleGVkUHJv
cGVydHlQTG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQzMl90PihkZXNjcmlwdG9y
LmluZm8oKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IGluZGV4TWFwLmFkZChpbmRleCwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIHJlc3VsdCk7IC8vIER1cGxpY2F0ZXMg
YXJlIGlsbGVnYWwuCisKKyAgICAgICAgICAgICAgICAgICAgaW5kaWNlcy5hcHBlbmQoaW5kZXgp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghaW5kaWNlcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzb3J0KGluZGljZXMuYmVnaW4oKSwg
aW5kaWNlcy5lbmQoKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBWZWN0b3I8TEJhc2ljQmxvY2s+IGJsb2Nrc1dpdGhTdG9yZXMoaW5kaWNlcy5zaXplKCkpOwor
ICAgICAgICAgICAgICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2s+IGJsb2Nrc1dpdGhDaGVja3Mo
aW5kaWNlcy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gaW5kaWNlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2Nrc1dpdGhTdG9yZXNbaV0gPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYmxvY2tzV2l0aENoZWNrc1tpXSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7IC8vIGJsb2Nrc1dpdGhDaGVja3NbMF0gaXMgdGhlIGNvbnRpbnVhdGlvbi4KKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluZGV4TGFz
dE5leHQgPSBtX291dC5tX25leHRCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGluZGV4ID0gaW5kaWNlc1tpXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGluZGV4TWFwLmdldChpbmRleCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJy
YW5jaCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5iZWxvdyhtX291dC5jb25z
dEludDMyKGluZGV4KSwgcHVibGljTGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnN1cmUoYmxvY2tzV2l0aFN0b3Jlc1tpXSksIHVuc3VyZShibG9ja3NXaXRoQ2hlY2tzW2ld
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1dpdGhT
dG9yZXNbaV0sIGJsb2Nrc1dpdGhDaGVja3NbaV0pOworCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGhhcyB0byB0eXBlLWNoZWNrIGFuZCBjb252ZXJ0IGl0cyBpbnB1dHMsIGJ1dCBp
dCBjYW5ub3QgZG8gc28gaW4gYQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2F5IHRoYXQg
dXBkYXRlcyBBSS4gVGhhdCdzIGEgYml0IGFubm95aW5nLCBidXQgaWYgeW91IHRoaW5rIGFib3V0
IGhvdworICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lua2luZyB3b3JrcywgaXQncyBhY3R1
YWxseSBub3QgYSBiYWQgdGhpbmcuIFdlIGFyZSB2aXJ0dWFsbHkgZ3VhcmFudGVlZAorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGVzZSB0eXBlIGNoZWNrcyB3aWxsIG5vdCBmYWls
LCBzaW5jZSB0aGUgdHlwZSBjaGVja3MgdGhhdCBndWFyZGVkCisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB0aGUgb3JpZ2luYWwgc3RvcmVzIHRvIHRoZSBhcnJheSBhcmUgc3RpbGwgc29tZXdo
ZXJlIGFib3ZlIHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6OlN0
b3JlVHlwZSBzdG9yZVR5cGU7CisgICAgICAgICAgICAgICAgICAgICAgICBJbmRleGVkQWJzdHJh
Y3RIZWFwKiBoZWFwOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9JTlQz
Ml9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBjb3VsZCB1c2UgdGhlIHByb3ZlbiB0eXBlIGlmIHdlIGhhZCB0aGUgRWRnZSBmb3IgdGhl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzcGVjdWxhdGUoQmFkVHlwZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBpc05vdEludDMyKHZhbHVl
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9y
ZTY0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRleGVk
SW50MzJQcm9wZXJ0aWVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSWYgdGhlIHNvdXJjZSBpcyBW
YWx1ZVJlcCwgd2Ugc2hvdWxkIGF2b2lkIGVtaXR0aW5nIGFueQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNoZWNrcy4gV2UgY291bGQgYWxzbyBhdm9pZCBlbWl0dGluZyBjaGVja3Mg
aWYgd2UgaGFkIHRoZSBFZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhp
cyB2YWx1ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTMxMQor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW50Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgZG91
YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHZhbHVlKSwgdW5zdXJlKGlu
dENhc2UpLCB1bnN1cmUoZG91YmxlQ2FzZSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbnRDYXNlLCBkb3VibGVD
YXNlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGludFJl
c3VsdCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFuY2hvcihtX291
dC5pbnRUb0RvdWJsZSh1bmJveEludDMyKHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwgbm9WYWx1ZSgpLCBudWxs
cHRyLCBpc051bWJlcih2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGRvdWJsZVJlc3VsdCA9IG1fb3V0LmFuY2hvcih1bmJveERvdWJsZSh2YWx1ZSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbV9vdXQu
cGhpKERvdWJsZSwgaW50UmVzdWx0LCBkb3VibGVSZXN1bHQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmVEb3VibGU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVY
SU5HX1RZUEVTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1
dDo6U3RvcmU2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMu
aW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJJbnZhbGlkIGluZGV4
aW5nIHR5cGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuc3RvcmUodmFsdWUsIG1fb3V0LmFkZHJlc3MoYnV0dGVyZmx5LCBo
ZWFwLT5hdChpbmRleCkpLCBzdG9yZVR5cGUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBt
X291dC5qdW1wKGJsb2Nrc1dpdGhDaGVja3NbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzV2l0aENo
ZWNrc1tpXSwgaSA/IGJsb2Nrc1dpdGhTdG9yZXNbaSAtIDFdIDogaW5kZXhMYXN0TmV4dCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIC8vIEluIHRoZSBlYXN5IGNhc2Ugd2hlcmUgd2UgY2FuIGRv
IGEgb25lLXNob3QgYWxsb2NhdGlvbiwgd2Ugc2ltcGx5IGFsbG9jYXRlIHRoZQogICAgICAgICAg
ICAgICAgIC8vIG9iamVjdCB0byBkaXJlY3RseSBoYXZlIHRoZSBkZXNpcmVkIHN0cnVjdHVyZS4K
QEAgLTYzNjUsMTIgKzY1MDMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZm9yIChQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVz
Q29uY3VycmVudGx5KCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRh
Lm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICAgICAgUGhhbnRv
bVByb3BlcnR5VmFsdWUgdmFsdWUgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguaWRlbnRpZmllcnMoKVt2YWx1ZS5tX2lkZW50aWZpZXJOdW1i
ZXJdICE9IGVudHJ5LmtleSkKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAg
ICAgICAgICBpZiAoZGVzY3JpcHRvci5raW5kKCkgIT0gTmFtZWRQcm9wZXJ0eVBMb2MpCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGguaWRlbnRpZmllcnMoKVtkZXNjcmlwdG9yLmluZm8oKV0gIT0gZW50cnkua2V5KQogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGlzSW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNl
dCkgPyBvYmplY3QgOiBidXR0ZXJmbHk7Ci0gICAgICAgICAgICAgICAgICAgIHN0b3JlUHJvcGVy
dHkodmFsdWVzW2ldLCBiYXNlLCB2YWx1ZS5tX2lkZW50aWZpZXJOdW1iZXIsIGVudHJ5Lm9mZnNl
dCk7CisgICAgICAgICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkodmFsdWVzW2ldLCBiYXNlLCBk
ZXNjcmlwdG9yLmluZm8oKSwgZW50cnkub2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNjQzNSw5ICs2NTc1LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBhY3RpdmF0aW9uID0gbV9vdXQucGhpKG1fb3V0
LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKSA9PSB0YWJsZS0+c2NvcGVTaXplKCkpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWVzW2ldLAotICAgICAgICAgICAgICAg
IGFjdGl2YXRpb24sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3Jk
X3ZhcmlhYmxlc1tkYXRhLm1fcHJvcGVydGllc1tpXS5tX2lkZW50aWZpZXJOdW1iZXJdKTsKKyAg
ICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1f
cHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9PSBD
bG9zdXJlVmFyUExvYyk7CisgICAgICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAg
ICAgIHZhbHVlc1tpXSwgYWN0aXZhdGlvbiwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLkpTRW52
aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzW2Rlc2NyaXB0b3IuaW5mbygpXSk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewpAQCAtNjQ0Niw3ICs2NTg4LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKGxv
Y2tlciksIGVuZCA9IHRhYmxlLT5lbmQobG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewog
ICAgICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkg
PT0gZGF0YS5tX3Byb3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1f
cHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRlc2NyaXB0b3Iua2lu
ZCgpID09IENsb3N1cmVWYXJQTG9jKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZh
bHVlLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgPT0gZGVzY3JpcHRvci5pbmZvKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC02NjEzLDYgKzY3NTcsMjkgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgcmVnRXhwLCBtX2hlYXBzLlJlZ0V4
cE9iamVjdF9sYXN0SW5kZXgpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZVJlY29yZFJlZ0V4
cENhY2hlZFJlc3VsdCgpCisgICAgeworICAgICAgICBFZGdlIGNvbnN0cnVjdG9yRWRnZSA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKTsKKyAgICAgICAgRWRnZSByZWdFeHBFZGdlID0g
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpOworICAgICAgICBFZGdlIHN0cmluZ0VkZ2Ug
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMik7CisgICAgICAgIEVkZ2Ugc3RhcnRFZGdl
ID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpOworICAgICAgICBFZGdlIGVuZEVkZ2Ug
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgNCk7CisgICAgICAgIAorICAgICAgICBMVmFs
dWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKGNvbnN0cnVjdG9yRWRnZSk7CisgICAgICAgIExWYWx1
ZSByZWdFeHAgPSBsb3dDZWxsKHJlZ0V4cEVkZ2UpOworICAgICAgICBMVmFsdWUgc3RyaW5nID0g
bG93Q2VsbChzdHJpbmdFZGdlKTsKKyAgICAgICAgTFZhbHVlIHN0YXJ0ID0gbG93SW50MzIoc3Rh
cnRFZGdlKTsKKyAgICAgICAgTFZhbHVlIGVuZCA9IGxvd0ludDMyKGVuZEVkZ2UpOworCisgICAg
ICAgIG1fb3V0LnN0b3JlUHRyKHJlZ0V4cCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29u
c3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RSZWdFeHApOworICAgICAgICBtX291dC5zdG9yZVB0
cihzdHJpbmcsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJl
c3VsdF9sYXN0SW5wdXQpOworICAgICAgICBtX291dC5zdG9yZTMyKHN0YXJ0LCBjb25zdHJ1Y3Rv
ciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0KTsK
KyAgICAgICAgbV9vdXQuc3RvcmUzMihlbmQsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENv
bnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZXN1bHRfZW5kKTsKKyAgICAgICAgbV9vdXQuc3RvcmUz
MkFzOCgKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoMCksCisgICAgICAgICAgICBtX291
dC5hZGRyZXNzKGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJl
c3VsdF9yZWlmaWVkKSk7CisgICAgfQorCiAgICAgTFZhbHVlIGRpZE92ZXJmbG93U3RhY2soKQog
ICAgIHsKICAgICAgICAgLy8gVGhpcyBkb2VzIGEgdmVyeSBzaW1wbGUgbGVhZiBmdW5jdGlvbiBh
bmFseXNpcy4gVGhlIGludmFyaWFudCBvZiBGVEwgY2FsbApAQCAtNjk3MCw2ICs3MTM3LDM5IEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKworICAg
IHZvaWQgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMoSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwg
TFZhbHVlIHZlY3Rvckxlbmd0aCwgTFZhbHVlIGJ1dHRlcmZseSkKKyAgICB7CisgICAgICAgIGlm
ICghaGFzRG91YmxlKGluZGV4aW5nVHlwZSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBHQyBhbHJl
YWR5IGluaXRpYWxpemVkIGV2ZXJ5dGhpbmcgdG8gSlNWYWx1ZSgpIGZvciB1cy4KKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERvdWJsZXMgbXVzdCBiZSBpbml0
aWFsaXplZCB0byBQTmFOLgorICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGluaXREb25lID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291
dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxQ
b2ludGVyID0gbV9vdXQuYW5jaG9yKGJ1dHRlcmZseSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgK
KyAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExv
b3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKKyAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGlu
aXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7CisgICAgICAg
IExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgb3JpZ2luYWxJbmRleCk7Cisg
ICAgICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQ
b2ludGVyKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICBt
X291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksCisgICAgICAgICAg
ICBUeXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFueUluZGV4
KCksIHBvaW50ZXIpKTsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291
dC5zdWIoaW5kZXgsIG1fb3V0LmludDMyT25lKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdU
b1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRleCkpOworICAgICAgICBtX291dC5hZGRJ
bmNvbWluZ1RvUGhpKHBvaW50ZXIsIG1fb3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRlciwgbV9v
dXQuaW50UHRyRWlnaHQpKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1f
b3V0Lm5vdFplcm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERv
bmUpKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGluaXREb25lLCBpbml0TGFz
dE5leHQpOworICAgIH0KICAgICAKICAgICBMVmFsdWUgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uo
TFZhbHVlIG9iamVjdCwgU3RydWN0dXJlKiBwcmV2aW91c1N0cnVjdHVyZSkKICAgICB7CkBAIC05
MjU3LDcgKzk0NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAg
ICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25aZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVy
KTsKICAgICB9Ci0gICAgCisKICAgICBMVmFsdWUgdW5ib3hEb3VibGUoTFZhbHVlIGpzVmFsdWUp
CiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuYml0Q2FzdChtX291dC5hZGQoanNWYWx1ZSwg
bV90YWdUeXBlTnVtYmVyKSwgbV9vdXQuZG91YmxlVHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDE5ICs0MSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzo6REZHOwogCi1leHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgCi0gICAgQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKLSAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIEluZGV4aW5nSGVhZGVyKCksIDAp
OwotICAgIAotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwotICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVu
c3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQogZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVP
YmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxp
emF0aW9uKiBtYXRlcmlhbGl6YXRpb24sCiAgICAgRW5jb2RlZEpTVmFsdWUqIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUqIHZhbHVlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBA
QCBjbGFzcyBMYXp5U2xvd1BhdGg7CiAKIGV4dGVybiAiQyIgewogCi1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqKSBXVEZfSU5URVJOQUw7Ci0KIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRl
cmlhbGl6ZU9iamVjdEluT1NSKAogICAgIEV4ZWNTdGF0ZSosIEV4aXRUaW1lT2JqZWN0TWF0ZXJp
YWxpemF0aW9uKiwgRW5jb2RlZEpTVmFsdWUqKSBXVEZfSU5URVJOQUw7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTk3OTgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtOTYsNiArOTYsMTAgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCisgICAgLy8gVGhpcyBpcyBhIHN1cGVyIGRh
bmdlcm91cyBtZXRob2QgZm9yIEpJVHMuIFNvbWV0aW1lcyB0aGUgSklUcyB3aWxsIHdhbnQgdG8g
Y3JlYXRlIGVpdGhlciBhCisgICAgLy8gSlNGaW5hbE9iamVjdCBvciBhIEpTQXJyYXkuIFRoaXMg
aXMgdGhlIG1ldGhvZCB0aGF0IHdpbGwgZG8gdGhhdC4KKyAgICBzdGF0aWMgSlNPYmplY3QqIGNy
ZWF0ZVJhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0
ZXJmbHkqID0gbnVsbHB0cik7CisKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgc2l6ZV90
IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGNvcHlCYWNraW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3Im
LCBDb3B5VG9rZW4pOwpAQCAtMTAzNCw2ICsxMDM4LDIwIEBAIHByaXZhdGU6CiAKIEpTX0VYUE9S
VF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJpdmF0ZUZ1bmNJ
bnN0YW5jZU9mKEV4ZWNTdGF0ZSopOwogCitpbmxpbmUgSlNPYmplY3QqIEpTT2JqZWN0OjpjcmVh
dGVSYXdPYmplY3QoCisgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QnV0dGVyZmx5KiBidXR0ZXJmbHkpCit7CisgICAgSlNPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3
ICgKKyAgICAgICAgTm90TnVsbCwgCisgICAgICAgIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsT2JqZWN0
PigKKyAgICAgICAgICAgICpleGVjLT5oZWFwKCksCisgICAgICAgICAgICBKU0ZpbmFsT2JqZWN0
OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpCisgICAgICAgICkK
KyAgICApIEpTT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICBm
aW5hbE9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgcmV0dXJuIGZpbmFs
T2JqZWN0OworfQorCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRl
KAogICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSog
YnV0dGVyZmx5KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
Y3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsNiArMjYyLDggQEAgUmVnRXhwKiBSZWdF
eHA6OmNyZWF0ZShWTSYgdm0sIGNvbnN0IFN0cgogCiB2b2lkIFJlZ0V4cDo6Y29tcGlsZShWTSog
dm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKKyAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4o
bV9wYXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiAgICAgaWYg
KG1fY29uc3RydWN0aW9uRXJyb3IpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTI5OSw4ICszMDEsMjIgQEAgaW50IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25z
dCBTdHJpbmcmIAogICAgIHJldHVybiBtYXRjaElubGluZSh2bSwgcywgc3RhcnRPZmZzZXQsIG92
ZWN0b3IpOwogfQogCitib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoCisgICAgVk0mIHZt
LCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBW
ZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKworICAgIGlmICghaGFzQ29kZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hh
cjggOiBZYXJyOjpDaGFyMTYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwb3NpdGlv
biA9IG1hdGNoKHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWFycjo6WWFyckNo
YXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcs
IG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25F
cnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzQwLDYg
KzM1Niw4IEBAIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCAKIAogdm9p
ZCBSZWdFeHA6OmRlbGV0ZUNvZGUoKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgCiAgICAgaWYgKCFoYXNDb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX3N0YXRlID0gTm90Q29tcGlsZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYg
UmVnRXhwX2gKICNkZWZpbmUgUmVnRXhwX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2Nr
LmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hdGNoUmVz
dWx0LmgiCiAjaW5jbHVkZSAiUmVnRXhwS2V5LmgiCkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0lnbm9y
ZUNhc2U7IH0KICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBG
bGFnTXVsdGlsaW5lOyB9CiAgICAgYm9vbCBzdGlja3koKSBjb25zdCB7IHJldHVybiBtX2ZsYWdz
ICYgRmxhZ1N0aWNreTsgfQorICAgIGJvb2wgZ2xvYmFsT3JTdGlja3koKSBjb25zdCB7IHJldHVy
biBnbG9iYWwoKSB8fCBzdGlja3koKTsgfQogICAgIGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmxhZ3MgJiBGbGFnVW5pY29kZTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBwYXR0ZXJu
KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CkBAIC02NCw2ICs2NiwxMCBAQCBw
dWJsaWM6CiAgICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9j
b25zdHJ1Y3Rpb25FcnJvcjsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IG1hdGNoKFZN
JiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYg
b3ZlY3Rvcik7CisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIGNvdWxkbid0IHJ1biB0aGUg
cmVndWxhciBleHByZXNzaW9uIGZvciBhbnkgcmVhc29uLgorICAgIGJvb2wgbWF0Y2hDb25jdXJy
ZW50bHkoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50JiBwb3Np
dGlvbiwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsKKyAgICAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBNYXRjaFJlc3VsdCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0KTsKIAogICAgIC8vIENhbGwgdGhlc2UgdmVyc2lvbnMgb2YgdGhlIG1hdGNoIGZ1bmN0
aW9ucyBpZiB5b3UncmUgZGVzcGVyYXRlIGZvciBwZXJmb3JtYW5jZS4KQEAgLTc3LDYgKzgzLDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdGF0ZSAhPSBOb3RDb21waWxlZDsKICAgICB9
CiAKKyAgICBib29sIGhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsKKwogICAgIHZvaWQg
ZGVsZXRlQ29kZSgpOwogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtMTMyLDYgKzE0
MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ydE1hdGNoQ2FsbENvdW50OwogICAgIHVu
c2lnbmVkIG1fcnRNYXRjaEZvdW5kQ291bnQ7CiAjZW5kaWYKKyAgICBDb25jdXJyZW50SklUTG9j
ayBtX2xvY2s7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgWWFycjo6WWFyckNvZGVCbG9j
ayBtX3JlZ0V4cEpJVENvZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDYWNoZWRSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDYgKzc0LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYpOwogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RSZWdFeHAo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX2xhc3RSZWdF
eHApOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RJbnB1dCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fbGFzdElucHV0KTsgfQorICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZXN1bHQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX3Jlc3VsdCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mUmVpZmllZCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRS
ZXN1bHQsIG1fcmVpZmllZCk7IH0KKwogcHJpdmF0ZToKICAgICBNYXRjaFJlc3VsdCBtX3Jlc3Vs
dDsKICAgICBib29sIG1fcmVpZmllZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mQ2FjaGVkUmVzdWx0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENvbnN0
cnVjdG9yLCBtX2NhY2hlZFJlc3VsdCk7IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBSZWdFeHBQcm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXMpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5o
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDIwICs2NywyNyBAQCBwcml2YXRlOgog
fTsKICNlbmRpZiAvLyBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOCiAKLUFMV0FZU19JTkxJTkUg
dm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6
ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc0NvZGVGb3IoWWFycjo6
WWFyckNoYXJTaXplIGNoYXJTaXplKQogewogICAgIGlmIChoYXNDb2RlKCkpIHsKICNpZiBFTkFC
TEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6
ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZSgpKSkKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAo
KGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENv
ZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNl
bHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21w
aWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit7Cisg
ICAgaWYgKGhhc0NvZGVGb3IoY2hhclNpemUpKQorICAgICAgICByZXR1cm47CiAKICAgICBjb21w
aWxlKCZ2bSwgY2hhclNpemUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVn
RXhwTWF0Y2gKICAgICAKICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CiAg
ICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGluZSh2bSwgaW5wdXRWYWx1ZSwgc3Rh
cnRPZmZzZXQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICBBU1NFUlQocG9zaXRpb24gPT0gc3Vi
cGF0dGVyblJlc3VsdHNbMF0pOwogICAgIGlmIChwb3NpdGlvbiA9PSAtMSkgewogICAgICAgICBy
ZXN1bHQgPSBNYXRjaFJlc3VsdDo6ZmFpbGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dElubGluZXMuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3
IEBAIEpTVmFsdWUgUmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKEV4ZWNTdGEKICAgICBTdHJpbmcg
aW5wdXQgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOyAvLyBGSVhNRTogSGFuZGxlIGVycm9ycy4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTE0NQogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGJvb2wgZ2xvYmFsT3JTdGlja3kgPSByZWdFeHAt
Pmdsb2JhbCgpIHx8IHJlZ0V4cC0+c3RpY2t5KCk7CisgICAgYm9vbCBnbG9iYWxPclN0aWNreSA9
IHJlZ0V4cC0+Z2xvYmFsT3JTdGlja3koKTsKIAogICAgIHVuc2lnbmVkIGxhc3RJbmRleDsKICAg
ICBpZiAoZ2xvYmFsT3JTdGlja3kpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
OSBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiAvKGYpKG8pKG8pLy5leGVjKCJmb28i
KTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlmIChyZXN1bHQubGVuZ3RoICE9IDQp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAo
cmVzdWx0WzBdICE9ICJmb28iKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIg
KyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFsxXSAhPSAiZiIpCisgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzJdICE9ICJvIikKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1
bHRbM10gIT0gIm8iKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9JbnNlcnRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9JbnNlcnRpb24uaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL1dU
Ri93dGYvSW5zZXJ0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsMTQgKzU1LDE1
IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXRWZWN0b3JUeXBlLCB0
eXBlbmFtZSBJbnNlcnRpb25WZWN0b3JUeXBlPgotdm9pZCBleGVjdXRlSW5zZXJ0aW9ucyhUYXJn
ZXRWZWN0b3JUeXBlJiB0YXJnZXQsIEluc2VydGlvblZlY3RvclR5cGUmIGluc2VydGlvbnMpCitz
aXplX3QgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlwZSYgdGFyZ2V0LCBJbnNlcnRp
b25WZWN0b3JUeXBlJiBpbnNlcnRpb25zKQogewotICAgIGlmICghaW5zZXJ0aW9ucy5zaXplKCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQuZ3Jvdyh0YXJnZXQuc2l6ZSgpICsgaW5zZXJ0
aW9ucy5zaXplKCkpOworICAgIHNpemVfdCBudW1JbnNlcnRpb25zID0gaW5zZXJ0aW9ucy5zaXpl
KCk7CisgICAgaWYgKCFudW1JbnNlcnRpb25zKQorICAgICAgICByZXR1cm4gMDsKKyAgICB0YXJn
ZXQuZ3Jvdyh0YXJnZXQuc2l6ZSgpICsgbnVtSW5zZXJ0aW9ucyk7CiAgICAgc2l6ZV90IGxhc3RJ
bmRleCA9IHRhcmdldC5zaXplKCk7CiAgICAgc2l6ZV90IG9yaWdpbmFsVGFyZ2V0U2l6ZSA9IHRh
cmdldC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaW5kZXhJbkluc2VydGlvbnMgPSBpbnNlcnRp
b25zLnNpemUoKTsgaW5kZXhJbkluc2VydGlvbnMtLTspIHsKKyAgICBmb3IgKHNpemVfdCBpbmRl
eEluSW5zZXJ0aW9ucyA9IG51bUluc2VydGlvbnM7IGluZGV4SW5JbnNlcnRpb25zLS07KSB7CiAg
ICAgICAgIEFTU0VSVCghaW5kZXhJbkluc2VydGlvbnMgfHwgaW5zZXJ0aW9uc1tpbmRleEluSW5z
ZXJ0aW9uc10uaW5kZXgoKSA+PSBpbnNlcnRpb25zW2luZGV4SW5JbnNlcnRpb25zIC0gMV0uaW5k
ZXgoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob3JpZ2luYWxUYXJnZXRTaXplLCBpbnNlcnRp
b25zW2luZGV4SW5JbnNlcnRpb25zXS5pbmRleCgpIDwgb3JpZ2luYWxUYXJnZXRTaXplKTsKICAg
ICAgICAgc2l6ZV90IGZpcnN0SW5kZXggPSBpbnNlcnRpb25zW2luZGV4SW5JbnNlcnRpb25zXS5p
bmRleCgpICsgaW5kZXhJbkluc2VydGlvbnM7CkBAIC03Myw2ICs3NCw3IEBAIHZvaWQgZXhlY3V0
ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlwZSYKICAgICAgICAgbGFzdEluZGV4ID0gZmlyc3RJ
bmRleDsKICAgICB9CiAgICAgaW5zZXJ0aW9ucy5yZXNpemUoMCk7CisgICAgcmV0dXJuIG51bUlu
c2VydGlvbnM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdl
eHAtZXhlYy1mb2xkaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3Mt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4
cC1leGVjLWZvbGRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRp
bmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgL2Zvby8uZXhlYygiZm9vIik7Cit9
KSgpOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273673</attachid>
            <date>2016-03-10 19:58:05 -0800</date>
            <delta_ts>2016-03-10 20:22:31 -0800</delta_ts>
            <desc>more tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>101004</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc5ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2
MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3
QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAv
KiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5l
cy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEw
QkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBD
NzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhG
NjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGgg
PSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMz
NUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAogCQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJC
MkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovLAogCQkJCUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOEND
MDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBG
RDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYg
Kzc0NDgsNyBAQAogCQkJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEg
LyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFp
bmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTk1Miw2ICsxOTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogog
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MjMsNiArOTIzLDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAg
ICAgICAgIGRlZihIZWFwTG9jYXRpb24oUmVnRXhwT2JqZWN0TGFzdEluZGV4TG9jLCBSZWdFeHBP
YmplY3RfbGFzdEluZGV4LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hl
ZFJlc3VsdDoKKyAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czogewogICAgICAgICBBYnN0cmFjdEhl
YXAgaGVhcChEaXJlY3RBcmd1bWVudHNQcm9wZXJ0aWVzLCBub2RlLT5jYXB0dXJlZEFyZ3VtZW50
c09mZnNldCgpLm9mZnNldCgpKTsKQEAgLTEwODYsNyArMTA5MCw5IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMygp
LnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJlYWQoUmVnRXhwU3RhdGUp
OworICAgICAgICAgICAgcmVhZChSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAg
IHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0
SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJlYWQoV29y
bGQpOwpAQCAtMTA5OCw3ICsxMTA0LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJl
Z0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09
IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAgICAgICAg
ICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUoUmVnRXhw
U3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNyw2ICsxMTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0
R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9u
IDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMDAsNiArMTMwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgU3RvcmVCYXJyaWVyOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoK
ICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGp1c3Qgbm9k
ZXMgdGhhdCB3ZSBkb24ndCBjdXJyZW50bHkgZXhwZWN0IHRvIHNlZSBkdXJpbmcgZml4dXAuCiAg
ICAgICAgICAgICAvLyBJZiB3ZSBldmVyIHdhbnRlZCB0byBpbnNlcnQgdGhlbSBwcmlvciB0byBm
aXh1cCwgdGhlbiB3ZSBqdXN0IGhhdmUgdG8gY3JlYXRlCiAgICAgICAgICAgICAvLyBmaXh1cCBy
dWxlcyBmb3IgdGhlbS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1LDYgKzMxNSw4IEBAIHZvaWQgR3JhcGg6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgICAgIG91dC5wcmludChhbm90aGVyQ29t
bWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KGZyZWV6ZShtX2NvZGVCbG9jay0+Y29uc3RhbnRCdWZm
ZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKVtpXSksIGNvbnRleHQpKTsKICAgICAgICAgb3V0LnBy
aW50KCJdIik7CiAgICAgfQorICAgIGlmIChub2RlLT5oYXNMYXp5SlNWYWx1ZSgpKQorICAgICAg
ICBvdXQucHJpbnQoY29tbWEsIG5vZGUtPmxhenlKU1ZhbHVlKCkpOwogICAgIGlmIChub2RlLT5o
YXNJbmRleGluZ1R5cGUoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBJbmRleGluZ1R5cGVE
dW1wKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgaWYgKG5vZGUtPmhhc1R5cGVkQXJyYXlU
eXBlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25T
ZXQuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1LDkgQEAgdm9pZCBJ
bnNlcnRpb25TZXQ6Omluc2VydFNsb3coY29uc3QgSW5zZQogICAgIG1faW5zZXJ0aW9ucy5pbnNl
cnQoMCwgaW5zZXJ0aW9uKTsKIH0KIAotdm9pZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNC
bG9jayogYmxvY2spCitzaXplX3QgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJs
b2NrKQogewotICAgIGV4ZWN1dGVJbnNlcnRpb25zKCpibG9jaywgbV9pbnNlcnRpb25zKTsKKyAg
ICByZXR1cm4gZXhlY3V0ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2VydGlvbnMpOwogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsx
MjksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spOworICAgIHNpemVfdCBleGVjdXRlKEJh
c2ljQmxvY2sqIGJsb2NrKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluc2VydFNsb3coY29uc3Qg
SW5zZXJ0aW9uJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCiAj
aW5jbHVkZSAiREZHTm9kZVR5cGUuaCIKICNpbmNsdWRlICJERkdPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCiAjaW5jbHVkZSAiREZHVHJhbnNpdGlv
bi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vz
c0RhdGEuaCIKQEAgLTIxOSwyMCArMjIwLDYgQEAgc3RydWN0IFN0YWNrQWNjZXNzRGF0YSB7CiAg
ICAgRmx1c2hlZEF0IGZsdXNoZWRBdCgpIHsgcmV0dXJuIEZsdXNoZWRBdChmb3JtYXQsIG1hY2hp
bmVMb2NhbCk7IH0KIH07CiAKLS8vIFRoaXMgdHlwZSB1c2VkIGluIHBhc3NpbmcgYW4gaW1tZWRp
YXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7Ci0vLyBkaXN0aW5ndWlzaGVzIGFuIGlt
bWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxvY2sgZGF0YSBz
dHJ1Y3R1cmUgLSAKLS8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBpZGVudGlmaWVy
KSBmcm9tIGEgTm9kZSouCi1zdHJ1Y3QgT3BJbmZvIHsKLSAgICBPcEluZm8oKSA6IG1fdmFsdWUo
MCkgeyB9Ci0gICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAgZXhwbGljaXQgT3BJbmZvKHVpbnQz
Ml90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQot
I2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKLSAgICBleHBsaWNpdCBPcEluZm8oc2l6
ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQot
I2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAgdWludHB0cl90IG1fdmFsdWU7
Ci19OwotCiAvLyA9PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUg
b3BlcmF0aW9uIGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw2ICsyMjQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVmFySW5qZWN0
aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldFJlZ0V4cE9i
amVjdExhc3RJbmRleCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2V0UmVnRXhwT2JqZWN0
TGFzdEluZGV4LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUmVjb3JkUmVnRXhwQ2Fj
aGVkUmVzdWx0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNy
byhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja05vdEVtcHR5
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tCYWRDZWxsLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzk4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzQsNyArMTk3NCw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOiB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRv
bVByb3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGEubV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2Jv
dHRvbSk7CkBAIC0yMDI0LDcgKzIwMjQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Y2FzZSBDbG9zdXJlVmFyUExvYzogewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobG9jYXRp
b24uYmFzZSgpID09IGFsbG9jYXRpb24uaWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Qcm9wZXJ0eVZhbHVlKGxvY2F0aW9u
LmluZm8oKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQo
bG9jYXRpb24uZGVzY3JpcHRvcigpKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUg
PSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3Np
bmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ib3R0b20pOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwzMiAr
MzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIFBoYW50
b21Qcm9wZXJ0eVZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0
LnByaW50KCJpZCIsIG1faWRlbnRpZmllck51bWJlcik7Ci19Ci0KIHZvaWQgT2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91dC5w
cmludCgiWyIsIGxpc3REdW1wKG1fcHJvcGVydGllcyksICJdIik7CiB9CiAKLWZsb2F0IE9iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGE6Om9uZVdheVNpbWlsYXJpdHlTY29yZSgKLSAgICBjb25zdCBP
YmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBu
dW1IaXRzID0gMDsKLSAgICBmb3IgKFBoYW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVlIDogbV9wcm9w
ZXJ0aWVzKSB7Ci0gICAgICAgIGlmIChvdGhlci5tX3Byb3BlcnRpZXMuY29udGFpbnModmFsdWUp
KQotICAgICAgICAgICAgbnVtSGl0cysrOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KG51bUhpdHMpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fcHJvcGVydGllcy5zaXplKCkp
OwotfQotCi1mbG9hdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpzaW1pbGFyaXR5U2NvcmUo
Y29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIHN0ZDo6bWluKG9uZVdheVNpbWlsYXJpdHlTY29yZShvdGhlciksIG90aGVyLm9uZVdheVNp
bWlsYXJpdHlTY29yZSgqdGhpcykpOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAK
ICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCShyZXZpc2lv
biAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIgogI2luY2x1
ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CkBAIC0zNSwzOCArMzYsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCi1zdHJ1Y3QgUGhhbnRvbVByb3BlcnR5VmFsdWUgewotICAgIFBoYW50
b21Qcm9wZXJ0eVZhbHVlKCkKLSAgICAgICAgOiBtX2lkZW50aWZpZXJOdW1iZXIoVUlOVF9NQVgp
Ci0gICAgewotICAgIH0KLSAgICAKLSAgICBQaGFudG9tUHJvcGVydHlWYWx1ZSh1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyKQotICAgICAgICA6IG1faWRlbnRpZmllck51bWJlcihpZGVudGlmaWVy
TnVtYmVyKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgbV9pZGVudGlmaWVyTnVt
YmVyOwotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQaGFudG9tUHJvcGVydHlWYWx1
ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyTnVtYmVy
ID09IG90aGVyLm1faWRlbnRpZmllck51bWJlcjsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Q7Ci19OwotCiBzdHJ1Y3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YSB7CiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgbWVhbmluZyBvZiB0aGUgcGFzc2VkIG5vZGVz
LgotICAgIFZlY3RvcjxQaGFudG9tUHJvcGVydHlWYWx1ZT4gbV9wcm9wZXJ0aWVzOworICAgIFZl
Y3RvcjxQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcj4gbV9wcm9wZXJ0aWVzOwogICAgIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwotICAgIAotICAgIC8vIFRoZSBmcmFjdGlv
biBvZiBteSBwcm9wZXJ0aWVzIHRoYXQgdGhlIG90aGVyIGRhdGEgaGFzLgotICAgIGZsb2F0IG9u
ZVdheVNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJikgY29u
c3Q7Ci0gICAgCi0gICAgLy8gVGhlIG1pbmltdW0gb2YgdGhlIHR3byBwb3NzaWJsZSBvbmUtd2F5
IHNjb3Jlcy4KLSAgICBmbG9hdCBzaW1pbGFyaXR5U2NvcmUoY29uc3QgT2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YSYpIGNvbnN0OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgREZHT3BJbmZvX2gKKyNkZWZpbmUgREZHT3BJbmZvX2gKKworI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CisKKy8vIFRoaXMgdHlwZSB1c2VkIGluIHBhc3NpbmcgYW4gaW1t
ZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7CisvLyBkaXN0aW5ndWlzaGVzIGFu
IGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxvY2sgZGF0
YSBzdHJ1Y3R1cmUgLSAKKy8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBpZGVudGlm
aWVyKSBmcm9tIGEgTm9kZSouCitzdHJ1Y3QgT3BJbmZvIHsKKyAgICBPcEluZm8oKSA6IG1fdmFs
dWUoMCkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92YWx1ZShz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKHVp
bnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsg
fQorI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKKyAgICBleHBsaWNpdCBPcEluZm8o
c2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsg
fQorI2VuZGlmCisgICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisgICAgdWludHB0cl90IG1fdmFs
dWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKKworI2VuZGlmIC8vIERGR09wSW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQwMSw2ICsxNDAxLDYwIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmF1
bHRIYXMKICAgICByZXR1cm4gMDsKIH0KIAorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdSYXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBsZW5ndGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsK
KyAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgICAgIEluZGV4aW5nSGVh
ZGVyIGhlYWRlcjsKKyAgICAgICAgaGVhZGVyLnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAg
ICAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3RoKDApOworICAgICAgICAKKyAgICAgICAgYnV0dGVy
Zmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAorICAgICAgICAgICAgaGFzSW5kZXhlZFByb3Bl
cnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSksIGhlYWRlciwKKyAgICAgICAgICAgIGxl
bmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOworICAgIH0gZWxzZQorICAgICAgICBidXR0
ZXJmbHkgPSBudWxscHRyOworCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTT2JqZWN0OjpjcmVh
dGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIHJlc3VsdC0+YnV0
dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCisg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4ocmVzdWx0KTsKK30KKworSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICAKKyAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAorICAgICAgICB2bSwgbnVsbHB0
ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwgSW5kZXhpbmdIZWFk
ZXIoKSwgMCk7CisgICAgCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTT2JqZWN0OjpjcmVhdGVS
YXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIHJlc3VsdC0+YnV0dGVy
Zmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09i
amVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworCisgICAgSW5kZXhpbmdIZWFkZXIgaGVhZGVyOworICAgIGhlYWRlci5zZXRW
ZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3RoKDApOworICAg
IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIHZtLCBu
dWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsIGhlYWRlciwK
KyAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGxlbmd0aCk7CisKKyAgICAvLyBQYXJh
ZG94aWNhbGx5IHRoaXMgbWF5IGFsbG9jYXRlIGEgSlNBcnJheS4gVGhhdCdzIHRvdGFsbHkgY29v
bC4KKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdChleGVj
LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5z
dXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxv
Z0RGRyhFeGVjU3RhdGUqIGV4ZWMpIAogewogICAgIGV4ZWMtPnZtKCkudHlwZVByb2ZpbGVyTG9n
KCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiTG9nIEZ1bGwsIGNhbGxlZCBmcm9t
IGluc2lkZSBERkcuIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDEwIEBAIGludDY0
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG8KIAogc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSosIEpTQ2VsbCogdmFsdWUs
IEpTQ2VsbCogcHJvdG8pOwogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jhd09i
amVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxl
bmd0aChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpIFdURl9JTlRFUk5B
TDsKKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2dE
RkcoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gZGVidWdP
cGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCop
IFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY4LDYgKzY2OCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICAgICAgY2Fz
ZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6
IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0
aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAgICAgICAgLy8gaW5zZXJ0ZWQg
YnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAJKHJl
dmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRI
ZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDYgKzc0LDEwIEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQcm8KICAgICBjYXNlIE5hbWVkUHJvcGVy
dHlQTG9jOgogICAgICAgICBvdXQucHJpbnQoIk5hbWVkUHJvcGVydHlQTG9jIik7CiAgICAgICAg
IHJldHVybjsKKworICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5UExvYzoKKyAgICAgICAgb3V0LnBy
aW50KCJJbmRleGVkUHJvcGVydHlQTG9jIik7CisgICAgICAgIHJldHVybjsKICAgICAgICAgCiAg
ICAgY2FzZSBBcmd1bWVudFBMb2M6CiAgICAgICAgIG91dC5wcmludCgiQXJndW1lbnRQTG9jIik7
CkBAIC0xMDIsNiArMTA2LDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBQcm8KICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1
cmVWYXJQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUHVibGljTGVuZ3RoUExv
YzoKKyAgICAgICAgb3V0LnByaW50KCJQdWJsaWNMZW5ndGhQTG9jIik7CisgICAgICAgIHJldHVy
bjsKKworICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0
b3JMZW5ndGhQTG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOCwyNSArMjgsNDEgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQog
Ci0jaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkRGR0VkZ2UuaCIKKyNpbmNsdWRlICJE
RkdOb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0cnVjdCBOb2RlOworCisvLyBQcm9tb3RlZCBsb2NhdGlv
bnMgYXJlIGxpa2UgaGVhcCBsb2NhdGlvbnMgYnV0IGFyZSBtZWFudCB0byBiZSBtb3JlIHByZWNp
c2UuIEEgaGVhcCBsb2NhdGlvbiBpcworLy8gYXBwbGljYWJsZSB0byBDU0Ugc2NlbmFyaW9zLCB3
aGVyZSBpdCBtYWtlcyBzZW5zZSB0byBzcGVhayBvZiBhIGxvY2F0aW9uIHZlcnkgYWJzdHJhY3Rs
eS4gQQorLy8gcHJvbW90ZWQgaGVhcCBsb2NhdGlvbiBpcyBmb3IgY2FzZXMgd2hlcmUgd2Ugc3Bl
YWsgb2YgYSBzcGVjaWZpYyBvYmplY3QgYW5kIHRoZSBjb21waWxlciBrbm93cworLy8gdGhpcyBv
YmplY3QncyBpZGVudGl0eSAtIGZvciBleGFtcGxlLCB0aGUgb2JqZWN0IGFsbG9jYXRpb24gaGFz
IGJlZW4gZWxpbWluYXRlZCBhbmQgd2UgdHVybmVkIHRoZQorLy8gZmllbGRzIGludG8gbG9jYWwg
dmFyaWFibGVzLiBCZWNhdXNlIHRoZXNlIHR3byBjYXNlcyBoYXZlIHN1YnRseSBkaWZmZXJlbnQg
bmVlZHMsIHdlIHVzZSBzdWJ0bHkKKy8vIGRpZmZlcmVudCBzdHJ1Y3R1cmVzLiBPbmUgb2YgdGhl
IHJlYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpcyB0aGF0IHByb21vdGVkIGxvY2F0aW9u
cyBjYW4gYmUKKy8vIHNwb2tlbiBvZiB1c2luZyBlaXRoZXIgYSBkZXNjcmlwdG9yIHdoaWNoIGRv
ZXMgbm90IHJlZmVyIHRvIGFueSBOb2RlKidzIG9yIHdpdGggYSBoZWFwIGxvY2F0aW9uLAorLy8g
d2hpY2ggaXMgYSBkZXNjcmlwdG9yIHdpdGggYSBOb2RlKiBiYXNlLgorCiBlbnVtIFByb21vdGVk
TG9jYXRpb25LaW5kIHsKICAgICBJbnZhbGlkUHJvbW90ZWRMb2NhdGlvbktpbmQsCiAgICAgCi0g
ICAgU3RydWN0dXJlUExvYywKKyAgICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIEFjdGl2YXRp
b25TeW1ib2xUYWJsZVBMb2MsCi0gICAgTmFtZWRQcm9wZXJ0eVBMb2MsCi0gICAgQXJndW1lbnRQ
TG9jLAogICAgIEFyZ3VtZW50Q291bnRQTG9jLAorICAgIEFyZ3VtZW50UExvYywKICAgICBBcmd1
bWVudHNDYWxsZWVQTG9jLAotCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlUExvYywKKyAgICBDbG9z
dXJlVmFyUExvYywKICAgICBGdW5jdGlvbkFjdGl2YXRpb25QTG9jLAotICAgIEFjdGl2YXRpb25T
Y29wZVBMb2MsCi0gICAgQ2xvc3VyZVZhclBMb2MKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsCisgICAgTmFtZWRQcm9wZXJ0eVBMb2MsCisgICAg
UHVibGljTGVuZ3RoUExvYywKKyAgICBTdHJ1Y3R1cmVQTG9jLAorICAgIFZlY3Rvckxlbmd0aFBM
b2MKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAgY2FzZSBHZXRSZWdF
eHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6Cisg
ICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTk3OTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzA0Nyw2ICszMDQ3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAg
ICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogeworICAgICAgICBjb21waWxlUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAg
IAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUo
KS5pc0pTQXJyYXkoKSk7CiAgICAgICAgIApAQCAtMzQ5Miw3ICszNDk3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3Rv
cmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIs
IHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFs
bG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVt
ZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBBdCB0aGlz
IHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFnZUdQUiBoYXZl
IHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhlIEJ1dHRlcmZs
eSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOCw3ICszNzMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIo
KTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4
aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxv
Y2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51
bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChu
b2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgICAg
ICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUt
PnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTc4LDcgKzQ5ODMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAKKyAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2Jq
ZWN0OgorICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxNzEsNiArMzE3MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5k
ZXgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1
c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzSlNBcnJheSgpKTsKQEAg
LTM1NDIsNyArMzU0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVs
ZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIHN0
cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBhbm90aGVyLCBy
ZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAgICAgICAgLy8g
dGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAgLTM3NzgsNyAr
Mzc4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJS
ZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0
ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVt
ZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihp
bmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIGlu
ZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0
LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwpAQCAt
NDk3MSw2ICs0OTc2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVj
dDoKKyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOworICAgICAgICBi
cmVhazsKKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJV
cEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJh
bmNoQWRkMzIoCkBAIC01MDYxLDcgKzUwNzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBQ
dXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAgY2FzZSBNYXRl
cmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0YWNrOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
U2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgi
CiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyQnVmZmVyLmgiCkBAIC03NywyNyArNzgsNDcgQEAgU3Bl
Y3VsYXRpdmVKSVQ6On5TcGVjdWxhdGl2ZUpJVCgpCiB7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cykKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlw
ZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzQ29udGln
dW91cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgSW5kZXhpbmdUeXBlIGluZGV4
aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBoYXNJbmRleGlu
Z0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CisKKyAgICB1bnNp
Z25lZCBpbmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKTsKKyAgICB1
bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KTsKICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaDIodGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigp
OwogICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwotICAgIAotICAgIHVu
c2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgbnVtRWxlbWVu
dHMpOworCisgICAgQVNTRVJUKHZlY3Rvckxlbmd0aCA+PSBudW1FbGVtZW50cyk7CisgICAgdmVj
dG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCB2ZWN0b3JMZW5ndGgpOwogICAg
IAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgc2xvd0Nh
c2VzLmFwcGVuZCgKLSAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKFRydXN0ZWRJbW0z
Mih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIp
KSwgc3RvcmFnZUdQUikpOwotICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVu
Z3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7Ci0gICAgZW1pdEFsbG9jYXRlSlNP
YmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3Jh
Z2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwotICAgIAotICAgIG1f
aml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7Ci0g
ICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgp
KSk7Ci0gICAgCisKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgaWYgKGhhc0luZGV4aW5nSGVh
ZGVyKQorICAgICAgICBzaXplICs9IHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSArIHNp
emVvZihJbmRleGluZ0hlYWRlcik7CisgICAgc2l6ZSArPSBvdXRPZkxpbmVDYXBhY2l0eSAqIHNp
emVvZihKU1ZhbHVlKTsKKworICAgIGlmIChzaXplKSB7CisgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoCisgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3RlZEltbTMyKHNp
emUpLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAg
ICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpT
VmFsdWUpKSwgc3RvcmFnZUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faml0LmFk
ZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpOwor
ICAgIH0gZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoMCksIHN0b3JhZ2VH
UFIpOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2Nh
dGlvblNpemUoaW5saW5lQ2FwYWNpdHkpOworICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
UHRyID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0
b3IoYWxsb2NhdGlvblNpemUpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0
b3JQdHIpLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIs
IHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRj
aDJHUFIsIHNsb3dDYXNlcyk7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAg
IG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCksIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkp
OworCiAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSAmJiBudW1F
bGVtZW50cyA8IHZlY3Rvckxlbmd0aCkgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHNjcmF0
Y2hHUFIpOwpAQCAtMTE3LDggKzEzOCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxs
b2NhdGVKU0FycmF5CiAgICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAogICAgIC8vIG9mIHdvcmsgZm9y
IGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8KICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yPigKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplLCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCi0gICAgICAgIHN0cnVjdHVyZSwgbnVtRWxlbWVu
dHMpKTsKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdSYXdPYmplY3QsIHJl
c3VsdEdQUiwgc3RvcmFnZUdQUiwKKyAgICAgICAgc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpKTsK
KworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVz
dGVkSW1tMzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwg
R1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcykKQEAgLTc2NTUsNiArNzY3OSwxMjUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YQogICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKiBub2RlKQoreworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbm9kZS0+c3RydWN0dXJlU2V0KClbMF07CisgICAgQVNTRVJUKG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4o
KSA9PSBzdHJ1Y3R1cmUpOworCisgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9
IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgCisgICAgSW5kZXhp
bmdUeXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9v
bCBoYXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7
CisgICAgaW50MzJfdCBwdWJsaWNMZW5ndGggPSAwOworICAgIGludDMyX3QgdmVjdG9yTGVuZ3Ro
ID0gMDsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIEVk
Z2UgZWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpOworICAgICAg
ICAgICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAg
IGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSBl
ZGdlLT5hc0ludDMyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gZWRnZS0+
YXNJbnQzMigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0b3Jh
Z2UodGhpcyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJS
ZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgCisgICAgZW1pdEFsbG9jYXRlUmF3
T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCAwLCB2ZWN0b3JMZW5ndGgp
OworICAgIAorICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tMzIocHVibGljTGVuZ3RoKSwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgRWRn
ZSBlZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAg
IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGll
c1tpXTsKKyAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICBjYXNl
IEluZGV4ZWRQcm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIGVkZ2UpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAg
ICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBkZXNjcmlwdG9yLmlu
Zm8oKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIE5h
bWVkUHJvcGVydHlQTG9jOiB7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiB1aWQgPSBtX2ppdC5n
cmFwaCgpLmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCldOworICAgICAgICAgICAgZm9y
IChQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVzQ29uY3Vy
cmVudGx5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodWlkICE9IGVudHJ5LmtleSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGlz
SW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNldCkgPyByZXN1bHRHUFIgOiBzdG9yYWdlR1BSOworICAg
ICAgICAgICAgICAgIG1faml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgICAgIHZhbHVl
LmpzVmFsdWVSZWdzKCksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGVudHJ5Lm9mZnNldCkpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqIG5vZGUpCit7CisgICAgRWRnZSBj
b25zdHJ1Y3RvckVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAg
IEVkZ2UgcmVnRXhwRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7Cisg
ICAgRWRnZSBzdHJpbmdFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsK
KyAgICBFZGdlIHN0YXJ0RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMyk7
CisgICAgRWRnZSBlbmRFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCA0KTsK
KworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIGNvbnN0cnVjdG9y
RWRnZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmVnRXhwKHRoaXMsIHJlZ0V4cEVkZ2Up
OworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0aGlzLCBzdHJpbmdFZGdlKTsKKyAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc3RhcnQodGhpcywgc3RhcnRFZGdlKTsKKyAgICBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQgZW5kKHRoaXMsIGVuZEVkZ2UpOworCisgICAgR1BSUmVnIGNvbnN0
cnVjdG9yR1BSID0gY29uc3RydWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIHJlZ0V4cEdQUiA9IHJl
Z0V4cC5ncHIoKTsKKyAgICBHUFJSZWcgc3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOworICAgIEdQ
UlJlZyBzdGFydEdQUiA9IHN0YXJ0LmdwcigpOworICAgIEdQUlJlZyBlbmRHUFIgPSBlbmQuZ3By
KCk7CisKKyAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9m
Q2FjaGVkUmVzdWx0KCk7CisKKyAgICBtX2ppdC5zdG9yZVB0cigKKyAgICAgICAgcmVnRXhwR1BS
LAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsg
UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkpOworICAgIG1faml0LnN0
b3JlUHRyKAorICAgICAgICBzdHJpbmdHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFz
dElucHV0KCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBzdGFydEdQUiwKKyAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICBjb25zdHJ1Y3RvckdQUiwKKyAg
ICAgICAgICAgIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSAr
IE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSk7CisgICAgbV9qaXQuc3RvcmUz
MigKKyAgICAgICAgZW5kR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcygKKyAgICAg
ICAgICAgIGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVk
UmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBl
bmQpKSk7CisgICAgbV9qaXQuc3RvcmU4KAorICAgICAgICBUcnVzdGVkSW1tMzIoMCksCisgICAg
ICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBD
YWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsK
K30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE5Nzk4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQwMSw2ICsyNDAxLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGls
ZUdldFJlZ0V4cE9iamVjdExhc3RJbmRleChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMYXp5SlNDb25zdGFu
dChOb2RlKik7CisgICAgdm9pZCBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChOb2RlKik7CiAgICAgCiAg
ICAgdm9pZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhHUFJSZWcp
OwpAQCAtMjUxNiw3ICsyNTE4LDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkp
OwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BS
LCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOwor
ICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVy
ZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVj
dG9yTGVuZ3RoKTsKICAgICAKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1l
KiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKICAgICB2b2lk
IGVtaXRHZXRMZW5ndGgoQ29kZU9yaWdpbiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRl
VGhpcyA9IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDExICsyNTMsMTkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNo
OgorICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBQdXRT
dHJ1Y3R1cmU6IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgCisKKyAgICAgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7Cisg
ICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2Rl
LCAwKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6
CiAgICAgICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKQEAgLTI2NiwxMyAr
Mjc0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgICAg
IGNhc2UgUHV0QnlJZEZsdXNoOgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7Ci0g
ICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBjYXNlIFB1dEJ5
T2Zmc2V0OiB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQy
KCksIG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCiAjaW5j
bHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgPGNzdGRsaWI+CiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTMzMSw4ICszMzIsMjM3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCEhc3RyaW5nKSB7CiAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc051bWJlcihzdHJpbmcubGVu
Z3RoKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEdldEdsb2JhbE9iamVj
dDogeworICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBtX25vZGUtPmNoaWxkMSgp
LT5keW5hbWljQ2FzdENvbnN0YW50PEpTT2JqZWN0Kj4oKSkgeworICAgICAgICAgICAgICAgIG1f
Z3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBvYmplY3QtPmdsb2JhbE9iamVjdCgpKTsK
KyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIFJlZ0V4cEV4ZWM6CisgICAgICAgIGNhc2UgUmVnRXhwVGVzdDogeworICAgICAgICAg
ICAgZGF0YUxvZygiSGVyZSFcbiIpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNHbG9iYWxP
YmplY3QqPigpOworICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRhdGFMb2coIkhlcmUuXG4iKTsKKworICAgICAgICAg
ICAgaWYgKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBkYXRhTG9nKCJHZXR0aW5nIHJlZ2V4cCFcbiIpOworCisg
ICAgICAgICAgICBOb2RlKiByZWdFeHBPYmplY3ROb2RlID0gbV9ub2RlLT5jaGlsZDIoKS5ub2Rl
KCk7CisgICAgICAgICAgICBSZWdFeHAqIHJlZ0V4cDsKKyAgICAgICAgICAgIGlmIChSZWdFeHBP
YmplY3QqIHJlZ0V4cE9iamVjdCA9IHJlZ0V4cE9iamVjdE5vZGUtPmR5bmFtaWNDYXN0Q29uc3Rh
bnQ8UmVnRXhwT2JqZWN0Kj4oKSkKKyAgICAgICAgICAgICAgICByZWdFeHAgPSByZWdFeHBPYmpl
Y3QtPnJlZ0V4cCgpOworICAgICAgICAgICAgZWxzZSBpZiAocmVnRXhwT2JqZWN0Tm9kZS0+b3Ao
KSA9PSBOZXdSZWdleHApCisgICAgICAgICAgICAgICAgcmVnRXhwID0gY29kZUJsb2NrKCktPnJl
Z2V4cChyZWdFeHBPYmplY3ROb2RlLT5yZWdleHBJbmRleCgpKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgTm9kZSogc3RyaW5nTm9kZSA9
IG1fbm9kZS0+Y2hpbGQzKCkubm9kZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBkYXRh
TG9nKCJTdGlsbCBoZXJlIVxuIik7CisKKyAgICAgICAgICAgIC8vIE5PVEU6IFRoaXMgbW9zdGx5
IGFscmVhZHkgcHJvdGVjdHMgdXMgZnJvbSBoYXZpbmcgdGhlIGNvbXBpbGVyIGV4ZWN1dGUgYSBy
ZWdleHAKKyAgICAgICAgICAgIC8vIG9wZXJhdGlvbiBvbiBhIGdpbm9ybW91cyBzdHJpbmcgYnkg
cHJldmVudGluZyB1cyBmcm9tIGdldHRpbmcgb3VyIGhhbmRzIG9uIGdpbm9ybW91cworICAgICAg
ICAgICAgLy8gc3RyaW5ncyBpbiB0aGUgZmlyc3QgcGxhY2UuCisgICAgICAgICAgICBTdHJpbmcg
c3RyaW5nID0gbV9ub2RlLT5jaGlsZDMoKS0+dHJ5R2V0U3RyaW5nKG1fZ3JhcGgpOworICAgICAg
ICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IEZyb3plblZhbHVlKiByZWdFeHBGcm96ZW5WYWx1ZSA9IG1fZ3JhcGguZnJlZXplKHJlZ0V4cCk7
CisKKyAgICAgICAgICAgIC8vIFJlZnVzZSB0byBkbyB0aGluZ3Mgd2l0aCByZWd1bGFyIGV4cHJl
c3Npb25zIHRoYXQgaGF2ZSBhIGdpbm9ybW91cyBudW1iZXIgb2YKKyAgICAgICAgICAgIC8vIHN1
YnBhdHRlcm5zLgorICAgICAgICAgICAgdW5zaWduZWQgZ2lub3Jtb3VzTnVtYmVyT2ZTdWJQYXR0
ZXJucyA9IDEwMDA7CisgICAgICAgICAgICBpZiAocmVnRXhwLT5udW1TdWJwYXR0ZXJucygpID4g
Z2lub3Jtb3VzTnVtYmVyT2ZTdWJQYXR0ZXJucykKKyAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgZGF0YUxvZygiQW5kIHN0aWxsIGhlcmUhXG4iKTsKKworICAgICAgICAgICAg
dW5zaWduZWQgbGFzdEluZGV4OworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsT3JTdGlj
a3koKSkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBvbmx5IHdvcmsgaWYgd2UgY2Fu
IHByb3ZlIHdoYXQgdGhlIHZhbHVlIG9mIGxhc3RJbmRleCBpcy4gVG8gZG8gdGhpcworICAgICAg
ICAgICAgICAgIC8vIHNhZmVseSwgd2UgbmVlZCB0byBleGVjdXRlIHRoZSBpbnNlcnRpb24gc2V0
IHNvIHRoYXQgd2Ugc2VlIGFueSBwcmV2aW91cyBzdHJlbmd0aAorICAgICAgICAgICAgICAgIC8v
IHJlZHVjdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGZvciBzb3VuZG5lc3Mgc2luY2Ugb3RoZXJ3aXNl
IHRoZSBlZmZlY3RmdWxuZXNzIG9mIGFueQorICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHN0
cmVuZ3RoIHJlZHVjdGlvbnMgd291bGQgYmUgaW52aXNpYmxlIHRvIHVzLgorICAgICAgICAgICAg
ICAgIGV4ZWN1dGVJbnNlcnRpb25TZXQoKTsKKyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBV
SU5UX01BWDsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG90aGVyTm9kZUluZGV4ID0g
bV9ub2RlSW5kZXg7IG90aGVyTm9kZUluZGV4LS07KSB7CisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIG90aGVyTm9kZSA9IG1fYmxvY2stPmF0KG90aGVyTm9kZUluZGV4KTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG90aGVyTm9kZSA9PSByZWdFeHBPYmplY3ROb2RlKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsYXN0SW5kZXggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVy
Tm9kZS0+b3AoKSA9PSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQxKCkgPT0gcmVnRXhwT2JqZWN0Tm9kZQorICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNvbnN0YW50
KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQyKCktPmFzSW50
MzIoKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ob3RoZXJOb2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGlmICh3cml0ZXNPdmVybGFwKG1fZ3JhcGgsIG90aGVyTm9kZSwgUmVnRXhwT2Jq
ZWN0X2xhc3RJbmRleCkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA9PSBVSU5UX01BWCkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBsYXN0SW5kZXggPSAwOworCisgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCku
YWRkTGF6aWx5KGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCk7CisgICAgICAgICAgICBpZiAoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSAhPSBBcnJheVdpdGhDb250aWd1b3VzKSB7CisgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyBmdXJ0aGVyIHByb3RlY3Rpb24gYWdhaW5zdCBhIHJhY2Ugd2l0aCBo
YXZlQUJhZFRpbWUuCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IGdsb2JhbE9i
amVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKTsKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiBjb25z
dHJ1Y3RvckZyb3plblZhbHVlID0gbV9ncmFwaC5mcmVlemUoY29uc3RydWN0b3IpOworCisgICAg
ICAgICAgICBpbnQgcG9zaXRpb247CisgICAgICAgICAgICBWZWN0b3I8aW50LCAzMj4gb3ZlY3Rv
cjsKKyAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJp
bmcsIGxhc3RJbmRleCwgcG9zaXRpb24sIG92ZWN0b3IpKQorICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAvLyBXZSd2ZSBjb25zdGFudC1mb2xkZWQgdGhlIHJlZ2V4cC4gTm93
IHdlJ3JlIGNvbW1pdHRlZCB0byByZXBsYWNpbmcgUmVnRXhwRXhlYy9UZXN0LgorCisgICAgICAg
ICAgICBtX2NoYW5nZWQgPSB0cnVlOworCisgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9
IG1fbm9kZS0+b3JpZ2luOworCisgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgQ2hlY2ssIG9yaWdpbiwg
bV9ub2RlLT5jaGlsZHJlbi5qdXN0Q2hlY2tzKCkpOworCisgICAgICAgICAgICBpZiAobV9ub2Rl
LT5vcCgpID09IFJlZ0V4cEV4ZWMpIHsKKyAgICAgICAgICAgICAgICBpZiAocG9zaXRpb24gPT0g
LTEpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpOworCisgICAgICAgICAgICAgICAgICAg
IC8vIENyZWF0ZSBhbiBhcnJheSBtb2RlbGluZyB0aGUgSlMgYXJyYXkgdGhhdCB3ZSB3aWxsIHRy
eSB0byBhbGxvY2F0ZS4gVGhpcyBpcworICAgICAgICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkg
Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5IGJ1dCBvdmVyIEMrKyBzdHJpbmdzIGluc3RlYWQgb2Yg
SlNTdHJpbmdzLgorICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRBcnJh
eTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJp
bmcocG9zaXRpb24sIG92ZWN0b3JbMV0pKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8PSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gb3ZlY3RvclsyICogaV07CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheS5hcHBlbmQoc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgb3ZlY3RvclsyICog
aSArIDFdIC0gc3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheS5hcHBlbmQoU3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHVibGljTGVu
Z3RoID0gcmVzdWx0QXJyYXkuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2
ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIHB1YmxpY0xlbmd0aCk7CisK
KyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGluZGV4VUlEID0gdm0oKS5w
cm9wZXJ0eU5hbWVzLT5pbmRleC5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRT
dHJpbmdJbXBsKiBpbnB1dFVJRCA9IHZtKCkucHJvcGVydHlOYW1lcy0+aW5wdXQuaW1wbCgpOwor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleEluZGV4ID0gbV9ncmFwaC5pZGVudGlm
aWVycygpLmVuc3VyZShpbmRleFVJRCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
cHV0SW5kZXggPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlucHV0VUlEKTsKKworICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmaXJzdENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4
LCBvcmlnaW4sIHN0cnVjdHVyZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgICAg
IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEqIGRhdGEgPSBtX2dyYXBoLm1fb2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YS5hZGQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocHVibGljTGVuZ3RoKSwgS25v
d25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBw
ZW5kKFB1YmxpY0xlbmd0aFBMb2MpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcih2ZWN0b3JMZW5ndGgpLCBL
bm93bkludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5h
cHBlbmQoVmVjdG9yTGVuZ3RoUExvYyk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHBvc2l0aW9uKSwgVW50eXBlZFVzZSkpOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKAorICAgICAgICAg
ICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoTmFtZWRQcm9wZXJ0eVBM
b2MsIGluZGV4SW5kZXgpKTsKKworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW4uYXBwZW5kKEVkZ2Uoc3RyaW5nTm9kZSwgVW50eXBlZFVzZSkpOworICAgICAgICAg
ICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAg
ICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoTmFtZWRQcm9wZXJ0eVBMb2MsIGlucHV0
SW5kZXgpKTsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIG1hdGVyaWFsaXplU3RyaW5nID0g
WyZdIChjb25zdCBTdHJpbmcmIHN0cmluZykgLT4gTm9kZSogeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0cmluZy5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENvbnN0YW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJ
bmRleCwgb3JpZ2luLCB2bSgpLnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVlIHZh
bHVlID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCBzdHJpbmcpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBMYXp5SlNDb25zdGFu
dCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1f
bGF6eUpTVmFsdWVzLmFkZCh2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKworICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0QXJyYXkuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChOb2RlKiBub2RlID0gbWF0
ZXJpYWxpemVTdHJpbmcocmVzdWx0QXJyYXlbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKG5vZGUsIFVudHlwZWRV
c2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBw
ZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVz
Y3JpcHRvcihJbmRleGVkUHJvcGVydHlQTG9jLCBpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICBOb2RlKiByZXN1bHROb2RlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjQXJyYXksIE5vZGU6OlZhckFyZywg
TWF0ZXJpYWxpemVOZXdPYmplY3QsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9w
SW5mbyhzdHJ1Y3R1cmVTZXQpLCBPcEluZm8oZGF0YSksIGZpcnN0Q2hpbGQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGls
ZCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y29udmVy
dFRvSWRlbnRpdHlPbihyZXN1bHROb2RlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChtX25vZGUsIGpzTnVsbCgp
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRv
Q29uc3RhbnQobV9ub2RlLCBqc0Jvb2xlYW4ocG9zaXRpb24gIT0gLTEpKTsKKworICAgICAgICAg
ICAgLy8gV2hldGhlciBpdCdzIEV4ZWMgb3IgVGVzdCwgd2UgbmVlZCB0byB0ZWxsIHRoZSBjb25z
dHJ1Y3RvciBhbmQgUmVnRXhwT2JqZWN0IHdoYXQncyB1cC4KKyAgICAgICAgICAgIGlmIChwb3Np
dGlvbiAhPSAtMSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dy
YXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5k
ZXgsIG9yaWdpbiwgY29uc3RydWN0b3JGcm96ZW5WYWx1ZSwgS25vd25DZWxsVXNlKSk7CisgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCByZWdFeHBGcm96ZW5WYWx1ZSwgS25v
d25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFw
cGVuZChFZGdlKHN0cmluZ05vZGUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocG9zaXRpb24pLCBLbm93bkludDMyVXNlKSk7
CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihvdmVjdG9y
WzFdKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgTm9k
ZTo6VmFyQXJnLCBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIG9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgT3BJbmZvKCksIE9wSW5mbygpLCBmaXJzdENoaWxkLCBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisKKyAgICAgICAgICAgICAgICBvcmlnaW4g
PSBvcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChyZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCkpIHsKKyAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25v
ZGVJbmRleCwgU3BlY05vbmUsIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgb3JpZ2luLAorICAg
ICAgICAgICAgICAgICAgICBFZGdlKHJlZ0V4cE9iamVjdE5vZGUsIFJlZ0V4cE9iamVjdFVzZSks
CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNl
KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICAgICAganNOdW1iZXIocG9zaXRpb24gPT0gLTEgPyAwIDogb3Zl
Y3RvclsxXSksIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBvcmlnaW4gPSBvcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIG1fbm9kZS0+b3JpZ2luID0gb3JpZ2luOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIApAQCAtMzgwLDYgKzYxMCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBleGVjdXRlSW5zZXJ0aW9uU2V0KCkK
KyAgICB7CisgICAgICAgIG1fbm9kZUluZGV4ID0gbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShtX2Js
b2NrKTsKKyAgICB9CiAgICAgCiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OwogICAg
IEJhc2ljQmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNzgsNiArMjc4LDE4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIXZhcmlh
bnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5kZmdTaG91bGRXYXRjaCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICAgICAgICAgICAgICBmb3Ig
KFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1Y3R1cmVzIHRoYXQgYXJl
IEpTRmluYWxPYmplY3Qgb3IgSlNBcnJheS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElE
QVRFKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTRmluYWxPYmplY3Q6Omlu
Zm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCkgPT0gSlNBcnJheTo6aW5mbygpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ug
b25seSBzdXBwb3J0IGNlcnRhaW4gaW5kZXhpbmcgc2hhcGVzLgorICAgICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzQW55QXJyYXlTdG9yYWdlKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICAg
ICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUo
KG5vZGUpLCBub2RlLT5pc051bWJlckNvbnN0YW50KCkpOwpAQCAtNDYxLDEzICs0NzMsNDIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAg
ICAgICAgICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVj
dHVyZUltbWVkaWF0ZToKLSAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0
OgogICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAg
ICAgICAgICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAgICAgICAgICAgY2FzZSBLaWxsU3Rh
Y2s6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUpLCAhInVuZXhwZWN0ZWQgbm9kZSB0eXBlIGluIENQUyIpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3
T2JqZWN0OiB7CisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBhcnJheSBs
ZW5ndGhzIHRvIGJlIGNvbnN0YW50LiBUaGlzIGNvbnN0cmFpbnQgb25seSBleGlzdHMKKyAgICAg
ICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZlIERGRyBzdXBwb3J0IGZvciBh
bnl0aGluZyBtb3JlIGFuZCB3ZSBkb24ndCBuZWVkIGFueQorICAgICAgICAgICAgICAgICAgICAv
LyBvdGhlciBraW5kIG9mIHN1cHBvcnQgZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3By
b3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3Rl
ZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07Cisg
ICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEgKyBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5r
aW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmlzSW50MzJD
b25zdGFudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3Mgb25lIHN0cnVjdHVyZS4KKyAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5z
aXplKCkgPT0gMSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQz
MiBhbmQgZG91YmxlIGFycmF5cy4gVGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQK
KyAgICAgICAgICAgICAgICAgICAgLy8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQg
aW4gdGhlIERGRyByaWdodCBub3cuIFdlIHNob3VsZCBhZGQgc3VwcG9ydAorICAgICAgICAgICAg
ICAgICAgICAvLyBmb3IgdGhlc2UgaWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgorICAgICAgICAg
ICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0ludDMy
KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlKSwgIWhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCBtX2dyYXBoLm1fZml4cG9pbnRTdGF0ZSAhPSBGaXhwb2lu
dE5vdENvbnZlcmdlZCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3
IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNT
Y29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3Vt
ZW50cy5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDExIEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU1N5bWJvbFRhYmxlT2Jq
ZWN0X3N5bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5bWJvbFRhYmxl
KCkpIFwKICAgICBtYWNybyhKU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSwgSlNXcmFwcGVy
T2JqZWN0OjppbnRlcm5hbFZhbHVlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhNYXJrZWRBbGxvY2F0
b3JfZnJlZUxpc3RIZWFkLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkp
IFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCwg
UmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRS
ZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4cCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0
b3JfY2FjaGVkUmVzdWx0X2xhc3RJbnB1dCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2Fj
aGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpIFwK
KyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0LCBS
ZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJl
c3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3Rh
cnQpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9l
bmQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2Fj
aGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0
LCBlbmQpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3JlaWZp
ZWQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2Fj
aGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZpZWQoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9s
YXN0SW5kZXgsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXgoKSkgXAogICAgIG1hY3Jv
KFJlZ0V4cE9iamVjdF9sYXN0SW5kZXhJc1dyaXRhYmxlLCBSZWdFeHBPYmplY3Q6Om9mZnNldE9m
TGFzdEluZGV4SXNXcml0YWJsZSgpKSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzX292ZXJy
b2RlVGhpbmdzLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJvZGVUaGluZ3MoKSkgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAg
ICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVj
dExhc3RJbmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAg
Ly8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MzgsNiArOTM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTZXRSZWdFeHBP
YmplY3RMYXN0SW5kZXg6CiAgICAgICAgICAgICBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQ6CisgICAgICAgICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KCk7
CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAg
ICAgY2FzZSBMb29wSGludDoKQEAgLTM3MTYsMzIgKzM3MTksOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5
LCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgbV9vdXQuc3Rv
cmUzMih2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVu
Z3RoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGhhc0RvdWJsZShtX25vZGUtPmlu
ZGV4aW5nVHlwZSgpKSkgewotICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMb29wID0g
bV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgb3JpZ2luYWxJbmRleCA9IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5ndGgpOwot
ICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFu
Y2hvcihidXR0ZXJmbHkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAg
ICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShpbml0TG9v
cCksIHVuc3VyZShpbml0RG9uZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGluaXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0
RG9uZSk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0Lmlu
dDMyLCBvcmlnaW5hbEluZGV4KTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1f
b3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAotICAgICAgICAgICAg
ICAgICAgICBUeXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFu
eUluZGV4KCksIHBvaW50ZXIpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBM
VmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5pbnQzMk9uZSk7Ci0gICAg
ICAgICAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5l
eHRJbmRleCkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkocG9pbnRl
ciwgbV9vdXQuYW5jaG9yKG1fb3V0LmFkZChwb2ludGVyLCBtX291dC5pbnRQdHJFaWdodCkpKTsK
LSAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0
Lm5vdFplcm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUp
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0
RG9uZSwgaW5pdExhc3ROZXh0KTsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5pdGlh
bGl6ZUFycmF5RWxlbWVudHMobV9ub2RlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBi
dXR0ZXJmbHkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG9iamVjdCk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CkBAIC02Mjg2LDExICs2MjY1LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IExvd2VyIHRoZSB2YWx1ZXMgZmlyc3QsIHRvIGF2b2lkIGNyZWF0aW5nIHZhbHVlcyBpbnNpZGUg
YSBjb250cm9sIGZsb3cgZGlhbW9uZC4KICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxMVmFsdWUs
IDg+IHZhbHVlczsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9w
ZXJ0aWVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dKU1ZhbHVl
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxICsgaSkpKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpOworICAg
ICAgICAgICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3Ro
UExvYzoKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgdmFsdWVzLmFwcGVuZChsb3dKU1ZhbHVlKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQgPSBtX25vZGUtPnN0cnVjdHVyZVNldCgpOwotICAgICAgICAKKwogICAg
ICAgICBWZWN0b3I8TEJhc2ljQmxvY2ssIDE+IGJsb2NrcyhzZXQuc2l6ZSgpKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGJsb2Nrc1tp
XSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC02MzE1LDIxICs2MzA0LDUxIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBMVmFsdWUgb2JqZWN0OwogICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSkgeworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8
fCBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewogICAg
ICAgICAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9j
YXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAgICAg
TWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmdm0oKS5oZWFwLmFsbG9jYXRvckZvck9iamVj
dFdpdGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKworICAgICAgICAgICAgICAgIGJv
b2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleGluZ0hlYWRlclNp
emUgPSAwOworICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRl
cyA9IG1fb3V0LmludFB0clplcm87CisgICAgICAgICAgICAgICAgTFZhbHVlIHZlY3Rvckxlbmd0
aCA9IG1fb3V0LmludDMyWmVybzsKKyAgICAgICAgICAgICAgICBMVmFsdWUgcHVibGljTGVuZ3Ro
ID0gbV9vdXQuaW50MzJaZXJvOworICAgICAgICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRl
cikgeworICAgICAgICAgICAgICAgICAgICBpbmRleGluZ0hlYWRlclNpemUgPSBzaXplb2YoSW5k
ZXhpbmdIZWFkZXIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRh
Lm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBy
b21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tp
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZl
Y3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3Ro
ID0gdmFsdWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX291dC5tdWwobV9vdXQuemVyb0V4dFB0cih2ZWN0b3JMZW5ndGgp
LCBtX291dC5pbnRQdHJFaWdodCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgTFZhbHVlIGJ1dHRlcmZseVNpemUgPSBtX291dC5hZGQoCisgICAgICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50UHRyKAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpICsgaW5kZXhpbmdIZWFkZXJTaXpl
KSwKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9v
dXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24g
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRo
KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9yYWdl
ID0gYWxsb2NhdGVCYXNpY1N0b3JhZ2VBbmRHZXRFbmQoCi0gICAgICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihK
U1ZhbHVlKSksCi0gICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsKLSAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9yYWdlID0gYWxsb2NhdGVCYXNpY1N0
b3JhZ2VBbmRHZXRFbmQoYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpOworCiAgICAgICAgICAgICAg
ICAgTFZhbHVlIGZhc3RCdXR0ZXJmbHlWYWx1ZSA9IG1fb3V0LmFkZCgKLSAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIGVuZE9mU3Rv
cmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN1YihlbmRPZlN0b3JhZ2UsIGluZGV4
aW5nUGF5bG9hZFNpemVJbkJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSAtIGluZGV4aW5nSGVhZGVyU2l6ZSkpOworCisg
ICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgsIGZhc3RCdXR0ZXJmbHlW
YWx1ZSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdE9iamVjdFZhbHVlID0gYWxsb2NhdGVPYmplY3Qo
CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvciksIHN0cnVj
dHVyZSwgZmFzdEJ1dHRlcmZseVZhbHVlLCBzbG93UGF0aCk7CkBAIC02MzQwLDEyICs2MzU5LDI0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgICAgICBMVmFsdWUg
c2xvd09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAotICAgICAgICAgICAgICAgICAgICBbPV0g
KGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0
aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6
eUNhbGxHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3
T2JqZWN0V2l0aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
KTsKLSAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dP
YmplY3RWYWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgc2xvd09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAg
ICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMp
IC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRl
eGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzFd
LmRpcmVjdEdQUigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICB2ZWN0b3JMZW5ndGgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAt
PiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0aW9u
c1swXS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dPYmplY3QgPSBtX291dC5hbmNob3Ioc2xvd09iamVjdFZhbHVlKTsKICAgICAgICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBzbG93QnV0dGVyZmx5ID0gbV9vdXQuYW5jaG9yKAogICAgICAg
ICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKHNsb3dPYmplY3RWYWx1ZSwgbV9oZWFwcy5KU09i
amVjdF9idXR0ZXJmbHkpKTsKQEAgLTYzNTYsNiArNjM4NywxMTMgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBvYmplY3QgPSBtX291dC5waGkobV9vdXQuaW50
UHRyLCBmYXN0T2JqZWN0LCBzbG93T2JqZWN0KTsKICAgICAgICAgICAgICAgICBidXR0ZXJmbHkg
PSBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVyZmx5KTsK
KworICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVibGljTGVuZ3RoLCBidXR0ZXJmbHks
IG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisKKyAgICAgICAgICAgICAgICBpbml0
aWFsaXplQXJyYXlFbGVtZW50cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpLCB2ZWN0b3JMZW5n
dGgsIGJ1dHRlcmZseSk7CisKKyAgICAgICAgICAgICAgICBIYXNoTWFwPAorICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90LCBMVmFsdWUsIERlZmF1bHRIYXNoPGludDMyX3Q+OjpIYXNoLAorICAg
ICAgICAgICAgICAgICAgICBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludDMy
X3Q+PiBpbmRleE1hcDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8aW50MzJfdD4gaW5kaWNlczsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZGVzY3JpcHRvci5raW5kKCkgIT0gSW5kZXhlZFByb3BlcnR5UExvYykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGlu
ZGV4ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVzY3JpcHRvci5pbmZvKCkpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBpbmRleE1hcC5h
ZGQoaW5kZXgsIHZhbHVlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbV9ub2RlLCByZXN1bHQpOyAvLyBEdXBsaWNhdGVzIGFyZSBpbGxlZ2FsLgorCisgICAg
ICAgICAgICAgICAgICAgIGluZGljZXMuYXBwZW5kKGluZGV4KTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoIWluZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c29ydChpbmRpY2VzLmJlZ2luKCksIGluZGljZXMuZW5kKCkpOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2Nr
PiBibG9ja3NXaXRoU3RvcmVzKGluZGljZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
VmVjdG9yPExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoQ2hlY2tzKGluZGljZXMuc2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NX
aXRoU3RvcmVzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJsb2Nrc1dpdGhDaGVja3NbaV0gPSBtX291dC5uZXdCbG9jaygpOyAvLyBibG9ja3NXaXRoQ2hl
Y2tzWzBdIGlzIHRoZSBjb250aW51YXRpb24uCisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbmRleExhc3ROZXh0ID0gbV9vdXQubV9uZXh0
QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBpbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBpbmRleCA9IGluZGljZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBM
VmFsdWUgdmFsdWUgPSBpbmRleE1hcC5nZXQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9vdXQuYmVsb3cobV9vdXQuY29uc3RJbnQzMihpbmRleCksIHB1Ymxp
Y0xlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGJsb2Nrc1dpdGhT
dG9yZXNbaV0pLCB1bnN1cmUoYmxvY2tzV2l0aENoZWNrc1tpXSkpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NXaXRoU3RvcmVzW2ldLCBibG9ja3NXaXRo
Q2hlY2tzW2ldKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBoYXMgdG8gdHlw
ZS1jaGVjayBhbmQgY29udmVydCBpdHMgaW5wdXRzLCBidXQgaXQgY2Fubm90IGRvIHNvIGluIGEK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdheSB0aGF0IHVwZGF0ZXMgQUkuIFRoYXQncyBh
IGJpdCBhbm5veWluZywgYnV0IGlmIHlvdSB0aGluayBhYm91dCBob3cKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHNpbmtpbmcgd29ya3MsIGl0J3MgYWN0dWFsbHkgbm90IGEgYmFkIHRoaW5n
LiBXZSBhcmUgdmlydHVhbGx5IGd1YXJhbnRlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRoYXQgdGhlc2UgdHlwZSBjaGVja3Mgd2lsbCBub3QgZmFpbCwgc2luY2UgdGhlIHR5cGUgY2hl
Y2tzIHRoYXQgZ3VhcmRlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFs
IHN0b3JlcyB0byB0aGUgYXJyYXkgYXJlIHN0aWxsIHNvbWV3aGVyZSBhYm92ZSB0aGlzIHBvaW50
LgorICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhlZEFic3RyYWN0SGVhcCogaGVhcDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIHRoZSBw
cm92ZW4gdHlwZSBpZiB3ZSBoYWQgdGhlIEVkZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1MzExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUs
IG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOb3RJbnQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmU2NDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGllczsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBzb3VyY2UgaXMgVmFsdWVSZXAsIHdlIHNob3VsZCBh
dm9pZCBlbWl0dGluZyBhbnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVja3Mu
IFdlIGNvdWxkIGFsc28gYXZvaWQgZW1pdHRpbmcgY2hlY2tzIGlmIHdlIGhhZCB0aGUgRWRnZSBv
ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgdmFsdWUuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTEKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X291dC5icmFuY2goaXNJbnQzMih2YWx1ZSksIHVuc3VyZShpbnRDYXNlKSwgdW5zdXJlKGRvdWJs
ZUNhc2UpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3RO
ZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBpbnRSZXN1bHQgPQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX291dC5hbmNob3IobV9vdXQuaW50VG9Eb3VibGUodW5ib3hJ
bnQzMih2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3BlY3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOdW1iZXIodmFsdWUp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBkb3VibGVSZXN1
bHQgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1fb3V0LnBoaShEb3VibGUsIGludFJlc3Vs
dCwgZG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUg
PSBPdXRwdXQ6OlN0b3JlRG91YmxlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAg
PSAmbV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlNjQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWRDb250aWd1b3VzUHJv
cGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdf
Q1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiSW52YWxpZCBpbmRleGluZyB0eXBlIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0
b3JlKHZhbHVlLCBtX291dC5hZGRyZXNzKGJ1dHRlcmZseSwgaGVhcC0+YXQoaW5kZXgpKSwgc3Rv
cmVUeXBlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChibG9ja3NXaXRo
Q2hlY2tzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3NbaV0sIGkgPyBibG9ja3NX
aXRoU3RvcmVzW2kgLSAxXSA6IGluZGV4TGFzdE5leHQpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBJbiB0aGUgZWFzeSBjYXNlIHdoZXJlIHdlIGNhbiBkbyBhIG9uZS1zaG90IGFsbG9jYXRp
b24sIHdlIHNpbXBseSBhbGxvY2F0ZSB0aGUKICAgICAgICAgICAgICAgICAvLyBvYmplY3QgdG8g
ZGlyZWN0bHkgaGF2ZSB0aGUgZGVzaXJlZCBzdHJ1Y3R1cmUuCkBAIC02MzY1LDEyICs2NTAzLDE0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoUHJvcGVydHlNYXBF
bnRyeSBlbnRyeSA6IHN0cnVjdHVyZS0+Z2V0UHJvcGVydGllc0NvbmN1cnJlbnRseSgpKSB7CiAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgp
OyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVl
ID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LmlkZW50aWZpZXJzKClbdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyXSAhPSBlbnRyeS5rZXkpCisg
ICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3Ig
PSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0
b3Iua2luZCgpICE9IE5hbWVkUHJvcGVydHlQTG9jKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClb
ZGVzY3JpcHRvci5pbmZvKCldICE9IGVudHJ5LmtleSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTFZh
bHVlIGJhc2UgPSBpc0lubGluZU9mZnNldChlbnRyeS5vZmZzZXQpID8gb2JqZWN0IDogYnV0dGVy
Zmx5OwotICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwg
dmFsdWUubV9pZGVudGlmaWVyTnVtYmVyLCBlbnRyeS5vZmZzZXQpOworICAgICAgICAgICAgICAg
ICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgZGVzY3JpcHRvci5pbmZvKCksIGVu
dHJ5Lm9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTY0MzUsOSArNjU3NSwxMSBAQCBwcml2YXRlOgogICAgICAg
ICBMVmFsdWUgYWN0aXZhdGlvbiA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RSZXN1bHQs
IHNsb3dSZXN1bHQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChkYXRhLm1fcHJvcGVydGllcy5z
aXplKCkgPT0gdGFibGUtPnNjb3BlU2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBtX291
dC5zdG9yZTY0KHZhbHVlc1tpXSwKLSAgICAgICAgICAgICAgICBhY3RpdmF0aW9uLAotICAgICAg
ICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGF0YS5tX3By
b3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAgICAgICBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAg
ICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ2xvc3VyZVZhclBMb2MpOworICAg
ICAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgICAgICB2YWx1ZXNbaV0sIGFjdGl2
YXRpb24sCisgICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3JkX3Zhcmlh
Ymxlc1tkZXNjcmlwdG9yLmluZm8oKV0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHZhbGlk
YXRpb25FbmFibGVkKCkpIHsKQEAgLTY0NDYsNyArNjU4OCw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbihsb2NrZXIpLCBlbmQgPSB0YWJsZS0+
ZW5kKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgICAgICAgICBib29s
IGZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09IGRhdGEubV9wcm9wZXJ0aWVz
W2ldLm1faWRlbnRpZmllck51bWJlcikgeworICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9PSBDbG9zdXJlVmFyUExv
Yyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9m
ZnNldCgpID09IGRlc2NyaXB0b3IuaW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBm
b3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtNjYxMyw2ICs2NzU3LDI5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0
LnN0b3JlNjQodmFsdWUsIHJlZ0V4cCwgbV9oZWFwcy5SZWdFeHBPYmplY3RfbGFzdEluZGV4KTsK
ICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQoKQorICAg
IHsKKyAgICAgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMCk7CisgICAgICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCAxKTsKKyAgICAgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDIpOworICAgICAgICBFZGdlIHN0YXJ0RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAzKTsKKyAgICAgICAgRWRnZSBlbmRFZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDQpOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIGNvbnN0cnVjdG9yID0gbG93
Q2VsbChjb25zdHJ1Y3RvckVkZ2UpOworICAgICAgICBMVmFsdWUgcmVnRXhwID0gbG93Q2VsbChy
ZWdFeHBFZGdlKTsKKyAgICAgICAgTFZhbHVlIHN0cmluZyA9IGxvd0NlbGwoc3RyaW5nRWRnZSk7
CisgICAgICAgIExWYWx1ZSBzdGFydCA9IGxvd0ludDMyKHN0YXJ0RWRnZSk7CisgICAgICAgIExW
YWx1ZSBlbmQgPSBsb3dJbnQzMihlbmRFZGdlKTsKKworICAgICAgICBtX291dC5zdG9yZVB0cihy
ZWdFeHAsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3Vs
dF9sYXN0UmVnRXhwKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RyaW5nLCBjb25zdHJ1Y3Rv
ciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdElucHV0KTsKKyAg
ICAgICAgbV9vdXQuc3RvcmUzMihzdGFydCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29u
c3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9zdGFydCk7CisgICAgICAgIG1fb3V0LnN0b3Jl
MzIoZW5kLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1
bHRfcmVzdWx0X2VuZCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzJBczgoCisgICAgICAgICAgICBt
X291dC5jb25zdEludDMyKDApLAorICAgICAgICAgICAgbV9vdXQuYWRkcmVzcyhjb25zdHJ1Y3Rv
ciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVpZmllZCkpOworICAg
IH0KKwogICAgIExWYWx1ZSBkaWRPdmVyZmxvd1N0YWNrKCkKICAgICB7CiAgICAgICAgIC8vIFRo
aXMgZG9lcyBhIHZlcnkgc2ltcGxlIGxlYWYgZnVuY3Rpb24gYW5hbHlzaXMuIFRoZSBpbnZhcmlh
bnQgb2YgRlRMIGNhbGwKQEAgLTY5NzAsNiArNzEzNywzOSBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemVBcnJh
eUVsZW1lbnRzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIExWYWx1ZSB2ZWN0b3JMZW5ndGgs
IExWYWx1ZSBidXR0ZXJmbHkpCisgICAgeworICAgICAgICBpZiAoIWhhc0RvdWJsZShpbmRleGlu
Z1R5cGUpKSB7CisgICAgICAgICAgICAvLyBUaGUgR0MgYWxyZWFkeSBpbml0aWFsaXplZCBldmVy
eXRoaW5nIHRvIEpTVmFsdWUoKSBmb3IgdXMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICAvLyBEb3VibGVzIG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gUE5hTi4KKyAg
ICAgICAgTEJhc2ljQmxvY2sgaW5pdExvb3AgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBpbml0RG9uZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIAorICAgICAg
ICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5jaG9yKHZlY3Rvckxlbmd0
aCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFuY2hv
cihidXR0ZXJmbHkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5u
b3RaZXJvMzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25l
KSk7CisgICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOworICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291
dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOworICAgICAgICBMVmFsdWUgcG9pbnRl
ciA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7CisgICAgICAgIAor
ICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3
aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAorICAgICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVh
cHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSk7CisgICAg
ICAgIAorICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5p
bnQzMk9uZSk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFu
Y2hvcihuZXh0SW5kZXgpKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShwb2ludGVy
LCBtX291dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1fb3V0LmludFB0ckVpZ2h0KSkpOwor
ICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIobmV4dElu
ZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7CisgICAgICAgIAorICAg
ICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5pdExhc3ROZXh0KTsKKyAgICB9CiAgICAg
CiAgICAgTFZhbHVlIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKExWYWx1ZSBvYmplY3QsIFN0cnVj
dHVyZSogcHJldmlvdXNTdHJ1Y3R1cmUpCiAgICAgewpAQCAtOTI1Nyw3ICs5NDU3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC50
ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQotICAgIAorCiAg
ICAgTFZhbHVlIHVuYm94RG91YmxlKExWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fb3V0LmJpdENhc3QobV9vdXQuYWRkKGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlciksIG1f
b3V0LmRvdWJsZVR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxOSArNDEsNiBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M6OkRG
RzsKIAotZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0
V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwotICAgIAotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5
OjpjcmVhdGUoCi0gICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigpLCAwKTsKLSAgICAKLSAgICBKU09iamVj
dCogcmVzdWx0ID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVy
Zmx5KTsKLSAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVy
Zmx5IGlzIGluIHRvLXNwYWNlLgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGV4dGVybiAiQyIg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoCiAgICAgRXhl
Y1N0YXRlKiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiogbWF0ZXJpYWxpemF0
aW9uLAogICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlKiB2
YWx1ZXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAgY2xhc3MgTGF6eVNsb3dQYXRo
OwogCiBleHRlcm4gIkMiIHsKIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09i
amVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwot
CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigK
ICAgICBFeGVjU3RhdGUqLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiosIEVuY29kZWRK
U1ZhbHVlKikgV1RGX0lOVEVSTkFMOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDEwIEBAIGNs
YXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKIAorICAgIC8vIFRoaXMgaXMgYSBzdXBlciBkYW5nZXJvdXMgbWV0aG9kIGZvciBK
SVRzLiBTb21ldGltZXMgdGhlIEpJVHMgd2lsbCB3YW50IHRvIGNyZWF0ZSBlaXRoZXIgYQorICAg
IC8vIEpTRmluYWxPYmplY3Qgb3IgYSBKU0FycmF5LiBUaGlzIGlzIHRoZSBtZXRob2QgdGhhdCB3
aWxsIGRvIHRoYXQuCisgICAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGVSYXdPYmplY3QoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiA9IG51bGxwdHIpOwor
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2Vs
bCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBj
b3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNpdG9yJiwgQ29weVRva2VuKTsKQEAgLTEw
MzQsNiArMTAzOCwyMCBAQCBwcml2YXRlOgogCiBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VPZihFeGVjU3RhdGUq
KTsKIAoraW5saW5lIEpTT2JqZWN0KiBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KAorICAgIEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5
KQoreworICAgIEpTT2JqZWN0KiBmaW5hbE9iamVjdCA9IG5ldyAoCisgICAgICAgIE5vdE51bGws
IAorICAgICAgICBhbGxvY2F0ZUNlbGw8SlNGaW5hbE9iamVjdD4oCisgICAgICAgICAgICAqZXhl
Yy0+aGVhcCgpLAorICAgICAgICAgICAgSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3Ry
dWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKQorICAgICAgICApCisgICAgKSBKU09iamVjdChleGVj
LT52bSgpLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgZmluYWxPYmplY3QtPmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgIHJldHVybiBmaW5hbE9iamVjdDsKK30KKwogaW5saW5l
IEpTRmluYWxPYmplY3QqIEpTRmluYWxPYmplY3Q6OmNyZWF0ZSgKICAgICBFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkocmV2aXNpb24gMTk3OTgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYyLDYgKzI2Miw4IEBAIFJlZ0V4cCogUmVnRXhwOjpjcmVhdGUoVk0mIHZtLCBj
b25zdCBTdHIKIAogdm9pZCBSZWdFeHA6OmNvbXBpbGUoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNp
emUgY2hhclNpemUpCiB7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KyAgICAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9m
bGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IpOwogICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9y
KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTksOCArMzAx
LDIyIEBAIGludCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgU3RyaW5nJiAKICAgICByZXR1
cm4gbWF0Y2hJbmxpbmUodm0sIHMsIHN0YXJ0T2Zmc2V0LCBvdmVjdG9yKTsKIH0KIAorYm9vbCBS
ZWdFeHA6Om1hdGNoQ29uY3VycmVudGx5KAorICAgIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgVmVjdG9yPGludCwgMzI+JiBvdmVj
dG9yKQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBp
ZiAoIWhhc0NvZGVGb3Iocy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcG9zaXRpb24gPSBtYXRjaCh2bSwgcywgc3Rh
cnRPZmZzZXQsIG92ZWN0b3IpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFJlZ0V4cDo6
Y29tcGlsZU1hdGNoT25seShWTSogdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsK
KyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAgIFlhcnI6
OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCAmbV9jb25zdHJ1
Y3Rpb25FcnJvcik7CiAgICAgaWYgKG1fY29uc3RydWN0aW9uRXJyb3IpIHsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTM0MCw2ICszNTYsOCBAQCBNYXRjaFJlc3Vs
dCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgCiAKIHZvaWQgUmVnRXhwOjpkZWxldGVDb2Rl
KCkKIHsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAg
IGlmICghaGFzQ29kZSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IE5vdENvbXBp
bGVkOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9u
IDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaWZuZGVmIFJlZ0V4cF9oCiAjZGVmaW5lIFJl
Z0V4cF9oCiAKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1
dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlJl
Z0V4cEtleS5oIgpAQCAtNTYsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpZ25vcmVDYXNl
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdJZ25vcmVDYXNlOyB9CiAgICAgYm9vbCBt
dWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ011bHRpbGluZTsgfQogICAg
IGJvb2wgc3RpY2t5KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdTdGlja3k7IH0KKyAg
ICBib29sIGdsb2JhbE9yU3RpY2t5KCkgY29uc3QgeyByZXR1cm4gZ2xvYmFsKCkgfHwgc3RpY2t5
KCk7IH0KICAgICBib29sIHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ1Vu
aWNvZGU7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVyblN0cmluZzsgfQpAQCAtNjQsNiArNjYsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IGNo
YXIqIGVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RydWN0aW9uRXJyb3I7IH0K
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGludCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOworCisgICAgLy8g
UmV0dXJucyBmYWxzZSBpZiB3ZSBjb3VsZG4ndCBydW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBm
b3IgYW55IHJlYXNvbi4KKyAgICBib29sIG1hdGNoQ29uY3VycmVudGx5KFZNJiwgY29uc3QgU3Ry
aW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3RvcjxpbnQsIDMy
PiYgb3ZlY3Rvcik7CisgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgTWF0Y2hSZXN1bHQgbWF0
Y2goVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCk7CiAKICAgICAvLyBD
YWxsIHRoZXNlIHZlcnNpb25zIG9mIHRoZSBtYXRjaCBmdW5jdGlvbnMgaWYgeW91J3JlIGRlc3Bl
cmF0ZSBmb3IgcGVyZm9ybWFuY2UuCkBAIC03Nyw2ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fc3RhdGUgIT0gTm90Q29tcGlsZWQ7CiAgICAgfQogCisgICAgYm9vbCBoYXNDb2Rl
Rm9yKFlhcnI6OllhcnJDaGFyU2l6ZSk7CisKICAgICB2b2lkIGRlbGV0ZUNvZGUoKTsKIAogI2lm
IEVOQUJMRShSRUdFWFBfVFJBQ0lORykKQEAgLTEzMiw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAg
IHVuc2lnbmVkIG1fcnRNYXRjaENhbGxDb3VudDsKICAgICB1bnNpZ25lZCBtX3J0TWF0Y2hGb3Vu
ZENvdW50OwogI2VuZGlmCisgICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwogCiAjaWYgRU5B
QkxFKFlBUlJfSklUKQogICAgIFlhcnI6OllhcnJDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVk
UmVzdWx0LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKIAorICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZMYXN0UmVnRXhwKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFJlZ0V4cENhY2hlZFJlc3VsdCwgbV9sYXN0UmVnRXhwKTsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZMYXN0SW5wdXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVn
RXhwQ2FjaGVkUmVzdWx0LCBtX2xhc3RJbnB1dCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mUmVzdWx0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENhY2hlZFJlc3Vs
dCwgbV9yZXN1bHQpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlaWZpZWQoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX3JlaWZpZWQpOyB9
CisKIHByaXZhdGU6CiAgICAgTWF0Y2hSZXN1bHQgbV9yZXN1bHQ7CiAgICAgYm9vbCBtX3JlaWZp
ZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENv
bnN0cnVjdG9yLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDgg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZFJlc3VsdCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDb25zdHJ1Y3RvciwgbV9jYWNoZWRSZXN1
bHQpOyB9CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgUmVnRXhw
UHJvdG90eXBlKiwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAkocmV2aXNpb24gMTk3OTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NywyMCArNjcsMjcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYgLy8gUkVHRVhQ
X0ZVTkNfVEVTVF9EQVRBX0dFTgogCi1BTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxl
SWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCitBTFdBWVNf
SU5MSU5FIGJvb2wgUmVnRXhwOjpoYXNDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6
ZSkKIHsKICAgICBpZiAoaGFzQ29kZSgpKSB7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgICAg
ICBpZiAobV9zdGF0ZSAhPSBKSVRDb2RlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjgpICYm
IChtX3JlZ0V4cEpJVENvZGUuaGFzOEJpdENvZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpD
aGFyMTYpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzMTZCaXRDb2RlKCkpKQotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZNJiB2
bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQoreworICAgIGlmIChoYXNDb2RlRm9yKGNo
YXJTaXplKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgY29tcGlsZSgmdm0sIGNoYXJTaXplKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJh
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1h
dGNoZXNBcnJheS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYs
NyBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgCiAgICAg
VmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOwogICAgIGludCBwb3NpdGlvbiA9IHJl
Z0V4cC0+bWF0Y2hJbmxpbmUodm0sIGlucHV0VmFsdWUsIHN0YXJ0T2Zmc2V0LCBzdWJwYXR0ZXJu
UmVzdWx0cyk7CisgICAgQVNTRVJUKHBvc2l0aW9uID09IHN1YnBhdHRlcm5SZXN1bHRzWzBdKTsK
ICAgICBpZiAocG9zaXRpb24gPT0gLTEpIHsKICAgICAgICAgcmVzdWx0ID0gTWF0Y2hSZXN1bHQ6
OmZhaWxlZCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9u
IDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIFJlZ0V4cE9i
amVjdDo6ZXhlY0lubGluZShFeGVjU3RhCiAgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1
ZShleGVjKTsgLy8gRklYTUU6IEhhbmRsZSBlcnJvcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTUxNDUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAKLSAgICBib29sIGdsb2JhbE9yU3RpY2t5ID0gcmVnRXhwLT5nbG9iYWwoKSB8fCByZWdFeHAt
PnN0aWNreSgpOworICAgIGJvb2wgZ2xvYmFsT3JTdGlja3kgPSByZWdFeHAtPmdsb2JhbE9yU3Rp
Y2t5KCk7CiAKICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CiAgICAgaWYgKGdsb2JhbE9yU3RpY2t5
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdl
eHAtZXhlYy1mb2xkaW5nLWZhaWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVn
ZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAK
K2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8uZXhlYygiZm9vIik7Cit9
CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewor
ICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0ICE9PSBudWxsKQorICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxl
LXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhm
KShvKShvKS8uZXhlYygiZm9vIik7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAo
cmVzdWx0Lmxlbmd0aCAhPSA0KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIg
KyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFswXSAhPSAiZm9vIikKKyAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1bHRbMV0gIT0gImYiKQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJl
c3VsdFsyXSAhPSAibyIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJl
c3VsdDsKKyAgICBpZiAocmVzdWx0WzNdICE9ICJvIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmctZmFpbC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIC8oZiko
bykobykvLnRlc3QoImJhciIpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJl
c3VsdCAhPSBmYWxzZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVz
dWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUt
cmVnZXhwLXRlc3QtZm9sZGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRl
c3QtZm9sZGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBm
b28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykvLnRlc3QoImZvbyIpOworfQorCitub0lubGlu
ZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVz
dWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSB0cnVlKQorICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9JbnNl
cnRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9JbnNlcnRpb24uaAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTUsMTQgKzU1LDE1IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUYXJnZXRWZWN0b3JUeXBlLCB0eXBlbmFtZSBJbnNlcnRpb25WZWN0b3JUeXBlPgotdm9p
ZCBleGVjdXRlSW5zZXJ0aW9ucyhUYXJnZXRWZWN0b3JUeXBlJiB0YXJnZXQsIEluc2VydGlvblZl
Y3RvclR5cGUmIGluc2VydGlvbnMpCitzaXplX3QgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVj
dG9yVHlwZSYgdGFyZ2V0LCBJbnNlcnRpb25WZWN0b3JUeXBlJiBpbnNlcnRpb25zKQogewotICAg
IGlmICghaW5zZXJ0aW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQuZ3Jv
dyh0YXJnZXQuc2l6ZSgpICsgaW5zZXJ0aW9ucy5zaXplKCkpOworICAgIHNpemVfdCBudW1JbnNl
cnRpb25zID0gaW5zZXJ0aW9ucy5zaXplKCk7CisgICAgaWYgKCFudW1JbnNlcnRpb25zKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICB0YXJnZXQuZ3Jvdyh0YXJnZXQuc2l6ZSgpICsgbnVtSW5zZXJ0
aW9ucyk7CiAgICAgc2l6ZV90IGxhc3RJbmRleCA9IHRhcmdldC5zaXplKCk7CiAgICAgc2l6ZV90
IG9yaWdpbmFsVGFyZ2V0U2l6ZSA9IHRhcmdldC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaW5k
ZXhJbkluc2VydGlvbnMgPSBpbnNlcnRpb25zLnNpemUoKTsgaW5kZXhJbkluc2VydGlvbnMtLTsp
IHsKKyAgICBmb3IgKHNpemVfdCBpbmRleEluSW5zZXJ0aW9ucyA9IG51bUluc2VydGlvbnM7IGlu
ZGV4SW5JbnNlcnRpb25zLS07KSB7CiAgICAgICAgIEFTU0VSVCghaW5kZXhJbkluc2VydGlvbnMg
fHwgaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSA+PSBpbnNlcnRpb25zW2lu
ZGV4SW5JbnNlcnRpb25zIC0gMV0uaW5kZXgoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob3Jp
Z2luYWxUYXJnZXRTaXplLCBpbnNlcnRpb25zW2luZGV4SW5JbnNlcnRpb25zXS5pbmRleCgpIDwg
b3JpZ2luYWxUYXJnZXRTaXplKTsKICAgICAgICAgc2l6ZV90IGZpcnN0SW5kZXggPSBpbnNlcnRp
b25zW2luZGV4SW5JbnNlcnRpb25zXS5pbmRleCgpICsgaW5kZXhJbkluc2VydGlvbnM7CkBAIC03
Myw2ICs3NCw3IEBAIHZvaWQgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlwZSYKICAg
ICAgICAgbGFzdEluZGV4ID0gZmlyc3RJbmRleDsKICAgICB9CiAgICAgaW5zZXJ0aW9ucy5yZXNp
emUoMCk7CisgICAgcmV0dXJuIG51bUluc2VydGlvbnM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4
cC1leGVjLWZvbGRpbmcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8g
ZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1l
eGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVj
LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBA
QAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRp
bmctZmFpbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1m
b2xkaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUt
cmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBs
ZS1yZWdleHAtdGVzdC1mb2xkaW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1y
ZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLWZhaWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhw
LXRlc3QtZm9sZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
LWZhaWwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDAwMDsgKytpKQorICAgICAgICAvZm9vLy5leGVjKCJiYXIiKTsKK30pKCk7CisKSW5kZXg6IExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xk
aW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisoZnVuY3Rpb24oKSB7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgICAgIC9mb28vLmV4ZWMoImZvbyIpOwor
fSkoKTsKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxl
LXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsr
aSkKKyAgICAgICAgL2Zvby8udGVzdCgiYmFyIik7Cit9KSgpOworCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUt
cmVnZXhwLXRlc3QtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICAvZm9vLy50ZXN0KCJmb28iKTsKK30pKCk7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273675</attachid>
            <date>2016-03-10 20:22:31 -0800</date>
            <delta_ts>2016-03-10 20:52:26 -0800</delta_ts>
            <desc>passes all of the easy tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>112276</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0OSBA
QAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI3MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZW5hYmxlcyBjb25zdGFu
dC1mb2xkaW5nIG9mIFJlZ0V4cEV4ZWMgYW5kIFJlZ0V4cFRlc3QuCisKKyAgICAgICAgSXQncyBu
b3cgcG9zc2libGUgdG8gcnVuIFlhcnIgb24gdGhlIEpJVCB0aHJlYWRzLiBTaW5jZSBwcmV2aW91
cyB3b3JrIG9uIGNvbnN0YW50LWZvbGRpbmcKKyAgICAgICAgc3RyaW5ncyBnYXZlIHRoZSBERkcg
YW4gQVBJIGZvciByZWFzb25pbmcgYWJvdXQgSlNTdHJpbmcgY29uc3RhbnRzIGluIHRlcm1zIG9m
CisgICAgICAgIEpJVC10aHJlYWQtbG9jYWwgV1RGOjpTdHJpbmdzLCBpdCdzIG5vdyBzdXBlciBl
YXN5IHRvIGp1c3QgcGFzcyBzdHJpbmdzIHRvIFlhcnIgYW5kIGJ1aWxkIElSCisgICAgICAgIGJh
c2VkIG9uIHRoZSByZXN1bHRzLgorCisgICAgICAgIEJ1dCBSZWdFeHBFeGVjIGlzIGhhcmQ6IHRo
ZSBmb2xkZWQgdmVyc2lvbiBzdGlsbCBtdXN0IGFsbG9jYXRlIGEgUmVnRXhwTWF0Y2hlc0FycmF5
LiBXZSBtdXN0CisgICAgICAgIHVzZSB0aGUgc2FtZSBTdHJ1Y3R1cmUgdGhhdCB0aGUgY29kZSB3
b3VsZCBoYXZlIHVzZWQgb3IgZWxzZSB3ZSdsbCBwb2xsdXRlIHRoZSBwcm9ncmFtJ3MKKyAgICAg
ICAgaW5saW5lIGNhY2hlcy4gQWxzbywgUmVnRXhwTWF0Y2hlc0FycmF5Lmh8Y3BwIHdpbGwgYWxs
b2NhdGUgdGhlIGFycmF5IGFuZCBpdHMgbmFtZWQKKyAgICAgICAgcHJvcGVydGllcyBpbiBvbmUg
Z28gLSB3ZSBkb24ndCB3YW50IHRvIGxvc2UgdGhhdCBvcHRpbWl6YXRpb24uIFNvLCB0aGlzIHBh
dGNoIGVuYWJsZXMKKyAgICAgICAgTWF0ZXJpYWxpemVOZXdPYmplY3QgdG8gYWxsb2NhdGUgb2Jq
ZWN0cyBvciBhcnJheXMgd2l0aCBhbnkgbnVtYmVyIG9mIGluZGV4ZWQgb3IgbmFtZWQKKyAgICAg
ICAgcHJvcGVydGllcy4gUHJldmlvdXNseSBpdCBjb3VsZCBvbmx5IGhhbmRsZSBvYmplY3RzIChi
dXQgbm90IGFycmF5cykgYW5kIG5hZWQgcHJvcGVydGllcworICAgICAgICAoYnV0IG5vdCBpbmRl
eGVkIG9uZXMpLgorCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGEgZmV3IG1pbm9yIHRoaW5ncyBm
b3Igc2V0dGluZyB0aGUgUmVnRXhwQ29uc3RydWN0b3IgY2FjaGVkIHJlc3VsdC4KKworICAgICAg
ICBUaGlzIGlzIGFib3V0IGEgMnggc3BlZWQtdXAgb24gbWljcm9iZW5jaG1hcmtzIHdoZW4gd2Ug
Zm9sZCBhIG1hdGNoIHN1Y2Nlc3MgYW5kIGFib3V0IGEKKyAgICAgICAgOHggc3BlZWQtdXAgd2hl
biB3ZSBmb2xkIGEgbWF0Y2ggZmFpbHVyZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZp
eHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRTbG93KToKKyAgICAgICAgKEpTQzo6
REZHOjpJbnNlcnRpb25TZXQ6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdJbnNlcnRpb25T
ZXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Omluc2VydENoZWNrKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OlN0YWNrQWNjZXNzRGF0
YTo6Zmx1c2hlZEF0KToKKyAgICAgICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpQaGFudG9tUHJvcGVydHlWYWx1
ZTo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0TWF0ZXJpYWxpemF0
aW9uRGF0YTo6b25lV2F5U2ltaWxhcml0eVNjb3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpzaW1pbGFyaXR5U2NvcmUpOiBEZWxldGVk
LgorICAgICAgICAqIGRmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmg6CisgICAgICAg
IChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6OlBoYW50b21Qcm9wZXJ0eVZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpQaGFudG9tUHJvcGVydHlWYWx1ZTo6b3BlcmF0
b3I9PSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR09wSW5mby5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHUHJv
bW90ZWRIZWFwTG9jYXRpb24uY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAg
ICAgICAgKiBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaDoKKyAgICAgICAgKiBkZmcvREZH
U2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6On5TcGVjdWxhdGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRHZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlTGF6eUpTQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNBcnJheSk6IERl
bGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZURlc3RydWN0aWJsZU9iamVjdCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAg
ICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZUNvbW11dGF0aXZpdHkpOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmV4ZWN1dGVJbnNlcnRpb25TZXQp
OgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFs
aWRhdGU6OnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGVD
UFMpOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAg
ICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGVyaWFsaXplQ3JlYXRlQWN0aXZh
dGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTZXRS
ZWdFeHBPYmplY3RMYXN0SW5kZXgpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6ZGlkT3ZlcmZsb3dTdGFjayk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OnN0b3JhZ2VGb3JUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aW5pdGlhbGl6ZUFycmF5RWxlbWVudHMpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90Q2VsbE9yTWlz
Yyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnVuYm94RG91YmxlKToK
KyAgICAgICAgKiBmdGwvRlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3Bl
cmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUik6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9u
TmV3T2JqZWN0V2l0aEJ1dHRlcmZseSk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZUTE9wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjcmVhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaCk6CisgICAgICAgIChK
U0M6OlJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNv
bXBpbGVNYXRjaE9ubHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlbGV0ZUNvZGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZWRS
ZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RS
ZWdFeHApOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElu
cHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCk6
CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZWlmaWVkKToKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlJlZ0V4
cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCk6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzQ29kZUZvcik6CisgICAg
ICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6UmVn
RXhwOjptYXRjaElubGluZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzTWF0Y2hPbmx5Q29k
ZUZvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5
KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAoSlND
OjpjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2Jq
ZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmV4ZWNJbmxpbmUpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpz
OiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1y
ZWdleHAtZXhlYy1mb2xkaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanM6IEFkZGVkLgor
ICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKwogMjAxNi0wMy0xMCAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBi
dWlsZCBmaXggZm9yIHIxOTc5ODMsIGhvcGVmdWxseS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NDg4LDYgKzQ4OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2MkMwMEM3NENEQiAvKiBDb3B5QmFycmll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzEx
QUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8q
IFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi87IH07
CiAJCTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2
NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovOyB9OworCQkwRjdDMzlGRjFD
OTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZv
LmggKi87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgz
MjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjQwLDYg
KzI2NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weUJhcnJpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEg
LyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
N0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGggPSBkZmcvREZHT3BJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZh
bEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAog
CQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25E
YXRhLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMu
Y3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmgg
Ki8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovLAogCQkJ
CUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1Bo
YXNlLmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOENDMDA3NzNBRDggLyogREZHT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBGRDgyRTUyMTQxREFFREUwMDE3OUM5NCAv
KiBERkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYgKzc0NDgsNyBAQAogCQkJCTBGNjRFQUYz
MUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2hl
YWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBn
ZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAq
LywKKwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4
REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5k
X2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1
Miw2ICsxOTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAg
IGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICBicmVhazsKICAgICAgICAg
CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjMsNiArOTIz
LDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAg
d3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24o
UmVnRXhwT2JqZWN0TGFzdEluZGV4TG9jLCBSZWdFeHBPYmplY3RfbGFzdEluZGV4LCBub2RlLT5j
aGlsZDEoKSksIExhenlOb2RlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpOwogICAgICAgICByZXR1
cm47CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKKyAgICAgICAgd3JpdGUo
UmVnRXhwU3RhdGUpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0RnJv
bUFyZ3VtZW50czogewogICAgICAgICBBYnN0cmFjdEhlYXAgaGVhcChEaXJlY3RBcmd1bWVudHNQ
cm9wZXJ0aWVzLCBub2RlLT5jYXB0dXJlZEFyZ3VtZW50c09mZnNldCgpLm9mZnNldCgpKTsKQEAg
LTEwODYsNyArMTA5MCw5IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RV
c2UKICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2Up
IHsKICAgICAgICAgICAgIHJlYWQoUmVnRXhwU3RhdGUpOworICAgICAgICAgICAgcmVhZChSZWdF
eHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAg
ICAgICAgICAgIHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIHJlYWQoV29ybGQpOwpAQCAtMTA5OCw3ICsxMTA0LDkg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICAgICAg
JiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQogICAgICAgICAg
ICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAg
ICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0
SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAgICAgICAgd3Jp
dGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRDbG9zdXJlVmFy
OgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgIGNhc2UgU2V0UmVnRXhw
T2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAg
IGNhc2UgR2V0R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgog
ICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDAs
NiArMTMwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgICAg
ICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBTZXRSZWdFeHBP
YmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogog
ICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGp1c3Qgbm9kZXMgdGhhdCB3ZSBkb24ndCBjdXJyZW50
bHkgZXhwZWN0IHRvIHNlZSBkdXJpbmcgZml4dXAuCiAgICAgICAgICAgICAvLyBJZiB3ZSBldmVy
IHdhbnRlZCB0byBpbnNlcnQgdGhlbSBwcmlvciB0byBmaXh1cCwgdGhlbiB3ZSBqdXN0IGhhdmUg
dG8gY3JlYXRlCiAgICAgICAgICAgICAvLyBmaXh1cCBydWxlcyBmb3IgdGhlbS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzE1LDYgKzMxNSw4IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QK
ICAgICAgICAgICAgIG91dC5wcmludChhbm90aGVyQ29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0
KGZyZWV6ZShtX2NvZGVCbG9jay0+Y29uc3RhbnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgp
KVtpXSksIGNvbnRleHQpKTsKICAgICAgICAgb3V0LnByaW50KCJdIik7CiAgICAgfQorICAgIGlm
IChub2RlLT5oYXNMYXp5SlNWYWx1ZSgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5vZGUt
PmxhenlKU1ZhbHVlKCkpOwogICAgIGlmIChub2RlLT5oYXNJbmRleGluZ1R5cGUoKSkKICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCBJbmRleGluZ1R5cGVEdW1wKG5vZGUtPmluZGV4aW5nVHlwZSgp
KSk7CiAgICAgaWYgKG5vZGUtPmhhc1R5cGVkQXJyYXlUeXBlKCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAxOTc5ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDkgKzQ1LDkgQEAgdm9pZCBJbnNlcnRpb25TZXQ6Omluc2VydFNsb3co
Y29uc3QgSW5zZQogICAgIG1faW5zZXJ0aW9ucy5pbnNlcnQoMCwgaW5zZXJ0aW9uKTsKIH0KIAot
dm9pZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCitzaXplX3QgSW5z
ZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQogewotICAgIGV4ZWN1dGVJbnNl
cnRpb25zKCpibG9jaywgbV9pbnNlcnRpb25zKTsKKyAgICByZXR1cm4gZXhlY3V0ZUluc2VydGlv
bnMoKmJsb2NrLCBtX2luc2VydGlvbnMpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHJl
dmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9u
U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKLSAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9j
ayogYmxvY2spOworICAgIHNpemVfdCBleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIGluc2VydFNsb3coY29uc3QgSW5zZXJ0aW9uJik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHTm9kZVR5cGUuaCIK
ICNpbmNsdWRlICJERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgiCisjaW5jbHVkZSAiREZH
T3BJbmZvLmgiCiAjaW5jbHVkZSAiREZHVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtp
bmQuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKQEAgLTIxOSwyMCArMjIw
LDYgQEAgc3RydWN0IFN0YWNrQWNjZXNzRGF0YSB7CiAgICAgRmx1c2hlZEF0IGZsdXNoZWRBdCgp
IHsgcmV0dXJuIEZsdXNoZWRBdChmb3JtYXQsIG1hY2hpbmVMb2NhbCk7IH0KIH07CiAKLS8vIFRo
aXMgdHlwZSB1c2VkIGluIHBhc3NpbmcgYW4gaW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29u
c3RydWN0b3I7Ci0vLyBkaXN0aW5ndWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5
IGFuIGluZGV4IGludG8gYSBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKLS8vIGEgY29uc3Rh
bnQgaW5kZXgsIGFyZ3VtZW50LCBvciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCi1zdHJ1Y3Qg
T3BJbmZvIHsKLSAgICBPcEluZm8oKSA6IG1fdmFsdWUoMCkgeyB9Ci0gICAgZXhwbGljaXQgT3BJ
bmZvKGludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVl
KSkgeyB9Ci0gICAgZXhwbGljaXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3Rh
dGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQotI2lmIE9TKERBUldJTikgfHwgVVNFKEpT
VkFMVUU2NCkKLSAgICBleHBsaWNpdCBPcEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3Rh
dGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQotI2VuZGlmCi0gICAgZXhwbGljaXQgT3BJ
bmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZh
bHVlKSkgeyB9Ci0gICAgdWludHB0cl90IG1fdmFsdWU7Ci19OwotCiAvLyA9PT0gTm9kZSA9PT0K
IC8vCiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUgb3BlcmF0aW9uIGluIHRoZSBkYXRhIGZs
b3cgZ3JhcGguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShy
ZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw2ICsyMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgTm9kZVJlc3Vs
dEpTKSBcCiAgICAgbWFjcm8oU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlTXVzdEdlbmVy
YXRlKSBcCisgICAgbWFjcm8oUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0LCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhDaGVja05vdEVtcHR5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oQ2hlY2tCYWRDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5NzQsNyArMTk3NCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBjYXNl
IE5hbWVkUHJvcGVydHlQTG9jOiB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlv
bi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgICAgICAg
ICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRvbVByb3BlcnR5VmFsdWUobG9jYXRpb24u
aW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVuZChs
b2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lu
a0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2JvdHRvbSk7CkBAIC0yMDI0LDcgKzIwMjQs
NyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgY2FzZSBDbG9zdXJlVmFyUExvYzogewog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb24uYmFzZSgpID09IGFsbG9jYXRpb24u
aWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBw
ZW5kKFBoYW50b21Qcm9wZXJ0eVZhbHVlKGxvY2F0aW9uLmluZm8oKSkpOworICAgICAgICAgICAg
ICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQobG9jYXRpb24uZGVzY3JpcHRvcigpKTsK
ICAgICAgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlv
bik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZh
bHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5h
cHBlbmQobV9ib3R0b20pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwzMiArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIFBoYW50b21Qcm9wZXJ0eVZhbHVlOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KCJpZCIsIG1faWRlbnRpZmll
ck51bWJlcik7Ci19Ci0KIHZvaWQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91dC5wcmludCgiWyIsIGxpc3REdW1wKG1fcHJv
cGVydGllcyksICJdIik7CiB9CiAKLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6Om9u
ZVdheVNpbWlsYXJpdHlTY29yZSgKLSAgICBjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
JiBvdGhlcikgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBudW1IaXRzID0gMDsKLSAgICBmb3IgKFBo
YW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVlIDogbV9wcm9wZXJ0aWVzKSB7Ci0gICAgICAgIGlmIChv
dGhlci5tX3Byb3BlcnRpZXMuY29udGFpbnModmFsdWUpKQotICAgICAgICAgICAgbnVtSGl0cysr
OwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG51bUhpdHMpIC8gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG1fcHJvcGVydGllcy5zaXplKCkpOwotfQotCi1mbG9hdCBPYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhOjpzaW1pbGFyaXR5U2NvcmUoY29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0
aW9uRGF0YSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bWluKG9uZVdheVNpbWls
YXJpdHlTY29yZShvdGhlciksIG90aGVyLm9uZVdheVNpbWlsYXJpdHlTY29yZSgqdGhpcykpOwot
fQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0
aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJE
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CkBAIC0zNSwz
OCArMzYsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1zdHJ1Y3Qg
UGhhbnRvbVByb3BlcnR5VmFsdWUgewotICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlKCkKLSAgICAg
ICAgOiBtX2lkZW50aWZpZXJOdW1iZXIoVUlOVF9NQVgpCi0gICAgewotICAgIH0KLSAgICAKLSAg
ICBQaGFudG9tUHJvcGVydHlWYWx1ZSh1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKQotICAgICAg
ICA6IG1faWRlbnRpZmllck51bWJlcihpZGVudGlmaWVyTnVtYmVyKQotICAgIHsKLSAgICB9Ci0g
ICAgCi0gICAgdW5zaWduZWQgbV9pZGVudGlmaWVyTnVtYmVyOwotICAgIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBQaGFudG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyTnVtYmVyID09IG90aGVyLm1faWRlbnRpZmllck51
bWJlcjsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci19
OwotCiBzdHJ1Y3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSB7CiAgICAgLy8gRGV0ZXJtaW5l
cyB0aGUgbWVhbmluZyBvZiB0aGUgcGFzc2VkIG5vZGVzLgotICAgIFZlY3RvcjxQaGFudG9tUHJv
cGVydHlWYWx1ZT4gbV9wcm9wZXJ0aWVzOworICAgIFZlY3RvcjxQcm9tb3RlZExvY2F0aW9uRGVz
Y3JpcHRvcj4gbV9wcm9wZXJ0aWVzOwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwotICAgIAotICAgIC8vIFRoZSBmcmFjdGlvbiBvZiBteSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIG90aGVyIGRhdGEgaGFzLgotICAgIGZsb2F0IG9uZVdheVNpbWlsYXJpdHlTY29yZShjb25z
dCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gVGhlIG1p
bmltdW0gb2YgdGhlIHR3byBwb3NzaWJsZSBvbmUtd2F5IHNjb3Jlcy4KLSAgICBmbG9hdCBzaW1p
bGFyaXR5U2NvcmUoY29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYpIGNvbnN0OwogfTsK
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHT3BJbmZvX2gKKyNk
ZWZpbmUgREZHT3BJbmZvX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lm
IEVOQUJMRShERkdfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKy8v
IFRoaXMgdHlwZSB1c2VkIGluIHBhc3NpbmcgYW4gaW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUg
Y29uc3RydWN0b3I7CisvLyBkaXN0aW5ndWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNh
bGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKKy8vIGEgY29u
c3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCitzdHJ1
Y3QgT3BJbmZvIHsKKyAgICBPcEluZm8oKSA6IG1fdmFsdWUoMCkgeyB9CisgICAgZXhwbGljaXQg
T3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZh
bHVlKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUo
c3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQorI2lmIE9TKERBUldJTikgfHwgVVNF
KEpTVkFMVUU2NCkKKyAgICBleHBsaWNpdCBPcEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUo
c3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQorI2VuZGlmCisgICAgZXhwbGljaXQg
T3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KHZhbHVlKSkgeyB9CisgICAgdWludHB0cl90IG1fdmFsdWU7Cit9OworCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERG
R09wSW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwMSw2ICsxNDAxLDYwIEBAIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmF1bHRIYXMKICAgICByZXR1cm4gMDsKIH0K
IAorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSYXdPYmplY3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7CisKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCkpKSB7CisgICAgICAgIEluZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICAgICAgaGVh
ZGVyLnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAgICAgICBoZWFkZXIuc2V0UHVibGljTGVu
Z3RoKDApOworICAgICAgICAKKyAgICAgICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUo
CisgICAgICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpLAorICAgICAgICAgICAgaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGlu
Z1R5cGUoKSksIGhlYWRlciwKKyAgICAgICAgICAgIGxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpOworICAgIH0gZWxzZQorICAgICAgICBidXR0ZXJmbHkgPSBudWxscHRyOworCisgICAg
SlNPYmplY3QqIHJlc3VsdCA9IEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0
dXJlLCBidXR0ZXJmbHkpOworICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0
IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxj
aGFyKj4ocmVzdWx0KTsKK30KKworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09i
amVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKKyAgICAKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRl
cmZseTo6Y3JlYXRlKAorICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpLCBmYWxzZSwgSW5kZXhpbmdIZWFkZXIoKSwgMCk7CisgICAgCisgICAgSlNP
YmplY3QqIHJlc3VsdCA9IEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJl
LCBidXR0ZXJmbHkpOworICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRo
ZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5k
ZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgSW5kZXhp
bmdIZWFkZXIgaGVhZGVyOworICAgIGhlYWRlci5zZXRWZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAg
ICBoZWFkZXIuc2V0UHVibGljTGVuZ3RoKDApOworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
QnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCksIHRydWUsIGhlYWRlciwKKyAgICAgICAgc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSAqIGxlbmd0aCk7CisKKyAgICAvLyBQYXJhZG94aWNhbGx5IHRoaXMgbWF5IGFsbG9j
YXRlIGEgSlNBcnJheS4gVGhhdCdzIHRvdGFsbHkgY29vbC4KKyAgICBKU09iamVjdCogcmVzdWx0
ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7
CisgICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBp
cyBpbiB0by1zcGFjZS4KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqIGV4ZWMpIAog
ewogICAgIGV4ZWMtPnZtKCkudHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFT
Q0lJTGl0ZXJhbCgiTG9nIEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lkZSBERkcuIikpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5Nzk4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTcsNiArMTU3LDEwIEBAIGludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Db252ZXJ0RG8KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhc0lu
c3RhbmNlKEV4ZWNTdGF0ZSosIEpTQ2VsbCogdmFsdWUsIEpTQ2VsbCogcHJvdG8pOwogCitjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jhd09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5U
RVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRl
cmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCB1bnNpZ25lZCBsZW5ndGgpIFdURl9JTlRFUk5BTDsKKwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2dERkcoRXhlY1N0YXRlKikgV1RGX0lOVEVS
TkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9u
RmFpbHVyZShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjY4LDYgKzY2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0U3RhY2s6CiAg
ICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJl
Z0V4cE9iamVjdExhc3RJbmRleDoKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1
bHQ6CiAgICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6IHsKICAgICAgICAgICAgIC8vIFRoaXMg
bm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9u
LiBJdCBpcwogICAgICAgICAgICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93
cyB0aGlzIHBoYXNlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTc0LDYgKzc0LDEwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBQcm8KICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOgogICAgICAgICBvdXQucHJp
bnQoIk5hbWVkUHJvcGVydHlQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSW5k
ZXhlZFByb3BlcnR5UExvYzoKKyAgICAgICAgb3V0LnByaW50KCJJbmRleGVkUHJvcGVydHlQTG9j
Iik7CisgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBBcmd1bWVudFBMb2M6CiAg
ICAgICAgIG91dC5wcmludCgiQXJndW1lbnRQTG9jIik7CkBAIC0xMDIsNiArMTA2LDE0IEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQcm8KICAgICBjYXNlIENsb3N1cmVW
YXJQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJQ
dWJsaWNMZW5ndGhQTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVmVjdG9yTGVu
Z3RoUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJWZWN0b3JMZW5ndGhQTG9jIik7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVh
cExvY2F0aW9uLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyNSAr
MjgsNDEgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHTm9kZS5oIgor
I2luY2x1ZGUgIkRGR0VkZ2UuaCIKKyNpbmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCisjaW5jbHVk
ZSAiREZHT3BJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0
cnVjdCBOb2RlOworCisvLyBQcm9tb3RlZCBsb2NhdGlvbnMgYXJlIGxpa2UgaGVhcCBsb2NhdGlv
bnMgYnV0IGFyZSBtZWFudCB0byBiZSBtb3JlIHByZWNpc2UuIEEgaGVhcCBsb2NhdGlvbiBpcwor
Ly8gYXBwbGljYWJsZSB0byBDU0Ugc2NlbmFyaW9zLCB3aGVyZSBpdCBtYWtlcyBzZW5zZSB0byBz
cGVhayBvZiBhIGxvY2F0aW9uIHZlcnkgYWJzdHJhY3RseS4gQQorLy8gcHJvbW90ZWQgaGVhcCBs
b2NhdGlvbiBpcyBmb3IgY2FzZXMgd2hlcmUgd2Ugc3BlYWsgb2YgYSBzcGVjaWZpYyBvYmplY3Qg
YW5kIHRoZSBjb21waWxlciBrbm93cworLy8gdGhpcyBvYmplY3QncyBpZGVudGl0eSAtIGZvciBl
eGFtcGxlLCB0aGUgb2JqZWN0IGFsbG9jYXRpb24gaGFzIGJlZW4gZWxpbWluYXRlZCBhbmQgd2Ug
dHVybmVkIHRoZQorLy8gZmllbGRzIGludG8gbG9jYWwgdmFyaWFibGVzLiBCZWNhdXNlIHRoZXNl
IHR3byBjYXNlcyBoYXZlIHN1YnRseSBkaWZmZXJlbnQgbmVlZHMsIHdlIHVzZSBzdWJ0bHkKKy8v
IGRpZmZlcmVudCBzdHJ1Y3R1cmVzLiBPbmUgb2YgdGhlIHJlYWxseSBzaWduaWZpY2FudCBkaWZm
ZXJlbmNlcyBpcyB0aGF0IHByb21vdGVkIGxvY2F0aW9ucyBjYW4gYmUKKy8vIHNwb2tlbiBvZiB1
c2luZyBlaXRoZXIgYSBkZXNjcmlwdG9yIHdoaWNoIGRvZXMgbm90IHJlZmVyIHRvIGFueSBOb2Rl
KidzIG9yIHdpdGggYSBoZWFwIGxvY2F0aW9uLAorLy8gd2hpY2ggaXMgYSBkZXNjcmlwdG9yIHdp
dGggYSBOb2RlKiBiYXNlLgorCiBlbnVtIFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBJbnZh
bGlkUHJvbW90ZWRMb2NhdGlvbktpbmQsCiAgICAgCi0gICAgU3RydWN0dXJlUExvYywKKyAgICBB
Y3RpdmF0aW9uU2NvcGVQTG9jLAogICAgIEFjdGl2YXRpb25TeW1ib2xUYWJsZVBMb2MsCi0gICAg
TmFtZWRQcm9wZXJ0eVBMb2MsCi0gICAgQXJndW1lbnRQTG9jLAogICAgIEFyZ3VtZW50Q291bnRQ
TG9jLAorICAgIEFyZ3VtZW50UExvYywKICAgICBBcmd1bWVudHNDYWxsZWVQTG9jLAotCi0gICAg
RnVuY3Rpb25FeGVjdXRhYmxlUExvYywKKyAgICBDbG9zdXJlVmFyUExvYywKICAgICBGdW5jdGlv
bkFjdGl2YXRpb25QTG9jLAotICAgIEFjdGl2YXRpb25TY29wZVBMb2MsCi0gICAgQ2xvc3VyZVZh
clBMb2MKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLAorICAgIEluZGV4ZWRQcm9wZXJ0eVBM
b2MsCisgICAgTmFtZWRQcm9wZXJ0eVBMb2MsCisgICAgUHVibGljTGVuZ3RoUExvYywKKyAgICBT
dHJ1Y3R1cmVQTG9jLAorICAgIFZlY3Rvckxlbmd0aFBMb2MKIH07CiAKIGNsYXNzIFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMz
Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNl
IFN0cmluZ1JlcGxhY2U6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAg
Y2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0Nyw2
ICszMDQ3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hl
ZFJlc3VsdDogeworICAgICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7
CiAgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CiAgICAgICAg
IApAQCAtMzQ5Miw3ICszNDk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAg
ICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAg
ICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwg
bnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQ
Uiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3Ro
ZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFnZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAg
ICAvLyB0aGUgSlNBcnJheSBhbmQgdGhlIEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcy
OCw3ICszNzMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAg
IEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFs
bG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51
bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIs
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5pbmRleGluZ1R5cGUoKSA9PSBB
cnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQu
Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00
OTc4LDcgKzQ5ODMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAg
ICAgICAKKyAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICBjb21waWxlTWF0
ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBVbnJl
YWNoYWJsZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNzEsNiAr
MzE3MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGNvbXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgobm9kZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKworICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAg
IGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJUKG5v
ZGUtPmFycmF5TW9kZSgpLmlzSlNBcnJheSgpKTsKQEAgLTM1NDIsNyArMzU0Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9
IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0
R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVt
RWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQg
dGhpcyBwb2ludCwgb25lIHdheSBvciBhbm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIg
aGF2ZSBwb2ludGVycyB0bwogICAgICAgICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0
ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAgLTM3NzgsNyArMzc4Myw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2Uu
Z3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihp
bmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0
QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBE
RkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOwog
ICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1
ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwpAQCAtNDk3MSw2ICs0OTc2LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCisgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGlsZU1hdGVy
aWFsaXplTmV3T2JqZWN0KG5vZGUpOworICAgICAgICBicmVhazsKKwogI2lmIEVOQUJMRShGVExf
SklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoQWRkMzIoCkBAIC01MDYxLDcgKzUw
NzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBj
YXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dFN0YWNrOgogICAg
IGNhc2UgS2lsbFN0YWNrOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2
ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
TGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUg
IlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVy
QnVmZmVyLmgiCkBAIC03NywyNyArNzgsNDcgQEAgU3BlY3VsYXRpdmVKSVQ6On5TcGVjdWxhdGl2
ZUpJVCgpCiB7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXko
R1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BS
LCB1bnNpZ25lZCBudW1FbGVtZW50cykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0
ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVn
IHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgp
CiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8
fCBoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKSk7CisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCk7CisgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKGluZGV4aW5nVHlwZSk7CisKKyAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IHN0
cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKTsKKyAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0
eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAKICAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoMkdQ
UiA9IHNjcmF0Y2gyLmdwcigpOwotICAgIAotICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0
ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgbnVtRWxlbWVudHMpOworCisgICAgQVNTRVJUKHZlY3Rv
ckxlbmd0aCA+PSBudW1FbGVtZW50cyk7CisgICAgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFT
RV9WRUNUT1JfTEVOLCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgc2xvd0Nhc2VzLmFwcGVuZCgKLSAgICAgICAgZW1p
dEFsbG9jYXRlQmFzaWNTdG9yYWdlKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2Yo
SlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZUdQUikpOwotICAgIG1f
aml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKSwg
c3RvcmFnZUdQUik7Ci0gICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0
Y2gyR1BSLCBzbG93Q2FzZXMpOwotICAgIAotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMy
KG51bUVsZW1lbnRzKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihUcnVzdGVk
SW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7Ci0gICAgCisKKyAgICBzaXplX3Qg
c2l6ZSA9IDA7CisgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAgICBzaXplICs9IHZl
Y3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSArIHNpemVvZihJbmRleGluZ0hlYWRlcik7Cisg
ICAgc2l6ZSArPSBvdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKKworICAgIGlm
IChzaXplKSB7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoCisgICAgICAgICAgICBlbWl0QWxs
b2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3RlZEltbTMyKHNpemUpLCBzdG9yYWdlR1BSKSk7CisgICAg
ICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgICAgIG1faml0LnN1YlB0cihUcnVz
dGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9m
KEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpOworICAgIH0gZWxzZQorICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIoMCksIHN0b3JhZ2VHUFIpOworCisgICAgc2l6ZV90IGFsbG9j
YXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoaW5saW5lQ2FwYWNpdHkp
OworICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yUHRyID0gJm1faml0LnZtKCktPmhlYXAu
YWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3JQdHIpLCBzY3JhdGNoR1BSKTsKKyAg
ICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CisKKyAg
ICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZElt
bTMyKHZlY3Rvckxlbmd0aCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1
dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOworCiAgICAgaWYgKGhhc0RvdWJsZShz
dHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSAmJiBudW1FbGVtZW50cyA8IHZlY3Rvckxlbmd0aCkg
ewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGJp
dHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTE3LDggKzEzOCwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5CiAgICAgLy8gd2hh
dCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZlcyBt
ZS4gSXQncyBhIGxvdAogICAgIC8vIG9mIHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBm
dW5jdGlvbmFsaXR5LiA6LS8KICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yPigKLSAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0b3JhZ2VH
UFIsCi0gICAgICAgIHN0cnVjdHVyZSwgbnVtRWxlbWVudHMpKTsKKyAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25OZXdSYXdPYmplY3QsIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwKKyAg
ICAgICAgc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpKTsKKworICAgIGlmIChoYXNJbmRleGluZ0hl
YWRlcikKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobnVtRWxlbWVudHMpLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVi
bGljTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0aChJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBp
bmNsdWRlVGhpcykKQEAgLTc2NTUsNiArNzY3OSwxMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUxhenlKU0NvbnN0YQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChO
b2RlKiBub2RlKQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS0+c3RydWN0dXJl
U2V0KClbMF07CisgICAgQVNTRVJUKG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCkt
PmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSA9PSBzdHJ1Y3R1cmUpOworCisgICAg
T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGEoKTsKKyAgICAgICAgCisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9IHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IGhh
c0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CisgICAgaW50MzJfdCBwdWJsaWNMZW5n
dGggPSAwOworICAgIGludDMyX3QgdmVjdG9yTGVuZ3RoID0gMDsKKworICAgIGlmIChoYXNJbmRl
eGluZ0hlYWRlcikgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGll
cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1faml0LmdyYXBoKCku
dmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpOworICAgICAgICAgICAgc3dpdGNoIChkYXRhLm1fcHJv
cGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoK
KyAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSBlZGdlLT5hc0ludDMyKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAg
ICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gZWRnZS0+YXNJbnQzMigpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CisgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2Uu
Z3ByKCk7CisgICAgCisgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0
dXJlLCBzdG9yYWdlR1BSLCAwLCB2ZWN0b3JMZW5ndGgpOworICAgIAorICAgIG1faml0LnN0b3Jl
MzIoCisgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIocHVibGljTGVuZ3RoKSwKKyAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRP
ZlB1YmxpY0xlbmd0aCgpKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVy
dGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgRWRnZSBlZGdlID0gbV9qaXQuZ3JhcGgoKS52
YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlw
dG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgc3dpdGNoIChk
ZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICBjYXNlIEluZGV4ZWRQcm9wZXJ0eVBMb2M6IHsK
KyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UpOworICAgICAgICAg
ICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygp
LAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkgKiBkZXNjcmlwdG9yLmluZm8oKSkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOiB7CisgICAg
ICAgICAgICBTdHJpbmdJbXBsKiB1aWQgPSBtX2ppdC5ncmFwaCgpLmlkZW50aWZpZXJzKClbZGVz
Y3JpcHRvci5pbmZvKCldOworICAgICAgICAgICAgZm9yIChQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5
IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVzQ29uY3VycmVudGx5KCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAodWlkICE9IGVudHJ5LmtleSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGlzSW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNl
dCkgPyByZXN1bHRHUFIgOiBzdG9yYWdlR1BSOworICAgICAgICAgICAgICAgIG1faml0LnN0b3Jl
VmFsdWUoCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksCisgICAgICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZl
VG9CYXNlKGVudHJ5Lm9mZnNldCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVk
UmVzdWx0KE5vZGUqIG5vZGUpCit7CisgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1faml0
LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsKKyAgICBFZGdlIHN0YXJ0RWRnZSA9IG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMyk7CisgICAgRWRnZSBlbmRFZGdlID0gbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCA0KTsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGNvbnN0cnVjdG9yKHRoaXMsIGNvbnN0cnVjdG9yRWRnZSk7CisgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgcmVnRXhwKHRoaXMsIHJlZ0V4cEVkZ2UpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHN0cmluZyh0aGlzLCBzdHJpbmdFZGdlKTsKKyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQg
c3RhcnQodGhpcywgc3RhcnRFZGdlKTsKKyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgZW5kKHRo
aXMsIGVuZEVkZ2UpOworCisgICAgR1BSUmVnIGNvbnN0cnVjdG9yR1BSID0gY29uc3RydWN0b3Iu
Z3ByKCk7CisgICAgR1BSUmVnIHJlZ0V4cEdQUiA9IHJlZ0V4cC5ncHIoKTsKKyAgICBHUFJSZWcg
c3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOworICAgIEdQUlJlZyBzdGFydEdQUiA9IHN0YXJ0Lmdw
cigpOworICAgIEdQUlJlZyBlbmRHUFIgPSBlbmQuZ3ByKCk7CisKKyAgICBwdHJkaWZmX3Qgb2Zm
c2V0ID0gUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCk7CisKKyAgICBt
X2ppdC5zdG9yZVB0cigKKyAgICAgICAgcmVnRXhwR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZz
ZXRPZkxhc3RSZWdFeHAoKSkpOworICAgIG1faml0LnN0b3JlUHRyKAorICAgICAgICBzdHJpbmdH
UFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQg
KyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpKTsKKyAgICBtX2ppdC5z
dG9yZTMyKAorICAgICAgICBzdGFydEdQUiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
CisgICAgICAgICAgICBjb25zdHJ1Y3RvckdQUiwKKyAgICAgICAgICAgIG9mZnNldCArIFJlZ0V4
cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJl
c3VsdCwgc3RhcnQpKSk7CisgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgZW5kR1BSLAorICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcygKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yR1BSLAor
ICAgICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgp
ICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSk7CisgICAgbV9qaXQuc3RvcmU4
KAorICAgICAgICBUcnVzdGVkSW1tMzIoMCksCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVp
ZmllZCgpKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQwMSw2ICsy
NDAxLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldFJlZ0V4cE9iamVjdExhc3RJbmRl
eChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVMYXp5SlNDb25zdGFudChOb2RlKik7CisgICAgdm9pZCBjb21w
aWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVJlY29yZFJl
Z0V4cENhY2hlZFJlc3VsdChOb2RlKik7CiAgICAgCiAgICAgdm9pZCBtb3ZlVHJ1ZVRvKEdQUlJl
Zyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhHUFJSZWcpOwpAQCAtMjUxNiw3ICsyNTE4LDcgQEAg
cHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogICAgIH0KIAotICAgIHZvaWQgZW1p
dEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3Rv
cmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOworICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3
T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1
bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKICAgICAKICAgICB2
b2lkIGVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9v
bCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoQ29kZU9yaWdp
biwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVy
SW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUzLDExICsyNTMsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJ
ZDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAgICAgICAgY2FzZSBQdXRC
eUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6IHsKICAgICAgICAgICAg
ICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGNh
c2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgICAgICAgICAgY29uc2lkZXJC
YXJyaWVyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoK
ICAgICAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIFNldFJl
Z0V4cE9iamVjdExhc3RJbmRleDoKQEAgLTI2NiwxMyArMjc0LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgotICAg
ICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7Ci0gICAgICAgICAgICAgICAgY29uc2lkZXJC
YXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotCiAgICAgICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAgICAgICAg
ICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQyKCksIG1fbm9kZS0+Y2hpbGQzKCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgPGNzdGRsaWI+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKQEAgLTMzMSw4ICszMzIsMjM4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
aWYgKCEhc3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29u
c3RhbnQobV9ub2RlLCBqc051bWJlcihzdHJpbmcubGVuZ3RoKCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDogeworICAgICAgICAgICAgaWYgKEpT
T2JqZWN0KiBvYmplY3QgPSBtX25vZGUtPmNoaWxkMSgpLT5keW5hbWljQ2FzdENvbnN0YW50PEpT
T2JqZWN0Kj4oKSkgeworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQo
bV9ub2RlLCBvYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5n
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFJlZ0V4cEV4ZWM6CisgICAg
ICAgIGNhc2UgUmVnRXhwVGVzdDogeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNHbG9iYWxP
YmplY3QqPigpOworICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRp
bWUoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgTm9kZSogcmVnRXhw
T2JqZWN0Tm9kZSA9IG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpOworICAgICAgICAgICAgUmVnRXhw
KiByZWdFeHA7CisgICAgICAgICAgICBpZiAoUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QgPSBy
ZWdFeHBPYmplY3ROb2RlLT5keW5hbWljQ2FzdENvbnN0YW50PFJlZ0V4cE9iamVjdCo+KCkpCisg
ICAgICAgICAgICAgICAgcmVnRXhwID0gcmVnRXhwT2JqZWN0LT5yZWdFeHAoKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKHJlZ0V4cE9iamVjdE5vZGUtPm9wKCkgPT0gTmV3UmVnZXhwKQorICAgICAg
ICAgICAgICAgIHJlZ0V4cCA9IGNvZGVCbG9jaygpLT5yZWdleHAocmVnRXhwT2JqZWN0Tm9kZS0+
cmVnZXhwSW5kZXgoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgIE5vZGUqIHN0cmluZ05vZGUgPSBtX25vZGUtPmNoaWxkMygpLm5vZGUo
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTk9URTogVGhpcyBtb3N0bHkgYWxyZWFk
eSBwcm90ZWN0cyB1cyBmcm9tIGhhdmluZyB0aGUgY29tcGlsZXIgZXhlY3V0ZSBhIHJlZ2V4cAor
ICAgICAgICAgICAgLy8gb3BlcmF0aW9uIG9uIGEgZ2lub3Jtb3VzIHN0cmluZyBieSBwcmV2ZW50
aW5nIHVzIGZyb20gZ2V0dGluZyBvdXIgaGFuZHMgb24gZ2lub3Jtb3VzCisgICAgICAgICAgICAv
LyBzdHJpbmdzIGluIHRoZSBmaXJzdCBwbGFjZS4KKyAgICAgICAgICAgIFN0cmluZyBzdHJpbmcg
PSBtX25vZGUtPmNoaWxkMygpLT50cnlHZXRTdHJpbmcobV9ncmFwaCk7CisgICAgICAgICAgICBp
ZiAoIXN0cmluZykKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgRnJvemVu
VmFsdWUqIHJlZ0V4cEZyb3plblZhbHVlID0gbV9ncmFwaC5mcmVlemUocmVnRXhwKTsKKworICAg
ICAgICAgICAgLy8gUmVmdXNlIHRvIGRvIHRoaW5ncyB3aXRoIHJlZ3VsYXIgZXhwcmVzc2lvbnMg
dGhhdCBoYXZlIGEgZ2lub3Jtb3VzIG51bWJlciBvZgorICAgICAgICAgICAgLy8gc3VicGF0dGVy
bnMuCisgICAgICAgICAgICB1bnNpZ25lZCBnaW5vcm1vdXNOdW1iZXJPZlN1YlBhdHRlcm5zID0g
MTAwMDsKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgPiBnaW5vcm1v
dXNOdW1iZXJPZlN1YlBhdHRlcm5zKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CisgICAgICAgICAgICBpZiAocmVnRXhwLT5nbG9iYWxP
clN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIG9ubHkgd29yayBpZiB3
ZSBjYW4gcHJvdmUgd2hhdCB0aGUgdmFsdWUgb2YgbGFzdEluZGV4IGlzLiBUbyBkbyB0aGlzCisg
ICAgICAgICAgICAgICAgLy8gc2FmZWx5LCB3ZSBuZWVkIHRvIGV4ZWN1dGUgdGhlIGluc2VydGlv
biBzZXQgc28gdGhhdCB3ZSBzZWUgYW55IHByZXZpb3VzIHN0cmVuZ3RoCisgICAgICAgICAgICAg
ICAgLy8gcmVkdWN0aW9ucy4gVGhpcyBpcyBuZWVkZWQgZm9yIHNvdW5kbmVzcyBzaW5jZSBvdGhl
cndpc2UgdGhlIGVmZmVjdGZ1bG5lc3Mgb2YgYW55CisgICAgICAgICAgICAgICAgLy8gcHJldmlv
dXMgc3RyZW5ndGggcmVkdWN0aW9ucyB3b3VsZCBiZSBpbnZpc2libGUgdG8gdXMuCisgICAgICAg
ICAgICAgICAgZXhlY3V0ZUluc2VydGlvblNldCgpOworICAgICAgICAgICAgICAgIGxhc3RJbmRl
eCA9IFVJTlRfTUFYOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgb3RoZXJOb2RlSW5k
ZXggPSBtX25vZGVJbmRleDsgb3RoZXJOb2RlSW5kZXgtLTspIHsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZSogb3RoZXJOb2RlID0gbV9ibG9jay0+YXQob3RoZXJOb2RlSW5kZXgpOworICAgICAg
ICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlID09IHJlZ0V4cE9iamVjdE5vZGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAo
b3RoZXJOb2RlLT5vcCgpID09IFNldFJlZ0V4cE9iamVjdExhc3RJbmRleAorICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGlsZDEoKSA9PSByZWdFeHBPYmplY3ROb2RlCisg
ICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlck5vZGUtPmNoaWxkMigpLT5pc0ludDMyQ29u
c3RhbnQoKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGlsZDIoKS0+
YXNJbnQzMigpID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihvdGhlck5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHdyaXRlc092ZXJsYXAobV9ncmFwaCwgb3RoZXJOb2RlLCBSZWdF
eHBPYmplY3RfbGFzdEluZGV4KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobGFzdEluZGV4ID09IFVJTlRfTUFY
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIGxhc3RJbmRleCA9IDA7CisKKyAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2lu
dHMoKS5hZGRMYXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFs
T2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIGlmIChz
dHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpICE9IEFycmF5V2l0aENvbnRpZ3VvdXMpIHsKKyAgICAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGZ1cnRoZXIgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgcmFjZSB3
aXRoIGhhdmVBQmFkVGltZS4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKworICAg
ICAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5y
ZWdFeHBDb25zdHJ1Y3RvcigpOworICAgICAgICAgICAgRnJvemVuVmFsdWUqIGNvbnN0cnVjdG9y
RnJvemVuVmFsdWUgPSBtX2dyYXBoLmZyZWV6ZShjb25zdHJ1Y3Rvcik7CisKKyAgICAgICAgICAg
IE1hdGNoUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVjdG9y
OworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBjYWxsIHRoZSBraW5kIG9mIG1hdGNoIGZ1bmN0
aW9uIHRoYXQgdGhlIG1haW4gdGhyZWFkIHdvdWxkIGhhdmUgY2FsbGVkLgorICAgICAgICAgICAg
Ly8gT3RoZXJ3aXNlLCB3ZSBtaWdodCBub3QgaGF2ZSB0aGUgZGVzaXJlZCBZYXJyIGNvZGUgY29t
cGlsZWQsIGFuZCB0aGUgbWF0Y2ggd2lsbCBmYWlsLgorICAgICAgICAgICAgaWYgKG1fbm9kZS0+
b3AoKSA9PSBSZWdFeHBFeGVjKSB7CisgICAgICAgICAgICAgICAgaW50IHBvc2l0aW9uOworICAg
ICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJpbmcs
IGxhc3RJbmRleCwgcG9zaXRpb24sIG92ZWN0b3IpKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBwb3NpdGlvbjsKKyAgICAgICAgICAg
ICAgICByZXN1bHQuZW5kID0gb3ZlY3RvclsxXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3VycmVudGx5KHZtKCksIHN0cmluZywg
bGFzdEluZGV4LCByZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gV2UndmUgY29uc3RhbnQtZm9sZGVkIHRoZSByZWdleHAu
IE5vdyB3ZSdyZSBjb21taXR0ZWQgdG8gcmVwbGFjaW5nIFJlZ0V4cEV4ZWMvVGVzdC4KKworICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmln
aW4gPSBtX25vZGUtPm9yaWdpbjsKKworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIENoZWNrLCBvcmln
aW4sIG1fbm9kZS0+Y2hpbGRyZW4uanVzdENoZWNrcygpKTsKKworICAgICAgICAgICAgaWYgKG1f
bm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkg
eworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQqIHN0cnVjdHVyZVNldCA9IG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
Q3JlYXRlIGFuIGFycmF5IG1vZGVsaW5nIHRoZSBKUyBhcnJheSB0aGF0IHdlIHdpbGwgdHJ5IHRv
IGFsbG9jYXRlLiBUaGlzIGlzCisgICAgICAgICAgICAgICAgICAgIC8vIGJhc2ljYWxseSBjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0IG92ZXIgQysrIHN0cmluZ3MgaW5zdGVhZCBvZiBKU1N0
cmluZ3MuCisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdEFycmF5Owor
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheS5hcHBlbmQoc3RyaW5nLnN1YnN0cmluZyhy
ZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8PSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gb3ZlY3RvclsyICogaV07CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheS5hcHBlbmQoc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgb3ZlY3RvclsyICog
aSArIDFdIC0gc3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheS5hcHBlbmQoU3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHVibGljTGVu
Z3RoID0gcmVzdWx0QXJyYXkuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2
ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIHB1YmxpY0xlbmd0aCk7CisK
KyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGluZGV4VUlEID0gdm0oKS5w
cm9wZXJ0eU5hbWVzLT5pbmRleC5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRT
dHJpbmdJbXBsKiBpbnB1dFVJRCA9IHZtKCkucHJvcGVydHlOYW1lcy0+aW5wdXQuaW1wbCgpOwor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleEluZGV4ID0gbV9ncmFwaC5pZGVudGlm
aWVycygpLmVuc3VyZShpbmRleFVJRCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
cHV0SW5kZXggPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlucHV0VUlEKTsKKworICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmaXJzdENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4
LCBvcmlnaW4sIHN0cnVjdHVyZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgICAg
IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEqIGRhdGEgPSBtX2dyYXBoLm1fb2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YS5hZGQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocHVibGljTGVuZ3RoKSwgS25v
d25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBw
ZW5kKFB1YmxpY0xlbmd0aFBMb2MpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcih2ZWN0b3JMZW5ndGgpLCBL
bm93bkludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5h
cHBlbmQoVmVjdG9yTGVuZ3RoUExvYyk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHJlc3VsdC5zdGFydCksIFVudHlwZWRVc2Up
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVy
dHlQTG9jLCBpbmRleEluZGV4KSk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKHN0cmluZ05vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBp
bnB1dEluZGV4KSk7CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRlcmlhbGl6ZVN0cmlu
ZyA9IFsmXSAoY29uc3QgU3RyaW5nJiBzdHJpbmcpIC0+IE5vZGUqIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2luc2VydGlv
blNldC5pbnNlcnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9u
b2RlSW5kZXgsIG9yaWdpbiwgdm0oKS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1
ZSB2YWx1ZSA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgc3RyaW5nKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgTGF6eUpTQ29u
c3RhbnQsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFw
aC5tX2xhenlKU1ZhbHVlcy5hZGQodmFsdWUpKSk7CisgICAgICAgICAgICAgICAgICAgIH07CisK
KyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdEFycmF5
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9
IG1hdGVyaWFsaXplU3RyaW5nKHJlc3VsdEFycmF5W2ldKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShub2RlLCBVbnR5
cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVz
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlv
bkRlc2NyaXB0b3IoSW5kZXhlZFByb3BlcnR5UExvYywgaSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogcmVzdWx0Tm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0FycmF5LCBOb2RlOjpWYXJB
cmcsIE1hdGVyaWFsaXplTmV3T2JqZWN0LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICBPcEluZm8oc3RydWN0dXJlU2V0KSwgT3BJbmZvKGRhdGEpLCBmaXJzdENoaWxkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0
Q2hpbGQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNv
bnZlcnRUb0lkZW50aXR5T24ocmVzdWx0Tm9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc051
bGwoKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZl
cnRUb0NvbnN0YW50KG1fbm9kZSwganNCb29sZWFuKCEhcmVzdWx0KSk7CisKKyAgICAgICAgICAg
IC8vIFdoZXRoZXIgaXQncyBFeGVjIG9yIFRlc3QsIHdlIG5lZWQgdG8gdGVsbCB0aGUgY29uc3Ry
dWN0b3IgYW5kIFJlZ0V4cE9iamVjdCB3aGF0J3MgdXAuCisgICAgICAgICAgICBpZiAocmVzdWx0
KSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJB
cmdDaGlsZHJlbi5zaXplKCk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29u
c3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2lu
LCBjb25zdHJ1Y3RvckZyb3plblZhbHVlLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAg
ICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHJlZ0V4cEZyb3plblZhbHVlLCBLbm93bkNlbGxVc2Up
KTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uo
c3RyaW5nTm9kZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRl
eCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQpLCBLbm93bkludDMyVXNlKSk7CisgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuZW5kKSwg
S25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgTm9kZTo6VmFy
QXJnLCBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKCksIE9wSW5mbygpLCBmaXJzdENoaWxkLCBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisKKyAgICAgICAgICAgICAgICBvcmlnaW4gPSBvcmln
aW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChyZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCkpIHsKKyAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRl
eCwgU3BlY05vbmUsIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgb3JpZ2luLAorICAgICAgICAg
ICAgICAgICAgICBFZGdlKHJlZ0V4cE9iamVjdE5vZGUsIFJlZ0V4cE9iamVjdFVzZSksCisgICAg
ICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG1fbm9kZS0+b3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICAgICAganNOdW1iZXIocmVzdWx0ID8gcmVzdWx0LmVuZCA6IDApLCBVbnR5
cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb3JpZ2luID0gb3Jp
Z2luLndpdGhJbnZhbGlkRXhpdCgpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX25v
ZGUtPm9yaWdpbiA9IG9yaWdpbjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAg
LTM4MCw2ICs2MTEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZUluc2VydGlvblNldCgpCisgICAgeworICAgICAg
ICBtX25vZGVJbmRleCA9IG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUobV9ibG9jayk7CisgICAgfQog
ICAgIAogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKICAgICBCYXNpY0Jsb2NrKiBt
X2Jsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJ
KHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjc4LDYgKzI3OCwxOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICF2YXJpYW50Lm9sZFN0cnVjdHVy
ZUZvclRyYW5zaXRpb24oKS0+ZGZnU2hvdWxkV2F0Y2goKSk7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNYXRl
cmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIG9ubHkgc3VwcG9ydHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0
IG9yIEpTQXJyYXkuCisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8fCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTQXJyYXk6
OmluZm8oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBj
ZXJ0YWluIGluZGV4aW5nIHNoYXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KChub2RlKSwgIWhhc0FueUFycmF5U3RvcmFnZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAgICAgICAgICAgICBjYXNlIElu
dDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+
aXNOdW1iZXJDb25zdGFudCgpKTsKQEAgLTQ2MSwxMyArNDczLDQyIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBQdXRIaW50OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6
Ci0gICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAg
ICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgICAgICBj
YXNlIFB1dFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgS2lsbFN0YWNrOgogICAgICAgICAg
ICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2Rl
KSwgISJ1bmV4cGVjdGVkIG5vZGUgdHlwZSBpbiBDUFMiKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDogeworICAg
ICAgICAgICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3MgYXJyYXkgbGVuZ3RocyB0byBiZSBj
b25zdGFudC4gVGhpcyBjb25zdHJhaW50IG9ubHkgZXhpc3RzCisgICAgICAgICAgICAgICAgICAg
IC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBERkcgc3VwcG9ydCBmb3IgYW55dGhpbmcgbW9yZSBh
bmQgd2UgZG9uJ3QgbmVlZCBhbnkKKyAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXIga2luZCBv
ZiBzdXBwb3J0IGZvciBub3cuCisgICAgICAgICAgICAgICAgICAgIE9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGEmIGRhdGEgPSBub2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUo
KTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2Ny
aXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAg
ICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5pc0ludDMyQ29uc3RhbnQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gQ1BTIG9ubHkgYWxsb3dzIG9uZSBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpOwor
CisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBkaXNhbGxvd3MgaW50MzIgYW5kIGRvdWJsZSBh
cnJheXMuIFRob3NlIHJlcXVpcmUgd2VpcmQgdHlwZSBjaGVja3MgYW5kCisgICAgICAgICAgICAg
ICAgICAgIC8vIGNvbnZlcnNpb25zLiBUaGV5IGFyZSBub3QgbmVlZGVkIGluIHRoZSBERkcgcmln
aHQgbm93LiBXZSBzaG91bGQgYWRkIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9y
IHRoZXNlIGlmIHRoZSBERkcgZXZlciBuZWVkcyBpdC4KKyAgICAgICAgICAgICAgICAgICAgZm9y
IChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNJbnQzMihzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSks
ICFoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KChub2RlKSwgbV9ncmFwaC5tX2ZpeHBvaW50U3RhdGUgIT0gRml4cG9pbnROb3RDb252ZXJnZWQp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oSlNTeW1ib2xUYWJsZU9iamVjdF9zeW1ib2xUYWJs
ZSwgSlNTeW1ib2xUYWJsZU9iamVjdDo6b2Zmc2V0T2ZTeW1ib2xUYWJsZSgpKSBcCiAgICAgbWFj
cm8oSlNXcmFwcGVyT2JqZWN0X2ludGVybmFsVmFsdWUsIEpTV3JhcHBlck9iamVjdDo6aW50ZXJu
YWxWYWx1ZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oTWFya2VkQWxsb2NhdG9yX2ZyZWVMaXN0SGVh
ZCwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSBcCisgICAgbWFjcm8o
UmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RSZWdFeHAsIFJlZ0V4cENvbnN0cnVj
dG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRP
Zkxhc3RSZWdFeHAoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3Vs
dF9sYXN0SW5wdXQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsg
UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RJbnB1dCgpKSBcCisgICAgbWFjcm8oUmVn
RXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9zdGFydCwgUmVnRXhwQ29uc3RydWN0
b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9m
UmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIHN0YXJ0KSkgXAorICAgIG1h
Y3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZXN1bHRfZW5kLCBSZWdFeHBDb25z
dHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zm
c2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgZW5kKSkgXAorICAg
IG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZWlmaWVkLCBSZWdFeHBDb25z
dHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zm
c2V0T2ZSZWlmaWVkKCkpIFwKICAgICBtYWNybyhSZWdFeHBPYmplY3RfbGFzdEluZGV4LCBSZWdF
eHBPYmplY3Q6Om9mZnNldE9mTGFzdEluZGV4KCkpIFwKICAgICBtYWNybyhSZWdFeHBPYmplY3Rf
bGFzdEluZGV4SXNXcml0YWJsZSwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleElzV3Jp
dGFibGUoKSkgXAogICAgIG1hY3JvKFNjb3BlZEFyZ3VtZW50c19vdmVycm9kZVRoaW5ncywgU2Nv
cGVkQXJndW1lbnRzOjpvZmZzZXRPZk92ZXJyb2RlVGhpbmdzKCkpIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE5Nzk4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjI4LDYgKzIyOCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiAKICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAgY2FzZSBHZXRSZWdF
eHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6Cisg
ICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBP
Sy4KICAgICAgICAgYnJlYWs7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTM4LDYg
KzkzOCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4
OgogICAgICAgICAgICAgY29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleCgpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgorICAg
ICAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCgpOworICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhp
bnQ6CkBAIC0zNzE2LDMyICszNzE5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9vdXQuc3RvcmUzMihwdWJsaWNMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0
ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIodmVjdG9yTGVu
Z3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChoYXNEb3VibGUobV9ub2RlLT5pbmRleGluZ1R5cGUoKSkp
IHsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdERvbmUgPSBtX291dC5uZXdCbG9j
aygpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9y
aWdpbmFsSW5kZXggPSBtX291dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsKLSAgICAgICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50ZXIgPSBtX291dC5hbmNob3IoYnV0dGVyZmx5
KTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1f
b3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5p
dERvbmUpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBp
bml0TGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOwotICAgICAg
ICAgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgb3JpZ2luYWxJ
bmRleCk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHBvaW50ZXIgPSBtX291dC5waGkobV9vdXQu
aW50UHRyLCBvcmlnaW5hbFBvaW50ZXIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIG1fb3V0LnN0b3JlNjQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQo
Yml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKLSAgICAgICAgICAgICAgICAgICAgVHlwZWRQ
b2ludGVyKG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2lu
dGVyKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTFZhbHVlIG5leHRJbmRl
eCA9IG1fb3V0LnN1YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOwotICAgICAgICAgICAgICAgIG1f
b3V0LmFkZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKLSAg
ICAgICAgICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKHBvaW50ZXIsIG1fb3V0LmFuY2hv
cihtX291dC5hZGQocG9pbnRlciwgbV9vdXQuaW50UHRyRWlnaHQpKSk7Ci0gICAgICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIobmV4
dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW5pdERvbmUsIGluaXRMYXN0
TmV4dCk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGluaXRpYWxpemVBcnJheUVsZW1l
bnRzKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCksIHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5KTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0
LmFuY2hvcihvYmplY3QpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpA
QCAtNjI4NiwxMSArNjI2NSwyMSBAQCBwcml2YXRlOgogICAgICAgICAvLyBMb3dlciB0aGUgdmFs
dWVzIGZpcnN0LCB0byBhdm9pZCBjcmVhdGluZyB2YWx1ZXMgaW5zaWRlIGEgY29udHJvbCBmbG93
IGRpYW1vbmQuCiAgICAgICAgIAogICAgICAgICBWZWN0b3I8TFZhbHVlLCA4PiB2YWx1ZXM7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMSArIGkpKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgRWRnZSBlZGdl
ID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgIHN3aXRj
aCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIFB1Ymxp
Y0xlbmd0aFBMb2M6CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dJbnQzMihlZGdlKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBl
bmQobG93SlNWYWx1ZShlZGdlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0
ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKLSAgICAgICAgCisKICAgICAgICAgVmVjdG9yPExC
YXNpY0Jsb2NrLCAxPiBibG9ja3Moc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IHNldC5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBibG9ja3NbaV0gPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtNjMxNSwyMSArNjMwNCw1MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZh
bHVlIG9iamVjdDsKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgaGFzSW5kZXhlZFBy
b3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgICAgICAgICBz
aXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1
Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgICAgIE1hcmtlZEFsbG9jYXRv
ciogYWxsb2NhdG9yID0gJnZtKCkuaGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1
Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisKKyAgICAgICAgICAgICAgICBib29sIGhhc0luZGV4aW5n
SGVhZGVyID0gaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXhpbmdIZWFkZXJTaXplID0gMDsKKyAgICAg
ICAgICAgICAgICBMVmFsdWUgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPSBtX291dC5pbnRQ
dHJaZXJvOworICAgICAgICAgICAgICAgIExWYWx1ZSB2ZWN0b3JMZW5ndGggPSBtX291dC5pbnQz
Mlplcm87CisgICAgICAgICAgICAgICAgTFZhbHVlIHB1YmxpY0xlbmd0aCA9IG1fb3V0LmludDMy
WmVybzsKKyAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZXhpbmdIZWFkZXJTaXplID0gc2l6ZW9mKEluZGV4aW5nSGVhZGVyKTsK
KyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMu
c2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljTGVuZ3RoID0gdmFsdWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9j
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9IHZhbHVlc1tpXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9vdXQubXVsKG1fb3V0Lnplcm9FeHRQdHIodmVjdG9yTGVuZ3RoKSwgbV9vdXQuaW50UHRy
RWlnaHQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIExWYWx1ZSBidXR0
ZXJmbHlTaXplID0gbV9vdXQuYWRkKAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cigKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAqIHNpemVvZihKU1ZhbHVlKSArIGluZGV4aW5nSGVhZGVyU2l6ZSksCisgICAgICAgICAg
ICAgICAgICAgIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFz
aWNTdG9yYWdlQW5kR2V0RW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0
cihzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpLAotICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aCk7Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5k
KGJ1dHRlcmZseVNpemUsIHNsb3dQYXRoKTsKKwogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0
QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBlbmRPZlN0b3JhZ2UpOworICAgICAg
ICAgICAgICAgICAgICBtX291dC5zdWIoZW5kT2ZTdG9yYWdlLCBpbmRleGluZ1BheWxvYWRTaXpl
SW5CeXRlcyksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJ
bmRleGluZ0hlYWRlcikgLSBpbmRleGluZ0hlYWRlclNpemUpKTsKKworICAgICAgICAgICAgICAg
IG1fb3V0LnN0b3JlMzIodmVjdG9yTGVuZ3RoLCBmYXN0QnV0dGVyZmx5VmFsdWUsIG1faGVhcHMu
QnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgTFZhbHVlIGZhc3RPYmplY3RWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0KAogICAgICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IpLCBzdHJ1Y3R1cmUsIGZhc3RCdXR0
ZXJmbHlWYWx1ZSwgc2xvd1BhdGgpOwpAQCAtNjM0MCwxMiArNjM1OSwyNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRo
LCBjb250aW51YXRpb24pOwogCi0gICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RWYWx1
ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8
TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0
ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93T2JqZWN0VmFsdWU7Cisg
ICAgICAgICAgICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6
eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRW
ZWN0b3JMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sw
XS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgdmVj
dG9yTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBzbG93T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAgICAg
ICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlT
bG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BS
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93T2JqZWN0ID0g
bV9vdXQuYW5jaG9yKHNsb3dPYmplY3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd0J1dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgICAgICAgICAg
bV9vdXQubG9hZFB0cihzbG93T2JqZWN0VmFsdWUsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5
KSk7CkBAIC02MzU2LDYgKzYzODcsMTEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgb2JqZWN0ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdE9iamVj
dCwgc2xvd09iamVjdCk7CiAgICAgICAgICAgICAgICAgYnV0dGVyZmx5ID0gbV9vdXQucGhpKG1f
b3V0LmludFB0ciwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSk7CisKKyAgICAgICAgICAg
ICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRl
cmZseV9wdWJsaWNMZW5ndGgpOworCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUFycmF5RWxl
bWVudHMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkp
OworCisgICAgICAgICAgICAgICAgSGFzaE1hcDwKKyAgICAgICAgICAgICAgICAgICAgaW50MzJf
dCwgTFZhbHVlLCBEZWZhdWx0SGFzaDxpbnQzMl90Pjo6SGFzaCwKKyAgICAgICAgICAgICAgICAg
ICAgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQzMl90Pj4gaW5kZXhNYXA7
CisgICAgICAgICAgICAgICAgVmVjdG9yPGludDMyX3Q+IGluZGljZXM7CisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3Ig
PSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0
b3Iua2luZCgpICE9IEluZGV4ZWRQcm9wZXJ0eVBMb2MpCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9IHN0YXRpY19j
YXN0PGludDMyX3Q+KGRlc2NyaXB0b3IuaW5mbygpKTsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5kZXhNYXAuYWRkKGluZGV4LCB2YWx1
ZXNbaV0pOworICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
cmVzdWx0KTsgLy8gRHVwbGljYXRlcyBhcmUgaWxsZWdhbC4KKworICAgICAgICAgICAgICAgICAg
ICBpbmRpY2VzLmFwcGVuZChpbmRleCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKCFpbmRpY2VzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBzdGQ6
OnNvcnQoaW5kaWNlcy5iZWdpbigpLCBpbmRpY2VzLmVuZCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaz4gYmxvY2tzV2l0aFN0
b3JlcyhpbmRpY2VzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxMQmFzaWNC
bG9jaz4gYmxvY2tzV2l0aENoZWNrcyhpbmRpY2VzLnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRpY2VzLnNpemUo
KTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzV2l0aFN0b3Jlc1tpXSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoQ2hl
Y2tzW2ldID0gbV9vdXQubmV3QmxvY2soKTsgLy8gYmxvY2tzV2l0aENoZWNrc1swXSBpcyB0aGUg
Y29udGludWF0aW9uLgorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgaW5kZXhMYXN0TmV4dCA9IG1fb3V0Lm1fbmV4dEJsb2NrOworICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5k
aWNlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaW5k
ZXggPSBpbmRpY2VzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0g
aW5kZXhNYXAuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fb3V0LmJlbG93KG1fb3V0LmNvbnN0SW50MzIoaW5kZXgpLCBwdWJsaWNMZW5ndGgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3VyZShibG9ja3NXaXRoU3RvcmVzW2ldKSwgdW5z
dXJlKGJsb2Nrc1dpdGhDaGVja3NbaV0pKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oYmxvY2tzV2l0aFN0b3Jlc1tpXSwgYmxvY2tzV2l0aENoZWNrc1tpXSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaGFzIHRvIHR5cGUtY2hlY2sgYW5kIGNv
bnZlcnQgaXRzIGlucHV0cywgYnV0IGl0IGNhbm5vdCBkbyBzbyBpbiBhCisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB3YXkgdGhhdCB1cGRhdGVzIEFJLiBUaGF0J3MgYSBiaXQgYW5ub3lpbmcs
IGJ1dCBpZiB5b3UgdGhpbmsgYWJvdXQgaG93CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBz
aW5raW5nIHdvcmtzLCBpdCdzIGFjdHVhbGx5IG5vdCBhIGJhZCB0aGluZy4gV2UgYXJlIHZpcnR1
YWxseSBndWFyYW50ZWVkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IHRoZXNlIHR5
cGUgY2hlY2tzIHdpbGwgbm90IGZhaWwsIHNpbmNlIHRoZSB0eXBlIGNoZWNrcyB0aGF0IGd1YXJk
ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBzdG9yZXMgdG8gdGhl
IGFycmF5IGFyZSBzdGlsbCBzb21ld2hlcmUgYWJvdmUgdGhpcyBwb2ludC4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIE91dHB1dDo6U3RvcmVUeXBlIHN0b3JlVHlwZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluZGV4ZWRBYnN0cmFjdEhlYXAqIGhlYXA7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIHVzZSB0aGUgcHJvdmVuIHR5cGUgaWYg
d2UgaGFkIHRoZSBFZGdlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2
YWx1ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTMxMQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBub1ZhbHVlKCksIG51
bGxwdHIsIGlzTm90SW50MzIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlNjQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVhcCA9ICZtX2hlYXBzLmluZGV4ZWRJbnQzMlByb3BlcnRpZXM7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxMX0RP
VUJMRV9JTkRFWElOR19UWVBFUzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGUgc291cmNlIGlzIFZhbHVlUmVwLCB3ZSBzaG91bGQgYXZvaWQgZW1pdHRpbmcg
YW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2tzLiBXZSBjb3VsZCBhbHNv
IGF2b2lkIGVtaXR0aW5nIGNoZWNrcyBpZiB3ZSBoYWQgdGhlIEVkZ2Ugb2YKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0aGlzIHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1MzExCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFz
aWNCbG9jayBpbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5u
ZXdCbG9jaygpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlz
SW50MzIodmFsdWUpLCB1bnN1cmUoaW50Q2FzZSksIHVuc3VyZShkb3VibGVDYXNlKSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKGludENhc2UsIGRvdWJsZUNhc2UpOworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgaW50UmVzdWx0ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuYW5jaG9yKG1fb3V0LmludFRvRG91YmxlKHVuYm94SW50MzIodmFsdWUpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwg
Y29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShC
YWRUeXBlLCBub1ZhbHVlKCksIG51bGxwdHIsIGlzTnVtYmVyKHZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZG91YmxlUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKHVuYm94RG91YmxlKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBtX291dC5waGkoRG91YmxlLCBpbnRSZXN1bHQsIGRvdWJsZVJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9y
ZURvdWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5k
ZXhlZERvdWJsZVByb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZTY0OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRleGVkQ29udGlndW91c1Byb3BlcnRpZXM7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgs
IG1fbm9kZSwgIkludmFsaWQgaW5kZXhpbmcgdHlwZSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5zdG9yZSh2YWx1ZSwgbV9v
dXQuYWRkcmVzcyhidXR0ZXJmbHksIGhlYXAtPmF0KGluZGV4KSksIHN0b3JlVHlwZSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoYmxvY2tzV2l0aENoZWNrc1tpXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbygKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBibG9ja3NXaXRoQ2hlY2tzW2ldLCBpID8gYmxvY2tzV2l0aFN0b3Jlc1tpIC0g
MV0gOiBpbmRleExhc3ROZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGVh
c3kgY2FzZSB3aGVyZSB3ZSBjYW4gZG8gYSBvbmUtc2hvdCBhbGxvY2F0aW9uLCB3ZSBzaW1wbHkg
YWxsb2NhdGUgdGhlCiAgICAgICAgICAgICAgICAgLy8gb2JqZWN0IHRvIGRpcmVjdGx5IGhhdmUg
dGhlIGRlc2lyZWQgc3RydWN0dXJlLgpAQCAtNjM2NSwxMiArNjUwMywxNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKFByb3BlcnR5TWFwRW50cnkgZW50cnkgOiBz
dHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25jdXJyZW50bHkoKSkgewogICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgewotICAg
ICAgICAgICAgICAgICAgICBQaGFudG9tUHJvcGVydHlWYWx1ZSB2YWx1ZSA9IGRhdGEubV9wcm9w
ZXJ0aWVzW2ldOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pZGVudGlmaWVycygp
W3ZhbHVlLm1faWRlbnRpZmllck51bWJlcl0gIT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAg
ICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3Bl
cnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmtpbmQoKSAhPSBO
YW1lZFByb3BlcnR5UExvYykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pZGVudGlmaWVycygpW2Rlc2NyaXB0b3IuaW5m
bygpXSAhPSBlbnRyeS5rZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gaXNJ
bmxpbmVPZmZzZXQoZW50cnkub2Zmc2V0KSA/IG9iamVjdCA6IGJ1dHRlcmZseTsKLSAgICAgICAg
ICAgICAgICAgICAgc3RvcmVQcm9wZXJ0eSh2YWx1ZXNbaV0sIGJhc2UsIHZhbHVlLm1faWRlbnRp
Zmllck51bWJlciwgZW50cnkub2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVQcm9w
ZXJ0eSh2YWx1ZXNbaV0sIGJhc2UsIGRlc2NyaXB0b3IuaW5mbygpLCBlbnRyeS5vZmZzZXQpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CkBAIC02NDM1LDkgKzY1NzUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGFjdGl2
YXRpb24gPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KTsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpID09IHRhYmxl
LT5zY29wZVNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1f
cHJvcGVydGllcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1
ZXNbaV0sCi0gICAgICAgICAgICAgICAgYWN0aXZhdGlvbiwKLSAgICAgICAgICAgICAgICBtX2hl
YXBzLkpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzW2RhdGEubV9wcm9wZXJ0aWVzW2ldLm1f
aWRlbnRpZmllck51bWJlcl0pOworICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgQVNTRVJU
KGRlc2NyaXB0b3Iua2luZCgpID09IENsb3N1cmVWYXJQTG9jKTsKKyAgICAgICAgICAgIG1fb3V0
LnN0b3JlNjQoCisgICAgICAgICAgICAgICAgdmFsdWVzW2ldLCBhY3RpdmF0aW9uLAorICAgICAg
ICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGVzY3JpcHRv
ci5pbmZvKCldKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgp
KSB7CkBAIC02NDQ2LDcgKzY1ODgsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgZm9yIChhdXRv
IGl0ZXIgPSB0YWJsZS0+YmVnaW4obG9ja2VyKSwgZW5kID0gdGFibGUtPmVuZChsb2NrZXIpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNl
OwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVy
dGllcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUu
c2NvcGVPZmZzZXQoKS5vZmZzZXQoKSA9PSBkYXRhLm1fcHJvcGVydGllc1tpXS5tX2lkZW50aWZp
ZXJOdW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ2xvc3VyZVZhclBMb2MpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSA9PSBkZXNj
cmlwdG9yLmluZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTY2MTMsNiArNjc1NywyOSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVl
LCByZWdFeHAsIG1faGVhcHMuUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgfQogCisgICAg
dm9pZCBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KCkKKyAgICB7CisgICAgICAgIEVk
Z2UgY29uc3RydWN0b3JFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApOworICAg
ICAgICBFZGdlIHJlZ0V4cEVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSk7Cisg
ICAgICAgIEVkZ2Ugc3RyaW5nRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKTsK
KyAgICAgICAgRWRnZSBzdGFydEVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMyk7
CisgICAgICAgIEVkZ2UgZW5kRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KTsK
KyAgICAgICAgCisgICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwoY29uc3RydWN0
b3JFZGdlKTsKKyAgICAgICAgTFZhbHVlIHJlZ0V4cCA9IGxvd0NlbGwocmVnRXhwRWRnZSk7Cisg
ICAgICAgIExWYWx1ZSBzdHJpbmcgPSBsb3dDZWxsKHN0cmluZ0VkZ2UpOworICAgICAgICBMVmFs
dWUgc3RhcnQgPSBsb3dJbnQzMihzdGFydEVkZ2UpOworICAgICAgICBMVmFsdWUgZW5kID0gbG93
SW50MzIoZW5kRWRnZSk7CisKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIocmVnRXhwLCBjb25zdHJ1
Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCk7
CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0cmluZywgY29uc3RydWN0b3IsIG1faGVhcHMuUmVn
RXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RJbnB1dCk7CisgICAgICAgIG1fb3V0LnN0
b3JlMzIoc3RhcnQsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hl
ZFJlc3VsdF9yZXN1bHRfc3RhcnQpOworICAgICAgICBtX291dC5zdG9yZTMyKGVuZCwgY29uc3Ry
dWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9lbmQp
OworICAgICAgICBtX291dC5zdG9yZTMyQXM4KAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQz
MigwKSwKKyAgICAgICAgICAgIG1fb3V0LmFkZHJlc3MoY29uc3RydWN0b3IsIG1faGVhcHMuUmVn
RXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3JlaWZpZWQpKTsKKyAgICB9CisKICAgICBMVmFs
dWUgZGlkT3ZlcmZsb3dTdGFjaygpCiAgICAgewogICAgICAgICAvLyBUaGlzIGRvZXMgYSB2ZXJ5
IHNpbXBsZSBsZWFmIGZ1bmN0aW9uIGFuYWx5c2lzLiBUaGUgaW52YXJpYW50IG9mIEZUTCBjYWxs
CkBAIC02OTcwLDYgKzcxMzcsMzkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQorCisgICAgdm9pZCBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhJbmRl
eGluZ1R5cGUgaW5kZXhpbmdUeXBlLCBMVmFsdWUgdmVjdG9yTGVuZ3RoLCBMVmFsdWUgYnV0dGVy
Zmx5KQorICAgIHsKKyAgICAgICAgaWYgKCFoYXNEb3VibGUoaW5kZXhpbmdUeXBlKSkgeworICAg
ICAgICAgICAgLy8gVGhlIEdDIGFscmVhZHkgaW5pdGlhbGl6ZWQgZXZlcnl0aGluZyB0byBKU1Zh
bHVlKCkgZm9yIHVzLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gRG91YmxlcyBtdXN0IGJlIGluaXRpYWxpemVkIHRvIFBOYU4uCisgICAgICAgIExCYXNpY0Js
b2NrIGluaXRMb29wID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaW5p
dERvbmUgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgb3JpZ2luYWxJbmRleCA9IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5ndGgpOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50ZXIgPSBtX291dC5hbmNob3IoYnV0dGVyZmx5KTsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKHZlY3Rv
ckxlbmd0aCksIHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShpbml0RG9uZSkpOworICAgICAgICAK
KyAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW5pdExv
b3AsIGluaXREb25lKTsKKyAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0Lmlu
dDMyLCBvcmlnaW5hbEluZGV4KTsKKyAgICAgICAgTFZhbHVlIHBvaW50ZXIgPSBtX291dC5waGko
bV9vdXQuaW50UHRyLCBvcmlnaW5hbFBvaW50ZXIpOworICAgICAgICAKKyAgICAgICAgbV9vdXQu
c3RvcmU2NCgKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0
X3Q+KFBOYU4pKSwKKyAgICAgICAgICAgIFR5cGVkUG9pbnRlcihtX2hlYXBzLmluZGV4ZWREb3Vi
bGVQcm9wZXJ0aWVzLmF0QW55SW5kZXgoKSwgcG9pbnRlcikpOworICAgICAgICAKKyAgICAgICAg
TFZhbHVlIG5leHRJbmRleCA9IG1fb3V0LnN1YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOworICAg
ICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKGluZGV4LCBtX291dC5hbmNob3IobmV4dEluZGV4
KSk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkocG9pbnRlciwgbV9vdXQuYW5jaG9y
KG1fb3V0LmFkZChwb2ludGVyLCBtX291dC5pbnRQdHJFaWdodCkpKTsKKyAgICAgICAgbV9vdXQu
YnJhbmNoKAorICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKG5leHRJbmRleCksIHVuc3VyZShp
bml0TG9vcCksIHVuc3VyZShpbml0RG9uZSkpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oaW5pdERvbmUsIGluaXRMYXN0TmV4dCk7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBh
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZShMVmFsdWUgb2JqZWN0LCBTdHJ1Y3R1cmUqIHByZXZpb3Vz
U3RydWN0dXJlKQogICAgIHsKQEAgLTkyNTcsNyArOTQ1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gcHJvdmVuOwogICAgICAgICByZXR1cm4gbV9vdXQudGVzdE5vblplcm82NChq
c1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KLSAgICAKKwogICAgIExWYWx1ZSB1bmJv
eERvdWJsZShMVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5iaXRD
YXN0KG1fb3V0LmFkZChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpLCBtX291dC5kb3VibGVUeXBl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTkgKzQxLDYgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7CiAKLWV4dGVybiAi
QyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHko
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
LSAgICAKLSAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAotICAg
ICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxz
ZSwgSW5kZXhpbmdIZWFkZXIoKSwgMCk7Ci0gICAgCi0gICAgSlNPYmplY3QqIHJlc3VsdCA9IEpT
RmluYWxPYmplY3Q6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Ci0gICAgcmVz
dWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1z
cGFjZS4KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKAogICAgIEV4ZWNTdGF0ZSogZXhlYywg
RXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24qIG1hdGVyaWFsaXphdGlvbiwKICAgICBFbmNv
ZGVkSlNWYWx1ZSogZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSogdmFsdWVzKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5Nzk4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw4ICszNyw2IEBAIGNsYXNzIExhenlTbG93UGF0aDsKIAogZXh0ZXJuICJD
IiB7CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVy
Zmx5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKLQogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgRXhlY1N0YXRl
KiwgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24qLCBFbmNvZGVkSlNWYWx1ZSopIFdURl9J
TlRFUk5BTDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5NiwxMCBAQCBjbGFzcyBKU09iamVjdCA6
IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAg
ICAvLyBUaGlzIGlzIGEgc3VwZXIgZGFuZ2Vyb3VzIG1ldGhvZCBmb3IgSklUcy4gU29tZXRpbWVz
IHRoZSBKSVRzIHdpbGwgd2FudCB0byBjcmVhdGUgZWl0aGVyIGEKKyAgICAvLyBKU0ZpbmFsT2Jq
ZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBpcyB0aGUgbWV0aG9kIHRoYXQgd2lsbCBkbyB0aGF0Lgor
ICAgIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUmF3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogPSBudWxscHRyKTsKKwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9y
ZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tlbik7CkBAIC0xMDM0LDYgKzEwMzgsMjAg
QEAgcHJpdmF0ZToKIAogSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YoRXhlY1N0YXRlKik7CiAKK2lubGluZSBK
U09iamVjdCogSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKK3sKKyAgICBKU09i
amVjdCogZmluYWxPYmplY3QgPSBuZXcgKAorICAgICAgICBOb3ROdWxsLCAKKyAgICAgICAgYWxs
b2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KAorICAgICAgICAgICAgKmV4ZWMtPmhlYXAoKSwKKyAg
ICAgICAgICAgIEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5l
Q2FwYWNpdHkoKSkKKyAgICAgICAgKQorICAgICkgSlNPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0
dXJlLCBidXR0ZXJmbHkpOworICAgIGZpbmFsT2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT52
bSgpKTsKKyAgICByZXR1cm4gZmluYWxPYmplY3Q7Cit9CisKIGlubGluZSBKU0ZpbmFsT2JqZWN0
KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2
ICsyNjIsOCBAQCBSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRlKFZNJiB2bSwgY29uc3QgU3RyCiAKIHZv
aWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQog
eworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFy
cjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0
cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk5LDggKzMwMSwyMiBAQCBpbnQgUmVn
RXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYgCiAgICAgcmV0dXJuIG1hdGNoSW5saW5l
KHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7CiB9CiAKK2Jvb2wgUmVnRXhwOjptYXRjaENv
bmN1cnJlbnRseSgKKyAgICBWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3RvcikKK3sKKyAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKCFoYXNDb2RlRm9y
KHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHBvc2l0aW9uID0gbWF0Y2godm0sIHMsIHN0YXJ0T2Zmc2V0LCBvdmVj
dG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZWdFeHA6OmNvbXBpbGVNYXRjaE9u
bHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7CisgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBw
YXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IpOwog
ICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0zMzgsOCArMzU0LDIxIEBAIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0
Y2goVk0mIHZtLCBjb25zdCAKICAgICByZXR1cm4gbWF0Y2hJbmxpbmUodm0sIHMsIHN0YXJ0T2Zm
c2V0KTsKIH0KIAorYm9vbCBSZWdFeHA6Om1hdGNoQ29uY3VycmVudGx5KFZNJiB2bSwgY29uc3Qg
U3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmIHJlc3VsdCkKK3sK
KyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKCFoYXNN
YXRjaE9ubHlDb2RlRm9yKHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdCA9IG1hdGNoKHZtLCBzLCBzdGFy
dE9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVnRXhwOjpkZWxldGVDb2Rl
KCkKIHsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAg
IGlmICghaGFzQ29kZSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IE5vdENvbXBp
bGVkOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9u
IDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaWZuZGVmIFJlZ0V4cF9oCiAjZGVmaW5lIFJl
Z0V4cF9oCiAKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1
dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlJl
Z0V4cEtleS5oIgpAQCAtNTYsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpZ25vcmVDYXNl
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdJZ25vcmVDYXNlOyB9CiAgICAgYm9vbCBt
dWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ011bHRpbGluZTsgfQogICAg
IGJvb2wgc3RpY2t5KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdTdGlja3k7IH0KKyAg
ICBib29sIGdsb2JhbE9yU3RpY2t5KCkgY29uc3QgeyByZXR1cm4gZ2xvYmFsKCkgfHwgc3RpY2t5
KCk7IH0KICAgICBib29sIHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ1Vu
aWNvZGU7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVyblN0cmluZzsgfQpAQCAtNjQsOCArNjYsMTQgQEAgcHVibGljOgogICAgIGNvbnN0IGNo
YXIqIGVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RydWN0aW9uRXJyb3I7IH0K
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGludCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOworCisgICAgLy8g
UmV0dXJucyBmYWxzZSBpZiB3ZSBjb3VsZG4ndCBydW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBm
b3IgYW55IHJlYXNvbi4KKyAgICBib29sIG1hdGNoQ29uY3VycmVudGx5KFZNJiwgY29uc3QgU3Ry
aW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3RvcjxpbnQsIDMy
PiYgb3ZlY3Rvcik7CisgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgTWF0Y2hSZXN1bHQgbWF0
Y2goVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCk7CiAKKyAgICBib29s
IG1hdGNoQ29uY3VycmVudGx5KFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIE1hdGNoUmVzdWx0Jik7CisKICAgICAvLyBDYWxsIHRoZXNlIHZlcnNpb25zIG9mIHRoZSBt
YXRjaCBmdW5jdGlvbnMgaWYgeW91J3JlIGRlc3BlcmF0ZSBmb3IgcGVyZm9ybWFuY2UuCiAgICAg
aW50IG1hdGNoSW5saW5lKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7CiAgICAgTWF0Y2hSZXN1bHQgbWF0Y2hJbmxpbmUo
Vk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCk7CkBAIC03Nyw2ICs4NSw5
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc3RhdGUgIT0gTm90Q29tcGlsZWQ7CiAgICAg
fQogCisgICAgYm9vbCBoYXNDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSk7CisgICAgYm9vbCBo
YXNNYXRjaE9ubHlDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSk7CisKICAgICB2b2lkIGRlbGV0
ZUNvZGUoKTsKIAogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKQEAgLTEzMiw2ICsxNDMsNyBA
QCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcnRNYXRjaENhbGxDb3VudDsKICAgICB1bnNpZ25l
ZCBtX3J0TWF0Y2hGb3VuZENvdW50OwogI2VuZGlmCisgICAgQ29uY3VycmVudEpJVExvY2sgbV9s
b2NrOwogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgIFlhcnI6OllhcnJDb2RlQmxvY2sgbV9y
ZWdFeHBKSVRDb2RlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q2FjaGVkUmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw2ICs3NCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImKTsKIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZMYXN0UmVnRXhwKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENhY2hlZFJlc3VsdCwgbV9sYXN0UmVnRXhwKTsg
fQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZMYXN0SW5wdXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX2xhc3RJbnB1dCk7IH0KKyAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mUmVzdWx0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJl
Z0V4cENhY2hlZFJlc3VsdCwgbV9yZXN1bHQpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZlJlaWZpZWQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0
LCBtX3JlaWZpZWQpOyB9CisKIHByaXZhdGU6CiAgICAgTWF0Y2hSZXN1bHQgbV9yZXN1bHQ7CiAg
ICAgYm9vbCBtX3JlaWZpZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkNhY2hlZFJlc3VsdCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDb25zdHJ1Y3Rv
ciwgbV9jYWNoZWRSZXN1bHQpOyB9CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgUmVnRXhwUHJvdG90eXBlKiwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAkocmV2
aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NywyMCArNjcsMjcgQEAgcHJpdmF0ZToKIH07CiAj
ZW5kaWYgLy8gUkVHRVhQX0ZVTkNfVEVTVF9EQVRBX0dFTgogCi1BTFdBWVNfSU5MSU5FIHZvaWQg
UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hh
clNpemUpCitBTFdBWVNfSU5MSU5FIGJvb2wgUmVnRXhwOjpoYXNDb2RlRm9yKFlhcnI6OllhcnJD
aGFyU2l6ZSBjaGFyU2l6ZSkKIHsKICAgICBpZiAoaGFzQ29kZSgpKSB7CiAjaWYgRU5BQkxFKFlB
UlJfSklUKQogICAgICAgICBpZiAobV9zdGF0ZSAhPSBKSVRDb2RlKQotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICgoY2hhclNpemUgPT0g
WWFycjo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzOEJpdENvZGUoKSkpCi0gICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFy
U2l6ZSA9PSBZYXJyOjpDaGFyMTYpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzMTZCaXRDb2RlKCkp
KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlm
TmVjZXNzYXJ5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQoreworICAgIGlm
IChoYXNDb2RlRm9yKGNoYXJTaXplKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgY29tcGlsZSgm
dm0sIGNoYXJTaXplKTsKIH0KQEAgLTE1MiwyMSArMTU5LDI5IEBAIEFMV0FZU19JTkxJTkUgaW50
IFJlZ0V4cDo6bWF0Y2hJbmxpbmUoVk0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1BTFdBWVNf
SU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHkoVk0mIHZtLCBZ
YXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCitBTFdBWVNfSU5MSU5FIGJvb2wgUmVnRXhwOjpo
YXNNYXRjaE9ubHlDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKICAgICBp
ZiAoaGFzQ29kZSgpKSB7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgICAgICBpZiAobV9zdGF0
ZSAhPSBKSVRDb2RlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJ
VENvZGUuaGFzOEJpdENvZGVNYXRjaE9ubHkoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFy
MTYpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkpKQotICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgfQogCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3Nh
cnlNYXRjaE9ubHkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit7CisgICAg
aWYgKGhhc01hdGNoT25seUNvZGVGb3IoY2hhclNpemUpKQorICAgICAgICByZXR1cm47CisKICAg
ICBjb21waWxlTWF0Y2hPbmx5KCZ2bSwgY2hhclNpemUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hl
c0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgQUxXQVlTX0lOTElORSBK
U0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaAogICAgIAogICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJw
YXR0ZXJuUmVzdWx0czsKICAgICBpbnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoSW5saW5lKHZt
LCBpbnB1dFZhbHVlLCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOworICAgIEFTU0VS
VChwb3NpdGlvbiA9PSBzdWJwYXR0ZXJuUmVzdWx0c1swXSk7CiAgICAgaWYgKHBvc2l0aW9uID09
IC0xKSB7CiAgICAgICAgIHJlc3VsdCA9IE1hdGNoUmVzdWx0OjpmYWlsZWQoKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDcgKzYzLDcgQEAgSlNWYWx1ZSBSZWdFeHBPYmplY3Q6OmV4ZWNJbmxpbmUoRXhl
Y1N0YQogICAgIFN0cmluZyBpbnB1dCA9IHN0cmluZy0+dmFsdWUoZXhlYyk7IC8vIEZJWE1FOiBI
YW5kbGUgZXJyb3JzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
MTQ1CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgYm9vbCBnbG9iYWxP
clN0aWNreSA9IHJlZ0V4cC0+Z2xvYmFsKCkgfHwgcmVnRXhwLT5zdGlja3koKTsKKyAgICBib29s
IGdsb2JhbE9yU3RpY2t5ID0gcmVnRXhwLT5nbG9iYWxPclN0aWNreSgpOwogCiAgICAgdW5zaWdu
ZWQgbGFzdEluZGV4OwogICAgIGlmIChnbG9iYWxPclN0aWNreSkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWls
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFp
bC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBmb28oKSB7Cisg
ICAgcmV0dXJuIC8oZikobykobykvLmV4ZWMoImZvbyIpOworfQorCitub0lubGluZShmb28pOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9v
KCk7CisgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9z
aW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5
IEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykvLmV4ZWMoImZvbyIp
OworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kp
IHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdC5sZW5ndGggIT0gNCkK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChy
ZXN1bHRbMF0gIT0gImZvbyIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzFdICE9ICJmIikKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1bHRbMl0gIT0gIm8iKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3Vs
dFszXSAhPSAibyIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJl
Z2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1y
ZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBA
QAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiAvKGYpKG8pKG8pLy50ZXN0KCJiYXIiKTsK
K30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7
CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlmIChyZXN1bHQgIT0gZmFsc2UpCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1w
bGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiAv
KGYpKG8pKG8pLy50ZXN0KCJmb28iKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlm
IChyZXN1bHQgIT0gdHJ1ZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OworfQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDMtMTAgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBERkcgYW5kIEZUTCBzaG91bGQgY29u
c3RhbnQtZm9sZCBSZWdFeHBFeGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNYWtlIGV4ZWN1dGVJbnNlcnRpb25zKCkgcmV0dXJuIHRoZSBhbW91bnQg
Ynkgd2hpY2ggdGhlIHZlY3RvciBpbmNyZWFzZWQgaW4gc2l6ZS4gVGhpcyBpcyBhCisgICAgICAg
IGNvbnZlbmllbnQgZmVhdHVyZSB0aGF0IEkgdXNlIGluIERGRzo6SW5zZXJ0aW9uU2V0LgorCisg
ICAgICAgICogd3RmL0luc2VydGlvbi5oOgorICAgICAgICAoV1RGOjpleGVjdXRlSW5zZXJ0aW9u
cyk6CisKIDIwMTYtMDMtMTAgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBXT0ZGMgpJbmRleDogU291cmNlL1dURi93dGYv
SW5zZXJ0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgJKHJl
dmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTU1LDE0ICs1NSwxNSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVGFyZ2V0VmVjdG9yVHlwZSwgdHlwZW5hbWUgSW5zZXJ0aW9uVmVjdG9yVHlwZT4K
LXZvaWQgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlwZSYgdGFyZ2V0LCBJbnNlcnRp
b25WZWN0b3JUeXBlJiBpbnNlcnRpb25zKQorc2l6ZV90IGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdl
dFZlY3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0aW9uVmVjdG9yVHlwZSYgaW5zZXJ0aW9ucykKIHsK
LSAgICBpZiAoIWluc2VydGlvbnMuc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0
Lmdyb3codGFyZ2V0LnNpemUoKSArIGluc2VydGlvbnMuc2l6ZSgpKTsKKyAgICBzaXplX3QgbnVt
SW5zZXJ0aW9ucyA9IGluc2VydGlvbnMuc2l6ZSgpOworICAgIGlmICghbnVtSW5zZXJ0aW9ucykK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUoKSArIG51bUlu
c2VydGlvbnMpOwogICAgIHNpemVfdCBsYXN0SW5kZXggPSB0YXJnZXQuc2l6ZSgpOwogICAgIHNp
emVfdCBvcmlnaW5hbFRhcmdldFNpemUgPSB0YXJnZXQuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90
IGluZGV4SW5JbnNlcnRpb25zID0gaW5zZXJ0aW9ucy5zaXplKCk7IGluZGV4SW5JbnNlcnRpb25z
LS07KSB7CisgICAgZm9yIChzaXplX3QgaW5kZXhJbkluc2VydGlvbnMgPSBudW1JbnNlcnRpb25z
OyBpbmRleEluSW5zZXJ0aW9ucy0tOykgewogICAgICAgICBBU1NFUlQoIWluZGV4SW5JbnNlcnRp
b25zIHx8IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4KCkgPj0gaW5zZXJ0aW9u
c1tpbmRleEluSW5zZXJ0aW9ucyAtIDFdLmluZGV4KCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KG9yaWdpbmFsVGFyZ2V0U2l6ZSwgaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgo
KSA8IG9yaWdpbmFsVGFyZ2V0U2l6ZSk7CiAgICAgICAgIHNpemVfdCBmaXJzdEluZGV4ID0gaW5z
ZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSArIGluZGV4SW5JbnNlcnRpb25zOwpA
QCAtNzMsNiArNzQsNyBAQCB2b2lkIGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUm
CiAgICAgICAgIGxhc3RJbmRleCA9IGZpcnN0SW5kZXg7CiAgICAgfQogICAgIGluc2VydGlvbnMu
cmVzaXplKDApOworICAgIHJldHVybiBudW1JbnNlcnRpb25zOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzk4MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAzLTEwICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIGFuZCBGVEwgc2hvdWxkIGNvbnN0
YW50LWZvbGQgUmVnRXhwRXhlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1MjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMt
Zm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qczogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qczogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1l
eGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Np
bXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhw
LXRlc3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbDogQWRkZWQuCisK
IDIwMTYtMDMtMTAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIFRlc3QgZ2FyZGVuaW5nIGFmdGVyIHIxOTc5MzMKSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVj
LWZvbGRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZh
aWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9z
aW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVj
LWZvbGRpbmctZmFpbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAt
ZXhlYy1mb2xkaW5nLWZhaWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZv
bGRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxl
LXJlZ2V4cC1leGVjLWZvbGRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVn
cmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUt
cmVnZXhwLWV4ZWMtZm9sZGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3Qt
Zm9sZGluZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRp
b24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy1mYWlsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGlu
Zy1mYWlsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1Jl
Z3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbAorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWls
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVn
cmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUt
cmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
c2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4
cC1leGVjLWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJl
Z2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAK
KyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAg
ICAgICAgL2Zvby8uZXhlYygiYmFyIik7Cit9KSgpOworCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhw
LWV4ZWMtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKQorICAgICAgICAvZm9vLy5leGVjKCJmb28iKTsKK30pKCk7CisKSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1m
b2xkaW5nLWZhaWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisoZnVuY3Rp
b24oKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgICAgIC9m
b28vLnRlc3QoImJhciIpOworfSkoKTsKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZv
bGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7
ICsraSkKKyAgICAgICAgL2Zvby8udGVzdCgiZm9vIik7Cit9KSgpOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273678</attachid>
            <date>2016-03-10 20:52:26 -0800</date>
            <delta_ts>2016-03-10 21:09:18 -0800</delta_ts>
            <desc>maybe the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>114603</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI3MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZW5hYmxlcyBjb25zdGFu
dC1mb2xkaW5nIG9mIFJlZ0V4cEV4ZWMgYW5kIFJlZ0V4cFRlc3QuCisKKyAgICAgICAgSXQncyBu
b3cgcG9zc2libGUgdG8gcnVuIFlhcnIgb24gdGhlIEpJVCB0aHJlYWRzLiBTaW5jZSBwcmV2aW91
cyB3b3JrIG9uIGNvbnN0YW50LWZvbGRpbmcKKyAgICAgICAgc3RyaW5ncyBnYXZlIHRoZSBERkcg
YW4gQVBJIGZvciByZWFzb25pbmcgYWJvdXQgSlNTdHJpbmcgY29uc3RhbnRzIGluIHRlcm1zIG9m
CisgICAgICAgIEpJVC10aHJlYWQtbG9jYWwgV1RGOjpTdHJpbmdzLCBpdCdzIG5vdyBzdXBlciBl
YXN5IHRvIGp1c3QgcGFzcyBzdHJpbmdzIHRvIFlhcnIgYW5kIGJ1aWxkIElSCisgICAgICAgIGJh
c2VkIG9uIHRoZSByZXN1bHRzLgorCisgICAgICAgIEJ1dCBSZWdFeHBFeGVjIGlzIGhhcmQ6IHRo
ZSBmb2xkZWQgdmVyc2lvbiBzdGlsbCBtdXN0IGFsbG9jYXRlIGEgUmVnRXhwTWF0Y2hlc0FycmF5
LiBXZSBtdXN0CisgICAgICAgIHVzZSB0aGUgc2FtZSBTdHJ1Y3R1cmUgdGhhdCB0aGUgY29kZSB3
b3VsZCBoYXZlIHVzZWQgb3IgZWxzZSB3ZSdsbCBwb2xsdXRlIHRoZSBwcm9ncmFtJ3MKKyAgICAg
ICAgaW5saW5lIGNhY2hlcy4gQWxzbywgUmVnRXhwTWF0Y2hlc0FycmF5Lmh8Y3BwIHdpbGwgYWxs
b2NhdGUgdGhlIGFycmF5IGFuZCBpdHMgbmFtZWQKKyAgICAgICAgcHJvcGVydGllcyBpbiBvbmUg
Z28gLSB3ZSBkb24ndCB3YW50IHRvIGxvc2UgdGhhdCBvcHRpbWl6YXRpb24uIFNvLCB0aGlzIHBh
dGNoIGVuYWJsZXMKKyAgICAgICAgTWF0ZXJpYWxpemVOZXdPYmplY3QgdG8gYWxsb2NhdGUgb2Jq
ZWN0cyBvciBhcnJheXMgd2l0aCBhbnkgbnVtYmVyIG9mIGluZGV4ZWQgb3IgbmFtZWQKKyAgICAg
ICAgcHJvcGVydGllcy4gUHJldmlvdXNseSBpdCBjb3VsZCBvbmx5IGhhbmRsZSBvYmplY3RzIChi
dXQgbm90IGFycmF5cykgYW5kIG5hZWQgcHJvcGVydGllcworICAgICAgICAoYnV0IG5vdCBpbmRl
eGVkIG9uZXMpLgorCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGEgZmV3IG1pbm9yIHRoaW5ncyBm
b3Igc2V0dGluZyB0aGUgUmVnRXhwQ29uc3RydWN0b3IgY2FjaGVkIHJlc3VsdC4KKworICAgICAg
ICBUaGlzIGlzIGFib3V0IGEgMnggc3BlZWQtdXAgb24gbWljcm9iZW5jaG1hcmtzIHdoZW4gd2Ug
Zm9sZCBhIG1hdGNoIHN1Y2Nlc3MgYW5kIGFib3V0IGEKKyAgICAgICAgOHggc3BlZWQtdXAgd2hl
biB3ZSBmb2xkIGEgbWF0Y2ggZmFpbHVyZS4gU2FkbHksIHRoaXMgZG9lc24ndCBsb29rIGxpa2Ug
bXVjaCBvZiBhCisgICAgICAgIE9jdGFuZS9yZWdleHAgc3BlZWQtdXAsIGFsdGhvdWdoIHdlIGFy
ZSBkZWZpbml0ZWx5IGRvaW5nIGEgbG90IG9mIGNvbnN0YW50LWZvbGRpbmcgaW4gdGhhdAorICAg
ICAgICBiZW5jaG1hcmsuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1
bXApOgorICAgICAgICAqIGRmZy9ERkdJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Okluc2VydGlvblNldDo6aW5zZXJ0U2xvdyk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0
aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHSW5zZXJ0aW9uU2V0Lmg6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRDaGVjayk6CisgICAgICAgICogZGZn
L0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdGFja0FjY2Vzc0RhdGE6OmZsdXNoZWRB
dCk6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6
ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6Om9u
ZVdheVNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oOgorICAgICAgICAoSlNDOjpERkc6
OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpQaGFudG9tUHJvcGVydHlWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6Om9wZXJhdG9yPT0pOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRG
Rzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZn
L0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojp+U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0QWxsb2NhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjplbWl0R2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUxhenlKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0
aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0
aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVDb21tdXRhdGl2aXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpleGVjdXRlSW5zZXJ0aW9uU2V0KToKKyAgICAgICAg
KiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxp
ZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlQ1BTKToKKyAgICAg
ICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgICogZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb24pOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU2V0UmVnRXhwT2JqZWN0
TGFzdEluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmRpZE92ZXJmbG93U3RhY2spOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpzdG9yYWdlRm9yVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmluaXRpYWxpemVBcnJheUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdENlbGxPck1pc2MpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1bmJveERvdWJsZSk6CisgICAgICAgICog
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvblBvcHVs
YXRlT2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk5ld09iamVjdFdp
dGhCdXR0ZXJmbHkpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3Jl
YXRlUmF3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2gpOgorICAgICAgICAoSlNDOjpSZWdFeHA6
Om1hdGNoQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlTWF0Y2hP
bmx5KToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpkZWxldGVDb2RlKToKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0Lmg6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKToKKyAg
ICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RJbnB1dCk6CisgICAg
ICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQpOgorICAgICAgICAo
SlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rv
cjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6Omhhc0NvZGVGb3IpOgorICAgICAgICAoSlNDOjpS
ZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2hJ
bmxpbmUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IpOgorICAg
ICAgICAoSlNDOjpSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qczogQWRkZWQuCisg
ICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMt
Zm9sZGluZy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZv
byk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpz
OiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMTYtMDMtMTAgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGZv
ciByMTk3OTgzLCBob3BlZnVsbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4OCw2ICs0ODgs
NyBAQAogCQkwRjdDMTFBRDFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MxMUFDMUJDMzg2MkMw
MEM3NENEQiAvKiBDb3B5QmFycmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGN0MzOUZCMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdD
MzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovOyB9OwogCQkwRjdDMzlG
RDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUx
IC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsKKwkJMEY3QzM5RkYxQzkwQzU1QjAwNDgw
MTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovOyB9Owog
CQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUg
LyogQnlWYWxJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4
MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9
OwogCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUx
NjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjY0MCw2ICsyNjQxLDcgQEAK
IAkJMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcHlCYXJyaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9i
amVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2Jq
ZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR09wSW5mby5oOyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4
MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI0NSw2ICs2MjQ3LDcgQEAKIAkJCQkwRjJCOUNE
RDE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oICovLAog
CQkJCTg2RUM5REJGMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCAqLywKIAkJ
CQk4NkVDOURDMDEzMjhERjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9ucy5oICovLAorCQkJCTBG
N0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLywKIAkJCQlBN0Q4OUNFRTE3
QTBCOENDMDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAgKi8s
CiAJCQkJQTdEODlDRUYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuaCAqLywKIAkJCQkwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50
cnkuY3BwICovLApAQCAtNzQ0NSw2ICs3NDQ4LDcgQEAKIAkJCQkwRjY0RUFGMzFDNEVDRDA2MDA2
MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDUxOUY2
REU3NDAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9oZWFkZXIucHkgaW4g
SGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNjE5RjZERTc2MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2Jq
Y19jb25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJMEY3
QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVFQTcxMDcxOUY2REU3ODAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9j
b252ZXJzaW9uc19oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1
MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVB
NzEwODE5RjZERTdBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NTIsNiArMTk1Miw3
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICBjYXNlIFJlY29y
ZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2Ug
R2V0RnJvbUFyZ3VtZW50czoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIzLDYgKzkyMywxMCBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHdyaXRlKFJlZ0V4
cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFJlZ0V4cE9iamVj
dExhc3RJbmRleExvYywgUmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlLT5jaGlsZDIoKS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJuOworCisgICAg
Y2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CisgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRl
KTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6
IHsKICAgICAgICAgQWJzdHJhY3RIZWFwIGhlYXAoRGlyZWN0QXJndW1lbnRzUHJvcGVydGllcywg
bm9kZS0+Y2FwdHVyZWRBcmd1bWVudHNPZmZzZXQoKS5vZmZzZXQoKSk7CkBAIC0xMDg2LDcgKzEw
OTAsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAg
IGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCiAgICAgICAg
ICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAg
ICAgICByZWFkKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHJlYWQoUmVnRXhwT2JqZWN0X2xh
c3RJbmRleCk7CiAgICAgICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICB3
cml0ZShSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICByZWFkKFdvcmxkKTsKQEAgLTEwOTgsNyArMTEwNCw5IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgICYmIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG5vZGUt
PmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJlYWQoUmVn
RXhwU3RhdGUpOworICAgICAgICAgICAgcmVhZChSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAg
ICAgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHdyaXRlKFJlZ0V4cE9i
amVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IHJlYWQoV29ybGQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNl
IEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJ
bmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICBjYXNlIEdldEds
b2JhbFZhcjoKICAgICBjYXNlIEdldEdsb2JhbExleGljYWxWYXJpYWJsZToKICAgICBjYXNlIFB1
dEdsb2JhbFZhcmlhYmxlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAwLDYgKzEzMDAsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICAgICAgY2FzZSBHZXRS
ZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgorICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgICAg
IC8vIFRoZXNlIGFyZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4cGVjdCB0
byBzZWUgZHVyaW5nIGZpeHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50ZWQgdG8g
aW5zZXJ0IHRoZW0gcHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNyZWF0ZQog
ICAgICAgICAgICAgLy8gZml4dXAgcnVsZXMgZm9yIHRoZW0uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNSw2ICszMTUs
OCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgICAg
ICBvdXQucHJpbnQoYW5vdGhlckNvbW1hLCBwb2ludGVyRHVtcEluQ29udGV4dChmcmVlemUobV9j
b2RlQmxvY2stPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSlbaV0pLCBjb250
ZXh0KSk7CiAgICAgICAgIG91dC5wcmludCgiXSIpOwogICAgIH0KKyAgICBpZiAobm9kZS0+aGFz
TGF6eUpTVmFsdWUoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBub2RlLT5sYXp5SlNWYWx1
ZSgpKTsKICAgICBpZiAobm9kZS0+aGFzSW5kZXhpbmdUeXBlKCkpCiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgSW5kZXhpbmdUeXBlRHVtcChub2RlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgIGlm
IChub2RlLT5oYXNUeXBlZEFycmF5VHlwZSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw5ICs0NSw5IEBAIHZvaWQgSW5zZXJ0aW9uU2V0OjppbnNlcnRTbG93KGNvbnN0IEluc2UK
ICAgICBtX2luc2VydGlvbnMuaW5zZXJ0KDAsIGluc2VydGlvbik7CiB9CiAKLXZvaWQgSW5zZXJ0
aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQorc2l6ZV90IEluc2VydGlvblNldDo6
ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBleGVjdXRlSW5zZXJ0aW9ucygqYmxv
Y2ssIG1faW5zZXJ0aW9ucyk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRpb25zKCpibG9jaywg
bV9pbnNlcnRpb25zKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAgICAgCi0gICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKTsK
KyAgICBzaXplX3QgZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jayk7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBpbnNlcnRTbG93KGNvbnN0IEluc2VydGlvbiYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTYsOCArMTE2LDEwIEBAIFN0cmluZyBMYXp5SlNWYWx1ZTo6dHJ5R2V0U3RyaW5nKEdy
YXBoJiAKICAgICBkZWZhdWx0OgogICAgICAgICBpZiAoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5n
ID0gdHJ5R2V0U3RyaW5nSW1wbCgpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBnaW5vcm1vdXNT
dHJpbmdMZW5ndGggPSAxMDAwMDsKLSAgICAgICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID4g
Z2lub3Jtb3VzU3RyaW5nTGVuZ3RoKQorICAgICAgICAgICAgaWYgKHN0cmluZy0+bGVuZ3RoKCkg
PiBnaW5vcm1vdXNTdHJpbmdMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZp
bmcgdXAgYmVjYXVzZSBvZiBzaXplIGxpbWl0LlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IGdyYXBoLm1fY29waWVkU3RyaW5ncy5hZGQoc3RyaW5nLCBTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJERkdOb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHTm9kZVR5cGUuaCIKICNpbmNsdWRlICJE
RkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCiAj
aW5jbHVkZSAiREZHVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNs
dWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKQEAgLTIxOSwyMCArMjIwLDYgQEAgc3RydWN0
IFN0YWNrQWNjZXNzRGF0YSB7CiAgICAgRmx1c2hlZEF0IGZsdXNoZWRBdCgpIHsgcmV0dXJuIEZs
dXNoZWRBdChmb3JtYXQsIG1hY2hpbmVMb2NhbCk7IH0KIH07CiAKLS8vIFRoaXMgdHlwZSB1c2Vk
IGluIHBhc3NpbmcgYW4gaW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7Ci0v
LyBkaXN0aW5ndWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGlu
dG8gYSBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKLS8vIGEgY29uc3RhbnQgaW5kZXgsIGFy
Z3VtZW50LCBvciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCi1zdHJ1Y3QgT3BJbmZvIHsKLSAg
ICBPcEluZm8oKSA6IG1fdmFsdWUoMCkgeyB9Ci0gICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3Qg
dmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAg
ZXhwbGljaXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90Pih2YWx1ZSkpIHsgfQotI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKLSAg
ICBleHBsaWNpdCBPcEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90Pih2YWx1ZSkpIHsgfQotI2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZh
bHVlKSA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0g
ICAgdWludHB0cl90IG1fdmFsdWU7Ci19OwotCiAvLyA9PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2Rl
IHJlcHJlc2VudHMgYSBzaW5nbGUgb3BlcmF0aW9uIGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyNCw2ICsyMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKEdldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAg
bWFjcm8oUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhh
c1ZhckFyZ3MpIFwKICAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhDaGVja05vdEVtcHR5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hl
Y2tCYWRDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzQs
NyArMTk3NCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBjYXNlIE5hbWVkUHJvcGVy
dHlQTG9jOiB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0g
YWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJv
cGVydGllcy5hcHBlbmQoUGhhbnRvbVByb3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNj
cmlwdG9yKCkpOwogICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxv
Y2ssIGxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMu
Y29udGFpbnModmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFy
Z0NoaWxkcmVuLmFwcGVuZChtX2JvdHRvbSk7CkBAIC0yMDI0LDcgKzIwMjQsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgICAgICAgICAgY2FzZSBDbG9zdXJlVmFyUExvYzogewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQobG9jYXRpb24uYmFzZSgpID09IGFsbG9jYXRpb24uaWRlbnRpZmllcigp
KTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Q
cm9wZXJ0eVZhbHVlKGxvY2F0aW9uLmluZm8oKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRh
Lm1fcHJvcGVydGllcy5hcHBlbmQobG9jYXRpb24uZGVzY3JpcHRvcigpKTsKICAgICAgICAgICAg
ICAgICAgICAgTm9kZSogdmFsdWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbik7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ib3R0
b20pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiwzMiArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCi12b2lkIFBoYW50b21Qcm9wZXJ0eVZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KCJpZCIsIG1faWRlbnRpZmllck51bWJlcik7Ci19
Ci0KIHZvaWQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewogICAgIG91dC5wcmludCgiWyIsIGxpc3REdW1wKG1fcHJvcGVydGllcyksICJd
Iik7CiB9CiAKLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6Om9uZVdheVNpbWlsYXJp
dHlTY29yZSgKLSAgICBjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikgY29u
c3QKLXsKLSAgICB1bnNpZ25lZCBudW1IaXRzID0gMDsKLSAgICBmb3IgKFBoYW50b21Qcm9wZXJ0
eVZhbHVlIHZhbHVlIDogbV9wcm9wZXJ0aWVzKSB7Ci0gICAgICAgIGlmIChvdGhlci5tX3Byb3Bl
cnRpZXMuY29udGFpbnModmFsdWUpKQotICAgICAgICAgICAgbnVtSGl0cysrOwotICAgIH0KLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG51bUhpdHMpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KG1fcHJvcGVydGllcy5zaXplKCkpOwotfQotCi1mbG9hdCBPYmplY3RNYXRlcmlhbGl6YXRpb25E
YXRhOjpzaW1pbGFyaXR5U2NvcmUoY29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgb3Ro
ZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bWluKG9uZVdheVNpbWlsYXJpdHlTY29yZShv
dGhlciksIG90aGVyLm9uZVdheVNpbWlsYXJpdHlTY29yZSgqdGhpcykpOwotfQotCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdQcm9tb3RlZEhl
YXBMb2NhdGlvbi5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CkBAIC0zNSwzOCArMzYsMTEgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1zdHJ1Y3QgUGhhbnRvbVByb3Bl
cnR5VmFsdWUgewotICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlKCkKLSAgICAgICAgOiBtX2lkZW50
aWZpZXJOdW1iZXIoVUlOVF9NQVgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBQaGFudG9tUHJv
cGVydHlWYWx1ZSh1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKQotICAgICAgICA6IG1faWRlbnRp
Zmllck51bWJlcihpZGVudGlmaWVyTnVtYmVyKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdW5z
aWduZWQgbV9pZGVudGlmaWVyTnVtYmVyOwotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBQaGFudG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9pZGVudGlmaWVyTnVtYmVyID09IG90aGVyLm1faWRlbnRpZmllck51bWJlcjsKLSAgICB9
Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci19OwotCiBzdHJ1Y3Qg
T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSB7CiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgbWVhbmlu
ZyBvZiB0aGUgcGFzc2VkIG5vZGVzLgotICAgIFZlY3RvcjxQaGFudG9tUHJvcGVydHlWYWx1ZT4g
bV9wcm9wZXJ0aWVzOworICAgIFZlY3RvcjxQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcj4gbV9w
cm9wZXJ0aWVzOwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwotICAg
IAotICAgIC8vIFRoZSBmcmFjdGlvbiBvZiBteSBwcm9wZXJ0aWVzIHRoYXQgdGhlIG90aGVyIGRh
dGEgaGFzLgotICAgIGZsb2F0IG9uZVdheVNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gVGhlIG1pbmltdW0gb2YgdGhl
IHR3byBwb3NzaWJsZSBvbmUtd2F5IHNjb3Jlcy4KLSAgICBmbG9hdCBzaW1pbGFyaXR5U2NvcmUo
Y29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYpIGNvbnN0OwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcElu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHT3BJbmZvX2gKKyNkZWZpbmUgREZHT3BJ
bmZvX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShERkdf
SklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKy8vIFRoaXMgdHlwZSB1
c2VkIGluIHBhc3NpbmcgYW4gaW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7
CisvLyBkaXN0aW5ndWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4
IGludG8gYSBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKKy8vIGEgY29uc3RhbnQgaW5kZXgs
IGFyZ3VtZW50LCBvciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCitzdHJ1Y3QgT3BJbmZvIHsK
KyAgICBPcEluZm8oKSA6IG1fdmFsdWUoMCkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKGludDMy
X3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Cisg
ICAgZXhwbGljaXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8
dWludHB0cl90Pih2YWx1ZSkpIHsgfQorI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkK
KyAgICBleHBsaWNpdCBPcEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8
dWludHB0cl90Pih2YWx1ZSkpIHsgfQorI2VuZGlmCisgICAgZXhwbGljaXQgT3BJbmZvKHZvaWQq
IHZhbHVlKSA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9
CisgICAgdWludHB0cl90IG1fdmFsdWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR09wSW5mb19oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwMSw2ICsxNDAxLDYwIEBAIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlZmF1bHRIYXMKICAgICByZXR1cm4gMDsKIH0KIAorY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdSYXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBC
dXR0ZXJmbHkqIGJ1dHRlcmZseTsKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpIHx8IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7
CisgICAgICAgIEluZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICAgICAgaGVhZGVyLnNldFZlY3Rv
ckxlbmd0aChsZW5ndGgpOworICAgICAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3RoKDApOworICAg
ICAgICAKKyAgICAgICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgICAg
ICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAorICAgICAg
ICAgICAgaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSksIGhl
YWRlciwKKyAgICAgICAgICAgIGxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOworICAg
IH0gZWxzZQorICAgICAgICBidXR0ZXJmbHkgPSBudWxscHRyOworCisgICAgSlNPYmplY3QqIHJl
c3VsdCA9IEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJm
bHkpOworICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJm
bHkgaXMgaW4gdG8tc3BhY2UuCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4ocmVzdWx0
KTsKK30KKworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0
ZXJmbHkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKyAgICAKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRl
KAorICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCBmYWxzZSwgSW5kZXhpbmdIZWFkZXIoKSwgMCk7CisgICAgCisgICAgSlNPYmplY3QqIHJlc3Vs
dCA9IEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkp
OworICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkg
aXMgaW4gdG8tc3BhY2UuCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJB
bmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5z
aWduZWQgbGVuZ3RoKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgSW5kZXhpbmdIZWFkZXIgaGVh
ZGVyOworICAgIGhlYWRlci5zZXRWZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAgICBoZWFkZXIuc2V0
UHVibGljTGVuZ3RoKDApOworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5Ojpj
cmVhdGUoCisgICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCksIHRydWUsIGhlYWRlciwKKyAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGxl
bmd0aCk7CisKKyAgICAvLyBQYXJhZG94aWNhbGx5IHRoaXMgbWF5IGFsbG9jYXRlIGEgSlNBcnJh
eS4gVGhhdCdzIHRvdGFsbHkgY29vbC4KKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6
OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0
LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFj
ZS4KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqIGV4ZWMpIAogewogICAgIGV4ZWMt
PnZtKCkudHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgi
TG9nIEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lkZSBERkcuIikpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcsNiArMTU3LDEwIEBAIGludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG8K
IAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNT
dGF0ZSosIEpTQ2VsbCogdmFsdWUsIEpTQ2VsbCogcHJvdG8pOwogCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld1Jhd09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90
KSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0
V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRl
eGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25l
ZCBsZW5ndGgpIFdURl9JTlRFUk5BTDsKKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBy
b2Nlc3NUeXBlUHJvZmlsZXJMb2dERkcoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogCiB2b2lk
IEpJVF9PUEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVj
U3RhdGUqLCB2b2lkKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY4LDYg
KzY2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgIGNhc2Ug
R2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExh
c3RJbmRleDoKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAg
IGNhc2UgTGF6eUpTQ29uc3RhbnQ6IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQg
bmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAg
ICAgICAgICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNl
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTc0LDYgKzc0LDEwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQcm8K
ICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOgogICAgICAgICBvdXQucHJpbnQoIk5hbWVkUHJv
cGVydHlQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5
UExvYzoKKyAgICAgICAgb3V0LnByaW50KCJJbmRleGVkUHJvcGVydHlQTG9jIik7CisgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBBcmd1bWVudFBMb2M6CiAgICAgICAgIG91dC5w
cmludCgiQXJndW1lbnRQTG9jIik7CkBAIC0xMDIsNiArMTA2LDE0IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBQcm8KICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOgogICAg
ICAgICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAg
IGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJQdWJsaWNMZW5ndGhQ
TG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAg
ICAgICAgb3V0LnByaW50KCJWZWN0b3JMZW5ndGhQTG9jIik7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJ
KHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90
ZWRIZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyNSArMjgsNDEgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkRG
R0VkZ2UuaCIKKyNpbmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiREZHT3BJbmZv
LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0cnVjdCBOb2RlOwor
CisvLyBQcm9tb3RlZCBsb2NhdGlvbnMgYXJlIGxpa2UgaGVhcCBsb2NhdGlvbnMgYnV0IGFyZSBt
ZWFudCB0byBiZSBtb3JlIHByZWNpc2UuIEEgaGVhcCBsb2NhdGlvbiBpcworLy8gYXBwbGljYWJs
ZSB0byBDU0Ugc2NlbmFyaW9zLCB3aGVyZSBpdCBtYWtlcyBzZW5zZSB0byBzcGVhayBvZiBhIGxv
Y2F0aW9uIHZlcnkgYWJzdHJhY3RseS4gQQorLy8gcHJvbW90ZWQgaGVhcCBsb2NhdGlvbiBpcyBm
b3IgY2FzZXMgd2hlcmUgd2Ugc3BlYWsgb2YgYSBzcGVjaWZpYyBvYmplY3QgYW5kIHRoZSBjb21w
aWxlciBrbm93cworLy8gdGhpcyBvYmplY3QncyBpZGVudGl0eSAtIGZvciBleGFtcGxlLCB0aGUg
b2JqZWN0IGFsbG9jYXRpb24gaGFzIGJlZW4gZWxpbWluYXRlZCBhbmQgd2UgdHVybmVkIHRoZQor
Ly8gZmllbGRzIGludG8gbG9jYWwgdmFyaWFibGVzLiBCZWNhdXNlIHRoZXNlIHR3byBjYXNlcyBo
YXZlIHN1YnRseSBkaWZmZXJlbnQgbmVlZHMsIHdlIHVzZSBzdWJ0bHkKKy8vIGRpZmZlcmVudCBz
dHJ1Y3R1cmVzLiBPbmUgb2YgdGhlIHJlYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpcyB0
aGF0IHByb21vdGVkIGxvY2F0aW9ucyBjYW4gYmUKKy8vIHNwb2tlbiBvZiB1c2luZyBlaXRoZXIg
YSBkZXNjcmlwdG9yIHdoaWNoIGRvZXMgbm90IHJlZmVyIHRvIGFueSBOb2RlKidzIG9yIHdpdGgg
YSBoZWFwIGxvY2F0aW9uLAorLy8gd2hpY2ggaXMgYSBkZXNjcmlwdG9yIHdpdGggYSBOb2RlKiBi
YXNlLgorCiBlbnVtIFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBJbnZhbGlkUHJvbW90ZWRM
b2NhdGlvbktpbmQsCiAgICAgCi0gICAgU3RydWN0dXJlUExvYywKKyAgICBBY3RpdmF0aW9uU2Nv
cGVQTG9jLAogICAgIEFjdGl2YXRpb25TeW1ib2xUYWJsZVBMb2MsCi0gICAgTmFtZWRQcm9wZXJ0
eVBMb2MsCi0gICAgQXJndW1lbnRQTG9jLAogICAgIEFyZ3VtZW50Q291bnRQTG9jLAorICAgIEFy
Z3VtZW50UExvYywKICAgICBBcmd1bWVudHNDYWxsZWVQTG9jLAotCi0gICAgRnVuY3Rpb25FeGVj
dXRhYmxlUExvYywKKyAgICBDbG9zdXJlVmFyUExvYywKICAgICBGdW5jdGlvbkFjdGl2YXRpb25Q
TG9jLAotICAgIEFjdGl2YXRpb25TY29wZVBMb2MsCi0gICAgQ2xvc3VyZVZhclBMb2MKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGVQTG9jLAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsCisgICAgTmFt
ZWRQcm9wZXJ0eVBMb2MsCisgICAgUHVibGljTGVuZ3RoUExvYywKKyAgICBTdHJ1Y3R1cmVQTG9j
LAorICAgIFZlY3Rvckxlbmd0aFBMb2MKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNj
cmlwdG9yIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw3IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFN0cmluZ1JlcGxh
Y2U6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdF
eHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0Nyw2ICszMDQ3LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogewor
ICAgICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFT
U0VSVChub2RlLT5hcnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CiAgICAgICAgIApAQCAtMzQ5Miw3
ICszNDk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQ
UlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9j
YXRlSlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMp
OworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJl
LCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQ
UiBhbmQgc3RvcmFnZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNB
cnJheSBhbmQgdGhlIEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOCw3ICszNzMzLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9y
YWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJh
eShyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsK
KyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5n
VHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChub2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3Vi
bGUpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCkt
PmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTc4LDcgKzQ5ODMs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBu
b1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAKKyAgICBj
YXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdP
YmplY3Qobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNzEsNiArMzE3MSwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVT
ZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKwor
ICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBpbGVSZWNv
cmRSZWdFeHBDYWNoZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9k
ZSgpLmlzSlNBcnJheSgpKTsKQEAgLTM1NDIsNyArMzU0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3By
KCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1
cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJh
d09iamVjdChyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51
bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwg
b25lIHdheSBvciBhbm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVy
cyB0bwogICAgICAgICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3Bl
Y3RpdmVseS4KQEAgLTM3NzgsNyArMzc4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAg
ICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUp
LCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdP
YmplY3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50
cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBERkdfQVNTRVJUKG1f
aml0LmdyYXBoKCksIG5vZGUsIGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAgICAgICAg
SlNWYWx1ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5z
dGFydENvbnN0YW50KCkpOwpAQCAtNDk3MSw2ICs0OTc2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2Jq
ZWN0KG5vZGUpOworICAgICAgICBicmVhazsKKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAg
CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoQWRkMzIoCkBAIC01MDYxLDcgKzUwNzAsNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3Vt
ZW50QnlWYWw6CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1l
ZGlhdGU6Ci0gICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFs
aXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0
YWNrOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAj
aW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmly
b25tZW50LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyQnVmZmVyLmgiCkBA
IC03NywyNyArNzgsNDcgQEAgU3BlY3VsYXRpdmVKSVQ6On5TcGVjdWxhdGl2ZUpJVCgpCiB7CiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3Vs
dEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBu
dW1FbGVtZW50cykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChH
UFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIs
IHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7Ci0gICAgQVNT
RVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihz
dHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGlu
Z1R5cGUoKSkgfHwgaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7Cisg
ICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7
CisgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4
aW5nVHlwZSk7CisKKyAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+aW5s
aW5lQ2FwYWNpdHkoKTsKKyAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSA9IHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gy
LmdwcigpOwotICAgIAotICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0Vf
VkVDVE9SX0xFTiwgbnVtRWxlbWVudHMpOworCisgICAgQVNTRVJUKHZlY3Rvckxlbmd0aCA+PSBu
dW1FbGVtZW50cyk7CisgICAgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVO
LCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2Fz
ZXM7Ci0gICAgCi0gICAgc2xvd0Nhc2VzLmFwcGVuZCgKLSAgICAgICAgZW1pdEFsbG9jYXRlQmFz
aWNTdG9yYWdlKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBz
aXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZUdQUikpOwotICAgIG1faml0LnN1YlB0cihU
cnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7
Ci0gICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93
Q2FzZXMpOwotICAgIAotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRz
KSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRP
ZlB1YmxpY0xlbmd0aCgpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9y
TGVuZ3RoKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5Ojpv
ZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7Ci0gICAgCisKKyAgICBzaXplX3Qgc2l6ZSA9IDA7Cisg
ICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAgICBzaXplICs9IHZlY3Rvckxlbmd0aCAq
IHNpemVvZihKU1ZhbHVlKSArIHNpemVvZihJbmRleGluZ0hlYWRlcik7CisgICAgc2l6ZSArPSBv
dXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKKworICAgIGlmIChzaXplKSB7Cisg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoCisgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0
b3JhZ2UoVHJ1c3RlZEltbTMyKHNpemUpLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIGlmIChoYXNJ
bmRleGluZ0hlYWRlcikKKyAgICAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVj
dG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVh
ZGVyKSksIHN0b3JhZ2VHUFIpOworICAgIH0gZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIoMCksIHN0b3JhZ2VHUFIpOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0g
SlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoaW5saW5lQ2FwYWNpdHkpOworICAgIE1hcmtl
ZEFsbG9jYXRvciogYWxsb2NhdG9yUHRyID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9y
T2JqZWN0V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihhbGxvY2F0b3JQdHIpLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0QWxsb2Nh
dGVKU09iamVjdChyZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgc3RvcmFnZUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CisKKyAgICBpZiAoaGFzSW5k
ZXhpbmdIZWFkZXIpCisgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxl
bmd0aCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zm
c2V0T2ZWZWN0b3JMZW5ndGgoKSkpOworCiAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSAmJiBudW1FbGVtZW50cyA8IHZlY3Rvckxlbmd0aCkgewogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxp
bnQ2NF90PihQTmFOKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTE3LDggKzEzOCwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5CiAgICAgLy8gd2hhdCB0aGlzIGN1c3Rv
bSBDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxv
dAogICAgIC8vIG9mIHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5
LiA6LS8KICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJh
eUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yPigKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCi0gICAgICAg
IHN0cnVjdHVyZSwgbnVtRWxlbWVudHMpKTsKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25OZXdSYXdPYmplY3QsIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwKKyAgICAgICAgc3RydWN0
dXJlLCB2ZWN0b3JMZW5ndGgpKTsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAg
ICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkp
KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcykK
QEAgLTc2NTUsNiArNzY3OSwxMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxhenlK
U0NvbnN0YQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKiBub2RlKQor
eworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS0+c3RydWN0dXJlU2V0KClbMF07Cisg
ICAgQVNTRVJUKG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCktPmR5bmFtaWNDYXN0
Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSA9PSBzdHJ1Y3R1cmUpOworCisgICAgT2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsK
KyAgICAgICAgCisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCk7CisgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKGluZGV4aW5nVHlwZSk7CisgICAgaW50MzJfdCBwdWJsaWNMZW5ndGggPSAwOworICAg
IGludDMyX3QgdmVjdG9yTGVuZ3RoID0gMDsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGkt
LTspIHsKKyAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMSArIGkpOworICAgICAgICAgICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5r
aW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAg
ICAgICBwdWJsaWNMZW5ndGggPSBlZGdlLT5hc0ludDMyKCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAg
dmVjdG9yTGVuZ3RoID0gZWRnZS0+YXNJbnQzMigpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisgICAg
CisgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdl
R1BSLCAwLCB2ZWN0b3JMZW5ndGgpOworICAgIAorICAgIG1faml0LnN0b3JlMzIoCisgICAgICAg
IEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIocHVibGljTGVuZ3RoKSwKKyAgICAgICAgSklUQ29t
cGlsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7
IGktLTspIHsKKyAgICAgICAgRWRnZSBlZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChu
b2RlLCAxICsgaSk7CisgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0
b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmtp
bmQoKSkgeworICAgICAgICBjYXNlIEluZGV4ZWRQcm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UpOworICAgICAgICAgICAgbV9qaXQuc3Rv
cmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLAorICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgKiBkZXNjcmlwdG9yLmluZm8oKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOiB7CisgICAgICAgICAgICBTdHJp
bmdJbXBsKiB1aWQgPSBtX2ppdC5ncmFwaCgpLmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZv
KCldOworICAgICAgICAgICAgZm9yIChQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0dXJl
LT5nZXRQcm9wZXJ0aWVzQ29uY3VycmVudGx5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodWlk
ICE9IGVudHJ5LmtleSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGlzSW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNldCkgPyByZXN1bHRH
UFIgOiBzdG9yYWdlR1BSOworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlVmFsdWUoCisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksCisgICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGVudHJ5
Lm9mZnNldCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUq
IG5vZGUpCit7CisgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFy
Z0NoaWxkKG5vZGUsIDApOworICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMSk7CisgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9qaXQuZ3JhcGgoKS52
YXJBcmdDaGlsZChub2RlLCAyKTsKKyAgICBFZGdlIHN0YXJ0RWRnZSA9IG1faml0LmdyYXBoKCku
dmFyQXJnQ2hpbGQobm9kZSwgMyk7CisgICAgRWRnZSBlbmRFZGdlID0gbV9qaXQuZ3JhcGgoKS52
YXJBcmdDaGlsZChub2RlLCA0KTsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNvbnN0cnVj
dG9yKHRoaXMsIGNvbnN0cnVjdG9yRWRnZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmVn
RXhwKHRoaXMsIHJlZ0V4cEVkZ2UpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0
aGlzLCBzdHJpbmdFZGdlKTsKKyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc3RhcnQodGhpcywg
c3RhcnRFZGdlKTsKKyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgZW5kKHRoaXMsIGVuZEVkZ2Up
OworCisgICAgR1BSUmVnIGNvbnN0cnVjdG9yR1BSID0gY29uc3RydWN0b3IuZ3ByKCk7CisgICAg
R1BSUmVnIHJlZ0V4cEdQUiA9IHJlZ0V4cC5ncHIoKTsKKyAgICBHUFJSZWcgc3RyaW5nR1BSID0g
c3RyaW5nLmdwcigpOworICAgIEdQUlJlZyBzdGFydEdQUiA9IHN0YXJ0LmdwcigpOworICAgIEdQ
UlJlZyBlbmRHUFIgPSBlbmQuZ3ByKCk7CisKKyAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gUmVnRXhw
Q29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCk7CisKKyAgICBtX2ppdC5zdG9yZVB0
cigKKyAgICAgICAgcmVnRXhwR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjb25z
dHJ1Y3RvckdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdF
eHAoKSkpOworICAgIG1faml0LnN0b3JlUHRyKAorICAgICAgICBzdHJpbmdHUFIsCisgICAgICAg
IEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNo
ZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAg
ICAgICBzdGFydEdQUiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoCisgICAgICAgICAg
ICBjb25zdHJ1Y3RvckdQUiwKKyAgICAgICAgICAgIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3Vs
dDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQp
KSk7CisgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgZW5kR1BSLAorICAgICAgICBKSVRDb21w
aWxlcjo6QWRkcmVzcygKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAg
b2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09G
RlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSk7CisgICAgbV9qaXQuc3RvcmU4KAorICAgICAgICBU
cnVzdGVkSW1tMzIoMCksCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9y
R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSk7CisK
KyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQwMSw2ICsyNDAxLDggQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcGlsZUdldFJlZ0V4cE9iamVjdExhc3RJbmRleChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVMYXp5SlNDb25zdGFudChOb2RlKik7CisgICAgdm9pZCBjb21waWxlTWF0ZXJpYWxp
emVOZXdPYmplY3QoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJl
c3VsdChOb2RlKik7CiAgICAgCiAgICAgdm9pZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9p
ZCBtb3ZlRmFsc2VUbyhHUFJSZWcpOwpAQCAtMjUxNiw3ICsyNTE4LDcgQEAgcHVibGljOgogICAg
ICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNB
cnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5z
aWduZWQgbnVtRWxlbWVudHMpOworICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJl
ZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKICAgICAKICAgICB2b2lkIGVtaXRHZXRM
ZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhp
cyA9IGZhbHNlKTsKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoQ29kZU9yaWdpbiwgR1BSUmVnIGxl
bmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDEx
ICsyNTMsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAgICAg
ICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0Ogog
ICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6IHsKICAgICAgICAgICAgICAgICBjb25zaWRl
ckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGNhc2UgUmVjb3JkUmVn
RXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICAgICAgICAg
IGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExh
c3RJbmRleDoKQEAgLTI2NiwxMyArMjc0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2Ug
UHV0QnlJZDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgotICAgICAgICAgICAgY2Fz
ZSBQdXRCeUlkRGlyZWN0OiB7Ci0gICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCiAg
ICAgICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJC
YXJyaWVyKG1fbm9kZS0+Y2hpbGQyKCksIG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzYsMTEgKzM2LDE0IEBACiAjaW5jbHVkZSAiREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CiBjbGFzcyBTdHJlbmd0aFJlZHVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKKyAgICBzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgCiBwdWJsaWM6CiAgICAgU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2UoZ3JhcGgsICJz
dHJlbmd0aCByZWR1Y3Rpb24iKQpAQCAtMzMxLDExICszMzQsMjY3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgaWYgKCEhc3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc051bWJlcihzdHJpbmcubGVuZ3RoKCkpKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDogeworICAgICAg
ICAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBtX25vZGUtPmNoaWxkMSgpLT5keW5hbWljQ2Fz
dENvbnN0YW50PEpTT2JqZWN0Kj4oKSkgeworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVy
dFRvQ29uc3RhbnQobV9ub2RlLCBvYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgICAg
ICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFJlZ0V4
cEV4ZWM6CisgICAgICAgIGNhc2UgUmVnRXhwVGVzdDogeworICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3Rh
bnQ8SlNHbG9iYWxPYmplY3QqPigpOworICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpIHsK
KyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiR2l2aW5nIHVwIGJlY2F1c2Ugbm8gZ2xvYmFsIG9iamVjdC5cbiIpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5pc0hhdmluZ0FCYWRUaW1lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgYmFkIHRpbWUuXG4i
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Tm9kZSogcmVnRXhwT2JqZWN0Tm9kZSA9IG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpOworICAgICAg
ICAgICAgUmVnRXhwKiByZWdFeHA7CisgICAgICAgICAgICBpZiAoUmVnRXhwT2JqZWN0KiByZWdF
eHBPYmplY3QgPSByZWdFeHBPYmplY3ROb2RlLT5keW5hbWljQ2FzdENvbnN0YW50PFJlZ0V4cE9i
amVjdCo+KCkpCisgICAgICAgICAgICAgICAgcmVnRXhwID0gcmVnRXhwT2JqZWN0LT5yZWdFeHAo
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ0V4cE9iamVjdE5vZGUtPm9wKCkgPT0gTmV3UmVn
ZXhwKQorICAgICAgICAgICAgICAgIHJlZ0V4cCA9IGNvZGVCbG9jaygpLT5yZWdleHAocmVnRXhw
T2JqZWN0Tm9kZS0+cmVnZXhwSW5kZXgoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5n
IHVwIGJlY2F1c2UgdGhlIHJlZ2V4cCBpcyB1bmtub3duLlxuIik7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5vZGUqIHN0cmluZ05vZGUgPSBt
X25vZGUtPmNoaWxkMygpLm5vZGUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTk9U
RTogVGhpcyBtb3N0bHkgYWxyZWFkeSBwcm90ZWN0cyB1cyBmcm9tIGhhdmluZyB0aGUgY29tcGls
ZXIgZXhlY3V0ZSBhIHJlZ2V4cAorICAgICAgICAgICAgLy8gb3BlcmF0aW9uIG9uIGEgZ2lub3Jt
b3VzIHN0cmluZyBieSBwcmV2ZW50aW5nIHVzIGZyb20gZ2V0dGluZyBvdXIgaGFuZHMgb24gZ2lu
b3Jtb3VzCisgICAgICAgICAgICAvLyBzdHJpbmdzIGluIHRoZSBmaXJzdCBwbGFjZS4KKyAgICAg
ICAgICAgIFN0cmluZyBzdHJpbmcgPSBtX25vZGUtPmNoaWxkMygpLT50cnlHZXRTdHJpbmcobV9n
cmFwaCk7CisgICAgICAgICAgICBpZiAoIXN0cmluZykgeworICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSB0
aGUgc3RyaW5nIGlzIHVua25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgRnJvemVuVmFsdWUqIHJlZ0V4cEZyb3plblZhbHVlID0g
bV9ncmFwaC5mcmVlemUocmVnRXhwKTsKKworICAgICAgICAgICAgLy8gUmVmdXNlIHRvIGRvIHRo
aW5ncyB3aXRoIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBoYXZlIGEgZ2lub3Jtb3VzIG51bWJl
ciBvZgorICAgICAgICAgICAgLy8gc3VicGF0dGVybnMuCisgICAgICAgICAgICB1bnNpZ25lZCBn
aW5vcm1vdXNOdW1iZXJPZlN1YlBhdHRlcm5zID0gMTAwMDsKKyAgICAgICAgICAgIGlmIChyZWdF
eHAtPm51bVN1YnBhdHRlcm5zKCkgPiBnaW5vcm1vdXNOdW1iZXJPZlN1YlBhdHRlcm5zKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkdpdmluZyB1cCBiZWNhdXNlIG9mIHBhdHRlcm4gbGltaXQuXG4iKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5zaWduZWQgbGFzdEluZGV4
OworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsT3JTdGlja3koKSkgeworICAgICAgICAg
ICAgICAgIC8vIFRoaXMgd2lsbCBvbmx5IHdvcmsgaWYgd2UgY2FuIHByb3ZlIHdoYXQgdGhlIHZh
bHVlIG9mIGxhc3RJbmRleCBpcy4gVG8gZG8gdGhpcworICAgICAgICAgICAgICAgIC8vIHNhZmVs
eSwgd2UgbmVlZCB0byBleGVjdXRlIHRoZSBpbnNlcnRpb24gc2V0IHNvIHRoYXQgd2Ugc2VlIGFu
eSBwcmV2aW91cyBzdHJlbmd0aAorICAgICAgICAgICAgICAgIC8vIHJlZHVjdGlvbnMuIFRoaXMg
aXMgbmVlZGVkIGZvciBzb3VuZG5lc3Mgc2luY2Ugb3RoZXJ3aXNlIHRoZSBlZmZlY3RmdWxuZXNz
IG9mIGFueQorICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHN0cmVuZ3RoIHJlZHVjdGlvbnMg
d291bGQgYmUgaW52aXNpYmxlIHRvIHVzLgorICAgICAgICAgICAgICAgIGV4ZWN1dGVJbnNlcnRp
b25TZXQoKTsKKyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBVSU5UX01BWDsKKyAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIG90aGVyTm9kZUluZGV4ID0gbV9ub2RlSW5kZXg7IG90aGVy
Tm9kZUluZGV4LS07KSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIG90aGVyTm9kZSA9IG1f
YmxvY2stPmF0KG90aGVyTm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVy
Tm9kZSA9PSByZWdFeHBPYmplY3ROb2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0
SW5kZXggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3AoKSA9PSBTZXRS
ZWdFeHBPYmplY3RMYXN0SW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIG90aGVyTm9k
ZS0+Y2hpbGQxKCkgPT0gcmVnRXhwT2JqZWN0Tm9kZQorICAgICAgICAgICAgICAgICAgICAgICAg
JiYgb3RoZXJOb2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNvbnN0YW50KCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSA+PSAwKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3Ro
ZXJOb2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh3cml0
ZXNPdmVybGFwKG1fZ3JhcGgsIG90aGVyTm9kZSwgUmVnRXhwT2JqZWN0X2xhc3RJbmRleCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKGxhc3RJbmRleCA9PSBVSU5UX01BWCkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1
cCBiZWNhdXNlIHRoZSBsYXN0IGluZGV4IGlzIG5vdCBrbm93bi5cbiIpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICBsYXN0SW5kZXggPSAwOworCisgICAgICAgICAgICBtX2dyYXBoLndhdGNo
cG9pbnRzKCkuYWRkTGF6aWx5KGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50
KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCk7CisgICAgICAgICAgICBp
ZiAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSAhPSBBcnJheVdpdGhDb250aWd1b3VzKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmdXJ0aGVyIHByb3RlY3Rpb24gYWdhaW5zdCBhIHJh
Y2Ugd2l0aCBoYXZlQUJhZFRpbWUuCisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSBzdHJ1Y3R1cmUg
aGFzIHRoZSB3cm9uZyBpbmRleGluZyB0eXBlLlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0
cnVjdHVyZSk7CisKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKTsKKyAgICAgICAgICAgIEZyb3plblZh
bHVlKiBjb25zdHJ1Y3RvckZyb3plblZhbHVlID0gbV9ncmFwaC5mcmVlemUoY29uc3RydWN0b3Ip
OworCisgICAgICAgICAgICBNYXRjaFJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBWZWN0b3I8
aW50LCAzMj4gb3ZlY3RvcjsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gY2FsbCB0aGUga2lu
ZCBvZiBtYXRjaCBmdW5jdGlvbiB0aGF0IHRoZSBtYWluIHRocmVhZCB3b3VsZCBoYXZlIGNhbGxl
ZC4KKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbWlnaHQgbm90IGhhdmUgdGhlIGRlc2ly
ZWQgWWFyciBjb2RlIGNvbXBpbGVkLCBhbmQgdGhlIG1hdGNoIHdpbGwgZmFpbC4KKyAgICAgICAg
ICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUmVnRXhwRXhlYykgeworICAgICAgICAgICAgICAgIGlu
dCBwb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBpZiAoIXJlZ0V4cC0+bWF0Y2hDb25jdXJyZW50
bHkodm0oKSwgc3RyaW5nLCBsYXN0SW5kZXgsIHBvc2l0aW9uLCBvdmVjdG9yKSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkdpdmluZyB1cCBiZWNhdXNlIG1hdGNoIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0LnN0
YXJ0ID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAgcmVzdWx0LmVuZCA9IG92ZWN0b3JbMV07
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRj
aENvbmN1cnJlbnRseSh2bSgpLCBzdHJpbmcsIGxhc3RJbmRleCwgcmVzdWx0KSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkdpdmluZyB1cCBiZWNhdXNlIG1hdGNoIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFdlJ3ZlIGNvbnN0YW50LWZvbGRlZCB0aGUgcmVnZXhwLiBOb3cgd2UncmUgY29tbWl0
dGVkIHRvIHJlcGxhY2luZyBSZWdFeHBFeGVjL1Rlc3QuCisKKyAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7CisKKyAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbV9ub2RlLT5vcmln
aW47CisKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBtX25vZGUtPmNoaWxk
cmVuLmp1c3RDaGVja3MoKSk7CisKKyAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUmVn
RXhwRXhlYykgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgU3RydWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVyZVNl
dChzdHJ1Y3R1cmUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBhcnJheSBt
b2RlbGluZyB0aGUgSlMgYXJyYXkgdGhhdCB3ZSB3aWxsIHRyeSB0byBhbGxvY2F0ZS4gVGhpcyBp
cworICAgICAgICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkgY3JlYXRlUmVnRXhwTWF0Y2hlc0Fy
cmF5IGJ1dCBvdmVyIEMrKyBzdHJpbmdzIGluc3RlYWQgb2YgSlNTdHJpbmdzLgorICAgICAgICAg
ICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRBcnJheTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnN0YXJ0LCByZXN1
bHQuZW5kIC0gcmVzdWx0LnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPD0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzdGFydCA9IG92ZWN0b3JbMiAqIGldOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcoc3RhcnQsIG92ZWN0b3JbMiAqIGkg
KyAxXSAtIHN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKFN0cmluZygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHB1YmxpY0xlbmd0
aCA9IHJlc3VsdEFycmF5LnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdmVj
dG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBwdWJsaWNMZW5ndGgpOworCisg
ICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbmRleFVJRCA9IHZtKCkucHJv
cGVydHlOYW1lcy0+aW5kZXguaW1wbCgpOworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogaW5wdXRVSUQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmlucHV0LmltcGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXhJbmRleCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKS5lbnN1cmUoaW5kZXhVSUQpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1
dEluZGV4ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpbnB1dFVJRCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbi5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRD
b25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwg
b3JpZ2luLCBzdHJ1Y3R1cmUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAgICAgICBP
YmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKiBkYXRhID0gbV9ncmFwaC5tX29iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuYWRkKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHB1YmxpY0xlbmd0aCksIEtub3du
SW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVu
ZChQdWJsaWNMZW5ndGhQTG9jKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIodmVjdG9yTGVuZ3RoKSwgS25v
d25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBw
ZW5kKFZlY3Rvckxlbmd0aFBMb2MpOworCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQpLCBVbnR5cGVkVXNlKSk7
CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3BlcnR5
UExvYywgaW5kZXhJbmRleCkpOworCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJB
cmdDaGlsZHJlbi5hcHBlbmQoRWRnZShzdHJpbmdOb2RlLCBVbnR5cGVkVXNlKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3BlcnR5UExvYywgaW5w
dXRJbmRleCkpOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0ZXJpYWxpemVTdHJpbmcg
PSBbJl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAtPiBOb2RlKiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBvcmlnaW4sIHZtKCkuc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgTGF6eUpTVmFsdWUg
dmFsdWUgPSBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIHN0cmluZyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIExhenlKU0NvbnN0
YW50LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgu
bV9sYXp5SlNWYWx1ZXMuYWRkKHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRBcnJheS5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSBt
YXRlcmlhbGl6ZVN0cmluZyhyZXN1bHRBcnJheVtpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uobm9kZSwgVW50eXBl
ZFVzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25E
ZXNjcmlwdG9yKEluZGV4ZWRQcm9wZXJ0eVBMb2MsIGkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIHJlc3VsdE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNBcnJheSwgTm9kZTo6VmFyQXJn
LCBNYXRlcmlhbGl6ZU5ld09iamVjdCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAg
T3BJbmZvKHN0cnVjdHVyZVNldCksIE9wSW5mbyhkYXRhKSwgZmlyc3RDaGlsZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBmaXJzdENo
aWxkKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252
ZXJ0VG9JZGVudGl0eU9uKHJlc3VsdE5vZGUpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNOdWxs
KCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0
VG9Db25zdGFudChtX25vZGUsIGpzQm9vbGVhbighIXJlc3VsdCkpOworCisgICAgICAgICAgICAv
LyBXaGV0aGVyIGl0J3MgRXhlYyBvciBUZXN0LCB3ZSBuZWVkIHRvIHRlbGwgdGhlIGNvbnN0cnVj
dG9yIGFuZCBSZWdFeHBPYmplY3Qgd2hhdCdzIHVwLgorICAgICAgICAgICAgaWYgKHJlc3VsdCkg
eworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW4uc2l6ZSgpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0
YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwg
Y29uc3RydWN0b3JGcm96ZW5WYWx1ZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX25vZGVJbmRleCwgb3JpZ2luLCByZWdFeHBGcm96ZW5WYWx1ZSwgS25vd25DZWxsVXNlKSk7
CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKHN0
cmluZ05vZGUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJB
cmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IG9yaWdpbiwganNOdW1iZXIocmVzdWx0LnN0YXJ0KSwgS25vd25JbnQzMlVzZSkpOworICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0LmVuZCksIEtu
b3duSW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIE5vZGU6OlZhckFy
ZywgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
IE9wSW5mbygpLCBPcEluZm8oKSwgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
LnNpemUoKSAtIGZpcnN0Q2hpbGQpOworCisgICAgICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2lu
LndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IFNwZWNOb25lLCBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIG9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgRWRnZShyZWdFeHBPYmplY3ROb2RlLCBSZWdFeHBPYmplY3RVc2UpLAorICAgICAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGpzTnVtYmVyKHJlc3VsdCA/IHJlc3VsdC5lbmQgOiAwKSwgVW50eXBl
ZFVzZSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG9yaWdpbiA9IG9yaWdp
bi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9ub2Rl
LT5vcmlnaW4gPSBvcmlnaW47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzgwLDYgKzYz
OSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQor
CisgICAgdm9pZCBleGVjdXRlSW5zZXJ0aW9uU2V0KCkKKyAgICB7CisgICAgICAgIG1fbm9kZUlu
ZGV4ID0gbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShtX2Jsb2NrKTsKKyAgICB9CiAgICAgCiAgICAg
SW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNzgsNiArMjc4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIXZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNp
dGlvbigpLT5kZmdTaG91bGRXYXRjaCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3
T2JqZWN0OgorICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDog
bm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMg
b25seSBzdXBwb3J0cyBzdHJ1Y3R1cmVzIHRoYXQgYXJlIEpTRmluYWxPYmplY3Qgb3IgSlNBcnJh
eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChub2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpID09IEpTRmluYWxPYmplY3Q6OmluZm8oKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNBcnJheTo6aW5mbygpKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGNlcnRhaW4gaW5k
ZXhpbmcgc2hhcGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAh
aGFzQW55QXJyYXlTdG9yYWdlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICAgICAgICAgIGNhc2UgSW50NTJDb25zdGFu
dDoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5pc051bWJlckNv
bnN0YW50KCkpOwpAQCAtNDYxLDEzICs0NzMsNDIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEhpbnQ6
CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKLSAgICAgICAg
ICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgICAgIGNhc2Ug
TWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0U3Rh
Y2s6CiAgICAgICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBHZXRTdGFjazoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhInVuZXhw
ZWN0ZWQgbm9kZSB0eXBlIGluIENQUyIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OiB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBhcnJheSBsZW5ndGhzIHRvIGJlIGNvbnN0YW50LiBU
aGlzIGNvbnN0cmFpbnQgb25seSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVz
ZSB3ZSBkb24ndCBoYXZlIERGRyBzdXBwb3J0IGZvciBhbnl0aGluZyBtb3JlIGFuZCB3ZSBkb24n
dCBuZWVkIGFueQorICAgICAgICAgICAgICAgICAgICAvLyBvdGhlciBraW5kIG9mIHN1cHBvcnQg
Zm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYg
ZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNj
cmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBF
ZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJ
REFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmlzSW50MzJDb25zdGFudCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBD
UFMgb25seSBhbGxvd3Mgb25lIHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgPT0gMSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQzMiBhbmQgZG91YmxlIGFycmF5cy4gVGhv
c2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgLy8g
Y29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIERGRyByaWdodCBub3cuIFdl
IHNob3VsZCBhZGQgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhlc2UgaWYg
dGhlIERGRyBldmVyIG5lZWRzIGl0LgorICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVy
ZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0ludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0RvdWJs
ZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBt
X2dyYXBoLm1fZml4cG9pbnRTdGF0ZSAhPSBGaXhwb2ludE5vdENvbnZlcmdlZCk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCShyZXZpc2lvbiAxOTc5ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4
cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjb3Bl
ZEFyZ3VtZW50c1RhYmxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMTk3OTgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
RlRMIHsKICAgICBtYWNybyhKU1N5bWJvbFRhYmxlT2JqZWN0X3N5bWJvbFRhYmxlLCBKU1N5bWJv
bFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpIFwKICAgICBtYWNybyhKU1dyYXBw
ZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSwgSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhNYXJrZWRBbGxvY2F0b3JfZnJlZUxpc3RIZWFkLCBNYXJrZWRB
bGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25z
dHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNl
dE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4
cCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RJbnB1
dCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNo
ZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1
Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0LCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0
T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSAr
IE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSBcCisgICAgbWFjcm8oUmVnRXhw
Q29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9lbmQsIFJlZ0V4cENvbnN0cnVjdG9yOjpv
ZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3Vs
dCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSBcCisgICAgbWFjcm8oUmVn
RXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3JlaWZpZWQsIFJlZ0V4cENvbnN0cnVjdG9yOjpv
ZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZp
ZWQoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgsIFJlZ0V4cE9iamVjdDo6
b2Zmc2V0T2ZMYXN0SW5kZXgoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXhJ
c1dyaXRhYmxlLCBSZWdFeHBPYmplY3Q6Om9mZnNldE9mTGFzdEluZGV4SXNXcml0YWJsZSgpKSBc
CiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzX292ZXJyb2RlVGhpbmdzLCBTY29wZWRBcmd1bWVu
dHM6Om9mZnNldE9mT3ZlcnJvZGVUaGluZ3MoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjgsNiArMjI4LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExh
c3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICBjYXNlIFJl
Y29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAg
ICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzgsNiArOTM4LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAg
ICAgICBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CisgICAgICAgICAgICBj
b21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KCk7CisgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTM3
MTYsMzIgKzM3MTksOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291
dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJs
aWNMZW5ndGgpOwogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgsIGJ1dHRl
cmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKGhhc0RvdWJsZShtX25vZGUtPmluZGV4aW5nVHlwZSgpKSkgewotICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMb29wID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxJbmRl
eCA9IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5ndGgpOwotICAgICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFuY2hvcihidXR0ZXJmbHkpOwotICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90WmVy
bzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShpbml0RG9uZSkpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7Ci0gICAgICAgICAgICAgICAg
TFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0LmludDMyLCBvcmlnaW5hbEluZGV4KTsKLSAg
ICAgICAgICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIG9y
aWdpbmFsUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQu
c3RvcmU2NCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nh
c3Q8aW50NjRfdD4oUE5hTikpLAotICAgICAgICAgICAgICAgICAgICBUeXBlZFBvaW50ZXIobV9o
ZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFueUluZGV4KCksIHBvaW50ZXIpKTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQu
c3ViKGluZGV4LCBtX291dC5pbnQzMk9uZSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYWRkSW5j
b21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRleCkpOwotICAgICAgICAgICAg
ICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkocG9pbnRlciwgbV9vdXQuYW5jaG9yKG1fb3V0LmFk
ZChwb2ludGVyLCBtX291dC5pbnRQdHJFaWdodCkpKTsKLSAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMihuZXh0SW5kZXgpLCB1
bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5pdExhc3ROZXh0KTsKLSAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMobV9ub2Rl
LT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG9i
amVjdCk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC02Mjg2LDEx
ICs2MjY1LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIExvd2VyIHRoZSB2YWx1ZXMgZmlyc3Qs
IHRvIGF2b2lkIGNyZWF0aW5nIHZhbHVlcyBpbnNpZGUgYSBjb250cm9sIGZsb3cgZGlhbW9uZC4K
ICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxMVmFsdWUsIDg+IHZhbHVlczsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKQotICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAxICsgaSkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9w
cm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBo
LnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpOworICAgICAgICAgICAgc3dpdGNoIChkYXRhLm1f
cHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExv
YzoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICB2
YWx1ZXMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dKU1Zh
bHVlKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQgPSBtX25vZGUt
PnN0cnVjdHVyZVNldCgpOwotICAgICAgICAKKwogICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2ss
IDE+IGJsb2NrcyhzZXQuc2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2V0LnNp
emUoKTsgaS0tOykKICAgICAgICAgICAgIGJsb2Nrc1tpXSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBA
IC02MzE1LDIxICs2MzA0LDUxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgb2JqZWN0
OwogICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgaWYg
KHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJbmRleGVkUHJvcGVydGllcyhz
dHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgICAgIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5s
aW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0
b3IgPSAmdm0oKS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9j
YXRpb25TaXplKTsKKworICAgICAgICAgICAgICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBo
YXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleGluZ0hlYWRlclNpemUgPSAwOworICAgICAgICAgICAgICAg
IExWYWx1ZSBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9IG1fb3V0LmludFB0clplcm87Cisg
ICAgICAgICAgICAgICAgTFZhbHVlIHZlY3Rvckxlbmd0aCA9IG1fb3V0LmludDMyWmVybzsKKyAg
ICAgICAgICAgICAgICBMVmFsdWUgcHVibGljTGVuZ3RoID0gbV9vdXQuaW50MzJaZXJvOworICAg
ICAgICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICAgICAgICAgICAg
ICBpbmRleGluZ0hlYWRlclNpemUgPSBzaXplb2YoSW5kZXhpbmdIZWFkZXIpOworICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGkt
LTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9y
IGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWNMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gdmFsdWVzW2ldOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbmRl
eGluZ1BheWxvYWRTaXplSW5CeXRlcyA9CisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5t
dWwobV9vdXQuemVyb0V4dFB0cih2ZWN0b3JMZW5ndGgpLCBtX291dC5pbnRQdHJFaWdodCk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseVNpemUg
PSBtX291dC5hZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKAorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6
ZW9mKEpTVmFsdWUpICsgaW5kZXhpbmdIZWFkZXJTaXplKSwKKyAgICAgICAgICAgICAgICAgICAg
aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9yYWdlID0gYWxsb2NhdGVCYXNpY1N0b3JhZ2VB
bmRHZXRFbmQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSksCi0gICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoKTsKLSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBMVmFs
dWUgZW5kT2ZTdG9yYWdlID0gYWxsb2NhdGVCYXNpY1N0b3JhZ2VBbmRHZXRFbmQoYnV0dGVyZmx5
U2l6ZSwgc2xvd1BhdGgpOworCiAgICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RCdXR0ZXJmbHlW
YWx1ZSA9IG1fb3V0LmFkZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
c2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIGVuZE9mU3RvcmFnZSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LnN1YihlbmRPZlN0b3JhZ2UsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKSwK
KyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVh
ZGVyKSAtIGluZGV4aW5nSGVhZGVyU2l6ZSkpOworCisgICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmUzMih2ZWN0b3JMZW5ndGgsIGZhc3RCdXR0ZXJmbHlWYWx1ZSwgbV9oZWFwcy5CdXR0ZXJmbHlf
dmVjdG9yTGVuZ3RoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMVmFsdWUg
ZmFzdE9iamVjdFZhbHVlID0gYWxsb2NhdGVPYmplY3QoCiAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvciksIHN0cnVjdHVyZSwgZmFzdEJ1dHRlcmZseVZhbHVl
LCBzbG93UGF0aCk7CkBAIC02MzQwLDEyICs2MzU5LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVh
dGlvbik7CiAKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd09iamVjdFZhbHVlID0gbGF6eVNs
b3dQYXRoKAotICAgICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4m
IGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseSwgbG9j
YXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RWYWx1ZTsKKyAgICAgICAgICAg
ICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd09i
amVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChj
b25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6
OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVM
YXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0
aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQ
UigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGgp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNsb3dPYmpl
Y3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoY29u
c3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpH
ZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6
eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlv
bk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dPYmplY3QgPSBtX291dC5hbmNo
b3Ioc2xvd09iamVjdFZhbHVlKTsKICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93
QnV0dGVyZmx5ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgICAgICAgICBtX291dC5sb2Fk
UHRyKHNsb3dPYmplY3RWYWx1ZSwgbV9oZWFwcy5KU09iamVjdF9idXR0ZXJmbHkpKTsKQEAgLTYz
NTYsNiArNjM4NywxMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBvYmplY3QgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0T2JqZWN0LCBzbG93T2Jq
ZWN0KTsKICAgICAgICAgICAgICAgICBidXR0ZXJmbHkgPSBtX291dC5waGkobV9vdXQuaW50UHRy
LCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVyZmx5KTsKKworICAgICAgICAgICAgICAgIG1fb3V0
LnN0b3JlMzIocHVibGljTGVuZ3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3B1Ymxp
Y0xlbmd0aCk7CisKKyAgICAgICAgICAgICAgICBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpLCB2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSk7CisKKyAgICAg
ICAgICAgICAgICBIYXNoTWFwPAorICAgICAgICAgICAgICAgICAgICBpbnQzMl90LCBMVmFsdWUs
IERlZmF1bHRIYXNoPGludDMyX3Q+OjpIYXNoLAorICAgICAgICAgICAgICAgICAgICBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludDMyX3Q+PiBpbmRleE1hcDsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8aW50MzJfdD4gaW5kaWNlczsKKyAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
ICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9w
cm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5raW5kKCkg
IT0gSW5kZXhlZFByb3BlcnR5UExvYykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4oZGVzY3JpcHRvci5pbmZvKCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byByZXN1bHQgPSBpbmRleE1hcC5hZGQoaW5kZXgsIHZhbHVlc1tpXSk7Cisg
ICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCByZXN1bHQpOyAv
LyBEdXBsaWNhdGVzIGFyZSBpbGxlZ2FsLgorCisgICAgICAgICAgICAgICAgICAgIGluZGljZXMu
YXBwZW5kKGluZGV4KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
IWluZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c29ydChpbmRp
Y2VzLmJlZ2luKCksIGluZGljZXMuZW5kKCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoU3RvcmVzKGluZGlj
ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrPiBibG9j
a3NXaXRoQ2hlY2tzKGluZGljZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoU3RvcmVzW2ldID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3NbaV0gPSBt
X291dC5uZXdCbG9jaygpOyAvLyBibG9ja3NXaXRoQ2hlY2tzWzBdIGlzIHRoZSBjb250aW51YXRp
b24uCisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBMQmFzaWNC
bG9jayBpbmRleExhc3ROZXh0ID0gbV9vdXQubV9uZXh0QmxvY2s7CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRpY2VzLnNpemUo
KTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9IGluZGlj
ZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBpbmRleE1hcC5n
ZXQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYmVs
b3cobV9vdXQuY29uc3RJbnQzMihpbmRleCksIHB1YmxpY0xlbmd0aCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zdXJlKGJsb2Nrc1dpdGhTdG9yZXNbaV0pLCB1bnN1cmUoYmxvY2tz
V2l0aENoZWNrc1tpXSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhibG9ja3NXaXRoU3RvcmVzW2ldLCBibG9ja3NXaXRoQ2hlY2tzW2ldKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBoYXMgdG8gdHlwZS1jaGVjayBhbmQgY29udmVydCBpdHMg
aW5wdXRzLCBidXQgaXQgY2Fubm90IGRvIHNvIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHdheSB0aGF0IHVwZGF0ZXMgQUkuIFRoYXQncyBhIGJpdCBhbm5veWluZywgYnV0IGlmIHlv
dSB0aGluayBhYm91dCBob3cKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpbmtpbmcgd29y
a3MsIGl0J3MgYWN0dWFsbHkgbm90IGEgYmFkIHRoaW5nLiBXZSBhcmUgdmlydHVhbGx5IGd1YXJh
bnRlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhlc2UgdHlwZSBjaGVja3Mg
d2lsbCBub3QgZmFpbCwgc2luY2UgdGhlIHR5cGUgY2hlY2tzIHRoYXQgZ3VhcmRlZAorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIHN0b3JlcyB0byB0aGUgYXJyYXkgYXJl
IHN0aWxsIHNvbWV3aGVyZSBhYm92ZSB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAgICAg
ICAgT3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOworICAgICAgICAgICAgICAgICAgICAgICAg
SW5kZXhlZEFic3RyYWN0SGVhcCogaGVhcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIHRoZSBwcm92ZW4gdHlwZSBpZiB3ZSBoYWQgdGhl
IEVkZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzExCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNO
b3RJbnQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9
IE91dHB1dDo6U3RvcmU2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1f
aGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVY
SU5HX1RZUEVTOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHRo
ZSBzb3VyY2UgaXMgVmFsdWVSZXAsIHdlIHNob3VsZCBhdm9pZCBlbWl0dGluZyBhbnkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVja3MuIFdlIGNvdWxkIGFsc28gYXZvaWQgZW1p
dHRpbmcgY2hlY2tzIGlmIHdlIGhhZCB0aGUgRWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHRoaXMgdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTUzMTEKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlu
dENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMih2YWx1
ZSksIHVuc3VyZShpbnRDYXNlKSwgdW5zdXJlKGRvdWJsZUNhc2UpKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50
Q2FzZSwgZG91YmxlQ2FzZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBpbnRSZXN1bHQgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291
dC5hbmNob3IobV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMih2YWx1ZSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBjb250aW51YXRp
b24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIG5v
VmFsdWUoKSwgbnVsbHB0ciwgaXNOdW1iZXIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayBkb3VibGVSZXN1bHQgPSBtX291dC5hbmNob3IodW5ib3hE
b3VibGUodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IG1fb3V0LnBoaShEb3VibGUsIGludFJlc3VsdCwgZG91YmxlUmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlRG91YmxlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRleGVkRG91Ymxl
UHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfQ09O
VElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9y
ZVR5cGUgPSBPdXRwdXQ6OlN0b3JlNjQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVh
cCA9ICZtX2hlYXBzLmluZGV4ZWRDb250aWd1b3VzUHJvcGVydGllczsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAi
SW52YWxpZCBpbmRleGluZyB0eXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlKHZhbHVlLCBtX291dC5hZGRyZXNz
KGJ1dHRlcmZseSwgaGVhcC0+YXQoaW5kZXgpKSwgc3RvcmVUeXBlKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuanVtcChibG9ja3NXaXRoQ2hlY2tzW2ldKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJsb2Nrc1dpdGhDaGVja3NbaV0sIGkgPyBibG9ja3NXaXRoU3RvcmVzW2kgLSAxXSA6IGluZGV4
TGFzdE5leHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgZWFzeSBjYXNlIHdo
ZXJlIHdlIGNhbiBkbyBhIG9uZS1zaG90IGFsbG9jYXRpb24sIHdlIHNpbXBseSBhbGxvY2F0ZSB0
aGUKICAgICAgICAgICAgICAgICAvLyBvYmplY3QgdG8gZGlyZWN0bHkgaGF2ZSB0aGUgZGVzaXJl
ZCBzdHJ1Y3R1cmUuCkBAIC02MzY1LDEyICs2NTAzLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGZvciAoUHJvcGVydHlNYXBFbnRyeSBlbnRyeSA6IHN0cnVjdHVyZS0+
Z2V0UHJvcGVydGllc0NvbmN1cnJlbnRseSgpKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVlID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClbdmFsdWUubV9p
ZGVudGlmaWVyTnVtYmVyXSAhPSBlbnRyeS5rZXkpCisgICAgICAgICAgICAgICAgICAgIFByb21v
dGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iua2luZCgpICE9IE5hbWVkUHJvcGVy
dHlQTG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCldICE9IGVu
dHJ5LmtleSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBpc0lubGluZU9mZnNl
dChlbnRyeS5vZmZzZXQpID8gb2JqZWN0IDogYnV0dGVyZmx5OwotICAgICAgICAgICAgICAgICAg
ICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgdmFsdWUubV9pZGVudGlmaWVyTnVtYmVy
LCBlbnRyeS5vZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVl
c1tpXSwgYmFzZSwgZGVzY3JpcHRvci5pbmZvKCksIGVudHJ5Lm9mZnNldCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTY0
MzUsOSArNjU3NSwxMSBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgYWN0aXZhdGlvbiA9IG1f
b3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVChkYXRhLm1fcHJvcGVydGllcy5zaXplKCkgPT0gdGFibGUtPnNjb3BlU2l6
ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlc1tpXSwKLSAg
ICAgICAgICAgICAgICBhY3RpdmF0aW9uLAotICAgICAgICAgICAgICAgIG1faGVhcHMuSlNFbnZp
cm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGF0YS5tX3Byb3BlcnRpZXNbaV0ubV9pZGVudGlmaWVy
TnVtYmVyXSk7CisgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlw
dG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICBBU1NFUlQoZGVzY3JpcHRv
ci5raW5kKCkgPT0gQ2xvc3VyZVZhclBMb2MpOworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgK
KyAgICAgICAgICAgICAgICB2YWx1ZXNbaV0sIGFjdGl2YXRpb24sCisgICAgICAgICAgICAgICAg
bV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlc1tkZXNjcmlwdG9yLmluZm8oKV0p
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKQEAgLTY0
NDYsNyArNjU4OCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHRh
YmxlLT5iZWdpbihsb2NrZXIpLCBlbmQgPSB0YWJsZS0+ZW5kKGxvY2tlcik7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpIHsKICAgICAgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNl
dCgpLm9mZnNldCgpID09IGRhdGEubV9wcm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcikg
eworICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlw
dG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChk
ZXNjcmlwdG9yLmtpbmQoKSA9PSBDbG9zdXJlVmFyUExvYyk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09IGRlc2NyaXB0b3IuaW5m
bygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNjYxMyw2ICs2
NzU3LDI5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUsIHJlZ0V4cCwg
bV9oZWFwcy5SZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBp
bGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQoKQorICAgIHsKKyAgICAgICAgRWRnZSBjb25zdHJ1
Y3RvckVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CisgICAgICAgIEVkZ2Ug
cmVnRXhwRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgRWRn
ZSBzdHJpbmdFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpOworICAgICAgICBF
ZGdlIHN0YXJ0RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKTsKKyAgICAgICAg
RWRnZSBlbmRFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpOworICAgICAgICAK
KyAgICAgICAgTFZhbHVlIGNvbnN0cnVjdG9yID0gbG93Q2VsbChjb25zdHJ1Y3RvckVkZ2UpOwor
ICAgICAgICBMVmFsdWUgcmVnRXhwID0gbG93Q2VsbChyZWdFeHBFZGdlKTsKKyAgICAgICAgTFZh
bHVlIHN0cmluZyA9IGxvd0NlbGwoc3RyaW5nRWRnZSk7CisgICAgICAgIExWYWx1ZSBzdGFydCA9
IGxvd0ludDMyKHN0YXJ0RWRnZSk7CisgICAgICAgIExWYWx1ZSBlbmQgPSBsb3dJbnQzMihlbmRF
ZGdlKTsKKworICAgICAgICBtX291dC5zdG9yZVB0cihyZWdFeHAsIGNvbnN0cnVjdG9yLCBtX2hl
YXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0UmVnRXhwKTsKKyAgICAgICAg
bV9vdXQuc3RvcmVQdHIoc3RyaW5nLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1
Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdElucHV0KTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihzdGFy
dCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jl
c3VsdF9zdGFydCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIoZW5kLCBjb25zdHJ1Y3RvciwgbV9o
ZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X2VuZCk7CisgICAgICAg
IG1fb3V0LnN0b3JlMzJBczgoCisgICAgICAgICAgICBtX291dC5jb25zdEludDMyKDApLAorICAg
ICAgICAgICAgbV9vdXQuYWRkcmVzcyhjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1
Y3Rvcl9jYWNoZWRSZXN1bHRfcmVpZmllZCkpOworICAgIH0KKwogICAgIExWYWx1ZSBkaWRPdmVy
Zmxvd1N0YWNrKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZG9lcyBhIHZlcnkgc2ltcGxlIGxl
YWYgZnVuY3Rpb24gYW5hbHlzaXMuIFRoZSBpbnZhcmlhbnQgb2YgRlRMIGNhbGwKQEAgLTY5NzAs
NiArNzEzNywzOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemVBcnJheUVsZW1lbnRzKEluZGV4aW5nVHlwZSBp
bmRleGluZ1R5cGUsIExWYWx1ZSB2ZWN0b3JMZW5ndGgsIExWYWx1ZSBidXR0ZXJmbHkpCisgICAg
eworICAgICAgICBpZiAoIWhhc0RvdWJsZShpbmRleGluZ1R5cGUpKSB7CisgICAgICAgICAgICAv
LyBUaGUgR0MgYWxyZWFkeSBpbml0aWFsaXplZCBldmVyeXRoaW5nIHRvIEpTVmFsdWUoKSBmb3Ig
dXMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBEb3VibGVz
IG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gUE5hTi4KKyAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExv
b3AgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5h
bEluZGV4ID0gbV9vdXQuYW5jaG9yKHZlY3Rvckxlbmd0aCk7CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFuY2hvcihidXR0ZXJmbHkpOworICAgICAgICBt
X291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIodmVjdG9yTGVuZ3RoKSwg
dW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7CisgICAgICAgIAorICAgICAgICBM
QmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERv
bmUpOworICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5waGkobV9vdXQuaW50MzIsIG9yaWdp
bmFsSW5kZXgpOworICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1fb3V0LnBoaShtX291dC5pbnRQ
dHIsIG9yaWdpbmFsUG9pbnRlcik7CisgICAgICAgIAorICAgICAgICBtX291dC5zdG9yZTY0KAor
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikp
LAorICAgICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRp
ZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgbmV4
dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5pbnQzMk9uZSk7CisgICAgICAgIG1fb3V0
LmFkZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKKyAgICAg
ICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShwb2ludGVyLCBtX291dC5hbmNob3IobV9vdXQuYWRk
KHBvaW50ZXIsIG1fb3V0LmludFB0ckVpZ2h0KSkpOworICAgICAgICBtX291dC5icmFuY2goCisg
ICAgICAgICAgICBtX291dC5ub3RaZXJvMzIobmV4dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwg
dW5zdXJlKGluaXREb25lKSk7CisgICAgICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0
RG9uZSwgaW5pdExhc3ROZXh0KTsKKyAgICB9CiAgICAgCiAgICAgTFZhbHVlIGFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlKExWYWx1ZSBvYmplY3QsIFN0cnVjdHVyZSogcHJldmlvdXNTdHJ1Y3R1cmUp
CiAgICAgewpAQCAtOTI1Nyw3ICs5NDU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
biBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC50ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1f
dGFnVHlwZU51bWJlcik7CiAgICAgfQotICAgIAorCiAgICAgTFZhbHVlIHVuYm94RG91YmxlKExW
YWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmJpdENhc3QobV9vdXQu
YWRkKGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlciksIG1fb3V0LmRvdWJsZVR5cGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAx
OTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSwxOSArNDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKIAotZXh0ZXJuICJDIiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIAotICAg
IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCi0gICAgICAgIHZtLCBu
dWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGlu
Z0hlYWRlcigpLCAwKTsKLSAgICAKLSAgICBKU09iamVjdCogcmVzdWx0ID0gSlNGaW5hbE9iamVj
dDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKLSAgICByZXN1bHQtPmJ1dHRl
cmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBFeGl0VGltZU9i
amVjdE1hdGVyaWFsaXphdGlvbiogbWF0ZXJpYWxpemF0aW9uLAogICAgIEVuY29kZWRKU1ZhbHVl
KiBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlKiB2YWx1ZXMpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDggKzM3LDYgQEAgY2xhc3MgTGF6eVNsb3dQYXRoOwogCiBleHRlcm4gIkMiIHsKIAotSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwotCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqLCBFeGl0VGlt
ZU9iamVjdE1hdGVyaWFsaXphdGlvbiosIEVuY29kZWRKU1ZhbHVlKikgV1RGX0lOVEVSTkFMOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDEwIEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpT
Q2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAorICAgIC8vIFRoaXMg
aXMgYSBzdXBlciBkYW5nZXJvdXMgbWV0aG9kIGZvciBKSVRzLiBTb21ldGltZXMgdGhlIEpJVHMg
d2lsbCB3YW50IHRvIGNyZWF0ZSBlaXRoZXIgYQorICAgIC8vIEpTRmluYWxPYmplY3Qgb3IgYSBK
U0FycmF5LiBUaGlzIGlzIHRoZSBtZXRob2QgdGhhdCB3aWxsIGRvIHRoYXQuCisgICAgc3RhdGlj
IEpTT2JqZWN0KiBjcmVhdGVSYXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQnV0dGVyZmx5KiA9IG51bGxwdHIpOworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCos
IENvcHlWaXNpdG9yJiwgQ29weVRva2VuKTsKQEAgLTEwMzQsNiArMTAzOCwyMCBAQCBwcml2YXRl
OgogCiBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByaXZhdGVGdW5jSW5zdGFuY2VPZihFeGVjU3RhdGUqKTsKIAoraW5saW5lIEpTT2JqZWN0KiBK
U09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KAorICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQoreworICAgIEpTT2JqZWN0KiBmaW5h
bE9iamVjdCA9IG5ldyAoCisgICAgICAgIE5vdE51bGwsIAorICAgICAgICBhbGxvY2F0ZUNlbGw8
SlNGaW5hbE9iamVjdD4oCisgICAgICAgICAgICAqZXhlYy0+aGVhcCgpLAorICAgICAgICAgICAg
SlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgp
KQorICAgICAgICApCisgICAgKSBKU09iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGJ1dHRl
cmZseSk7CisgICAgZmluYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAg
IHJldHVybiBmaW5hbE9iamVjdDsKK30KKwogaW5saW5lIEpTRmluYWxPYmplY3QqIEpTRmluYWxP
YmplY3Q6OmNyZWF0ZSgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDYgKzI2Miw4IEBA
IFJlZ0V4cCogUmVnRXhwOjpjcmVhdGUoVk0mIHZtLCBjb25zdCBTdHIKIAogdm9pZCBSZWdFeHA6
OmNvbXBpbGUoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7CisgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBZYXJyOjpZYXJyUGF0
dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0aW9uRXJy
b3IpOwogICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTksOCArMzAxLDIyIEBAIGludCBSZWdFeHA6Om1hdGNo
KFZNJiB2bSwgY29uc3QgU3RyaW5nJiAKICAgICByZXR1cm4gbWF0Y2hJbmxpbmUodm0sIHMsIHN0
YXJ0T2Zmc2V0LCBvdmVjdG9yKTsKIH0KIAorYm9vbCBSZWdFeHA6Om1hdGNoQ29uY3VycmVudGx5
KAorICAgIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50
JiBwb3NpdGlvbiwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKQoreworICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoIWhhc0NvZGVGb3Iocy5pczhCaXQo
KSA/IFlhcnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcG9zaXRpb24gPSBtYXRjaCh2bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOworICAg
IHJldHVybiB0cnVlOworfQorCiB2b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seShWTSogdm0s
IFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKKyAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9w
YXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiAgICAgaWYgKG1f
Y29uc3RydWN0aW9uRXJyb3IpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTMzOCw4ICszNTQsMjEgQEAgTWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRjaChWTSYgdm0s
IGNvbnN0IAogICAgIHJldHVybiBtYXRjaElubGluZSh2bSwgcywgc3RhcnRPZmZzZXQpOwogfQog
Citib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYgcmVzdWx0KQoreworICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoIWhhc01hdGNoT25seUNv
ZGVGb3Iocy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0gbWF0Y2godm0sIHMsIHN0YXJ0T2Zmc2V0KTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZWdFeHA6OmRlbGV0ZUNvZGUoKQogeworICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgaWYgKCFoYXND
b2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRlID0gTm90Q29tcGlsZWQ7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMTk3OTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYgUmVnRXhwX2gKICNkZWZpbmUgUmVnRXhwX2gKIAor
I2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9j
YXRvci5oIgogI2luY2x1ZGUgIk1hdGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiUmVnRXhwS2V5Lmgi
CkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0KICAgICBib29sIG11bHRpbGluZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnTXVsdGlsaW5lOyB9CiAgICAgYm9vbCBzdGlj
a3koKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ1N0aWNreTsgfQorICAgIGJvb2wgZ2xv
YmFsT3JTdGlja3koKSBjb25zdCB7IHJldHVybiBnbG9iYWwoKSB8fCBzdGlja3koKTsgfQogICAg
IGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnVW5pY29kZTsgfQog
CiAgICAgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3Ry
aW5nOyB9CkBAIC02NCw4ICs2NiwxNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogZXJyb3JN
ZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25FcnJvcjsgfQogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgaW50IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7CisKKyAgICAvLyBSZXR1cm5zIGZh
bHNlIGlmIHdlIGNvdWxkbid0IHJ1biB0aGUgcmVndWxhciBleHByZXNzaW9uIGZvciBhbnkgcmVh
c29uLgorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9y
KTsKKyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBNYXRjaFJlc3VsdCBtYXRjaChWTSYsIGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKIAorICAgIGJvb2wgbWF0Y2hDb25j
dXJyZW50bHkoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hS
ZXN1bHQmKTsKKwogICAgIC8vIENhbGwgdGhlc2UgdmVyc2lvbnMgb2YgdGhlIG1hdGNoIGZ1bmN0
aW9ucyBpZiB5b3UncmUgZGVzcGVyYXRlIGZvciBwZXJmb3JtYW5jZS4KICAgICBpbnQgbWF0Y2hJ
bmxpbmUoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGlu
dCwgMzI+JiBvdmVjdG9yKTsKICAgICBNYXRjaFJlc3VsdCBtYXRjaElubGluZShWTSYsIGNvbnN0
IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKQEAgLTc3LDYgKzg1LDkgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9zdGF0ZSAhPSBOb3RDb21waWxlZDsKICAgICB9CiAKKyAgICBi
b29sIGhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsKKyAgICBib29sIGhhc01hdGNoT25s
eUNvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsKKwogICAgIHZvaWQgZGVsZXRlQ29kZSgpOwog
CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtMTMyLDYgKzE0Myw3IEBAIHByaXZhdGU6
CiAgICAgdW5zaWduZWQgbV9ydE1hdGNoQ2FsbENvdW50OwogICAgIHVuc2lnbmVkIG1fcnRNYXRj
aEZvdW5kQ291bnQ7CiAjZW5kaWYKKyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CiAKICNp
ZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgWWFycjo6WWFyckNvZGVCbG9jayBtX3JlZ0V4cEpJVENv
ZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1
bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
YWNoZWRSZXN1bHQuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0
LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwog
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RSZWdFeHAoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX2xhc3RSZWdFeHApOyB9CisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RJbnB1dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fbGFzdElucHV0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZSZXN1bHQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVk
UmVzdWx0LCBtX3Jlc3VsdCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVpZmll
ZCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fcmVpZmll
ZCk7IH0KKwogcHJpdmF0ZToKICAgICBNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKICAgICBib29sIG1f
cmVpZmllZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiAr
NjksOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkUmVz
dWx0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENvbnN0cnVjdG9yLCBtX2NhY2hl
ZFJlc3VsdCk7IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBS
ZWdFeHBQcm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXMpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY3LDIwICs2NywyNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZiAvLyBS
RUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOCiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNv
bXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FM
V0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplIGNo
YXJTaXplKQogewogICAgIGlmIChoYXNDb2RlKCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAg
ICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFy
OCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZSgpKSkKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlh
cnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGUoKSkpCi0gICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3Nhcnko
Vk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit7CisgICAgaWYgKGhhc0NvZGVG
b3IoY2hhclNpemUpKQorICAgICAgICByZXR1cm47CiAKICAgICBjb21waWxlKCZ2bSwgY2hhclNp
emUpOwogfQpAQCAtMTUyLDIxICsxNTksMjkgQEAgQUxXQVlTX0lOTElORSBpbnQgUmVnRXhwOjpt
YXRjaElubGluZShWTQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9p
ZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShWTSYgdm0sIFlhcnI6OllhcnJD
aGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc01hdGNoT25s
eUNvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewogICAgIGlmIChoYXNDb2Rl
KCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENv
ZGUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4
Qml0Q29kZU1hdGNoT25seSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1f
cmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGVNYXRjaE9ubHkoKSkpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICB9CiAKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK0FMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25s
eShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK3sKKyAgICBpZiAoaGFzTWF0
Y2hPbmx5Q29kZUZvcihjaGFyU2l6ZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGNvbXBpbGVN
YXRjaE9ubHkoJnZtLCBjaGFyU2l6ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiAxOTc5ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNy
ZWF0ZVJlZ0V4cE1hdGNoCiAgICAgCiAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1
bHRzOwogICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2hJbmxpbmUodm0sIGlucHV0VmFs
dWUsIHN0YXJ0T2Zmc2V0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7CisgICAgQVNTRVJUKHBvc2l0aW9u
ID09IHN1YnBhdHRlcm5SZXN1bHRzWzBdKTsKICAgICBpZiAocG9zaXRpb24gPT0gLTEpIHsKICAg
ICAgICAgcmVzdWx0ID0gTWF0Y2hSZXN1bHQ6OmZhaWxlZCgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NyArNjMsNyBAQCBKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlY0lubGluZShFeGVjU3RhCiAgICAg
U3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsgLy8gRklYTUU6IEhhbmRsZSBlcnJv
cnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUxNDUKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBib29sIGdsb2JhbE9yU3RpY2t5ID0g
cmVnRXhwLT5nbG9iYWwoKSB8fCByZWdFeHAtPnN0aWNreSgpOworICAgIGJvb2wgZ2xvYmFsT3JT
dGlja3kgPSByZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCk7CiAKICAgICB1bnNpZ25lZCBsYXN0SW5k
ZXg7CiAgICAgaWYgKGdsb2JhbE9yU3RpY2t5KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhw
LWV4ZWMtZm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4g
LyhmKShvKShvKS8uZXhlYygiZm9vIik7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBp
ZiAocmVzdWx0ICE9PSBudWxsKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIg
KyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Np
bXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdl
eHAtZXhlYy1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0
aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8uZXhlYygiZm9vIik7Cit9CisKK25v
SW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZh
ciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPSA0KQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFswXSAh
PSAiZm9vIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
ICAgIGlmIChyZXN1bHRbMV0gIT0gImYiKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFsyXSAhPSAibyIpCisgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzNdICE9ICJv
IikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3Qt
Zm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlv
biBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykvLnRlc3QoImJhciIpOworfQorCitub0lu
bGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIg
cmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSBmYWxzZSkKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykv
LnRlc3QoImZvbyIpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAh
PSB0cnVlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9
CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0No
YW5nZUxvZwkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xk
IFJlZ0V4cEV4ZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1ha2UgZXhlY3V0ZUluc2VydGlvbnMoKSByZXR1cm4gdGhlIGFtb3VudCBieSB3aGljaCB0
aGUgdmVjdG9yIGluY3JlYXNlZCBpbiBzaXplLiBUaGlzIGlzIGEKKyAgICAgICAgY29udmVuaWVu
dCBmZWF0dXJlIHRoYXQgSSB1c2UgaW4gREZHOjpJbnNlcnRpb25TZXQuCisKKyAgICAgICAgKiB3
dGYvSW5zZXJ0aW9uLmg6CisgICAgICAgIChXVEY6OmV4ZWN1dGVJbnNlcnRpb25zKToKKwogMjAx
Ni0wMy0xMCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIFdPRkYyCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9JbnNlcnRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9JbnNlcnRpb24uaAkocmV2aXNpb24gMTk3
OTgxKQorKysgU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNS0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTUsMTQgKzU1LDE1IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
YXJnZXRWZWN0b3JUeXBlLCB0eXBlbmFtZSBJbnNlcnRpb25WZWN0b3JUeXBlPgotdm9pZCBleGVj
dXRlSW5zZXJ0aW9ucyhUYXJnZXRWZWN0b3JUeXBlJiB0YXJnZXQsIEluc2VydGlvblZlY3RvclR5
cGUmIGluc2VydGlvbnMpCitzaXplX3QgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlw
ZSYgdGFyZ2V0LCBJbnNlcnRpb25WZWN0b3JUeXBlJiBpbnNlcnRpb25zKQogewotICAgIGlmICgh
aW5zZXJ0aW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB0YXJnZXQuZ3Jvdyh0YXJn
ZXQuc2l6ZSgpICsgaW5zZXJ0aW9ucy5zaXplKCkpOworICAgIHNpemVfdCBudW1JbnNlcnRpb25z
ID0gaW5zZXJ0aW9ucy5zaXplKCk7CisgICAgaWYgKCFudW1JbnNlcnRpb25zKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICB0YXJnZXQuZ3Jvdyh0YXJnZXQuc2l6ZSgpICsgbnVtSW5zZXJ0aW9ucyk7
CiAgICAgc2l6ZV90IGxhc3RJbmRleCA9IHRhcmdldC5zaXplKCk7CiAgICAgc2l6ZV90IG9yaWdp
bmFsVGFyZ2V0U2l6ZSA9IHRhcmdldC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaW5kZXhJbklu
c2VydGlvbnMgPSBpbnNlcnRpb25zLnNpemUoKTsgaW5kZXhJbkluc2VydGlvbnMtLTspIHsKKyAg
ICBmb3IgKHNpemVfdCBpbmRleEluSW5zZXJ0aW9ucyA9IG51bUluc2VydGlvbnM7IGluZGV4SW5J
bnNlcnRpb25zLS07KSB7CiAgICAgICAgIEFTU0VSVCghaW5kZXhJbkluc2VydGlvbnMgfHwgaW5z
ZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSA+PSBpbnNlcnRpb25zW2luZGV4SW5J
bnNlcnRpb25zIC0gMV0uaW5kZXgoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob3JpZ2luYWxU
YXJnZXRTaXplLCBpbnNlcnRpb25zW2luZGV4SW5JbnNlcnRpb25zXS5pbmRleCgpIDwgb3JpZ2lu
YWxUYXJnZXRTaXplKTsKICAgICAgICAgc2l6ZV90IGZpcnN0SW5kZXggPSBpbnNlcnRpb25zW2lu
ZGV4SW5JbnNlcnRpb25zXS5pbmRleCgpICsgaW5kZXhJbkluc2VydGlvbnM7CkBAIC03Myw2ICs3
NCw3IEBAIHZvaWQgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlwZSYKICAgICAgICAg
bGFzdEluZGV4ID0gZmlyc3RJbmRleDsKICAgICB9CiAgICAgaW5zZXJ0aW9ucy5yZXNpemUoMCk7
CisgICAgcmV0dXJuIG51bUluc2VydGlvbnM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTk3OTgxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYtMDMtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBERkcgYW5kIEZUTCBzaG91bGQgY29uc3RhbnQtZm9sZCBS
ZWdFeHBFeGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZh
aWwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1y
ZWdleHAtZXhlYy1mb2xkaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5q
czogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4
cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nLWZhaWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBs
ZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5odG1sOiBBZGRlZC4KKwogMjAxNi0wMy0x
MCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYV0gVGVzdCBnYXJkZW5pbmcgYWZ0ZXIgcjE5NzkzMwpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhw
LWV4ZWMtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdl
eHAtZXhlYy1mb2xkaW5nLWZhaWwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJl
Z2V4cC1leGVjLWZvbGRpbmctZmFpbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1m
YWlsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRp
bmctZmFpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jl
c3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4
ZWMtZm9sZGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhl
Yy1mb2xkaW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVn
cmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZv
bGRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxl
LXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1w
bGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Np
bXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZv
bGRpbmctZmFpbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLWZhaWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJl
Z2V4cC10ZXN0LWZvbGRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVz
cy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcmVn
ZXhwLXRlc3QtZm9sZGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9s
ZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMt
Zm9sZGluZy1mYWlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9u
KCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICAvZm9v
Ly5leGVjKCJiYXIiKTsKK30pKCk7CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xk
aW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1IEBACisoZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyAr
K2kpCisgICAgICAgIC9mb28vLmV4ZWMoImZvbyIpOworfSkoKTsKKwpJbmRleDogTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFp
bC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
aW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmct
ZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgL2Zvby8udGVzdCgi
YmFyIik7Cit9KSgpOworCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBs
ZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAor
KGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAg
ICAgICAvZm9vLy50ZXN0KCJmb28iKTsKK30pKCk7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273681</attachid>
            <date>2016-03-10 21:09:18 -0800</date>
            <delta_ts>2016-03-10 21:30:48 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>115099</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI3MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZW5hYmxlcyBjb25zdGFu
dC1mb2xkaW5nIG9mIFJlZ0V4cEV4ZWMgYW5kIFJlZ0V4cFRlc3QuCisKKyAgICAgICAgSXQncyBu
b3cgcG9zc2libGUgdG8gcnVuIFlhcnIgb24gdGhlIEpJVCB0aHJlYWRzLiBTaW5jZSBwcmV2aW91
cyB3b3JrIG9uIGNvbnN0YW50LWZvbGRpbmcKKyAgICAgICAgc3RyaW5ncyBnYXZlIHRoZSBERkcg
YW4gQVBJIGZvciByZWFzb25pbmcgYWJvdXQgSlNTdHJpbmcgY29uc3RhbnRzIGluIHRlcm1zIG9m
CisgICAgICAgIEpJVC10aHJlYWQtbG9jYWwgV1RGOjpTdHJpbmdzLCBpdCdzIG5vdyBzdXBlciBl
YXN5IHRvIGp1c3QgcGFzcyBzdHJpbmdzIHRvIFlhcnIgYW5kIGJ1aWxkIElSCisgICAgICAgIGJh
c2VkIG9uIHRoZSByZXN1bHRzLgorCisgICAgICAgIEJ1dCBSZWdFeHBFeGVjIGlzIGhhcmQ6IHRo
ZSBmb2xkZWQgdmVyc2lvbiBzdGlsbCBtdXN0IGFsbG9jYXRlIGEgUmVnRXhwTWF0Y2hlc0FycmF5
LiBXZSBtdXN0CisgICAgICAgIHVzZSB0aGUgc2FtZSBTdHJ1Y3R1cmUgdGhhdCB0aGUgY29kZSB3
b3VsZCBoYXZlIHVzZWQgb3IgZWxzZSB3ZSdsbCBwb2xsdXRlIHRoZSBwcm9ncmFtJ3MKKyAgICAg
ICAgaW5saW5lIGNhY2hlcy4gQWxzbywgUmVnRXhwTWF0Y2hlc0FycmF5Lmh8Y3BwIHdpbGwgYWxs
b2NhdGUgdGhlIGFycmF5IGFuZCBpdHMgbmFtZWQKKyAgICAgICAgcHJvcGVydGllcyBpbiBvbmUg
Z28gLSB3ZSBkb24ndCB3YW50IHRvIGxvc2UgdGhhdCBvcHRpbWl6YXRpb24uIFNvLCB0aGlzIHBh
dGNoIGVuYWJsZXMKKyAgICAgICAgTWF0ZXJpYWxpemVOZXdPYmplY3QgdG8gYWxsb2NhdGUgb2Jq
ZWN0cyBvciBhcnJheXMgd2l0aCBhbnkgbnVtYmVyIG9mIGluZGV4ZWQgb3IgbmFtZWQKKyAgICAg
ICAgcHJvcGVydGllcy4gUHJldmlvdXNseSBpdCBjb3VsZCBvbmx5IGhhbmRsZSBvYmplY3RzIChi
dXQgbm90IGFycmF5cykgYW5kIG5hZWQgcHJvcGVydGllcworICAgICAgICAoYnV0IG5vdCBpbmRl
eGVkIG9uZXMpLgorCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGEgZmV3IG1pbm9yIHRoaW5ncyBm
b3Igc2V0dGluZyB0aGUgUmVnRXhwQ29uc3RydWN0b3IgY2FjaGVkIHJlc3VsdC4KKworICAgICAg
ICBUaGlzIGlzIGFib3V0IGEgMnggc3BlZWQtdXAgb24gbWljcm9iZW5jaG1hcmtzIHdoZW4gd2Ug
Zm9sZCBhIG1hdGNoIHN1Y2Nlc3MgYW5kIGFib3V0IGEKKyAgICAgICAgOHggc3BlZWQtdXAgd2hl
biB3ZSBmb2xkIGEgbWF0Y2ggZmFpbHVyZS4gU2FkbHksIHRoaXMgZG9lc24ndCBsb29rIGxpa2Ug
bXVjaCBvZiBhCisgICAgICAgIE9jdGFuZS9yZWdleHAgc3BlZWQtdXAsIGFsdGhvdWdoIHdlIGFy
ZSBkZWZpbml0ZWx5IGRvaW5nIGEgbG90IG9mIGNvbnN0YW50LWZvbGRpbmcgaW4gdGhhdAorICAg
ICAgICBiZW5jaG1hcmsuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1
bXApOgorICAgICAgICAqIGRmZy9ERkdJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Okluc2VydGlvblNldDo6aW5zZXJ0U2xvdyk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0
aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHSW5zZXJ0aW9uU2V0Lmg6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRDaGVjayk6CisgICAgICAgICogZGZn
L0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdGFja0FjY2Vzc0RhdGE6OmZsdXNoZWRB
dCk6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6
ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6Om9u
ZVdheVNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oOgorICAgICAgICAoSlNDOjpERkc6
OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpQaGFudG9tUHJvcGVydHlWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6Om9wZXJhdG9yPT0pOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRG
Rzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZn
L0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojp+U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0QWxsb2NhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjplbWl0R2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUxhenlKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0
aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0
aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVDb21tdXRhdGl2aXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpleGVjdXRlSW5zZXJ0aW9uU2V0KToKKyAgICAgICAg
KiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxp
ZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlQ1BTKToKKyAgICAg
ICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgICogZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb24pOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU2V0UmVnRXhwT2JqZWN0
TGFzdEluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmRpZE92ZXJmbG93U3RhY2spOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpzdG9yYWdlRm9yVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmluaXRpYWxpemVBcnJheUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdENlbGxPck1pc2MpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1bmJveERvdWJsZSk6CisgICAgICAgICog
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvblBvcHVs
YXRlT2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk5ld09iamVjdFdp
dGhCdXR0ZXJmbHkpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3Jl
YXRlUmF3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2gpOgorICAgICAgICAoSlNDOjpSZWdFeHA6
Om1hdGNoQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlTWF0Y2hP
bmx5KToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpkZWxldGVDb2RlKToKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0Lmg6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKToKKyAg
ICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RJbnB1dCk6CisgICAg
ICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQpOgorICAgICAgICAo
SlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rv
cjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6Omhhc0NvZGVGb3IpOgorICAgICAgICAoSlNDOjpS
ZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2hJ
bmxpbmUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IpOgorICAg
ICAgICAoSlNDOjpSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qczogQWRkZWQuCisg
ICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMt
Zm9sZGluZy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZv
byk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpz
OiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMTYtMDMtMTAgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGZv
ciByMTk3OTgzLCBob3BlZnVsbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4OCw2ICs0ODgs
NyBAQAogCQkwRjdDMTFBRDFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MxMUFDMUJDMzg2MkMw
MEM3NENEQiAvKiBDb3B5QmFycmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGN0MzOUZCMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdD
MzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovOyB9OwogCQkwRjdDMzlG
RDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUx
IC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsKKwkJMEY3QzM5RkYxQzkwQzU1QjAwNDgw
MTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovOyB9Owog
CQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUg
LyogQnlWYWxJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4
MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9
OwogCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUx
NjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjY0MCw2ICsyNjQxLDcgQEAK
IAkJMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcHlCYXJyaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9i
amVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2Jq
ZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR09wSW5mby5oOyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4
MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI0NSw2ICs2MjQ3LDcgQEAKIAkJCQkwRjJCOUNE
RDE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oICovLAog
CQkJCTg2RUM5REJGMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCAqLywKIAkJ
CQk4NkVDOURDMDEzMjhERjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9ucy5oICovLAorCQkJCTBG
N0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLywKIAkJCQlBN0Q4OUNFRTE3
QTBCOENDMDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAgKi8s
CiAJCQkJQTdEODlDRUYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuaCAqLywKIAkJCQkwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50
cnkuY3BwICovLApAQCAtNzQ0NSw2ICs3NDQ4LDcgQEAKIAkJCQkwRjY0RUFGMzFDNEVDRDA2MDA2
MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDUxOUY2
REU3NDAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9oZWFkZXIucHkgaW4g
SGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNjE5RjZERTc2MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2Jq
Y19jb25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJMEY3
QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVFQTcxMDcxOUY2REU3ODAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9j
b252ZXJzaW9uc19oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1
MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVB
NzEwODE5RjZERTdBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NTIsNiArMTk1Miw3
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICBjYXNlIFJlY29y
ZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2Ug
R2V0RnJvbUFyZ3VtZW50czoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIzLDYgKzkyMywxMCBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHdyaXRlKFJlZ0V4
cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFJlZ0V4cE9iamVj
dExhc3RJbmRleExvYywgUmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlLT5jaGlsZDIoKS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJuOworCisgICAg
Y2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CisgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRl
KTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6
IHsKICAgICAgICAgQWJzdHJhY3RIZWFwIGhlYXAoRGlyZWN0QXJndW1lbnRzUHJvcGVydGllcywg
bm9kZS0+Y2FwdHVyZWRBcmd1bWVudHNPZmZzZXQoKS5vZmZzZXQoKSk7CkBAIC0xMDg2LDcgKzEw
OTAsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAg
IGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCiAgICAgICAg
ICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAg
ICAgICByZWFkKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHJlYWQoUmVnRXhwT2JqZWN0X2xh
c3RJbmRleCk7CiAgICAgICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICB3
cml0ZShSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICByZWFkKFdvcmxkKTsKQEAgLTEwOTgsNyArMTEwNCw5IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgICYmIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG5vZGUt
PmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJlYWQoUmVn
RXhwU3RhdGUpOworICAgICAgICAgICAgcmVhZChSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAg
ICAgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHdyaXRlKFJlZ0V4cE9i
amVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IHJlYWQoV29ybGQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNl
IEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJ
bmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICBjYXNlIEdldEds
b2JhbFZhcjoKICAgICBjYXNlIEdldEdsb2JhbExleGljYWxWYXJpYWJsZToKICAgICBjYXNlIFB1
dEdsb2JhbFZhcmlhYmxlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAwLDYgKzEzMDAsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICAgICAgY2FzZSBHZXRS
ZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgorICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgICAg
IC8vIFRoZXNlIGFyZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4cGVjdCB0
byBzZWUgZHVyaW5nIGZpeHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50ZWQgdG8g
aW5zZXJ0IHRoZW0gcHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNyZWF0ZQog
ICAgICAgICAgICAgLy8gZml4dXAgcnVsZXMgZm9yIHRoZW0uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNSw2ICszMTUs
OCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgICAg
ICBvdXQucHJpbnQoYW5vdGhlckNvbW1hLCBwb2ludGVyRHVtcEluQ29udGV4dChmcmVlemUobV9j
b2RlQmxvY2stPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSlbaV0pLCBjb250
ZXh0KSk7CiAgICAgICAgIG91dC5wcmludCgiXSIpOwogICAgIH0KKyAgICBpZiAobm9kZS0+aGFz
TGF6eUpTVmFsdWUoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBub2RlLT5sYXp5SlNWYWx1
ZSgpKTsKICAgICBpZiAobm9kZS0+aGFzSW5kZXhpbmdUeXBlKCkpCiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgSW5kZXhpbmdUeXBlRHVtcChub2RlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgIGlm
IChub2RlLT5oYXNUeXBlZEFycmF5VHlwZSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw5ICs0NSw5IEBAIHZvaWQgSW5zZXJ0aW9uU2V0OjppbnNlcnRTbG93KGNvbnN0IEluc2UK
ICAgICBtX2luc2VydGlvbnMuaW5zZXJ0KDAsIGluc2VydGlvbik7CiB9CiAKLXZvaWQgSW5zZXJ0
aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQorc2l6ZV90IEluc2VydGlvblNldDo6
ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBleGVjdXRlSW5zZXJ0aW9ucygqYmxv
Y2ssIG1faW5zZXJ0aW9ucyk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRpb25zKCpibG9jaywg
bV9pbnNlcnRpb25zKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAgICAgCi0gICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKTsK
KyAgICBzaXplX3QgZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jayk7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBpbnNlcnRTbG93KGNvbnN0IEluc2VydGlvbiYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTYsOCArMTE2LDEwIEBAIFN0cmluZyBMYXp5SlNWYWx1ZTo6dHJ5R2V0U3RyaW5nKEdy
YXBoJiAKICAgICBkZWZhdWx0OgogICAgICAgICBpZiAoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5n
ID0gdHJ5R2V0U3RyaW5nSW1wbCgpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBnaW5vcm1vdXNT
dHJpbmdMZW5ndGggPSAxMDAwMDsKLSAgICAgICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID4g
Z2lub3Jtb3VzU3RyaW5nTGVuZ3RoKQorICAgICAgICAgICAgaWYgKHN0cmluZy0+bGVuZ3RoKCkg
PiBnaW5vcm1vdXNTdHJpbmdMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZp
bmcgdXAgYmVjYXVzZSBvZiBzaXplIGxpbWl0LlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IGdyYXBoLm1fY29waWVkU3RyaW5ncy5hZGQoc3RyaW5nLCBTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsx
MzEsNyBAQCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kCiAgICAgY2Fz
ZSBTdG9yZUJhcnJpZXI6CiAgICAgY2FzZSBQdXRCeU9mZnNldDoKICAgICBjYXNlIFB1dENsb3N1
cmVWYXI6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBTdHJDYXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJERkdOb2RlT3Jp
Z2luLmgiCiAjaW5jbHVkZSAiREZHTm9kZVR5cGUuaCIKICNpbmNsdWRlICJERkdPYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCiAjaW5jbHVkZSAiREZH
VHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaCIKQEAgLTIxOSwyMCArMjIwLDYgQEAgc3RydWN0IFN0YWNrQWNjZXNz
RGF0YSB7CiAgICAgRmx1c2hlZEF0IGZsdXNoZWRBdCgpIHsgcmV0dXJuIEZsdXNoZWRBdChmb3Jt
YXQsIG1hY2hpbmVMb2NhbCk7IH0KIH07CiAKLS8vIFRoaXMgdHlwZSB1c2VkIGluIHBhc3Npbmcg
YW4gaW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7Ci0vLyBkaXN0aW5ndWlz
aGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxv
Y2sgZGF0YSBzdHJ1Y3R1cmUgLSAKLS8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBp
ZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCi1zdHJ1Y3QgT3BJbmZvIHsKLSAgICBPcEluZm8oKSA6
IG1fdmFsdWUoMCkgeyB9Ci0gICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92
YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAgZXhwbGljaXQgT3BJ
bmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1
ZSkpIHsgfQotI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKLSAgICBleHBsaWNpdCBP
cEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1
ZSkpIHsgfQotI2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFs
dWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAgdWludHB0cl90
IG1fdmFsdWU7Ci19OwotCiAvLyA9PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMg
YSBzaW5nbGUgb3BlcmF0aW9uIGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
NCw2ICsyMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
VmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dFJlZ0V4cE9iamVjdExhc3RJbmRleCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a05vdEVtcHR5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tCYWRDZWxsLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzQsNyArMTk3NCw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOiB7CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5p
ZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBl
bmQoUGhhbnRvbVByb3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAg
ICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwog
ICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9u
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFs
dWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFw
cGVuZChtX2JvdHRvbSk7CkBAIC0yMDI0LDcgKzIwMjQsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICAgICAgY2FzZSBDbG9zdXJlVmFyUExvYzogewogICAgICAgICAgICAgICAgICAgICBBU1NF
UlQobG9jYXRpb24uYmFzZSgpID09IGFsbG9jYXRpb24uaWRlbnRpZmllcigpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Qcm9wZXJ0eVZhbHVl
KGxvY2F0aW9uLmluZm8oKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGll
cy5hcHBlbmQobG9jYXRpb24uZGVzY3JpcHRvcigpKTsKICAgICAgICAgICAgICAgICAgICAgTm9k
ZSogdmFsdWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ib3R0b20pOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiwzMiArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12
b2lkIFBoYW50b21Qcm9wZXJ0eVZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17
Ci0gICAgb3V0LnByaW50KCJpZCIsIG1faWRlbnRpZmllck51bWJlcik7Ci19Ci0KIHZvaWQgT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewog
ICAgIG91dC5wcmludCgiWyIsIGxpc3REdW1wKG1fcHJvcGVydGllcyksICJdIik7CiB9CiAKLWZs
b2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6Om9uZVdheVNpbWlsYXJpdHlTY29yZSgKLSAg
ICBjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikgY29uc3QKLXsKLSAgICB1
bnNpZ25lZCBudW1IaXRzID0gMDsKLSAgICBmb3IgKFBoYW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVl
IDogbV9wcm9wZXJ0aWVzKSB7Ci0gICAgICAgIGlmIChvdGhlci5tX3Byb3BlcnRpZXMuY29udGFp
bnModmFsdWUpKQotICAgICAgICAgICAgbnVtSGl0cysrOwotICAgIH0KLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG51bUhpdHMpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fcHJvcGVydGll
cy5zaXplKCkpOwotfQotCi1mbG9hdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpzaW1pbGFy
aXR5U2NvcmUoY29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgb3RoZXIpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHN0ZDo6bWluKG9uZVdheVNpbWlsYXJpdHlTY29yZShvdGhlciksIG90aGVy
Lm9uZVdheVNpbWlsYXJpdHlTY29yZSgqdGhpcykpOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5o
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5o
IgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CkBAIC0zNSwzOCArMzYsMTEgQEAKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1zdHJ1Y3QgUGhhbnRvbVByb3BlcnR5VmFsdWUgewot
ICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlKCkKLSAgICAgICAgOiBtX2lkZW50aWZpZXJOdW1iZXIo
VUlOVF9NQVgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBQaGFudG9tUHJvcGVydHlWYWx1ZSh1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKQotICAgICAgICA6IG1faWRlbnRpZmllck51bWJlcihp
ZGVudGlmaWVyTnVtYmVyKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgbV9pZGVu
dGlmaWVyTnVtYmVyOwotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQaGFudG9tUHJv
cGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlm
aWVyTnVtYmVyID09IG90aGVyLm1faWRlbnRpZmllck51bWJlcjsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci19OwotCiBzdHJ1Y3QgT2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YSB7CiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgbWVhbmluZyBvZiB0aGUgcGFz
c2VkIG5vZGVzLgotICAgIFZlY3RvcjxQaGFudG9tUHJvcGVydHlWYWx1ZT4gbV9wcm9wZXJ0aWVz
OworICAgIFZlY3RvcjxQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcj4gbV9wcm9wZXJ0aWVzOwog
ICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwotICAgIAotICAgIC8vIFRo
ZSBmcmFjdGlvbiBvZiBteSBwcm9wZXJ0aWVzIHRoYXQgdGhlIG90aGVyIGRhdGEgaGFzLgotICAg
IGZsb2F0IG9uZVdheVNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25E
YXRhJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gVGhlIG1pbmltdW0gb2YgdGhlIHR3byBwb3NzaWJs
ZSBvbmUtd2F5IHNjb3Jlcy4KLSAgICBmbG9hdCBzaW1pbGFyaXR5U2NvcmUoY29uc3QgT2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YSYpIGNvbnN0OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgREZHT3BJbmZvX2gKKyNkZWZpbmUgREZHT3BJbmZvX2gKKworI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKy8vIFRoaXMgdHlwZSB1c2VkIGluIHBhc3Np
bmcgYW4gaW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7CisvLyBkaXN0aW5n
dWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2Rl
QmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKKy8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBv
ciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCitzdHJ1Y3QgT3BJbmZvIHsKKyAgICBPcEluZm8o
KSA6IG1fdmFsdWUoMCkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDog
bV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisgICAgZXhwbGljaXQg
T3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkpIHsgfQorI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKKyAgICBleHBsaWNp
dCBPcEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkpIHsgfQorI2VuZGlmCisgICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1f
dmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisgICAgdWludHB0
cl90IG1fdmFsdWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR09wSW5mb19oCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3OTgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQwMSw2ICsxNDAxLDYwIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlZmF1bHRIYXMKICAgICByZXR1cm4gMDsKIH0KIAorY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdSYXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBCdXR0ZXJmbHkqIGJ1
dHRlcmZseTsKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0lu
ZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgICAgIElu
ZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICAgICAgaGVhZGVyLnNldFZlY3Rvckxlbmd0aChsZW5n
dGgpOworICAgICAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3RoKDApOworICAgICAgICAKKyAgICAg
ICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgICAgICB2bSwgbnVsbHB0
ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAorICAgICAgICAgICAgaGFzSW5k
ZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSksIGhlYWRlciwKKyAgICAg
ICAgICAgIGxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOworICAgIH0gZWxzZQorICAg
ICAgICBidXR0ZXJmbHkgPSBudWxscHRyOworCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTT2Jq
ZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIHJl
c3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8t
c3BhY2UuCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4ocmVzdWx0KTsKK30KKworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICAK
KyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAorICAgICAgICB2
bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwgSW5k
ZXhpbmdIZWFkZXIoKSwgMCk7CisgICAgCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTT2JqZWN0
OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIHJlc3Vs
dC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3Bh
Y2UuCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5n
dGgoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3Ro
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgSW5kZXhpbmdIZWFkZXIgaGVhZGVyOworICAgIGhl
YWRlci5zZXRWZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3Ro
KDApOworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAg
ICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUs
IGhlYWRlciwKKyAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGxlbmd0aCk7CisKKyAg
ICAvLyBQYXJhZG94aWNhbGx5IHRoaXMgbWF5IGFsbG9jYXRlIGEgSlNBcnJheS4gVGhhdCdzIHRv
dGFsbHkgY29vbC4KKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09i
amVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0ZXJmbHko
KTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQ
cm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqIGV4ZWMpIAogewogICAgIGV4ZWMtPnZtKCkudHlwZVBy
b2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiTG9nIEZ1bGwsIGNh
bGxlZCBmcm9tIGluc2lkZSBERkcuIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDEw
IEBAIGludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG8KIAogc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSosIEpTQ2Vs
bCogdmFsdWUsIEpTQ2VsbCogcHJvdG8pOwogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld1Jhd09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJO
QUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZs
eShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFu
ZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpIFdU
Rl9JTlRFUk5BTDsKKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJv
ZmlsZXJMb2dERkcoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJ
T04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqLCB2b2lk
Kiwgdm9pZCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY4LDYgKzY2OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2Jq
ZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAg
ICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIGNhc2UgTGF6eUpT
Q29uc3RhbnQ6IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlz
aWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAgICAgICAgLy8g
aW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlv
bi5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDYgKzc0LDEw
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQcm8KICAgICBjYXNlIE5h
bWVkUHJvcGVydHlQTG9jOgogICAgICAgICBvdXQucHJpbnQoIk5hbWVkUHJvcGVydHlQTG9jIik7
CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5UExvYzoKKyAgICAg
ICAgb3V0LnByaW50KCJJbmRleGVkUHJvcGVydHlQTG9jIik7CisgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgY2FzZSBBcmd1bWVudFBMb2M6CiAgICAgICAgIG91dC5wcmludCgiQXJndW1l
bnRQTG9jIik7CkBAIC0xMDIsNiArMTA2LDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBQcm8KICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOgogICAgICAgICBvdXQucHJp
bnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUHVibGlj
TGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJQdWJsaWNMZW5ndGhQTG9jIik7CisgICAg
ICAgIHJldHVybjsKKworICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnBy
aW50KCJWZWN0b3JMZW5ndGhQTG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyNSArMjgsNDEgQEAKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogCi0jaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkRGR0VkZ2UuaCIKKyNp
bmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0cnVjdCBOb2RlOworCisvLyBQcm9tb3Rl
ZCBsb2NhdGlvbnMgYXJlIGxpa2UgaGVhcCBsb2NhdGlvbnMgYnV0IGFyZSBtZWFudCB0byBiZSBt
b3JlIHByZWNpc2UuIEEgaGVhcCBsb2NhdGlvbiBpcworLy8gYXBwbGljYWJsZSB0byBDU0Ugc2Nl
bmFyaW9zLCB3aGVyZSBpdCBtYWtlcyBzZW5zZSB0byBzcGVhayBvZiBhIGxvY2F0aW9uIHZlcnkg
YWJzdHJhY3RseS4gQQorLy8gcHJvbW90ZWQgaGVhcCBsb2NhdGlvbiBpcyBmb3IgY2FzZXMgd2hl
cmUgd2Ugc3BlYWsgb2YgYSBzcGVjaWZpYyBvYmplY3QgYW5kIHRoZSBjb21waWxlciBrbm93cwor
Ly8gdGhpcyBvYmplY3QncyBpZGVudGl0eSAtIGZvciBleGFtcGxlLCB0aGUgb2JqZWN0IGFsbG9j
YXRpb24gaGFzIGJlZW4gZWxpbWluYXRlZCBhbmQgd2UgdHVybmVkIHRoZQorLy8gZmllbGRzIGlu
dG8gbG9jYWwgdmFyaWFibGVzLiBCZWNhdXNlIHRoZXNlIHR3byBjYXNlcyBoYXZlIHN1YnRseSBk
aWZmZXJlbnQgbmVlZHMsIHdlIHVzZSBzdWJ0bHkKKy8vIGRpZmZlcmVudCBzdHJ1Y3R1cmVzLiBP
bmUgb2YgdGhlIHJlYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpcyB0aGF0IHByb21vdGVk
IGxvY2F0aW9ucyBjYW4gYmUKKy8vIHNwb2tlbiBvZiB1c2luZyBlaXRoZXIgYSBkZXNjcmlwdG9y
IHdoaWNoIGRvZXMgbm90IHJlZmVyIHRvIGFueSBOb2RlKidzIG9yIHdpdGggYSBoZWFwIGxvY2F0
aW9uLAorLy8gd2hpY2ggaXMgYSBkZXNjcmlwdG9yIHdpdGggYSBOb2RlKiBiYXNlLgorCiBlbnVt
IFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBJbnZhbGlkUHJvbW90ZWRMb2NhdGlvbktpbmQs
CiAgICAgCi0gICAgU3RydWN0dXJlUExvYywKKyAgICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAg
IEFjdGl2YXRpb25TeW1ib2xUYWJsZVBMb2MsCi0gICAgTmFtZWRQcm9wZXJ0eVBMb2MsCi0gICAg
QXJndW1lbnRQTG9jLAogICAgIEFyZ3VtZW50Q291bnRQTG9jLAorICAgIEFyZ3VtZW50UExvYywK
ICAgICBBcmd1bWVudHNDYWxsZWVQTG9jLAotCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlUExvYywK
KyAgICBDbG9zdXJlVmFyUExvYywKICAgICBGdW5jdGlvbkFjdGl2YXRpb25QTG9jLAotICAgIEFj
dGl2YXRpb25TY29wZVBMb2MsCi0gICAgQ2xvc3VyZVZhclBMb2MKKyAgICBGdW5jdGlvbkV4ZWN1
dGFibGVQTG9jLAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsCisgICAgTmFtZWRQcm9wZXJ0eVBM
b2MsCisgICAgUHVibGljTGVuZ3RoUExvYywKKyAgICBTdHJ1Y3R1cmVQTG9jLAorICAgIFZlY3Rv
ckxlbmd0aFBMb2MKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAgY2Fz
ZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0
SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0Nyw2ICszMDQ3LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
ICAgICAKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogeworICAgICAgICBjb21w
aWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5h
cnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CiAgICAgICAgIApAQCAtMzQ5Miw3ICszNDk3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdl
R1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShy
ZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAg
ICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFn
ZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhl
IEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOCw3ICszNzMzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3Rv
cmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIs
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAg
IGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3Jh
Z2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChub2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAg
ICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVm
ZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTc4LDcgKzQ5ODMsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBub1Jlc3VsdChub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAKKyAgICBjYXNlIE1hdGVyaWFs
aXplTmV3T2JqZWN0OgorICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7
CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9u
IDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNzEsNiArMzE3MSwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2Fz
ZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzSlNBcnJh
eSgpKTsKQEAgLTM1NDIsNyArMzU0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAg
ICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VH
UFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1
bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBh
bm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAg
ICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAg
LTM3NzgsNyArMzc4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0
R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVu
dHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCks
IG5vZGUsIGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAgICAgICAgSlNWYWx1ZSogZGF0
YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50
KCkpOwpAQCAtNDk3MSw2ICs0OTc2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBNYXRlcmlhbGl6
ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwor
ICAgICAgICBicmVhazsKKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBD
aGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0g
bV9qaXQuYnJhbmNoQWRkMzIoCkBAIC01MDYxLDcgKzUwNzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAg
ICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAg
Y2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0YWNrOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyQnVmZmVyLmgiCkBAIC03NywyNyArNzgs
NDcgQEAgU3BlY3VsYXRpdmVKSVQ6On5TcGVjdWxhdGl2ZUpJVCgpCiB7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cykK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0
R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVj
aWRlZChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwg
aGFzQ29udGlndW91cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgSW5kZXhpbmdU
eXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBo
YXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CisK
KyAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHko
KTsKKyAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwotICAg
IAotICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwg
bnVtRWxlbWVudHMpOworCisgICAgQVNTRVJUKHZlY3Rvckxlbmd0aCA+PSBudW1FbGVtZW50cyk7
CisgICAgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCB2ZWN0b3JMZW5n
dGgpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0g
ICAgc2xvd0Nhc2VzLmFwcGVuZCgKLSAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKFRy
dXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhp
bmdIZWFkZXIpKSwgc3RvcmFnZUdQUikpOwotICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIo
dmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7Ci0gICAgZW1pdEFs
bG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwotICAg
IAotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rv
ckxlbmd0aCgpKSk7Ci0gICAgCisKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgaWYgKGhhc0lu
ZGV4aW5nSGVhZGVyKQorICAgICAgICBzaXplICs9IHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1Zh
bHVlKSArIHNpemVvZihJbmRleGluZ0hlYWRlcik7CisgICAgc2l6ZSArPSBvdXRPZkxpbmVDYXBh
Y2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKKworICAgIGlmIChzaXplKSB7CisgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoCisgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3Rl
ZEltbTMyKHNpemUpLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRl
cikKKyAgICAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICog
c2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3Jh
Z2VHUFIpOworICAgIH0gZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoMCks
IHN0b3JhZ2VHUFIpOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVj
dDo6YWxsb2NhdGlvblNpemUoaW5saW5lQ2FwYWNpdHkpOworICAgIE1hcmtlZEFsbG9jYXRvciog
YWxsb2NhdG9yUHRyID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91
dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihhbGxvY2F0b3JQdHIpLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChy
ZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQ
Uiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIp
CisgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JM
ZW5ndGgoKSkpOworCiAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
KSAmJiBudW1FbGVtZW50cyA8IHZlY3Rvckxlbmd0aCkgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFO
KSksIHNjcmF0Y2hHUFIpOwpAQCAtMTE3LDggKzEzOCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0QWxsb2NhdGVKU0FycmF5CiAgICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAogICAgIC8vIG9m
IHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8KICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yPigKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdB
cnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCi0gICAgICAgIHN0cnVjdHVyZSwg
bnVtRWxlbWVudHMpKTsKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdSYXdP
YmplY3QsIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwKKyAgICAgICAgc3RydWN0dXJlLCB2ZWN0b3JM
ZW5ndGgpKTsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgbV9qaXQuc3Rv
cmUzMihUcnVzdGVkSW1tMzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZSwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcykKQEAgLTc2NTUsNiAr
NzY3OSwxMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YQogICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKiBub2RlKQoreworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gbm9kZS0+c3RydWN0dXJlU2V0KClbMF07CisgICAgQVNTRVJUKG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3Ry
dWN0dXJlKj4oKSA9PSBzdHJ1Y3R1cmUpOworCisgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0
YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgCisg
ICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7
CisgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4
aW5nVHlwZSk7CisgICAgaW50MzJfdCBwdWJsaWNMZW5ndGggPSAwOworICAgIGludDMyX3QgdmVj
dG9yTGVuZ3RoID0gMDsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAg
ICAgICAgIEVkZ2UgZWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkp
OworICAgICAgICAgICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICBwdWJsaWNM
ZW5ndGggPSBlZGdlLT5hc0ludDMyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3Ro
ID0gZWRnZS0+YXNJbnQzMigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IHN0b3JhZ2UodGhpcyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KyAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgCisgICAgZW1pdEFs
bG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCAwLCB2ZWN0
b3JMZW5ndGgpOworICAgIAorICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgIEpJVENvbXBpbGVy
OjpUcnVzdGVkSW1tMzIocHVibGljTGVuZ3RoKSwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAg
ICAgICAgRWRnZSBlZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7
CisgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1f
cHJvcGVydGllc1tpXTsKKyAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAg
ICAgICBjYXNlIEluZGV4ZWRQcm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIGVkZ2UpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAg
ICAgICAgICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLAorICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBkZXNj
cmlwdG9yLmluZm8oKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOiB7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiB1aWQg
PSBtX2ppdC5ncmFwaCgpLmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCldOworICAgICAg
ICAgICAgZm9yIChQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0
aWVzQ29uY3VycmVudGx5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodWlkICE9IGVudHJ5Lmtl
eSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGlzSW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNldCkgPyByZXN1bHRHUFIgOiBzdG9yYWdl
R1BSOworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGVudHJ5Lm9mZnNldCkpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqIG5vZGUpCit7Cisg
ICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUs
IDApOworICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMSk7CisgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChu
b2RlLCAyKTsKKyAgICBFZGdlIHN0YXJ0RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMyk7CisgICAgRWRnZSBlbmRFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChu
b2RlLCA0KTsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIGNv
bnN0cnVjdG9yRWRnZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmVnRXhwKHRoaXMsIHJl
Z0V4cEVkZ2UpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0aGlzLCBzdHJpbmdF
ZGdlKTsKKyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc3RhcnQodGhpcywgc3RhcnRFZGdlKTsK
KyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgZW5kKHRoaXMsIGVuZEVkZ2UpOworCisgICAgR1BS
UmVnIGNvbnN0cnVjdG9yR1BSID0gY29uc3RydWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIHJlZ0V4
cEdQUiA9IHJlZ0V4cC5ncHIoKTsKKyAgICBHUFJSZWcgc3RyaW5nR1BSID0gc3RyaW5nLmdwcigp
OworICAgIEdQUlJlZyBzdGFydEdQUiA9IHN0YXJ0LmdwcigpOworICAgIEdQUlJlZyBlbmRHUFIg
PSBlbmQuZ3ByKCk7CisKKyAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gUmVnRXhwQ29uc3RydWN0b3I6
Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCk7CisKKyAgICBtX2ppdC5zdG9yZVB0cigKKyAgICAgICAg
cmVnRXhwR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwg
b2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkpOworICAg
IG1faml0LnN0b3JlUHRyKAorICAgICAgICBzdHJpbmdHUFIsCisgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9m
ZnNldE9mTGFzdElucHV0KCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBzdGFydEdQ
UiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICBjb25zdHJ1Y3Rv
ckdQUiwKKyAgICAgICAgICAgIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZS
ZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSk7CisgICAgbV9q
aXQuc3RvcmUzMigKKyAgICAgICAgZW5kR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cygKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVn
RXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNo
UmVzdWx0LCBlbmQpKSk7CisgICAgbV9qaXQuc3RvcmU4KAorICAgICAgICBUcnVzdGVkSW1tMzIo
MCksCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQg
KyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSk7CisKKyAgICBub1Jlc3Vs
dChub2RlKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQwMSw2ICsyNDAxLDggQEAgcHVibGljOgogICAgIHZv
aWQgY29tcGlsZUdldFJlZ0V4cE9iamVjdExhc3RJbmRleChOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMYXp5
SlNDb25zdGFudChOb2RlKik7CisgICAgdm9pZCBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qo
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChOb2RlKik7
CiAgICAgCiAgICAgdm9pZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VU
byhHUFJSZWcpOwpAQCAtMjUxNiw3ICsyNTE4LDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5z
dG9yZVB0cihUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9P
ZmZzZXQoKSkpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcg
cmVzdWx0R1BSLCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxl
bWVudHMpOworICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIs
IFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgdmVjdG9yTGVuZ3RoKTsKICAgICAKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoSW5saW5l
Q2FsbEZyYW1lKiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsK
ICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoQ29kZU9yaWdpbiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9v
bCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmll
ckluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDExICsyNTMsMTkgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAgICAgICAgIGNhc2UgUHV0
QnlJZEZsdXNoOgorICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAgICAg
Y2FzZSBQdXRTdHJ1Y3R1cmU6IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9u
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVz
dWx0OiB7CisgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAwKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKQEAg
LTI2NiwxMyArMjc0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAg
ICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OiB7Ci0gICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBj
YXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9k
ZS0+Y2hpbGQyKCksIG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzYsMTEgKzM2LDE0IEBACiAjaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSA8
Y3N0ZGxpYj4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBTdHJl
bmd0aFJlZHVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKKyAgICBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CisgICAgCiBwdWJsaWM6CiAgICAgU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2UoZ3JhcGgsICJzdHJlbmd0aCByZWR1
Y3Rpb24iKQpAQCAtMzMxLDggKzMzNCwyNjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBp
ZiAoISFzdHJpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudChtX25vZGUsIGpzTnVtYmVyKHN0cmluZy5sZW5ndGgoKSkpOwogICAgICAgICAgICAgICAg
ICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OiB7CisgICAgICAgICAgICBpZiAoSlNP
YmplY3QqIG9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNP
YmplY3QqPigpKSB7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudCht
X25vZGUsIG9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUmVnRXhwRXhlYzoKKyAgICAg
ICAgY2FzZSBSZWdFeHBUZXN0OiB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ub2RlLT5jaGlsZDEoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0dsb2JhbE9i
amVjdCo+KCk7CisgICAgICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAg
YmVjYXVzZSBubyBnbG9iYWwgb2JqZWN0LlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJh
ZFRpbWUoKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSBiYWQgdGltZS5cbiIpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBOb2RlKiByZWdFeHBP
YmplY3ROb2RlID0gbV9ub2RlLT5jaGlsZDIoKS5ub2RlKCk7CisgICAgICAgICAgICBSZWdFeHAq
IHJlZ0V4cDsKKyAgICAgICAgICAgIGlmIChSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCA9IHJl
Z0V4cE9iamVjdE5vZGUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8UmVnRXhwT2JqZWN0Kj4oKSkKKyAg
ICAgICAgICAgICAgICByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgpOworICAgICAgICAg
ICAgZWxzZSBpZiAocmVnRXhwT2JqZWN0Tm9kZS0+b3AoKSA9PSBOZXdSZWdleHApCisgICAgICAg
ICAgICAgICAgcmVnRXhwID0gY29kZUJsb2NrKCktPnJlZ2V4cChyZWdFeHBPYmplY3ROb2RlLT5y
ZWdleHBJbmRleCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSB0
aGUgcmVnZXhwIGlzIHVua25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgTm9kZSogc3RyaW5nTm9kZSA9IG1fbm9kZS0+Y2hpbGQz
KCkubm9kZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOT1RFOiBUaGlzIG1vc3Rs
eSBhbHJlYWR5IHByb3RlY3RzIHVzIGZyb20gaGF2aW5nIHRoZSBjb21waWxlciBleGVjdXRlIGEg
cmVnZXhwCisgICAgICAgICAgICAvLyBvcGVyYXRpb24gb24gYSBnaW5vcm1vdXMgc3RyaW5nIGJ5
IHByZXZlbnRpbmcgdXMgZnJvbSBnZXR0aW5nIG91ciBoYW5kcyBvbiBnaW5vcm1vdXMKKyAgICAg
ICAgICAgIC8vIHN0cmluZ3MgaW4gdGhlIGZpcnN0IHBsYWNlLgorICAgICAgICAgICAgU3RyaW5n
IHN0cmluZyA9IG1fbm9kZS0+Y2hpbGQzKCktPnRyeUdldFN0cmluZyhtX2dyYXBoKTsKKyAgICAg
ICAgICAgIGlmICghc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSBzdHJpbmcgaXMg
dW5rbm93bi5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBGcm96ZW5WYWx1ZSogcmVnRXhwRnJvemVuVmFsdWUgPSBtX2dyYXBoLmZyZWV6
ZShyZWdFeHApOworCisgICAgICAgICAgICAvLyBSZWZ1c2UgdG8gZG8gdGhpbmdzIHdpdGggcmVn
dWxhciBleHByZXNzaW9ucyB0aGF0IGhhdmUgYSBnaW5vcm1vdXMgbnVtYmVyIG9mCisgICAgICAg
ICAgICAvLyBzdWJwYXR0ZXJucy4KKyAgICAgICAgICAgIHVuc2lnbmVkIGdpbm9ybW91c051bWJl
ck9mU3ViUGF0dGVybnMgPSAxMDAwOworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+bnVtU3VicGF0
dGVybnMoKSA+IGdpbm9ybW91c051bWJlck9mU3ViUGF0dGVybnMpIHsKKyAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJl
Y2F1c2Ugb2YgcGF0dGVybiBsaW1pdC5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CisgICAgICAgICAg
ICBpZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhp
cyB3aWxsIG9ubHkgd29yayBpZiB3ZSBjYW4gcHJvdmUgd2hhdCB0aGUgdmFsdWUgb2YgbGFzdElu
ZGV4IGlzLiBUbyBkbyB0aGlzCisgICAgICAgICAgICAgICAgLy8gc2FmZWx5LCB3ZSBuZWVkIHRv
IGV4ZWN1dGUgdGhlIGluc2VydGlvbiBzZXQgc28gdGhhdCB3ZSBzZWUgYW55IHByZXZpb3VzIHN0
cmVuZ3RoCisgICAgICAgICAgICAgICAgLy8gcmVkdWN0aW9ucy4gVGhpcyBpcyBuZWVkZWQgZm9y
IHNvdW5kbmVzcyBzaW5jZSBvdGhlcndpc2UgdGhlIGVmZmVjdGZ1bG5lc3Mgb2YgYW55CisgICAg
ICAgICAgICAgICAgLy8gcHJldmlvdXMgc3RyZW5ndGggcmVkdWN0aW9ucyB3b3VsZCBiZSBpbnZp
c2libGUgdG8gdXMuCisgICAgICAgICAgICAgICAgZXhlY3V0ZUluc2VydGlvblNldCgpOworICAg
ICAgICAgICAgICAgIGxhc3RJbmRleCA9IFVJTlRfTUFYOworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgb3RoZXJOb2RlSW5kZXggPSBtX25vZGVJbmRleDsgb3RoZXJOb2RlSW5kZXgtLTsp
IHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9ibG9jay0+YXQob3Ro
ZXJOb2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlID09IHJlZ0V4
cE9iamVjdE5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpID09IFNldFJlZ0V4cE9iamVjdExh
c3RJbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGlsZDEoKSA9
PSByZWdFeHBPYmplY3ROb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlck5vZGUt
PmNoaWxkMigpLT5pc0ludDMyQ29uc3RhbnQoKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYg
b3RoZXJOb2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpID49IDApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxhc3RJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvdGhlck5vZGUtPmNoaWxk
MigpLT5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlc092ZXJsYXAobV9n
cmFwaCwgb3RoZXJOb2RlLCBSZWdFeHBPYmplY3RfbGFzdEluZGV4KSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
bGFzdEluZGV4ID09IFVJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhl
IGxhc3QgaW5kZXggaXMgbm90IGtub3duLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IGxhc3RJbmRleCA9IDA7CisKKyAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRM
YXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpICE9IEFycmF5V2l0aENvbnRpZ3VvdXMpIHsKKyAgICAgICAgICAgICAg
ICAvLyBUaGlzIGlzIGZ1cnRoZXIgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgcmFjZSB3aXRoIGhhdmVB
QmFkVGltZS4KKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhlIHN0cnVjdHVyZSBoYXMgdGhlIHdyb25n
IGluZGV4aW5nIHR5cGUuXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKwor
ICAgICAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0
LT5yZWdFeHBDb25zdHJ1Y3RvcigpOworICAgICAgICAgICAgRnJvemVuVmFsdWUqIGNvbnN0cnVj
dG9yRnJvemVuVmFsdWUgPSBtX2dyYXBoLmZyZWV6ZShjb25zdHJ1Y3Rvcik7CisKKyAgICAgICAg
ICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVj
dG9yOworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBjYWxsIHRoZSBraW5kIG9mIG1hdGNoIGZ1
bmN0aW9uIHRoYXQgdGhlIG1haW4gdGhyZWFkIHdvdWxkIGhhdmUgY2FsbGVkLgorICAgICAgICAg
ICAgLy8gT3RoZXJ3aXNlLCB3ZSBtaWdodCBub3QgaGF2ZSB0aGUgZGVzaXJlZCBZYXJyIGNvZGUg
Y29tcGlsZWQsIGFuZCB0aGUgbWF0Y2ggd2lsbCBmYWlsLgorICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7CisgICAgICAgICAgICAgICAgaW50IHBvc2l0aW9uOwor
ICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJp
bmcsIGxhc3RJbmRleCwgcG9zaXRpb24sIG92ZWN0b3IpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVw
IGJlY2F1c2UgbWF0Y2ggZmFpbGVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBwb3NpdGlv
bjsKKyAgICAgICAgICAgICAgICByZXN1bHQuZW5kID0gb3ZlY3RvclsxXTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3VycmVudGx5
KHZtKCksIHN0cmluZywgbGFzdEluZGV4LCByZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVw
IGJlY2F1c2UgbWF0Y2ggZmFpbGVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UndmUg
Y29uc3RhbnQtZm9sZGVkIHRoZSByZWdleHAuIE5vdyB3ZSdyZSBjb21taXR0ZWQgdG8gcmVwbGFj
aW5nIFJlZ0V4cEV4ZWMvVGVzdC4KKworICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKwor
ICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBtX25vZGUtPm9yaWdpbjsKKworICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJ
bmRleCwgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4uanVzdENoZWNr
cygpKTsKKworICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmVTZXQqIHN0cnVjdHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IG1vZGVsaW5nIHRoZSBK
UyBhcnJheSB0aGF0IHdlIHdpbGwgdHJ5IHRvIGFsbG9jYXRlLiBUaGlzIGlzCisgICAgICAgICAg
ICAgICAgICAgIC8vIGJhc2ljYWxseSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0IG92ZXIg
QysrIHN0cmluZ3MgaW5zdGVhZCBvZiBKU1N0cmluZ3MuCisgICAgICAgICAgICAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IHJlc3VsdEFycmF5OworICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eS5hcHBlbmQoc3RyaW5nLnN1YnN0cmluZyhyZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1
bHQuc3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
PSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHN0YXJ0ID0gb3ZlY3RvclsyICogaV07CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoc3RhcnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheS5h
cHBlbmQoc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgb3ZlY3RvclsyICogaSArIDFdIC0gc3RhcnQp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRBcnJheS5hcHBlbmQoU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHVibGljTGVuZ3RoID0gcmVzdWx0QXJy
YXkuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBz
dGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIHB1YmxpY0xlbmd0aCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGluZGV4VUlEID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5p
bmRleC5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbnB1
dFVJRCA9IHZtKCkucHJvcGVydHlOYW1lcy0+aW5wdXQuaW1wbCgpOworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbmRleEluZGV4ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShp
bmRleFVJRCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0SW5kZXggPSBtX2dy
YXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlucHV0VUlEKTsKKworICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBmaXJzdENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHN0cnVj
dHVyZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEqIGRhdGEgPSBtX2dyYXBoLm1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5h
ZGQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2Rl
SW5kZXgsIG9yaWdpbiwganNOdW1iZXIocHVibGljTGVuZ3RoKSwgS25vd25JbnQzMlVzZSkpOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKFB1YmxpY0xlbmd0
aFBMb2MpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJB
cmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25v
ZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcih2ZWN0b3JMZW5ndGgpLCBLbm93bkludDMyVXNlKSk7
CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoVmVjdG9yTGVu
Z3RoUExvYyk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENv
bnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBv
cmlnaW4sIGpzTnVtYmVyKHJlc3VsdC5zdGFydCksIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBpbmRleElu
ZGV4KSk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFw
cGVuZChFZGdlKHN0cmluZ05vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21v
dGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBpbnB1dEluZGV4KSk7CisK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRlcmlhbGl6ZVN0cmluZyA9IFsmXSAoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIC0+IE5vZGUqIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dHJpbmcuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnRDb25z
dGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdp
biwgdm0oKS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSB2YWx1ZSA9IExhenlK
U1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgc3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgTGF6eUpTQ29uc3RhbnQsIG9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX2xhenlKU1ZhbHVl
cy5hZGQodmFsdWUpKSk7CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdEFycmF5LnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9IG1hdGVyaWFsaXplU3Ry
aW5nKHJlc3VsdEFycmF5W2ldKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShub2RlLCBVbnR5cGVkVXNlKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoSW5k
ZXhlZFByb3BlcnR5UExvYywgaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
cmVzdWx0Tm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX25vZGVJbmRleCwgU3BlY0FycmF5LCBOb2RlOjpWYXJBcmcsIE1hdGVyaWFsaXpl
TmV3T2JqZWN0LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oc3RydWN0
dXJlU2V0KSwgT3BJbmZvKGRhdGEpLCBmaXJzdENoaWxkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lkZW50aXR5
T24ocmVzdWx0Tm9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc051bGwoKSk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1f
bm9kZSwganNCb29sZWFuKCEhcmVzdWx0KSk7CisKKyAgICAgICAgICAgIC8vIFdoZXRoZXIgaXQn
cyBFeGVjIG9yIFRlc3QsIHdlIG5lZWQgdG8gdGVsbCB0aGUgY29uc3RydWN0b3IgYW5kIFJlZ0V4
cE9iamVjdCB3aGF0J3MgdXAuCisgICAgICAgICAgICAvLyBCZWNhdXNlIFNldFJlZ0V4cE9iamVj
dExhc3RJbmRleCBtYXkgZXhpdCBhbmQgaXQgY2xvYmJlcnMgZXhpdCBzdGF0ZSwgd2UgZG8gdGhh
dAorICAgICAgICAgICAgLy8gZmlyc3QuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChy
ZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCkpIHsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUs
IFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBF
ZGdlKHJlZ0V4cE9iamVjdE5vZGUsIFJlZ0V4cE9iamVjdFVzZSksCisgICAgICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0ID8gcmVzdWx0LmVu
ZCA6IDApLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
b3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGls
ZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCk7CisgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X25vZGVJbmRleCwgb3JpZ2luLCBjb25zdHJ1Y3RvckZyb3plblZhbHVlLCBLbm93bkNlbGxVc2Up
KTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHJlZ0V4cEZyb3plblZh
bHVlLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hp
bGRyZW4uYXBwZW5kKEVkZ2Uoc3RyaW5nTm9kZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQpLCBLbm93
bkludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRG
b3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051
bWJlcihyZXN1bHQuZW5kKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjTm9uZSwgTm9kZTo6VmFyQXJnLCBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIG9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKCksIE9wSW5mbygpLCBmaXJzdENoaWxkLCBtX2dy
YXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisKKyAgICAgICAgICAg
ICAgICBvcmlnaW4gPSBvcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CiAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbm9kZS0+b3JpZ2luID0gb3JpZ2luOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMzgwLDYgKzY0MSwxMSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBleGVjdXRl
SW5zZXJ0aW9uU2V0KCkKKyAgICB7CisgICAgICAgIG1fbm9kZUluZGV4ICs9IG1faW5zZXJ0aW9u
U2V0LmV4ZWN1dGUobV9ibG9jayk7CisgICAgfQogICAgIAogICAgIEluc2VydGlvblNldCBtX2lu
c2VydGlvblNldDsKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
Mjc4LDYgKzI3OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFU
RSgobm9kZSksICF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+ZGZnU2hvdWxk
V2F0Y2goKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNl
dCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9ubHkgc3VwcG9ydHMgc3Ry
dWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0IG9yIEpTQXJyYXkuCisgICAgICAgICAgICAg
ICAgICAgICAgICBWQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9kZSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBK
U0ZpbmFsT2JqZWN0OjppbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTQXJyYXk6OmluZm8oKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBjZXJ0YWluIGluZGV4aW5nIHNoYXBlcy4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0FueUFycmF5U3RvcmFn
ZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVDb25z
dGFudDoKICAgICAgICAgICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAgICAgICAgICAg
ICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+aXNOdW1iZXJDb25zdGFudCgpKTsKQEAgLTQ2
MSwxMyArNDczLDQyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3Vt
ZW50QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRIaW50OgogICAgICAgICAgICAgICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBNYXRl
cmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRl
QWN0aXZhdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNrOgogICAgICAgICAgICAg
ICAgIGNhc2UgS2lsbFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAg
ICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgISJ1bmV4cGVjdGVkIG5vZGUgdHlwZSBp
biBDUFMiKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBNYXRlcmlhbGl6ZU5ld09iamVjdDogeworICAgICAgICAgICAgICAgICAgICAvLyBDUFMgb25s
eSBhbGxvd3MgYXJyYXkgbGVuZ3RocyB0byBiZSBjb25zdGFudC4gVGhpcyBjb25zdHJhaW50IG9u
bHkgZXhpc3RzCisgICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBE
Rkcgc3VwcG9ydCBmb3IgYW55dGhpbmcgbW9yZSBhbmQgd2UgZG9uJ3QgbmVlZCBhbnkKKyAgICAg
ICAgICAgICAgICAgICAgLy8gb3RoZXIga2luZCBvZiBzdXBwb3J0IGZvciBub3cuCisgICAgICAg
ICAgICAgICAgICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBub2RlLT5vYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9w
cm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFB1
YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0
aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2Up
LCBlZGdlLT5pc0ludDMyQ29uc3RhbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIG9ubHkgYWxsb3dzIG9u
ZSBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+
c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpOworCisgICAgICAgICAgICAgICAgICAgIC8vIENQ
UyBkaXNhbGxvd3MgaW50MzIgYW5kIGRvdWJsZSBhcnJheXMuIFRob3NlIHJlcXVpcmUgd2VpcmQg
dHlwZSBjaGVja3MgYW5kCisgICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLiBUaGV5
IGFyZSBub3QgbmVlZGVkIGluIHRoZSBERkcgcmlnaHQgbm93LiBXZSBzaG91bGQgYWRkIHN1cHBv
cnQKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoZXNlIGlmIHRoZSBERkcgZXZlciBuZWVk
cyBpdC4KKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5v
ZGUtPnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgo
bm9kZSksICFoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b206
CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbV9ncmFwaC5tX2ZpeHBvaW50
U3RhdGUgIT0gRml4cG9pbnROb3RDb252ZXJnZWQpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5o
IgogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNs
dWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5o
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Nyw2ICs3NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8o
SlNTeW1ib2xUYWJsZU9iamVjdF9zeW1ib2xUYWJsZSwgSlNTeW1ib2xUYWJsZU9iamVjdDo6b2Zm
c2V0T2ZTeW1ib2xUYWJsZSgpKSBcCiAgICAgbWFjcm8oSlNXcmFwcGVyT2JqZWN0X2ludGVybmFs
VmFsdWUsIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZU9mZnNldCgpKSBcCiAgICAgbWFj
cm8oTWFya2VkQWxsb2NhdG9yX2ZyZWVMaXN0SGVhZCwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRP
ZkZyZWVMaXN0SGVhZCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVz
dWx0X2xhc3RSZWdFeHAsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgp
ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkgXAorICAgIG1hY3Jv
KFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0SW5wdXQsIFJlZ0V4cENvbnN0cnVj
dG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRP
Zkxhc3RJbnB1dCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0
X3Jlc3VsdF9zdGFydCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkg
KyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
TWF0Y2hSZXN1bHQsIHN0YXJ0KSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hl
ZFJlc3VsdF9yZXN1bHRfZW5kLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1
bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZT
RVRPRihNYXRjaFJlc3VsdCwgZW5kKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2Nh
Y2hlZFJlc3VsdF9yZWlmaWVkLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1
bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZWlmaWVkKCkpIFwKICAgICBtYWNy
byhSZWdFeHBPYmplY3RfbGFzdEluZGV4LCBSZWdFeHBPYmplY3Q6Om9mZnNldE9mTGFzdEluZGV4
KCkpIFwKICAgICBtYWNybyhSZWdFeHBPYmplY3RfbGFzdEluZGV4SXNXcml0YWJsZSwgUmVnRXhw
T2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleElzV3JpdGFibGUoKSkgXAogICAgIG1hY3JvKFNjb3Bl
ZEFyZ3VtZW50c19vdmVycm9kZVRoaW5ncywgU2NvcGVkQXJndW1lbnRzOjpvZmZzZXRPZk92ZXJy
b2RlVGhpbmdzKCkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDYgKzIyOCw3
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIFN0
cmluZ1JlcGxhY2U6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2Fz
ZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRS
ZXN1bHQ6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTM4LDYgKzkzOCw5IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICAgICAgY29tcGlsZVNldFJl
Z0V4cE9iamVjdExhc3RJbmRleCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
UmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgorICAgICAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4
cENhY2hlZFJlc3VsdCgpOworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBQaGFu
dG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CkBAIC0zNzE2LDMyICszNzE5LDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihwdWJsaWNM
ZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAg
ICAgICAgIG1fb3V0LnN0b3JlMzIodmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0
dGVyZmx5X3ZlY3Rvckxlbmd0aCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChoYXNE
b3VibGUobV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpIHsKLSAgICAgICAgICAgICAgICBMQmFzaWNC
bG9jayBpbml0TG9vcCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgTEJhc2lj
QmxvY2sgaW5pdERvbmUgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291dC5hbmNob3Io
dmVjdG9yTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbFBv
aW50ZXIgPSBtX291dC5hbmNob3IoYnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgp
LCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhpbml0TG9vcCwgaW5pdERvbmUpOwotICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleCA9IG1f
b3V0LnBoaShtX291dC5pbnQzMiwgb3JpZ2luYWxJbmRleCk7Ci0gICAgICAgICAgICAgICAgTFZh
bHVlIHBvaW50ZXIgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBvcmlnaW5hbFBvaW50ZXIpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCi0gICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4p
KSwKLSAgICAgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVhcHMuaW5kZXhlZERvdWJs
ZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgTFZhbHVlIG5leHRJbmRleCA9IG1fb3V0LnN1YihpbmRleCwgbV9vdXQu
aW50MzJPbmUpOwotICAgICAgICAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkoaW5kZXgs
IG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKLSAgICAgICAgICAgICAgICBtX291dC5hZGRJbmNv
bWluZ1RvUGhpKHBvaW50ZXIsIG1fb3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRlciwgbV9vdXQu
aW50UHRyRWlnaHQpKSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAg
ICAgICAgICAgICBtX291dC5ub3RaZXJvMzIobmV4dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwg
dW5zdXJlKGluaXREb25lKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oaW5pdERvbmUsIGluaXRMYXN0TmV4dCk7Ci0gICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGluaXRpYWxpemVBcnJheUVsZW1lbnRzKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCks
IHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihvYmplY3QpOwogICAgICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtNjI4NiwxMSArNjI2NSwyMSBAQCBwcml2
YXRlOgogICAgICAgICAvLyBMb3dlciB0aGUgdmFsdWVzIGZpcnN0LCB0byBhdm9pZCBjcmVhdGlu
ZyB2YWx1ZXMgaW5zaWRlIGEgY29udHJvbCBmbG93IGRpYW1vbmQuCiAgICAgICAgIAogICAgICAg
ICBWZWN0b3I8TFZhbHVlLCA4PiB2YWx1ZXM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHZhbHVlcy5h
cHBlbmQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpKSk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDEgKyBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2lu
ZCgpKSB7CisgICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICBj
YXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dJ
bnQzMihlZGdlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShlZGdlKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKTsK
LSAgICAgICAgCisKICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrLCAxPiBibG9ja3Moc2V0LnNp
emUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5zaXplKCk7IGktLTspCiAgICAg
ICAgICAgICBibG9ja3NbaV0gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNjMxNSwyMSArNjMwNCw1
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIG9iamVjdDsKICAgICAgICAgICAgIExW
YWx1ZSBidXR0ZXJmbHk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgfHwgaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGlu
Z1R5cGUoKSkpIHsKICAgICAgICAgICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0Zp
bmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwog
ICAgICAgICAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gJnZtKCkuaGVhcC5h
bGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisKKyAg
ICAgICAgICAgICAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gaGFzSW5kZXhlZFByb3BlcnRp
ZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW5kZXhpbmdIZWFkZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBMVmFsdWUgaW5kZXhpbmdQ
YXlsb2FkU2l6ZUluQnl0ZXMgPSBtX291dC5pbnRQdHJaZXJvOworICAgICAgICAgICAgICAgIExW
YWx1ZSB2ZWN0b3JMZW5ndGggPSBtX291dC5pbnQzMlplcm87CisgICAgICAgICAgICAgICAgTFZh
bHVlIHB1YmxpY0xlbmd0aCA9IG1fb3V0LmludDMyWmVybzsKKyAgICAgICAgICAgICAgICBpZiAo
aGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmdIZWFkZXJT
aXplID0gc2l6ZW9mKEluZGV4aW5nSGVhZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0
YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRlc2Ny
aXB0b3Iua2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0
aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoID0gdmFsdWVz
W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZlY3Rvckxlbmd0aCA9IHZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6ZUlu
Qnl0ZXMgPQorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQubXVsKG1fb3V0Lnplcm9FeHRQ
dHIodmVjdG9yTGVuZ3RoKSwgbV9vdXQuaW50UHRyRWlnaHQpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQuYWRkKAorICAg
ICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cigKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSArIGlu
ZGV4aW5nSGVhZGVyU2l6ZSksCisgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nUGF5bG9hZFNp
emVJbkJ5dGVzKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nr
c0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTFZh
bHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5kKAotICAgICAg
ICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpLAotICAgICAgICAgICAgICAgICAgICBzbG93UGF0aCk7
Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9
IGFsbG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5kKGJ1dHRlcmZseVNpemUsIHNsb3dQYXRoKTsK
KwogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQo
Ci0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hl
YWRlcikpLCBlbmRPZlN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX291dC5zdWIoZW5k
T2ZTdG9yYWdlLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyksCisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikgLSBpbmRleGluZ0hl
YWRlclNpemUpKTsKKworICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIodmVjdG9yTGVuZ3Ro
LCBmYXN0QnV0dGVyZmx5VmFsdWUsIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RPYmplY3RWYWx1ZSA9
IGFsbG9jYXRlT2JqZWN0KAogICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihh
bGxvY2F0b3IpLCBzdHJ1Y3R1cmUsIGZhc3RCdXR0ZXJmbHlWYWx1ZSwgc2xvd1BhdGgpOwpAQCAt
NjM0MCwxMiArNjM1OSwyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwogCi0gICAgICAg
ICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAg
ICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJl
ZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIExWYWx1ZSBzbG93T2JqZWN0VmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKGhhc0luZGV4
aW5nSGVhZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlT
bG93UGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0
aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Io
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhC
dXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbG93T2JqZWN0VmFsdWUgPSBsYXp5U2xv
d1BhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlv
bj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0
dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBzbG93T2JqZWN0ID0gbV9vdXQuYW5jaG9yKHNsb3dPYmplY3RWYWx1
ZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0J1dHRlcmZseSA9IG1fb3V0
LmFuY2hvcigKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihzbG93T2JqZWN0VmFs
dWUsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5KSk7CkBAIC02MzU2LDYgKzYzODcsMTEzIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgb2JqZWN0ID0gbV9v
dXQucGhpKG1fb3V0LmludFB0ciwgZmFzdE9iamVjdCwgc2xvd09iamVjdCk7CiAgICAgICAgICAg
ICAgICAgYnV0dGVyZmx5ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdEJ1dHRlcmZseSwg
c2xvd0J1dHRlcmZseSk7CisKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xl
bmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOworCisgICAg
ICAgICAgICAgICAgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMoc3RydWN0dXJlLT5pbmRleGluZ1R5
cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkpOworCisgICAgICAgICAgICAgICAgSGFzaE1h
cDwKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCwgTFZhbHVlLCBEZWZhdWx0SGFzaDxpbnQz
Ml90Pjo6SGFzaCwKKyAgICAgICAgICAgICAgICAgICAgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czxpbnQzMl90Pj4gaW5kZXhNYXA7CisgICAgICAgICAgICAgICAgVmVjdG9yPGlu
dDMyX3Q+IGluZGljZXM7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5t
X3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgIFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iua2luZCgpICE9IEluZGV4ZWRQcm9wZXJ0
eVBMb2MpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCBpbmRleCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRlc2NyaXB0b3IuaW5m
bygpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gaW5kZXhNYXAuYWRkKGluZGV4LCB2YWx1ZXNbaV0pOworICAgICAgICAgICAgICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgcmVzdWx0KTsgLy8gRHVwbGljYXRlcyBhcmUg
aWxsZWdhbC4KKworICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLmFwcGVuZChpbmRleCk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFpbmRpY2VzLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgICAgICAgICBzdGQ6OnNvcnQoaW5kaWNlcy5iZWdpbigpLCBpbmRp
Y2VzLmVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFZl
Y3RvcjxMQmFzaWNCbG9jaz4gYmxvY2tzV2l0aFN0b3JlcyhpbmRpY2VzLnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaz4gYmxvY2tzV2l0aENoZWNrcyhpbmRp
Y2VzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBpbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgYmxvY2tzV2l0aFN0b3Jlc1tpXSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBibG9ja3NXaXRoQ2hlY2tzW2ldID0gbV9vdXQubmV3QmxvY2soKTsg
Ly8gYmxvY2tzV2l0aENoZWNrc1swXSBpcyB0aGUgY29udGludWF0aW9uLgorICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5kZXhMYXN0TmV4
dCA9IG1fb3V0Lm1fbmV4dEJsb2NrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kaWNlcy5zaXplKCk7IGktLTspIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgaW5kZXggPSBpbmRpY2VzW2ldOworICAgICAgICAg
ICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gaW5kZXhNYXAuZ2V0KGluZGV4KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJlbG93KG1fb3V0LmNvbnN0SW50
MzIoaW5kZXgpLCBwdWJsaWNMZW5ndGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c3VyZShibG9ja3NXaXRoU3RvcmVzW2ldKSwgdW5zdXJlKGJsb2Nrc1dpdGhDaGVja3NbaV0pKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzV2l0aFN0b3Jl
c1tpXSwgYmxvY2tzV2l0aENoZWNrc1tpXSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgaGFzIHRvIHR5cGUtY2hlY2sgYW5kIGNvbnZlcnQgaXRzIGlucHV0cywgYnV0IGl0IGNh
bm5vdCBkbyBzbyBpbiBhCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YXkgdGhhdCB1cGRh
dGVzIEFJLiBUaGF0J3MgYSBiaXQgYW5ub3lpbmcsIGJ1dCBpZiB5b3UgdGhpbmsgYWJvdXQgaG93
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaW5raW5nIHdvcmtzLCBpdCdzIGFjdHVhbGx5
IG5vdCBhIGJhZCB0aGluZy4gV2UgYXJlIHZpcnR1YWxseSBndWFyYW50ZWVkCisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyB0aGF0IHRoZXNlIHR5cGUgY2hlY2tzIHdpbGwgbm90IGZhaWwsIHNp
bmNlIHRoZSB0eXBlIGNoZWNrcyB0aGF0IGd1YXJkZWQKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHRoZSBvcmlnaW5hbCBzdG9yZXMgdG8gdGhlIGFycmF5IGFyZSBzdGlsbCBzb21ld2hlcmUg
YWJvdmUgdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDo6U3RvcmVU
eXBlIHN0b3JlVHlwZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4ZWRBYnN0cmFjdEhl
YXAqIGhlYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lO
REVYSU5HX1RZUEVTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGNvdWxkIHVzZSB0aGUgcHJvdmVuIHR5cGUgaWYgd2UgaGFkIHRoZSBFZGdlIGZvciB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTMxMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNw
ZWN1bGF0ZShCYWRUeXBlLCBub1ZhbHVlKCksIG51bGxwdHIsIGlzTm90SW50MzIodmFsdWUpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlNjQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWRJbnQz
MlByb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzogeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgc291cmNlIGlzIFZhbHVl
UmVwLCB3ZSBzaG91bGQgYXZvaWQgZW1pdHRpbmcgYW55CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2hlY2tzLiBXZSBjb3VsZCBhbHNvIGF2b2lkIGVtaXR0aW5nIGNoZWNrcyBpZiB3
ZSBoYWQgdGhlIEVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHZh
bHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzExCisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFz
aWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzSW50MzIodmFsdWUpLCB1bnN1cmUoaW50Q2Fz
ZSksIHVuc3VyZShkb3VibGVDYXNlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENhc2UsIGRvdWJsZUNhc2Up
OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW50UmVzdWx0
ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYW5jaG9yKG1fb3V0Lmlu
dFRvRG91YmxlKHVuYm94SW50MzIodmFsdWUpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBub1ZhbHVlKCksIG51bGxwdHIs
IGlzTnVtYmVyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgZG91YmxlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHVuYm94RG91YmxlKHZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX291dC5waGko
RG91YmxlLCBpbnRSZXN1bHQsIGRvdWJsZVJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZURvdWJsZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXM7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdf
VFlQRVM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpT
dG9yZTY0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRl
eGVkQ29udGlndW91c1Byb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkludmFsaWQgaW5kZXhpbmcg
dHlwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX291dC5zdG9yZSh2YWx1ZSwgbV9vdXQuYWRkcmVzcyhidXR0ZXJmbHksIGhlYXAt
PmF0KGluZGV4KSksIHN0b3JlVHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
Lmp1bXAoYmxvY2tzV2l0aENoZWNrc1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoQ2hlY2tz
W2ldLCBpID8gYmxvY2tzV2l0aFN0b3Jlc1tpIC0gMV0gOiBpbmRleExhc3ROZXh0KTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGVhc3kgY2FzZSB3aGVyZSB3ZSBjYW4gZG8gYSBv
bmUtc2hvdCBhbGxvY2F0aW9uLCB3ZSBzaW1wbHkgYWxsb2NhdGUgdGhlCiAgICAgICAgICAgICAg
ICAgLy8gb2JqZWN0IHRvIGRpcmVjdGx5IGhhdmUgdGhlIGRlc2lyZWQgc3RydWN0dXJlLgpAQCAt
NjM2NSwxMiArNjUwMywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
b3IgKFByb3BlcnR5TWFwRW50cnkgZW50cnkgOiBzdHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25j
dXJyZW50bHkoKSkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9w
cm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgICAgICBQaGFudG9tUHJv
cGVydHlWYWx1ZSB2YWx1ZSA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOwotICAgICAgICAgICAgICAg
ICAgICBpZiAobV9ncmFwaC5pZGVudGlmaWVycygpW3ZhbHVlLm1faWRlbnRpZmllck51bWJlcl0g
IT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3Jp
cHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAg
ICAgIGlmIChkZXNjcmlwdG9yLmtpbmQoKSAhPSBOYW1lZFByb3BlcnR5UExvYykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5pZGVudGlmaWVycygpW2Rlc2NyaXB0b3IuaW5mbygpXSAhPSBlbnRyeS5rZXkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gaXNJbmxpbmVPZmZzZXQoZW50cnkub2Zmc2V0KSA/
IG9iamVjdCA6IGJ1dHRlcmZseTsKLSAgICAgICAgICAgICAgICAgICAgc3RvcmVQcm9wZXJ0eSh2
YWx1ZXNbaV0sIGJhc2UsIHZhbHVlLm1faWRlbnRpZmllck51bWJlciwgZW50cnkub2Zmc2V0KTsK
KyAgICAgICAgICAgICAgICAgICAgc3RvcmVQcm9wZXJ0eSh2YWx1ZXNbaV0sIGJhc2UsIGRlc2Ny
aXB0b3IuaW5mbygpLCBlbnRyeS5vZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC02NDM1LDkgKzY1NzUsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGFjdGl2YXRpb24gPSBtX291dC5waGkobV9vdXQuaW50
UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGF0
YS5tX3Byb3BlcnRpZXMuc2l6ZSgpID09IHRhYmxlLT5zY29wZVNpemUoKSk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZXNbaV0sCi0gICAgICAgICAgICAgICAgYWN0
aXZhdGlvbiwKLSAgICAgICAgICAgICAgICBtX2hlYXBzLkpTRW52aXJvbm1lbnRSZWNvcmRfdmFy
aWFibGVzW2RhdGEubV9wcm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcl0pOworICAgICAg
ICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9w
ZXJ0aWVzW2ldOworICAgICAgICAgICAgQVNTRVJUKGRlc2NyaXB0b3Iua2luZCgpID09IENsb3N1
cmVWYXJQTG9jKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICAgICAg
dmFsdWVzW2ldLCBhY3RpdmF0aW9uLAorICAgICAgICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9u
bWVudFJlY29yZF92YXJpYWJsZXNbZGVzY3JpcHRvci5pbmZvKCldKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CkBAIC02NDQ2LDcgKzY1ODgsOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgZm9yIChhdXRvIGl0ZXIgPSB0YWJsZS0+YmVnaW4obG9ja2Vy
KSwgZW5kID0gdGFibGUtPmVuZChsb2NrZXIpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAg
ICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSA9PSBk
YXRhLm1fcHJvcGVydGllc1tpXS5tX2lkZW50aWZpZXJOdW1iZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9w
ZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkg
PT0gQ2xvc3VyZVZhclBMb2MpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUu
c2NvcGVPZmZzZXQoKS5vZmZzZXQoKSA9PSBkZXNjcmlwdG9yLmluZm8oKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTY2MTMsNiArNjc1NywyOSBAQCBwcml2YXRl
OgogICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCByZWdFeHAsIG1faGVhcHMuUmVnRXhwT2Jq
ZWN0X2xhc3RJbmRleCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlUmVjb3JkUmVnRXhwQ2Fj
aGVkUmVzdWx0KCkKKyAgICB7CisgICAgICAgIEVkZ2UgY29uc3RydWN0b3JFZGdlID0gbV9ncmFw
aC52YXJBcmdDaGlsZChtX25vZGUsIDApOworICAgICAgICBFZGdlIHJlZ0V4cEVkZ2UgPSBtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSk7CisgICAgICAgIEVkZ2Ugc3RyaW5nRWRnZSA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKTsKKyAgICAgICAgRWRnZSBzdGFydEVkZ2UgPSBt
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMyk7CisgICAgICAgIEVkZ2UgZW5kRWRnZSA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KTsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSBj
b25zdHJ1Y3RvciA9IGxvd0NlbGwoY29uc3RydWN0b3JFZGdlKTsKKyAgICAgICAgTFZhbHVlIHJl
Z0V4cCA9IGxvd0NlbGwocmVnRXhwRWRnZSk7CisgICAgICAgIExWYWx1ZSBzdHJpbmcgPSBsb3dD
ZWxsKHN0cmluZ0VkZ2UpOworICAgICAgICBMVmFsdWUgc3RhcnQgPSBsb3dJbnQzMihzdGFydEVk
Z2UpOworICAgICAgICBMVmFsdWUgZW5kID0gbG93SW50MzIoZW5kRWRnZSk7CisKKyAgICAgICAg
bV9vdXQuc3RvcmVQdHIocmVnRXhwLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1
Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHN0
cmluZywgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0
X2xhc3RJbnB1dCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIoc3RhcnQsIGNvbnN0cnVjdG9yLCBt
X2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZXN1bHRfc3RhcnQpOworICAg
ICAgICBtX291dC5zdG9yZTMyKGVuZCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3Ry
dWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9lbmQpOworICAgICAgICBtX291dC5zdG9yZTMyQXM4
KAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMigwKSwKKyAgICAgICAgICAgIG1fb3V0LmFk
ZHJlc3MoY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0
X3JlaWZpZWQpKTsKKyAgICB9CisKICAgICBMVmFsdWUgZGlkT3ZlcmZsb3dTdGFjaygpCiAgICAg
ewogICAgICAgICAvLyBUaGlzIGRvZXMgYSB2ZXJ5IHNpbXBsZSBsZWFmIGZ1bmN0aW9uIGFuYWx5
c2lzLiBUaGUgaW52YXJpYW50IG9mIEZUTCBjYWxsCkBAIC02OTcwLDYgKzcxMzcsMzkgQEAgcHJp
dmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCisgICAgdm9p
ZCBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlLCBMVmFs
dWUgdmVjdG9yTGVuZ3RoLCBMVmFsdWUgYnV0dGVyZmx5KQorICAgIHsKKyAgICAgICAgaWYgKCFo
YXNEb3VibGUoaW5kZXhpbmdUeXBlKSkgeworICAgICAgICAgICAgLy8gVGhlIEdDIGFscmVhZHkg
aW5pdGlhbGl6ZWQgZXZlcnl0aGluZyB0byBKU1ZhbHVlKCkgZm9yIHVzLgorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRG91YmxlcyBtdXN0IGJlIGluaXRpYWxp
emVkIHRvIFBOYU4uCisgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMb29wID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaW5pdERvbmUgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxJbmRleCA9IG1fb3V0LmFu
Y2hvcih2ZWN0b3JMZW5ndGgpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50
ZXIgPSBtX291dC5hbmNob3IoYnV0dGVyZmx5KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAg
ICAgICAgICAgbV9vdXQubm90WmVybzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShpbml0TG9vcCks
IHVuc3VyZShpbml0RG9uZSkpOworICAgICAgICAKKyAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExh
c3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW5pdExvb3AsIGluaXREb25lKTsKKyAgICAgICAgTFZh
bHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0LmludDMyLCBvcmlnaW5hbEluZGV4KTsKKyAgICAg
ICAgTFZhbHVlIHBvaW50ZXIgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBvcmlnaW5hbFBvaW50
ZXIpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKKyAgICAgICAgICAgIFR5
cGVkUG9pbnRlcihtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzLmF0QW55SW5kZXgoKSwg
cG9pbnRlcikpOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIG5leHRJbmRleCA9IG1fb3V0LnN1
YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOworICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhp
KGluZGV4LCBtX291dC5hbmNob3IobmV4dEluZGV4KSk7CisgICAgICAgIG1fb3V0LmFkZEluY29t
aW5nVG9QaGkocG9pbnRlciwgbV9vdXQuYW5jaG9yKG1fb3V0LmFkZChwb2ludGVyLCBtX291dC5p
bnRQdHJFaWdodCkpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQu
bm90WmVybzMyKG5leHRJbmRleCksIHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShpbml0RG9uZSkp
OworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW5pdERvbmUsIGluaXRMYXN0TmV4
dCk7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShMVmFs
dWUgb2JqZWN0LCBTdHJ1Y3R1cmUqIHByZXZpb3VzU3RydWN0dXJlKQogICAgIHsKQEAgLTkyNTcs
NyArOTQ1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwogICAgICAg
ICByZXR1cm4gbV9vdXQudGVzdE5vblplcm82NChqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwog
ICAgIH0KLSAgICAKKwogICAgIExWYWx1ZSB1bmJveERvdWJsZShMVmFsdWUganNWYWx1ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX291dC5iaXRDYXN0KG1fb3V0LmFkZChqc1ZhbHVlLCBtX3Rh
Z1R5cGVOdW1iZXIpLCBtX291dC5kb3VibGVUeXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsMTkgKzQxLDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1c2luZyBu
YW1lc3BhY2UgSlNDOjpERkc7CiAKLWV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICAKLSAgICBCdXR0ZXJmbHkqIGJ1dHRl
cmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAotICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwgSW5kZXhpbmdIZWFkZXIoKSwgMCk7Ci0g
ICAgCi0gICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTRmluYWxPYmplY3Q6OmNyZWF0ZShleGVjLCBz
dHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Ci0gICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJl
IHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCiBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVj
dEluT1NSKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRp
b24qIG1hdGVyaWFsaXphdGlvbiwKICAgICBFbmNvZGVkSlNWYWx1ZSogZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSogdmFsdWVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw2IEBAIGNs
YXNzIExhenlTbG93UGF0aDsKIAogZXh0ZXJuICJDIiB7CiAKLUpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSop
IFdURl9JTlRFUk5BTDsKLQogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFs
aXplT2JqZWN0SW5PU1IoCiAgICAgRXhlY1N0YXRlKiwgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6
YXRpb24qLCBFbmNvZGVkSlNWYWx1ZSopIFdURl9JTlRFUk5BTDsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
Niw2ICs5NiwxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAgICAvLyBUaGlzIGlzIGEgc3VwZXIgZGFuZ2Vy
b3VzIG1ldGhvZCBmb3IgSklUcy4gU29tZXRpbWVzIHRoZSBKSVRzIHdpbGwgd2FudCB0byBjcmVh
dGUgZWl0aGVyIGEKKyAgICAvLyBKU0ZpbmFsT2JqZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBpcyB0
aGUgbWV0aG9kIHRoYXQgd2lsbCBkbyB0aGF0LgorICAgIHN0YXRpYyBKU09iamVjdCogY3JlYXRl
UmF3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZs
eSogPSBudWxscHRyKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0
aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENv
cHlUb2tlbik7CkBAIC0xMDM0LDYgKzEwMzgsMjAgQEAgcHJpdmF0ZToKIAogSlNfRVhQT1JUX1BS
SVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3Rh
bmNlT2YoRXhlY1N0YXRlKik7CiAKK2lubGluZSBKU09iamVjdCogSlNPYmplY3Q6OmNyZWF0ZVJh
d09iamVjdCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSkKK3sKKyAgICBKU09iamVjdCogZmluYWxPYmplY3QgPSBuZXcgKAor
ICAgICAgICBOb3ROdWxsLCAKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KAor
ICAgICAgICAgICAgKmV4ZWMtPmhlYXAoKSwKKyAgICAgICAgICAgIEpTRmluYWxPYmplY3Q6OmFs
bG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgKQorICAg
ICkgSlNPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIGZpbmFs
T2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAgICByZXR1cm4gZmluYWxPYmpl
Y3Q7Cit9CisKIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoCiAg
ICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0
ZXJmbHkpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJ
KHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsOCBAQCBSZWdFeHAqIFJlZ0V4cDo6
Y3JlYXRlKFZNJiB2bSwgY29uc3QgU3RyCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwg
WWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3Bh
dHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9j
b25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjk5LDggKzMwMSwyMiBAQCBpbnQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0
cmluZyYgCiAgICAgcmV0dXJuIG1hdGNoSW5saW5lKHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rv
cik7CiB9CiAKK2Jvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSgKKyAgICBWTSYgdm0sIGNv
bnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3Rv
cjxpbnQsIDMyPiYgb3ZlY3RvcikKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlciht
X2xvY2spOworCisgICAgaWYgKCFoYXNDb2RlRm9yKHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6
IFlhcnI6OkNoYXIxNikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHBvc2l0aW9uID0g
bWF0Y2godm0sIHMsIHN0YXJ0T2Zmc2V0LCBvdmVjdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwogdm9pZCBSZWdFeHA6OmNvbXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNp
emUgY2hhclNpemUpCiB7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KyAgICAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9m
bGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IpOwogICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9y
KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zMzgsOCArMzU0
LDIxIEBAIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCAKICAgICByZXR1
cm4gbWF0Y2hJbmxpbmUodm0sIHMsIHN0YXJ0T2Zmc2V0KTsKIH0KIAorYm9vbCBSZWdFeHA6Om1h
dGNoQ29uY3VycmVudGx5KFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgTWF0Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihtX2xvY2spOworCisgICAgaWYgKCFoYXNNYXRjaE9ubHlDb2RlRm9yKHMuaXM4Qml0KCkg
PyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJlc3VsdCA9IG1hdGNoKHZtLCBzLCBzdGFydE9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgUmVnRXhwOjpkZWxldGVDb2RlKCkKIHsKKyAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAgIGlmICghaGFzQ29kZSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9zdGF0ZSA9IE5vdENvbXBpbGVkOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBA
CiAjaWZuZGVmIFJlZ0V4cF9oCiAjZGVmaW5lIFJlZ0V4cF9oCiAKKyNpbmNsdWRlICJDb25jdXJy
ZW50SklUTG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJNYXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlJlZ0V4cEtleS5oIgpAQCAtNTYsNiArNTcsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAm
IEZsYWdJZ25vcmVDYXNlOyB9CiAgICAgYm9vbCBtdWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBt
X2ZsYWdzICYgRmxhZ011bHRpbGluZTsgfQogICAgIGJvb2wgc3RpY2t5KCkgY29uc3QgeyByZXR1
cm4gbV9mbGFncyAmIEZsYWdTdGlja3k7IH0KKyAgICBib29sIGdsb2JhbE9yU3RpY2t5KCkgY29u
c3QgeyByZXR1cm4gZ2xvYmFsKCkgfHwgc3RpY2t5KCk7IH0KICAgICBib29sIHVuaWNvZGUoKSBj
b25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ1VuaWNvZGU7IH0KIAogICAgIGNvbnN0IFN0cmlu
ZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpAQCAtNjQsOCAr
NjYsMTQgQEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29uc3RydWN0aW9uRXJyb3I7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGlu
dCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8
aW50LCAzMj4mIG92ZWN0b3IpOworCisgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB3ZSBjb3VsZG4n
dCBydW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgYW55IHJlYXNvbi4KKyAgICBib29sIG1h
dGNoQ29uY3VycmVudGx5KFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IGludCYgcG9zaXRpb24sIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7CisgICAgCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgTWF0Y2hSZXN1bHQgbWF0Y2goVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCBzdGFydE9mZnNldCk7CiAKKyAgICBib29sIG1hdGNoQ29uY3VycmVudGx5KFZNJiwgY29u
c3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0Jik7CisKICAgICAv
LyBDYWxsIHRoZXNlIHZlcnNpb25zIG9mIHRoZSBtYXRjaCBmdW5jdGlvbnMgaWYgeW91J3JlIGRl
c3BlcmF0ZSBmb3IgcGVyZm9ybWFuY2UuCiAgICAgaW50IG1hdGNoSW5saW5lKFZNJiwgY29uc3Qg
U3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7
CiAgICAgTWF0Y2hSZXN1bHQgbWF0Y2hJbmxpbmUoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCk7CkBAIC03Nyw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fc3RhdGUgIT0gTm90Q29tcGlsZWQ7CiAgICAgfQogCisgICAgYm9vbCBoYXNDb2RlRm9yKFlh
cnI6OllhcnJDaGFyU2l6ZSk7CisgICAgYm9vbCBoYXNNYXRjaE9ubHlDb2RlRm9yKFlhcnI6Ollh
cnJDaGFyU2l6ZSk7CisKICAgICB2b2lkIGRlbGV0ZUNvZGUoKTsKIAogI2lmIEVOQUJMRShSRUdF
WFBfVFJBQ0lORykKQEAgLTEzMiw2ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
cnRNYXRjaENhbGxDb3VudDsKICAgICB1bnNpZ25lZCBtX3J0TWF0Y2hGb3VuZENvdW50OwogI2Vu
ZGlmCisgICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwogCiAjaWYgRU5BQkxFKFlBUlJfSklU
KQogICAgIFlhcnI6OllhcnJDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgJKHJl
dmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENh
Y2hlZFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKIAorICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZMYXN0UmVnRXhwKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4
cENhY2hlZFJlc3VsdCwgbV9sYXN0UmVnRXhwKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZMYXN0SW5wdXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVz
dWx0LCBtX2xhc3RJbnB1dCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVzdWx0
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENhY2hlZFJlc3VsdCwgbV9yZXN1bHQp
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlaWZpZWQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX3JlaWZpZWQpOyB9CisKIHByaXZhdGU6
CiAgICAgTWF0Y2hSZXN1bHQgbV9yZXN1bHQ7CiAgICAgYm9vbCBtX3JlaWZpZWQ7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZFJlc3VsdCgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihSZWdFeHBDb25zdHJ1Y3RvciwgbV9jYWNoZWRSZXN1bHQpOyB9CisKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgUmVnRXhwUHJvdG90eXBlKiwg
R2V0dGVyU2V0dGVyKiBzcGVjaWVzKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NywyMCArNjcsMjcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYgLy8gUkVHRVhQX0ZVTkNfVEVTVF9E
QVRBX0dFTgogCi1BTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3Nhcnko
Vk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCitBTFdBWVNfSU5MSU5FIGJvb2wg
UmVnRXhwOjpoYXNDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKICAgICBp
ZiAoaGFzQ29kZSgpKSB7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgICAgICBpZiAobV9zdGF0
ZSAhPSBKSVRDb2RlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJ
VENvZGUuaGFzOEJpdENvZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyMTYpICYmICht
X3JlZ0V4cEpJVENvZGUuaGFzMTZCaXRDb2RlKCkpKQotICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCiAgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlT
X0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZNJiB2bSwgWWFycjo6WWFy
ckNoYXJTaXplIGNoYXJTaXplKQoreworICAgIGlmIChoYXNDb2RlRm9yKGNoYXJTaXplKSkKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgY29tcGlsZSgmdm0sIGNoYXJTaXplKTsKIH0KQEAgLTE1Miwy
MSArMTU5LDI5IEBAIEFMV0FZU19JTkxJTkUgaW50IFJlZ0V4cDo6bWF0Y2hJbmxpbmUoVk0KICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxl
SWZOZWNlc3NhcnlNYXRjaE9ubHkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUp
CitBTFdBWVNfSU5MSU5FIGJvb2wgUmVnRXhwOjpoYXNNYXRjaE9ubHlDb2RlRm9yKFlhcnI6Ollh
cnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKICAgICBpZiAoaGFzQ29kZSgpKSB7CiAjaWYgRU5BQkxF
KFlBUlJfSklUKQogICAgICAgICBpZiAobV9zdGF0ZSAhPSBKSVRDb2RlKQotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICgoY2hhclNpemUg
PT0gWWFycjo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzOEJpdENvZGVNYXRjaE9ubHko
KSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyMTYpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFz
MTZCaXRDb2RlTWF0Y2hPbmx5KCkpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVl
OwogI2VuZGlmCiAgICAgfQogCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5F
IHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHkoVk0mIHZtLCBZYXJyOjpZ
YXJyQ2hhclNpemUgY2hhclNpemUpCit7CisgICAgaWYgKGhhc01hdGNoT25seUNvZGVGb3IoY2hh
clNpemUpKQorICAgICAgICByZXR1cm47CisKICAgICBjb21waWxlTWF0Y2hPbmx5KCZ2bSwgY2hh
clNpemUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDYgKzU2LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaAog
ICAgIAogICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKICAgICBpbnQgcG9z
aXRpb24gPSByZWdFeHAtPm1hdGNoSW5saW5lKHZtLCBpbnB1dFZhbHVlLCBzdGFydE9mZnNldCwg
c3VicGF0dGVyblJlc3VsdHMpOworICAgIEFTU0VSVChwb3NpdGlvbiA9PSBzdWJwYXR0ZXJuUmVz
dWx0c1swXSk7CiAgICAgaWYgKHBvc2l0aW9uID09IC0xKSB7CiAgICAgICAgIHJlc3VsdCA9IE1h
dGNoUmVzdWx0OjpmYWlsZWQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5o
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgSlNWYWx1
ZSBSZWdFeHBPYmplY3Q6OmV4ZWNJbmxpbmUoRXhlY1N0YQogICAgIFN0cmluZyBpbnB1dCA9IHN0
cmluZy0+dmFsdWUoZXhlYyk7IC8vIEZJWE1FOiBIYW5kbGUgZXJyb3JzLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ1CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogCi0gICAgYm9vbCBnbG9iYWxPclN0aWNreSA9IHJlZ0V4cC0+Z2xvYmFsKCkg
fHwgcmVnRXhwLT5zdGlja3koKTsKKyAgICBib29sIGdsb2JhbE9yU3RpY2t5ID0gcmVnRXhwLT5n
bG9iYWxPclN0aWNreSgpOwogCiAgICAgdW5zaWduZWQgbGFzdEluZGV4OwogICAgIGlmIChnbG9i
YWxPclN0aWNreSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9z
aW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFp
bC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykvLmV4ZWMo
ImZvbyIpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPT0gbnVs
bCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMt
Zm9sZGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBmb28oKSB7CisgICAg
cmV0dXJuIC8oZikobykobykvLmV4ZWMoImZvbyIpOworfQorCitub0lubGluZShmb28pOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7
CisgICAgaWYgKHJlc3VsdC5sZW5ndGggIT0gNCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1bHRbMF0gIT0gImZvbyIpCisgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzFd
ICE9ICJmIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
ICAgIGlmIChyZXN1bHRbMl0gIT0gIm8iKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFszXSAhPSAibyIpCisgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1y
ZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJl
dHVybiAvKGYpKG8pKG8pLy50ZXN0KCJiYXIiKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOwor
ICAgIGlmIChyZXN1bHQgIT0gZmFsc2UpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3Vs
dDogIiArIHJlc3VsdDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxl
LXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAor
ZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiAvKGYpKG8pKG8pLy50ZXN0KCJmb28iKTsKK30K
Kworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Cisg
ICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlmIChyZXN1bHQgIT0gdHJ1ZSkKKyAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL1dU
Ri9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE5Nzk4MSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTYtMDMtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBERkcgYW5kIEZUTCBzaG91bGQgY29uc3RhbnQtZm9sZCBSZWdFeHBFeGVjCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUyNzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGV4ZWN1dGVJ
bnNlcnRpb25zKCkgcmV0dXJuIHRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHZlY3RvciBpbmNyZWFz
ZWQgaW4gc2l6ZS4gVGhpcyBpcyBhCisgICAgICAgIGNvbnZlbmllbnQgZmVhdHVyZSB0aGF0IEkg
dXNlIGluIERGRzo6SW5zZXJ0aW9uU2V0LgorCisgICAgICAgICogd3RmL0luc2VydGlvbi5oOgor
ICAgICAgICAoV1RGOjpleGVjdXRlSW5zZXJ0aW9ucyk6CisKIDIwMTYtMDMtMTAgIEZyZWRlcmlj
IFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZv
ciBXT0ZGMgpJbmRleDogU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9X
VEYvd3RmL0luc2VydGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDE0ICs1NSwx
NSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0VmVjdG9yVHlwZSwg
dHlwZW5hbWUgSW5zZXJ0aW9uVmVjdG9yVHlwZT4KLXZvaWQgZXhlY3V0ZUluc2VydGlvbnMoVGFy
Z2V0VmVjdG9yVHlwZSYgdGFyZ2V0LCBJbnNlcnRpb25WZWN0b3JUeXBlJiBpbnNlcnRpb25zKQor
c2l6ZV90IGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0
aW9uVmVjdG9yVHlwZSYgaW5zZXJ0aW9ucykKIHsKLSAgICBpZiAoIWluc2VydGlvbnMuc2l6ZSgp
KQotICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUoKSArIGluc2Vy
dGlvbnMuc2l6ZSgpKTsKKyAgICBzaXplX3QgbnVtSW5zZXJ0aW9ucyA9IGluc2VydGlvbnMuc2l6
ZSgpOworICAgIGlmICghbnVtSW5zZXJ0aW9ucykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdGFy
Z2V0Lmdyb3codGFyZ2V0LnNpemUoKSArIG51bUluc2VydGlvbnMpOwogICAgIHNpemVfdCBsYXN0
SW5kZXggPSB0YXJnZXQuc2l6ZSgpOwogICAgIHNpemVfdCBvcmlnaW5hbFRhcmdldFNpemUgPSB0
YXJnZXQuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gaW5zZXJ0
aW9ucy5zaXplKCk7IGluZGV4SW5JbnNlcnRpb25zLS07KSB7CisgICAgZm9yIChzaXplX3QgaW5k
ZXhJbkluc2VydGlvbnMgPSBudW1JbnNlcnRpb25zOyBpbmRleEluSW5zZXJ0aW9ucy0tOykgewog
ICAgICAgICBBU1NFUlQoIWluZGV4SW5JbnNlcnRpb25zIHx8IGluc2VydGlvbnNbaW5kZXhJbklu
c2VydGlvbnNdLmluZGV4KCkgPj0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9ucyAtIDFdLmlu
ZGV4KCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9yaWdpbmFsVGFyZ2V0U2l6ZSwgaW5zZXJ0
aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSA8IG9yaWdpbmFsVGFyZ2V0U2l6ZSk7CiAg
ICAgICAgIHNpemVfdCBmaXJzdEluZGV4ID0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10u
aW5kZXgoKSArIGluZGV4SW5JbnNlcnRpb25zOwpAQCAtNzMsNiArNzQsNyBAQCB2b2lkIGV4ZWN1
dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUmCiAgICAgICAgIGxhc3RJbmRleCA9IGZpcnN0
SW5kZXg7CiAgICAgfQogICAgIGluc2VydGlvbnMucmVzaXplKDApOworICAgIHJldHVybiBudW1J
bnNlcnRpb25zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIzIEBACisyMDE2LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgREZHIGFuZCBGVEwgc2hvdWxkIGNvbnN0YW50LWZvbGQgUmVnRXhwRXhlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJl
Z2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZh
aWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdl
eHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9z
aW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdy
ZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy1mYWlsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4
cC10ZXN0LWZvbGRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTYtMDMtMTAgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFRlc3QgZ2FyZGVu
aW5nIGFmdGVyIHIxOTc5MzMKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJl
Z2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9s
ZGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdy
ZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFp
bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Np
bXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1m
YWlsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0
aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
LWZhaWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1y
ZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Np
bXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAK
K0pTUmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZworCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nLWZhaWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZv
bGRpbmctZmFpbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNl
cHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3Qt
Zm9sZGluZy1mYWlsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
aW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5n
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVn
ZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgL2Zvby8uZXhlYygiYmFyIik7Cit9
KSgpOworCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUt
cmVnZXhwLWV4ZWMtZm9sZGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAt
ZXhlYy1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9u
KCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICAvZm9v
Ly5leGVjKCJmb28iKTsKK30pKCk7CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmctZmFpbC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1IEBACisoZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDAwOyArK2kpCisgICAgICAgIC9mb28vLnRlc3QoImJhciIpOworfSkoKTsKKwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgL2Zvby8udGVzdCgi
Zm9vIik7Cit9KSgpOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273684</attachid>
            <date>2016-03-10 21:30:48 -0800</date>
            <delta_ts>2016-03-10 23:10:08 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>115502</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI3MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZW5hYmxlcyBjb25zdGFu
dC1mb2xkaW5nIG9mIFJlZ0V4cEV4ZWMgYW5kIFJlZ0V4cFRlc3QuCisKKyAgICAgICAgSXQncyBu
b3cgcG9zc2libGUgdG8gcnVuIFlhcnIgb24gdGhlIEpJVCB0aHJlYWRzLiBTaW5jZSBwcmV2aW91
cyB3b3JrIG9uIGNvbnN0YW50LWZvbGRpbmcKKyAgICAgICAgc3RyaW5ncyBnYXZlIHRoZSBERkcg
YW4gQVBJIGZvciByZWFzb25pbmcgYWJvdXQgSlNTdHJpbmcgY29uc3RhbnRzIGluIHRlcm1zIG9m
CisgICAgICAgIEpJVC10aHJlYWQtbG9jYWwgV1RGOjpTdHJpbmdzLCBpdCdzIG5vdyBzdXBlciBl
YXN5IHRvIGp1c3QgcGFzcyBzdHJpbmdzIHRvIFlhcnIgYW5kIGJ1aWxkIElSCisgICAgICAgIGJh
c2VkIG9uIHRoZSByZXN1bHRzLgorCisgICAgICAgIEJ1dCBSZWdFeHBFeGVjIGlzIGhhcmQ6IHRo
ZSBmb2xkZWQgdmVyc2lvbiBzdGlsbCBtdXN0IGFsbG9jYXRlIGEgUmVnRXhwTWF0Y2hlc0FycmF5
LiBXZSBtdXN0CisgICAgICAgIHVzZSB0aGUgc2FtZSBTdHJ1Y3R1cmUgdGhhdCB0aGUgY29kZSB3
b3VsZCBoYXZlIHVzZWQgb3IgZWxzZSB3ZSdsbCBwb2xsdXRlIHRoZSBwcm9ncmFtJ3MKKyAgICAg
ICAgaW5saW5lIGNhY2hlcy4gQWxzbywgUmVnRXhwTWF0Y2hlc0FycmF5Lmh8Y3BwIHdpbGwgYWxs
b2NhdGUgdGhlIGFycmF5IGFuZCBpdHMgbmFtZWQKKyAgICAgICAgcHJvcGVydGllcyBpbiBvbmUg
Z28gLSB3ZSBkb24ndCB3YW50IHRvIGxvc2UgdGhhdCBvcHRpbWl6YXRpb24uIFNvLCB0aGlzIHBh
dGNoIGVuYWJsZXMKKyAgICAgICAgTWF0ZXJpYWxpemVOZXdPYmplY3QgdG8gYWxsb2NhdGUgb2Jq
ZWN0cyBvciBhcnJheXMgd2l0aCBhbnkgbnVtYmVyIG9mIGluZGV4ZWQgb3IgbmFtZWQKKyAgICAg
ICAgcHJvcGVydGllcy4gUHJldmlvdXNseSBpdCBjb3VsZCBvbmx5IGhhbmRsZSBvYmplY3RzIChi
dXQgbm90IGFycmF5cykgYW5kIG5hZWQgcHJvcGVydGllcworICAgICAgICAoYnV0IG5vdCBpbmRl
eGVkIG9uZXMpLgorCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGEgZmV3IG1pbm9yIHRoaW5ncyBm
b3Igc2V0dGluZyB0aGUgUmVnRXhwQ29uc3RydWN0b3IgY2FjaGVkIHJlc3VsdC4KKworICAgICAg
ICBUaGlzIGlzIGFib3V0IGEgMnggc3BlZWQtdXAgb24gbWljcm9iZW5jaG1hcmtzIHdoZW4gd2Ug
Zm9sZCBhIG1hdGNoIHN1Y2Nlc3MgYW5kIGFib3V0IGEKKyAgICAgICAgOHggc3BlZWQtdXAgd2hl
biB3ZSBmb2xkIGEgbWF0Y2ggZmFpbHVyZS4gU2FkbHksIHRoaXMgZG9lc24ndCBsb29rIGxpa2Ug
bXVjaCBvZiBhCisgICAgICAgIE9jdGFuZS9yZWdleHAgc3BlZWQtdXAsIGFsdGhvdWdoIHdlIGFy
ZSBkZWZpbml0ZWx5IGRvaW5nIGEgbG90IG9mIGNvbnN0YW50LWZvbGRpbmcgaW4gdGhhdAorICAg
ICAgICBiZW5jaG1hcmsuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1
bXApOgorICAgICAgICAqIGRmZy9ERkdJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Okluc2VydGlvblNldDo6aW5zZXJ0U2xvdyk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0
aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHSW5zZXJ0aW9uU2V0Lmg6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRDaGVjayk6CisgICAgICAgICogZGZn
L0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdGFja0FjY2Vzc0RhdGE6OmZsdXNoZWRB
dCk6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6
ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6Om9u
ZVdheVNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oOgorICAgICAgICAoSlNDOjpERkc6
OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpQaGFudG9tUHJvcGVydHlWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6Om9wZXJhdG9yPT0pOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRG
Rzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZn
L0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojp+U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0QWxsb2NhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjplbWl0R2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUxhenlKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0
aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0
aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVDb21tdXRhdGl2aXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpleGVjdXRlSW5zZXJ0aW9uU2V0KToKKyAgICAgICAg
KiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxp
ZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlQ1BTKToKKyAgICAg
ICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgICogZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb24pOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU2V0UmVnRXhwT2JqZWN0
TGFzdEluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmRpZE92ZXJmbG93U3RhY2spOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpzdG9yYWdlRm9yVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmluaXRpYWxpemVBcnJheUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdENlbGxPck1pc2MpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1bmJveERvdWJsZSk6CisgICAgICAgICog
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvblBvcHVs
YXRlT2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk5ld09iamVjdFdp
dGhCdXR0ZXJmbHkpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3Jl
YXRlUmF3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2gpOgorICAgICAgICAoSlNDOjpSZWdFeHA6
Om1hdGNoQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlTWF0Y2hP
bmx5KToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpkZWxldGVDb2RlKToKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0Lmg6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKToKKyAg
ICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RJbnB1dCk6CisgICAg
ICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQpOgorICAgICAgICAo
SlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCk6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rv
cjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6Omhhc0NvZGVGb3IpOgorICAgICAgICAoSlNDOjpS
ZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2hJ
bmxpbmUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IpOgorICAg
ICAgICAoSlNDOjpSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qczogQWRkZWQuCisg
ICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMt
Zm9sZGluZy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZv
byk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpz
OiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMTYtMDMtMTAgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGZv
ciByMTk3OTgzLCBob3BlZnVsbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4OCw2ICs0ODgs
NyBAQAogCQkwRjdDMTFBRDFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MxMUFDMUJDMzg2MkMw
MEM3NENEQiAvKiBDb3B5QmFycmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGN0MzOUZCMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdD
MzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovOyB9OwogCQkwRjdDMzlG
RDFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUx
IC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLzsgfTsKKwkJMEY3QzM5RkYxQzkwQzU1QjAwNDgw
MTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovOyB9Owog
CQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUg
LyogQnlWYWxJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4
MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9
OwogCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUx
NjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjY0MCw2ICsyNjQxLDcgQEAK
IAkJMEY3QzExQUMxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcHlCYXJyaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9i
amVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2Jq
ZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR09wSW5mby5oOyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4
MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI0NSw2ICs2MjQ3LDcgQEAKIAkJCQkwRjJCOUNE
RDE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oICovLAog
CQkJCTg2RUM5REJGMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCAqLywKIAkJ
CQk4NkVDOURDMDEzMjhERjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9ucy5oICovLAorCQkJCTBG
N0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLywKIAkJCQlBN0Q4OUNFRTE3
QTBCOENDMDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAgKi8s
CiAJCQkJQTdEODlDRUYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuaCAqLywKIAkJCQkwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50
cnkuY3BwICovLApAQCAtNzQ0NSw2ICs3NDQ4LDcgQEAKIAkJCQkwRjY0RUFGMzFDNEVDRDA2MDA2
MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDUxOUY2
REU3NDAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9oZWFkZXIucHkgaW4g
SGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNjE5RjZERTc2MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2Jq
Y19jb25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJMEY3
QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVFQTcxMDcxOUY2REU3ODAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9j
b252ZXJzaW9uc19oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1
MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVB
NzEwODE5RjZERTdBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NTIsNiArMTk1Miw3
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICBjYXNlIFJlY29y
ZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2Ug
R2V0RnJvbUFyZ3VtZW50czoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIzLDYgKzkyMywxMCBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHdyaXRlKFJlZ0V4
cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFJlZ0V4cE9iamVj
dExhc3RJbmRleExvYywgUmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlLT5jaGlsZDIoKS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJuOworCisgICAg
Y2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CisgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRl
KTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6
IHsKICAgICAgICAgQWJzdHJhY3RIZWFwIGhlYXAoRGlyZWN0QXJndW1lbnRzUHJvcGVydGllcywg
bm9kZS0+Y2FwdHVyZWRBcmd1bWVudHNPZmZzZXQoKS5vZmZzZXQoKSk7CkBAIC0xMDg2LDcgKzEw
OTAsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAg
IGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCiAgICAgICAg
ICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAg
ICAgICByZWFkKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHJlYWQoUmVnRXhwT2JqZWN0X2xh
c3RJbmRleCk7CiAgICAgICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICB3
cml0ZShSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICByZWFkKFdvcmxkKTsKQEAgLTEwOTgsNyArMTEwNCw5IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgICYmIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG5vZGUt
PmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJlYWQoUmVn
RXhwU3RhdGUpOworICAgICAgICAgICAgcmVhZChSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAg
ICAgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHdyaXRlKFJlZ0V4cE9i
amVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IHJlYWQoV29ybGQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNl
IEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJ
bmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICBjYXNlIEdldEds
b2JhbFZhcjoKICAgICBjYXNlIEdldEdsb2JhbExleGljYWxWYXJpYWJsZToKICAgICBjYXNlIFB1
dEdsb2JhbFZhcmlhYmxlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAwLDYgKzEzMDAsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICAgICAgY2FzZSBHZXRS
ZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgorICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgICAg
IC8vIFRoZXNlIGFyZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4cGVjdCB0
byBzZWUgZHVyaW5nIGZpeHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50ZWQgdG8g
aW5zZXJ0IHRoZW0gcHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNyZWF0ZQog
ICAgICAgICAgICAgLy8gZml4dXAgcnVsZXMgZm9yIHRoZW0uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNSw2ICszMTUs
OCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgICAg
ICBvdXQucHJpbnQoYW5vdGhlckNvbW1hLCBwb2ludGVyRHVtcEluQ29udGV4dChmcmVlemUobV9j
b2RlQmxvY2stPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSlbaV0pLCBjb250
ZXh0KSk7CiAgICAgICAgIG91dC5wcmludCgiXSIpOwogICAgIH0KKyAgICBpZiAobm9kZS0+aGFz
TGF6eUpTVmFsdWUoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBub2RlLT5sYXp5SlNWYWx1
ZSgpKTsKICAgICBpZiAobm9kZS0+aGFzSW5kZXhpbmdUeXBlKCkpCiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgSW5kZXhpbmdUeXBlRHVtcChub2RlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgIGlm
IChub2RlLT5oYXNUeXBlZEFycmF5VHlwZSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw5ICs0NSw5IEBAIHZvaWQgSW5zZXJ0aW9uU2V0OjppbnNlcnRTbG93KGNvbnN0IEluc2UK
ICAgICBtX2luc2VydGlvbnMuaW5zZXJ0KDAsIGluc2VydGlvbik7CiB9CiAKLXZvaWQgSW5zZXJ0
aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQorc2l6ZV90IEluc2VydGlvblNldDo6
ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBleGVjdXRlSW5zZXJ0aW9ucygqYmxv
Y2ssIG1faW5zZXJ0aW9ucyk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRpb25zKCpibG9jaywg
bV9pbnNlcnRpb25zKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAgICAgCi0gICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKTsK
KyAgICBzaXplX3QgZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jayk7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBpbnNlcnRTbG93KGNvbnN0IEluc2VydGlvbiYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTYsOCArMTE2LDEwIEBAIFN0cmluZyBMYXp5SlNWYWx1ZTo6dHJ5R2V0U3RyaW5nKEdy
YXBoJiAKICAgICBkZWZhdWx0OgogICAgICAgICBpZiAoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5n
ID0gdHJ5R2V0U3RyaW5nSW1wbCgpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBnaW5vcm1vdXNT
dHJpbmdMZW5ndGggPSAxMDAwMDsKLSAgICAgICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID4g
Z2lub3Jtb3VzU3RyaW5nTGVuZ3RoKQorICAgICAgICAgICAgaWYgKHN0cmluZy0+bGVuZ3RoKCkg
PiBnaW5vcm1vdXNTdHJpbmdMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZp
bmcgdXAgYmVjYXVzZSBvZiBzaXplIGxpbWl0LlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IGdyYXBoLm1fY29waWVkU3RyaW5ncy5hZGQoc3RyaW5nLCBTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsx
MzEsNyBAQCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kCiAgICAgY2Fz
ZSBTdG9yZUJhcnJpZXI6CiAgICAgY2FzZSBQdXRCeU9mZnNldDoKICAgICBjYXNlIFB1dENsb3N1
cmVWYXI6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBTdHJDYXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJERkdOb2RlT3Jp
Z2luLmgiCiAjaW5jbHVkZSAiREZHTm9kZVR5cGUuaCIKICNpbmNsdWRlICJERkdPYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCiAjaW5jbHVkZSAiREZH
VHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaCIKQEAgLTIxOSwyMCArMjIwLDYgQEAgc3RydWN0IFN0YWNrQWNjZXNz
RGF0YSB7CiAgICAgRmx1c2hlZEF0IGZsdXNoZWRBdCgpIHsgcmV0dXJuIEZsdXNoZWRBdChmb3Jt
YXQsIG1hY2hpbmVMb2NhbCk7IH0KIH07CiAKLS8vIFRoaXMgdHlwZSB1c2VkIGluIHBhc3Npbmcg
YW4gaW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7Ci0vLyBkaXN0aW5ndWlz
aGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2RlQmxv
Y2sgZGF0YSBzdHJ1Y3R1cmUgLSAKLS8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBvciBp
ZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCi1zdHJ1Y3QgT3BJbmZvIHsKLSAgICBPcEluZm8oKSA6
IG1fdmFsdWUoMCkgeyB9Ci0gICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDogbV92
YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAgZXhwbGljaXQgT3BJ
bmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1
ZSkpIHsgfQotI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKLSAgICBleHBsaWNpdCBP
cEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1
ZSkpIHsgfQotI2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1fdmFs
dWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAgdWludHB0cl90
IG1fdmFsdWU7Ci19OwotCiAvLyA9PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMg
YSBzaW5nbGUgb3BlcmF0aW9uIGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
NCw2ICsyMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
VmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dFJlZ0V4cE9iamVjdExhc3RJbmRleCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a05vdEVtcHR5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tCYWRDZWxsLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzQsNyArMTk3NCw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOiB7CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5p
ZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBl
bmQoUGhhbnRvbVByb3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAg
ICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwog
ICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9u
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFs
dWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFw
cGVuZChtX2JvdHRvbSk7CkBAIC0yMDI0LDcgKzIwMjQsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICAgICAgY2FzZSBDbG9zdXJlVmFyUExvYzogewogICAgICAgICAgICAgICAgICAgICBBU1NF
UlQobG9jYXRpb24uYmFzZSgpID09IGFsbG9jYXRpb24uaWRlbnRpZmllcigpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Qcm9wZXJ0eVZhbHVl
KGxvY2F0aW9uLmluZm8oKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGll
cy5hcHBlbmQobG9jYXRpb24uZGVzY3JpcHRvcigpKTsKICAgICAgICAgICAgICAgICAgICAgTm9k
ZSogdmFsdWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ib3R0b20pOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiwzMiArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12
b2lkIFBoYW50b21Qcm9wZXJ0eVZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17
Ci0gICAgb3V0LnByaW50KCJpZCIsIG1faWRlbnRpZmllck51bWJlcik7Ci19Ci0KIHZvaWQgT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewog
ICAgIG91dC5wcmludCgiWyIsIGxpc3REdW1wKG1fcHJvcGVydGllcyksICJdIik7CiB9CiAKLWZs
b2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6Om9uZVdheVNpbWlsYXJpdHlTY29yZSgKLSAg
ICBjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikgY29uc3QKLXsKLSAgICB1
bnNpZ25lZCBudW1IaXRzID0gMDsKLSAgICBmb3IgKFBoYW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVl
IDogbV9wcm9wZXJ0aWVzKSB7Ci0gICAgICAgIGlmIChvdGhlci5tX3Byb3BlcnRpZXMuY29udGFp
bnModmFsdWUpKQotICAgICAgICAgICAgbnVtSGl0cysrOwotICAgIH0KLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG51bUhpdHMpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fcHJvcGVydGll
cy5zaXplKCkpOwotfQotCi1mbG9hdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpzaW1pbGFy
aXR5U2NvcmUoY29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgb3RoZXIpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHN0ZDo6bWluKG9uZVdheVNpbWlsYXJpdHlTY29yZShvdGhlciksIG90aGVy
Lm9uZVdheVNpbWlsYXJpdHlTY29yZSgqdGhpcykpOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5o
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5o
IgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CkBAIC0zNSwzOCArMzYsMTEgQEAKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1zdHJ1Y3QgUGhhbnRvbVByb3BlcnR5VmFsdWUgewot
ICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlKCkKLSAgICAgICAgOiBtX2lkZW50aWZpZXJOdW1iZXIo
VUlOVF9NQVgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBQaGFudG9tUHJvcGVydHlWYWx1ZSh1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKQotICAgICAgICA6IG1faWRlbnRpZmllck51bWJlcihp
ZGVudGlmaWVyTnVtYmVyKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgbV9pZGVu
dGlmaWVyTnVtYmVyOwotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQaGFudG9tUHJv
cGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlm
aWVyTnVtYmVyID09IG90aGVyLm1faWRlbnRpZmllck51bWJlcjsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci19OwotCiBzdHJ1Y3QgT2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YSB7CiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgbWVhbmluZyBvZiB0aGUgcGFz
c2VkIG5vZGVzLgotICAgIFZlY3RvcjxQaGFudG9tUHJvcGVydHlWYWx1ZT4gbV9wcm9wZXJ0aWVz
OworICAgIFZlY3RvcjxQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcj4gbV9wcm9wZXJ0aWVzOwog
ICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwotICAgIAotICAgIC8vIFRo
ZSBmcmFjdGlvbiBvZiBteSBwcm9wZXJ0aWVzIHRoYXQgdGhlIG90aGVyIGRhdGEgaGFzLgotICAg
IGZsb2F0IG9uZVdheVNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25E
YXRhJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gVGhlIG1pbmltdW0gb2YgdGhlIHR3byBwb3NzaWJs
ZSBvbmUtd2F5IHNjb3Jlcy4KLSAgICBmbG9hdCBzaW1pbGFyaXR5U2NvcmUoY29uc3QgT2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YSYpIGNvbnN0OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgREZHT3BJbmZvX2gKKyNkZWZpbmUgREZHT3BJbmZvX2gKKworI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKy8vIFRoaXMgdHlwZSB1c2VkIGluIHBhc3Np
bmcgYW4gaW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7CisvLyBkaXN0aW5n
dWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8gYSBDb2Rl
QmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKKy8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3VtZW50LCBv
ciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCitzdHJ1Y3QgT3BJbmZvIHsKKyAgICBPcEluZm8o
KSA6IG1fdmFsdWUoMCkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFsdWUpIDog
bV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisgICAgZXhwbGljaXQg
T3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkpIHsgfQorI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKKyAgICBleHBsaWNp
dCBPcEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkpIHsgfQorI2VuZGlmCisgICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1f
dmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisgICAgdWludHB0
cl90IG1fdmFsdWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR09wSW5mb19oCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3OTgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQwMSw2ICsxNDAxLDYwIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlZmF1bHRIYXMKICAgICByZXR1cm4gMDsKIH0KIAorY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdSYXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBCdXR0ZXJmbHkqIGJ1
dHRlcmZseTsKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0lu
ZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgICAgIElu
ZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICAgICAgaGVhZGVyLnNldFZlY3Rvckxlbmd0aChsZW5n
dGgpOworICAgICAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3RoKDApOworICAgICAgICAKKyAgICAg
ICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgICAgICB2bSwgbnVsbHB0
ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAorICAgICAgICAgICAgaGFzSW5k
ZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSksIGhlYWRlciwKKyAgICAg
ICAgICAgIGxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOworICAgIH0gZWxzZQorICAg
ICAgICBidXR0ZXJmbHkgPSBudWxscHRyOworCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTT2Jq
ZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIHJl
c3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8t
c3BhY2UuCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4ocmVzdWx0KTsKK30KKworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICAK
KyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAorICAgICAgICB2
bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwgSW5k
ZXhpbmdIZWFkZXIoKSwgMCk7CisgICAgCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTT2JqZWN0
OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIHJlc3Vs
dC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3Bh
Y2UuCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5n
dGgoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3Ro
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgSW5kZXhpbmdIZWFkZXIgaGVhZGVyOworICAgIGhl
YWRlci5zZXRWZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3Ro
KDApOworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAg
ICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUs
IGhlYWRlciwKKyAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGxlbmd0aCk7CisKKyAg
ICAvLyBQYXJhZG94aWNhbGx5IHRoaXMgbWF5IGFsbG9jYXRlIGEgSlNBcnJheS4gVGhhdCdzIHRv
dGFsbHkgY29vbC4KKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09i
amVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0ZXJmbHko
KTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQ
cm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqIGV4ZWMpIAogewogICAgIGV4ZWMtPnZtKCkudHlwZVBy
b2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiTG9nIEZ1bGwsIGNh
bGxlZCBmcm9tIGluc2lkZSBERkcuIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDEw
IEBAIGludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG8KIAogc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSosIEpTQ2Vs
bCogdmFsdWUsIEpTQ2VsbCogcHJvdG8pOwogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld1Jhd09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJO
QUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZs
eShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFu
ZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpIFdU
Rl9JTlRFUk5BTDsKKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJv
ZmlsZXJMb2dERkcoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJ
T04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqLCB2b2lk
Kiwgdm9pZCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY4LDYgKzY2OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2Jq
ZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAg
ICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIGNhc2UgTGF6eUpT
Q29uc3RhbnQ6IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlz
aWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAgICAgICAgLy8g
aW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlv
bi5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDYgKzc0LDEw
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQcm8KICAgICBjYXNlIE5h
bWVkUHJvcGVydHlQTG9jOgogICAgICAgICBvdXQucHJpbnQoIk5hbWVkUHJvcGVydHlQTG9jIik7
CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5UExvYzoKKyAgICAg
ICAgb3V0LnByaW50KCJJbmRleGVkUHJvcGVydHlQTG9jIik7CisgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgY2FzZSBBcmd1bWVudFBMb2M6CiAgICAgICAgIG91dC5wcmludCgiQXJndW1l
bnRQTG9jIik7CkBAIC0xMDIsNiArMTA2LDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBQcm8KICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOgogICAgICAgICBvdXQucHJp
bnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUHVibGlj
TGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJQdWJsaWNMZW5ndGhQTG9jIik7CisgICAg
ICAgIHJldHVybjsKKworICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnBy
aW50KCJWZWN0b3JMZW5ndGhQTG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyNSArMjgsNDEgQEAKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogCi0jaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkRGR0VkZ2UuaCIKKyNp
bmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0cnVjdCBOb2RlOworCisvLyBQcm9tb3Rl
ZCBsb2NhdGlvbnMgYXJlIGxpa2UgaGVhcCBsb2NhdGlvbnMgYnV0IGFyZSBtZWFudCB0byBiZSBt
b3JlIHByZWNpc2UuIEEgaGVhcCBsb2NhdGlvbiBpcworLy8gYXBwbGljYWJsZSB0byBDU0Ugc2Nl
bmFyaW9zLCB3aGVyZSBpdCBtYWtlcyBzZW5zZSB0byBzcGVhayBvZiBhIGxvY2F0aW9uIHZlcnkg
YWJzdHJhY3RseS4gQQorLy8gcHJvbW90ZWQgaGVhcCBsb2NhdGlvbiBpcyBmb3IgY2FzZXMgd2hl
cmUgd2Ugc3BlYWsgb2YgYSBzcGVjaWZpYyBvYmplY3QgYW5kIHRoZSBjb21waWxlciBrbm93cwor
Ly8gdGhpcyBvYmplY3QncyBpZGVudGl0eSAtIGZvciBleGFtcGxlLCB0aGUgb2JqZWN0IGFsbG9j
YXRpb24gaGFzIGJlZW4gZWxpbWluYXRlZCBhbmQgd2UgdHVybmVkIHRoZQorLy8gZmllbGRzIGlu
dG8gbG9jYWwgdmFyaWFibGVzLiBCZWNhdXNlIHRoZXNlIHR3byBjYXNlcyBoYXZlIHN1YnRseSBk
aWZmZXJlbnQgbmVlZHMsIHdlIHVzZSBzdWJ0bHkKKy8vIGRpZmZlcmVudCBzdHJ1Y3R1cmVzLiBP
bmUgb2YgdGhlIHJlYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpcyB0aGF0IHByb21vdGVk
IGxvY2F0aW9ucyBjYW4gYmUKKy8vIHNwb2tlbiBvZiB1c2luZyBlaXRoZXIgYSBkZXNjcmlwdG9y
IHdoaWNoIGRvZXMgbm90IHJlZmVyIHRvIGFueSBOb2RlKidzIG9yIHdpdGggYSBoZWFwIGxvY2F0
aW9uLAorLy8gd2hpY2ggaXMgYSBkZXNjcmlwdG9yIHdpdGggYSBOb2RlKiBiYXNlLgorCiBlbnVt
IFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBJbnZhbGlkUHJvbW90ZWRMb2NhdGlvbktpbmQs
CiAgICAgCi0gICAgU3RydWN0dXJlUExvYywKKyAgICBBY3RpdmF0aW9uU2NvcGVQTG9jLAogICAg
IEFjdGl2YXRpb25TeW1ib2xUYWJsZVBMb2MsCi0gICAgTmFtZWRQcm9wZXJ0eVBMb2MsCi0gICAg
QXJndW1lbnRQTG9jLAogICAgIEFyZ3VtZW50Q291bnRQTG9jLAorICAgIEFyZ3VtZW50UExvYywK
ICAgICBBcmd1bWVudHNDYWxsZWVQTG9jLAotCi0gICAgRnVuY3Rpb25FeGVjdXRhYmxlUExvYywK
KyAgICBDbG9zdXJlVmFyUExvYywKICAgICBGdW5jdGlvbkFjdGl2YXRpb25QTG9jLAotICAgIEFj
dGl2YXRpb25TY29wZVBMb2MsCi0gICAgQ2xvc3VyZVZhclBMb2MKKyAgICBGdW5jdGlvbkV4ZWN1
dGFibGVQTG9jLAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsCisgICAgTmFtZWRQcm9wZXJ0eVBM
b2MsCisgICAgUHVibGljTGVuZ3RoUExvYywKKyAgICBTdHJ1Y3R1cmVQTG9jLAorICAgIFZlY3Rv
ckxlbmd0aFBMb2MKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAgY2Fz
ZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0
SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0Nyw2ICszMDQ3LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
ICAgICAKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogeworICAgICAgICBjb21w
aWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5h
cnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CiAgICAgICAgIApAQCAtMzQ5Miw3ICszNDk3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdl
R1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShy
ZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAg
ICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFn
ZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhl
IEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOCw3ICszNzMzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3Rv
cmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIs
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAg
IGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3Jh
Z2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChub2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAg
ICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVm
ZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTc4LDcgKzQ5ODMsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBub1Jlc3VsdChub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAKKyAgICBjYXNlIE1hdGVyaWFs
aXplTmV3T2JqZWN0OgorICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7
CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9u
IDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNzEsNiArMzE3MSwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXgobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2Fz
ZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzSlNBcnJh
eSgpKTsKQEAgLTM1NDIsNyArMzU0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAg
ICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VH
UFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1
bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBh
bm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAg
ICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAg
LTM3NzgsNyArMzc4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0
R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVu
dHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCks
IG5vZGUsIGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAgICAgICAgSlNWYWx1ZSogZGF0
YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50
KCkpOwpAQCAtNDk3MSw2ICs0OTc2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBNYXRlcmlhbGl6
ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOwor
ICAgICAgICBicmVhazsKKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBD
aGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0g
bV9qaXQuYnJhbmNoQWRkMzIoCkBAIC01MDYxLDcgKzUwNzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAg
ICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAg
Y2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0YWNrOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyQnVmZmVyLmgiCkBAIC03NywyNyArNzgs
NTQgQEAgU3BlY3VsYXRpdmVKSVQ6On5TcGVjdWxhdGl2ZUpJVCgpCiB7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cykK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0
R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVj
aWRlZChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwg
aGFzQ29udGlndW91cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgSW5kZXhpbmdU
eXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBo
YXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CisK
KyAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHko
KTsKKyAgICB1bnNpZ25lZCBvdXRPZkxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwotICAg
IAotICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwg
bnVtRWxlbWVudHMpOworCisgICAgQVNTRVJUKHZlY3Rvckxlbmd0aCA+PSBudW1FbGVtZW50cyk7
CisgICAgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCB2ZWN0b3JMZW5n
dGgpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0g
ICAgc2xvd0Nhc2VzLmFwcGVuZCgKLSAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKFRy
dXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhp
bmdIZWFkZXIpKSwgc3RvcmFnZUdQUikpOwotICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIo
dmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7Ci0gICAgZW1pdEFs
bG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwotICAg
IAotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSk7Ci0gICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rv
ckxlbmd0aCgpKSk7Ci0gICAgCisKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgaWYgKGhhc0lu
ZGV4aW5nSGVhZGVyKQorICAgICAgICBzaXplICs9IHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1Zh
bHVlKSArIHNpemVvZihJbmRleGluZ0hlYWRlcik7CisgICAgc2l6ZSArPSBvdXRPZkxpbmVDYXBh
Y2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKKworICAgIGlmIChzaXplKSB7CisgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoCisgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3Rl
ZEltbTMyKHNpemUpLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRl
cikKKyAgICAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICog
c2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3Jh
Z2VHUFIpOworICAgIH0gZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoMCks
IHN0b3JhZ2VHUFIpOworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVj
dDo6YWxsb2NhdGlvblNpemUoaW5saW5lQ2FwYWNpdHkpOworICAgIE1hcmtlZEFsbG9jYXRvciog
YWxsb2NhdG9yUHRyID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91
dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihhbGxvY2F0b3JQdHIpLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChy
ZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQ
Uiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIp
CisgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JM
ZW5ndGgoKSkpOworCisgICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRoYXQgYWxzbyBsb2FkcyBv
dXQgdGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQncworICAgIC8vIHdoYXQgdGhpcyBjdXN0
b20gQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMgbWUuIEl0J3MgYSBs
b3QKKyAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ugb2YgZnVuY3Rpb25hbGl0
eS4gOi0vCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJy
YXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uTmV3UmF3T2JqZWN0LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCisgICAgICAgIHN0
cnVjdHVyZSwgdmVjdG9yTGVuZ3RoKSk7CisKICAgICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZS0+
aW5kZXhpbmdUeXBlKCkpICYmIG51bUVsZW1lbnRzIDwgdmVjdG9yTGVuZ3RoKSB7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0
PGludDY0X3Q+KFBOYU4pKSwgc2NyYXRjaEdQUik7CkBAIC0xMTMsMTIgKzE0MSw4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkKICNlbmRpZgogICAgIH0KICAgICAK
LSAgICAvLyBJIHdhbnQgYSBzbG93IHBhdGggdGhhdCBhbHNvIGxvYWRzIG91dCB0aGUgc3RvcmFn
ZSBwb2ludGVyLCBhbmQgdGhhdCdzCi0gICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAotICAgIC8vIG9m
IHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8KLSAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yPigKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdB
cnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCi0gICAgICAgIHN0cnVjdHVyZSwg
bnVtRWxlbWVudHMpKTsKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAgIG1faml0
LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CiB9CiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUsIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMpCkBAIC03NjU1
LDYgKzc2NzksMTI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMYXp5SlNDb25zdGEK
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSogbm9kZSkKK3sKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZVNldCgpWzBdOworICAgIEFTU0VS
VChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApLT5keW5hbWljQ2FzdENvbnN0YW50
PFN0cnVjdHVyZSo+KCkgPT0gc3RydWN0dXJlKTsKKworICAgIE9iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEmIGRhdGEgPSBub2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisgICAgICAg
IAorICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlw
ZSgpOworICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJvcGVydGllcyhp
bmRleGluZ1R5cGUpOworICAgIGludDMyX3QgcHVibGljTGVuZ3RoID0gMDsKKyAgICBpbnQzMl90
IHZlY3Rvckxlbmd0aCA9IDA7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEg
KyBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7
CisgICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgcHVi
bGljTGVuZ3RoID0gZWRnZS0+YXNJbnQzMigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgIHZlY3Rvckxl
bmd0aCA9IGVkZ2UtPmFzSW50MzIoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRl
bXBvcmFyeSBzdG9yYWdlKHRoaXMpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CisgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOworICAgIAorICAgIGVt
aXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgMCwg
dmVjdG9yTGVuZ3RoKTsKKyAgICAKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBKSVRDb21w
aWxlcjo6VHJ1c3RlZEltbTMyKHB1YmxpY0xlbmd0aCksCisgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7
CisgICAgICAgIEVkZ2UgZWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSAr
IGkpOworICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0
YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsK
KyAgICAgICAgY2FzZSBJbmRleGVkUHJvcGVydHlQTG9jOiB7CisgICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlVmFsdWUo
CisgICAgICAgICAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwKKyAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICog
ZGVzY3JpcHRvci5pbmZvKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBOYW1lZFByb3BlcnR5UExvYzogeworICAgICAgICAgICAgU3RyaW5nSW1wbCog
dWlkID0gbV9qaXQuZ3JhcGgoKS5pZGVudGlmaWVycygpW2Rlc2NyaXB0b3IuaW5mbygpXTsKKyAg
ICAgICAgICAgIGZvciAoUHJvcGVydHlNYXBFbnRyeSBlbnRyeSA6IHN0cnVjdHVyZS0+Z2V0UHJv
cGVydGllc0NvbmN1cnJlbnRseSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHVpZCAhPSBlbnRy
eS5rZXkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSk7CisgICAgICAgICAgICAgICAgR1BSUmVn
IGJhc2VHUFIgPSBpc0lubGluZU9mZnNldChlbnRyeS5vZmZzZXQpID8gcmVzdWx0R1BSIDogc3Rv
cmFnZUdQUjsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAg
ICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLAorICAgICAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShlbnRyeS5vZmZzZXQp
KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChOb2RlKiBub2RlKQor
eworICAgIEVkZ2UgY29uc3RydWN0b3JFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChu
b2RlLCAwKTsKKyAgICBFZGdlIHJlZ0V4cEVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxk
KG5vZGUsIDEpOworICAgIEVkZ2Ugc3RyaW5nRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hp
bGQobm9kZSwgMik7CisgICAgRWRnZSBzdGFydEVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0No
aWxkKG5vZGUsIDMpOworICAgIEVkZ2UgZW5kRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hp
bGQobm9kZSwgNCk7CisKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjb25zdHJ1Y3Rvcih0aGlz
LCBjb25zdHJ1Y3RvckVkZ2UpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJlZ0V4cCh0aGlz
LCByZWdFeHBFZGdlKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHJpbmcodGhpcywgc3Ry
aW5nRWRnZSk7CisgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHN0YXJ0KHRoaXMsIHN0YXJ0RWRn
ZSk7CisgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGVuZCh0aGlzLCBlbmRFZGdlKTsKKworICAg
IEdQUlJlZyBjb25zdHJ1Y3RvckdQUiA9IGNvbnN0cnVjdG9yLmdwcigpOworICAgIEdQUlJlZyBy
ZWdFeHBHUFIgPSByZWdFeHAuZ3ByKCk7CisgICAgR1BSUmVnIHN0cmluZ0dQUiA9IHN0cmluZy5n
cHIoKTsKKyAgICBHUFJSZWcgc3RhcnRHUFIgPSBzdGFydC5ncHIoKTsKKyAgICBHUFJSZWcgZW5k
R1BSID0gZW5kLmdwcigpOworCisgICAgcHRyZGlmZl90IG9mZnNldCA9IFJlZ0V4cENvbnN0cnVj
dG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpOworCisgICAgbV9qaXQuc3RvcmVQdHIoCisgICAg
ICAgIHJlZ0V4cEdQUiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY29uc3RydWN0b3JH
UFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkpKTsK
KyAgICBtX2ppdC5zdG9yZVB0cigKKyAgICAgICAgc3RyaW5nR1BSLAorICAgICAgICBKSVRDb21w
aWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0
OjpvZmZzZXRPZkxhc3RJbnB1dCgpKSk7CisgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgc3Rh
cnRHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKAorICAgICAgICAgICAgY29uc3Ry
dWN0b3JHUFIsCisgICAgICAgICAgICBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNl
dE9mUmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIHN0YXJ0KSkpOworICAg
IG1faml0LnN0b3JlMzIoCisgICAgICAgIGVuZEdQUiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MoCisgICAgICAgICAgICBjb25zdHJ1Y3RvckdQUiwKKyAgICAgICAgICAgIG9mZnNldCAr
IFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihN
YXRjaFJlc3VsdCwgZW5kKSkpOworICAgIG1faml0LnN0b3JlOCgKKyAgICAgICAgVHJ1c3RlZElt
bTMyKDApLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zm
c2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZpZWQoKSkpOworCisgICAgbm9S
ZXN1bHQobm9kZSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShy
ZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MDEsNiArMjQwMSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbXBpbGVHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleChOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
TGF6eUpTQ29uc3RhbnQoTm9kZSopOworICAgIHZvaWQgY29tcGlsZU1hdGVyaWFsaXplTmV3T2Jq
ZWN0KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQoTm9k
ZSopOwogICAgIAogICAgIHZvaWQgbW92ZVRydWVUbyhHUFJSZWcpOwogICAgIHZvaWQgbW92ZUZh
bHNlVG8oR1BSUmVnKTsKQEAgLTI1MTYsNyArMjUxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9q
aXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BS
UmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51
bUVsZW1lbnRzKTsKKyAgICB2b2lkIGVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0
R1BSLCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIHZlY3Rvckxlbmd0aCk7CiAgICAgCiAgICAgdm9pZCBlbWl0R2V0TGVuZ3RoKElu
bGluZUNhbGxGcmFtZSosIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxz
ZSk7CiAgICAgdm9pZCBlbWl0R2V0TGVuZ3RoKENvZGVPcmlnaW4sIEdQUlJlZyBsZW5ndGhHUFIs
IGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MywxMSArMjUzLDE5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgICAgICBjYXNl
IFB1dEJ5SWRGbHVzaDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAg
ICAgIGNhc2UgUHV0U3RydWN0dXJlOiB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVy
KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hl
ZFJlc3VsdDogeworICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgogICAgICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6
CkBAIC0yNjYsMTMgKzI3NCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIFB1dEJ5SWQ6
Ci0gICAgICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJ
ZERpcmVjdDogewotICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAg
ICAgY2FzZSBQdXRCeU9mZnNldDogewogICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllciht
X25vZGUtPmNoaWxkMigpLCBtX25vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM2LDExICszNiwxNCBAQAogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgPGNzdGRsaWI+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3Mg
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgIAogcHVibGljOgogICAgIFN0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQogICAgICAgICA6IFBoYXNlKGdyYXBoLCAic3RyZW5ndGgg
cmVkdWN0aW9uIikKQEAgLTMzMSw4ICszMzQsMjY2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgaWYgKCEhc3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRv
Q29uc3RhbnQobV9ub2RlLCBqc051bWJlcihzdHJpbmcubGVuZ3RoKCkpKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDogeworICAgICAgICAgICAgaWYg
KEpTT2JqZWN0KiBvYmplY3QgPSBtX25vZGUtPmNoaWxkMSgpLT5keW5hbWljQ2FzdENvbnN0YW50
PEpTT2JqZWN0Kj4oKSkgeworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3Rh
bnQobV9ub2RlLCBvYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFJlZ0V4cEV4ZWM6Cisg
ICAgICAgIGNhc2UgUmVnRXhwVGVzdDogeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNHbG9i
YWxPYmplY3QqPigpOworICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5n
IHVwIGJlY2F1c2Ugbm8gZ2xvYmFsIG9iamVjdC5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5pc0hhdmlu
Z0FCYWRUaW1lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgYmFkIHRpbWUuXG4iKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTm9kZSogcmVn
RXhwT2JqZWN0Tm9kZSA9IG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpOworICAgICAgICAgICAgUmVn
RXhwKiByZWdFeHA7CisgICAgICAgICAgICBpZiAoUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3Qg
PSByZWdFeHBPYmplY3ROb2RlLT5keW5hbWljQ2FzdENvbnN0YW50PFJlZ0V4cE9iamVjdCo+KCkp
CisgICAgICAgICAgICAgICAgcmVnRXhwID0gcmVnRXhwT2JqZWN0LT5yZWdFeHAoKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHJlZ0V4cE9iamVjdE5vZGUtPm9wKCkgPT0gTmV3UmVnZXhwKQorICAg
ICAgICAgICAgICAgIHJlZ0V4cCA9IGNvZGVCbG9jaygpLT5yZWdleHAocmVnRXhwT2JqZWN0Tm9k
ZS0+cmVnZXhwSW5kZXgoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1
c2UgdGhlIHJlZ2V4cCBpcyB1bmtub3duLlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5vZGUqIHN0cmluZ05vZGUgPSBtX25vZGUtPmNo
aWxkMygpLm5vZGUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTk9URTogVGhpcyBt
b3N0bHkgYWxyZWFkeSBwcm90ZWN0cyB1cyBmcm9tIGhhdmluZyB0aGUgY29tcGlsZXIgZXhlY3V0
ZSBhIHJlZ2V4cAorICAgICAgICAgICAgLy8gb3BlcmF0aW9uIG9uIGEgZ2lub3Jtb3VzIHN0cmlu
ZyBieSBwcmV2ZW50aW5nIHVzIGZyb20gZ2V0dGluZyBvdXIgaGFuZHMgb24gZ2lub3Jtb3VzCisg
ICAgICAgICAgICAvLyBzdHJpbmdzIGluIHRoZSBmaXJzdCBwbGFjZS4KKyAgICAgICAgICAgIFN0
cmluZyBzdHJpbmcgPSBtX25vZGUtPmNoaWxkMygpLT50cnlHZXRTdHJpbmcobV9ncmFwaCk7Cisg
ICAgICAgICAgICBpZiAoIXN0cmluZykgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSB0aGUgc3RyaW5n
IGlzIHVua25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgRnJvemVuVmFsdWUqIHJlZ0V4cEZyb3plblZhbHVlID0gbV9ncmFwaC5m
cmVlemUocmVnRXhwKTsKKworICAgICAgICAgICAgLy8gUmVmdXNlIHRvIGRvIHRoaW5ncyB3aXRo
IHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBoYXZlIGEgZ2lub3Jtb3VzIG51bWJlciBvZgorICAg
ICAgICAgICAgLy8gc3VicGF0dGVybnMuCisgICAgICAgICAgICB1bnNpZ25lZCBnaW5vcm1vdXNO
dW1iZXJPZlN1YlBhdHRlcm5zID0gMTAwMDsKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPm51bVN1
YnBhdHRlcm5zKCkgPiBnaW5vcm1vdXNOdW1iZXJPZlN1YlBhdHRlcm5zKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1
cCBiZWNhdXNlIG9mIHBhdHRlcm4gbGltaXQuXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5zaWduZWQgbGFzdEluZGV4OworICAgICAg
ICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsT3JTdGlja3koKSkgeworICAgICAgICAgICAgICAgIC8v
IFRoaXMgd2lsbCBvbmx5IHdvcmsgaWYgd2UgY2FuIHByb3ZlIHdoYXQgdGhlIHZhbHVlIG9mIGxh
c3RJbmRleCBpcy4gVG8gZG8gdGhpcworICAgICAgICAgICAgICAgIC8vIHNhZmVseSwgd2UgbmVl
ZCB0byBleGVjdXRlIHRoZSBpbnNlcnRpb24gc2V0IHNvIHRoYXQgd2Ugc2VlIGFueSBwcmV2aW91
cyBzdHJlbmd0aAorICAgICAgICAgICAgICAgIC8vIHJlZHVjdGlvbnMuIFRoaXMgaXMgbmVlZGVk
IGZvciBzb3VuZG5lc3Mgc2luY2Ugb3RoZXJ3aXNlIHRoZSBlZmZlY3RmdWxuZXNzIG9mIGFueQor
ICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHN0cmVuZ3RoIHJlZHVjdGlvbnMgd291bGQgYmUg
aW52aXNpYmxlIHRvIHVzLgorICAgICAgICAgICAgICAgIGV4ZWN1dGVJbnNlcnRpb25TZXQoKTsK
KyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBVSU5UX01BWDsKKyAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIG90aGVyTm9kZUluZGV4ID0gbV9ub2RlSW5kZXg7IG90aGVyTm9kZUluZGV4
LS07KSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fYmxvY2stPmF0
KG90aGVyTm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZSA9PSBy
ZWdFeHBPYmplY3ROb2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSAw
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3AoKSA9PSBTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQx
KCkgPT0gcmVnRXhwT2JqZWN0Tm9kZQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJO
b2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNvbnN0YW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICYmIG90aGVyTm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSA+PSAwKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBsYXN0SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3RoZXJOb2RlLT5j
aGlsZDIoKS0+YXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh3cml0ZXNPdmVybGFw
KG1fZ3JhcGgsIG90aGVyTm9kZSwgUmVnRXhwT2JqZWN0X2xhc3RJbmRleCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKGxhc3RJbmRleCA9PSBVSU5UX01BWCkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNl
IHRoZSBsYXN0IGluZGV4IGlzIG5vdCBrbm93bi5cbiIpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBsYXN0SW5kZXggPSAwOworCisgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCku
YWRkTGF6aWx5KGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCk7CisgICAgICAgICAgICBpZiAoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSAhPSBBcnJheVdpdGhDb250aWd1b3VzKSB7CisgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyBmdXJ0aGVyIHByb3RlY3Rpb24gYWdhaW5zdCBhIHJhY2Ugd2l0aCBo
YXZlQUJhZFRpbWUuCisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSBzdHJ1Y3R1cmUgaGFzIHRoZSB3
cm9uZyBpbmRleGluZyB0eXBlLlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7
CisKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IGdsb2JhbE9i
amVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKTsKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiBjb25z
dHJ1Y3RvckZyb3plblZhbHVlID0gbV9ncmFwaC5mcmVlemUoY29uc3RydWN0b3IpOworCisgICAg
ICAgICAgICBNYXRjaFJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBWZWN0b3I8aW50LCAzMj4g
b3ZlY3RvcjsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gY2FsbCB0aGUga2luZCBvZiBtYXRj
aCBmdW5jdGlvbiB0aGF0IHRoZSBtYWluIHRocmVhZCB3b3VsZCBoYXZlIGNhbGxlZC4KKyAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbWlnaHQgbm90IGhhdmUgdGhlIGRlc2lyZWQgWWFyciBj
b2RlIGNvbXBpbGVkLCBhbmQgdGhlIG1hdGNoIHdpbGwgZmFpbC4KKyAgICAgICAgICAgIGlmICht
X25vZGUtPm9wKCkgPT0gUmVnRXhwRXhlYykgeworICAgICAgICAgICAgICAgIGludCBwb3NpdGlv
bjsKKyAgICAgICAgICAgICAgICBpZiAoIXJlZ0V4cC0+bWF0Y2hDb25jdXJyZW50bHkodm0oKSwg
c3RyaW5nLCBsYXN0SW5kZXgsIHBvc2l0aW9uLCBvdmVjdG9yKSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmlu
ZyB1cCBiZWNhdXNlIG1hdGNoIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0LnN0YXJ0ID0gcG9z
aXRpb247CisgICAgICAgICAgICAgICAgcmVzdWx0LmVuZCA9IG92ZWN0b3JbMV07CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJl
bnRseSh2bSgpLCBzdHJpbmcsIGxhc3RJbmRleCwgcmVzdWx0KSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmlu
ZyB1cCBiZWNhdXNlIG1hdGNoIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdl
J3ZlIGNvbnN0YW50LWZvbGRlZCB0aGUgcmVnZXhwLiBOb3cgd2UncmUgY29tbWl0dGVkIHRvIHJl
cGxhY2luZyBSZWdFeHBFeGVjL1Rlc3QuCisKKyAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7
CisKKyAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbV9ub2RlLT5vcmlnaW47CisKKyAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9u
b2RlSW5kZXgsIFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBtX25vZGUtPmNoaWxkcmVuLmp1c3RD
aGVja3MoKSk7CisKKyAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUmVnRXhwRXhlYykg
eworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1
cmUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBhcnJheSBtb2RlbGluZyB0
aGUgSlMgYXJyYXkgdGhhdCB3ZSB3aWxsIHRyeSB0byBhbGxvY2F0ZS4gVGhpcyBpcworICAgICAg
ICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5IGJ1dCBv
dmVyIEMrKyBzdHJpbmdzIGluc3RlYWQgb2YgSlNTdHJpbmdzLgorICAgICAgICAgICAgICAgICAg
ICBWZWN0b3I8U3RyaW5nPiByZXN1bHRBcnJheTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0g
cmVzdWx0LnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPD0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzdGFydCA9IG92ZWN0b3JbMiAqIGldOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcoc3RhcnQsIG92ZWN0b3JbMiAqIGkgKyAxXSAtIHN0
YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKFN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHB1YmxpY0xlbmd0aCA9IHJlc3Vs
dEFycmF5LnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3Ro
ID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBwdWJsaWNMZW5ndGgpOworCisgICAgICAgICAg
ICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbmRleFVJRCA9IHZtKCkucHJvcGVydHlOYW1l
cy0+aW5kZXguaW1wbCgpOworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
aW5wdXRVSUQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmlucHV0LmltcGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW5kZXhJbmRleCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1
cmUoaW5kZXhVSUQpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dEluZGV4ID0g
bV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpbnB1dFVJRCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXpl
KCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQo
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZv
clVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBz
dHJ1Y3R1cmUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAgICAgICBPYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhKiBkYXRhID0gbV9ncmFwaC5tX29iamVjdE1hdGVyaWFsaXphdGlvbkRh
dGEuYWRkKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHB1YmxpY0xlbmd0aCksIEtub3duSW50MzJVc2Up
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZChQdWJsaWNM
ZW5ndGhQTG9jKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
dmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIodmVjdG9yTGVuZ3RoKSwgS25vd25JbnQzMlVz
ZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKFZlY3Rv
ckxlbmd0aFBMb2MpOworCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRl
eCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQpLCBVbnR5cGVkVXNlKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3BlcnR5UExvYywgaW5k
ZXhJbmRleCkpOworCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5hcHBlbmQoRWRnZShzdHJpbmdOb2RlLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAg
ICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3BlcnR5UExvYywgaW5wdXRJbmRleCkp
OworCisgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0ZXJpYWxpemVTdHJpbmcgPSBbJl0gKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSAtPiBOb2RlKiB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBv
cmlnaW4sIHZtKCkuc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgTGF6eUpTVmFsdWUgdmFsdWUgPSBM
YXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIHN0cmluZyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIExhenlKU0NvbnN0YW50LCBvcmln
aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9sYXp5SlNW
YWx1ZXMuYWRkKHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRBcnJheS5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSBtYXRlcmlhbGl6
ZVN0cmluZyhyZXN1bHRBcnJheVtpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uobm9kZSwgVW50eXBlZFVzZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9y
KEluZGV4ZWRQcm9wZXJ0eVBMb2MsIGkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIHJlc3VsdE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNBcnJheSwgTm9kZTo6VmFyQXJnLCBNYXRlcmlh
bGl6ZU5ld09iamVjdCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHN0
cnVjdHVyZVNldCksIE9wSW5mbyhkYXRhKSwgZmlyc3RDaGlsZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBmaXJzdENoaWxkKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9JZGVu
dGl0eU9uKHJlc3VsdE5vZGUpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNOdWxsKCkpOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFu
dChtX25vZGUsIGpzQm9vbGVhbighIXJlc3VsdCkpOworCisgICAgICAgICAgICAvLyBXaGV0aGVy
IGl0J3MgRXhlYyBvciBUZXN0LCB3ZSBuZWVkIHRvIHRlbGwgdGhlIGNvbnN0cnVjdG9yIGFuZCBS
ZWdFeHBPYmplY3Qgd2hhdCdzIHVwLgorICAgICAgICAgICAgLy8gQmVjYXVzZSBTZXRSZWdFeHBP
YmplY3RMYXN0SW5kZXggbWF5IGV4aXQgYW5kIGl0IGNsb2JiZXJzIGV4aXQgc3RhdGUsIHdlIGRv
IHRoYXQKKyAgICAgICAgICAgIC8vIGZpcnN0LgorICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNO
b25lLCBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgRWRnZShyZWdFeHBPYmplY3ROb2RlLCBSZWdFeHBPYmplY3RVc2UpLAorICAgICAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHJlc3VsdCA/IHJlc3Vs
dC5lbmQgOiAwKSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIG9yaWdpbiA9IG9yaWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0
Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOworICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwgY29uc3RydWN0b3JGcm96ZW5WYWx1ZSwgS25vd25DZWxs
VXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2Uo
CisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCByZWdFeHBGcm96
ZW5WYWx1ZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFy
Z0NoaWxkcmVuLmFwcGVuZChFZGdlKHN0cmluZ05vZGUsIEtub3duQ2VsbFVzZSkpOworICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0LnN0YXJ0KSwg
S25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0
YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwg
anNOdW1iZXIocmVzdWx0LmVuZCksIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRl
eCwgU3BlY05vbmUsIE5vZGU6OlZhckFyZywgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0LCBvcmln
aW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbygpLCBPcEluZm8oKSwgZmlyc3RDaGlsZCwg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOworCisgICAgICAg
ICAgICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBtX25vZGUtPm9yaWdpbiA9IG9yaWdpbjsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTM4MCw2ICs2NDEsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgZXhl
Y3V0ZUluc2VydGlvblNldCgpCisgICAgeworICAgICAgICBtX25vZGVJbmRleCArPSBtX2luc2Vy
dGlvblNldC5leGVjdXRlKG1fYmxvY2spOworICAgIH0KICAgICAKICAgICBJbnNlcnRpb25TZXQg
bV9pbnNlcnRpb25TZXQ7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3OCw2ICsyNzgsMTggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUpLCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPmRmZ1No
b3VsZFdhdGNoKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAg
ICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1
cmVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHN1cHBvcnRz
IHN0cnVjdHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5LgorICAgICAgICAg
ICAgICAgICAgICAgICAgVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v
ZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkg
PT0gSlNGaW5hbE9iamVjdDo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwg
c3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBKU0FycmF5OjppbmZvKCkpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgY2VydGFpbiBpbmRleGluZyBzaGFwZXMu
CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNBbnlBcnJheVN0
b3JhZ2Uoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgRG91Ymxl
Q29uc3RhbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPmlzTnVtYmVyQ29uc3RhbnQoKSk7CkBA
IC00NjEsMTMgKzQ3Myw0MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlB
cmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAgICAgICAg
ICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgotICAgICAgICAgICAgICAgIGNhc2Ug
TWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNy
ZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAg
ICAgICAgICBjYXNlIEtpbGxTdGFjazoKICAgICAgICAgICAgICAgICBjYXNlIEdldFN0YWNrOgog
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEidW5leHBlY3RlZCBub2RlIHR5
cGUgaW4gQ1BTIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BT
IG9ubHkgYWxsb3dzIGFycmF5IGxlbmd0aHMgdG8gYmUgY29uc3RhbnQuIFRoaXMgY29uc3RyYWlu
dCBvbmx5IGV4aXN0cworICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGhh
dmUgREZHIHN1cHBvcnQgZm9yIGFueXRoaW5nIG1vcmUgYW5kIHdlIGRvbid0IG5lZWQgYW55Cisg
ICAgICAgICAgICAgICAgICAgIC8vIG90aGVyIGtpbmQgb2Ygc3VwcG9ydCBmb3Igbm93LgorICAg
ICAgICAgICAgICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+
b2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSgpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRh
Lm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpOworICAgICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWZWN0b3JM
ZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBl
ZGdlKSwgZWRnZS0+aXNJbnQzMkNvbnN0YW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93
cyBvbmUgc3RydWN0dXJlLgorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5v
ZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKSA9PSAxKTsKKworICAgICAgICAgICAgICAgICAgICAv
LyBDUFMgZGlzYWxsb3dzIGludDMyIGFuZCBkb3VibGUgYXJyYXlzLiBUaG9zZSByZXF1aXJlIHdl
aXJkIHR5cGUgY2hlY2tzIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzaW9ucy4g
VGhleSBhcmUgbm90IG5lZWRlZCBpbiB0aGUgREZHIHJpZ2h0IG5vdy4gV2Ugc2hvdWxkIGFkZCBz
dXBwb3J0CisgICAgICAgICAgICAgICAgICAgIC8vIGZvciB0aGVzZSBpZiB0aGUgREZHIGV2ZXIg
bmVlZHMgaXQuCisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
OiBub2RlLT5zdHJ1Y3R1cmVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCAhaGFzSW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzRG91YmxlKHN0cnVjdHVyZS0+
aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFu
dG9tOgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG1fZ3JhcGgubV9maXhw
b2ludFN0YXRlICE9IEZpeHBvaW50Tm90Q29udmVyZ2VkKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFi
bGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNiArNzcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKEpTU3ltYm9sVGFibGVPYmplY3Rfc3ltYm9sVGFibGUsIEpTU3ltYm9sVGFibGVPYmplY3Q6
Om9mZnNldE9mU3ltYm9sVGFibGUoKSkgXAogICAgIG1hY3JvKEpTV3JhcHBlck9iamVjdF9pbnRl
cm5hbFZhbHVlLCBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWVPZmZzZXQoKSkgXAogICAg
IG1hY3JvKE1hcmtlZEFsbG9jYXRvcl9mcmVlTGlzdEhlYWQsIE1hcmtlZEFsbG9jYXRvcjo6b2Zm
c2V0T2ZGcmVlTGlzdEhlYWQoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hl
ZFJlc3VsdF9sYXN0UmVnRXhwLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1
bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkpIFwKKyAgICBt
YWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdElucHV0LCBSZWdFeHBDb25z
dHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zm
c2V0T2ZMYXN0SW5wdXQoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJl
c3VsdF9yZXN1bHRfc3RhcnQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3Vs
dCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNF
VE9GKE1hdGNoUmVzdWx0LCBzdGFydCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9j
YWNoZWRSZXN1bHRfcmVzdWx0X2VuZCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVk
UmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIGVuZCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rv
cl9jYWNoZWRSZXN1bHRfcmVpZmllZCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVk
UmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSBcCiAgICAg
bWFjcm8oUmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJ
bmRleCgpKSBcCiAgICAgbWFjcm8oUmVnRXhwT2JqZWN0X2xhc3RJbmRleElzV3JpdGFibGUsIFJl
Z0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXhJc1dyaXRhYmxlKCkpIFwKICAgICBtYWNybyhT
Y29wZWRBcmd1bWVudHNfb3ZlcnJvZGVUaGluZ3MsIFNjb3BlZEFyZ3VtZW50czo6b2Zmc2V0T2ZP
dmVycm9kZVRoaW5ncygpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsy
MjgsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2Fz
ZSBTdHJpbmdSZXBsYWNlOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAg
IGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2Fj
aGVkUmVzdWx0OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShy
ZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzOCw2ICs5MzgsOSBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgICAgIGNvbXBpbGVT
ZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKKyAgICAgICAgICAgIGNvbXBpbGVSZWNvcmRS
ZWdFeHBDYWNoZWRSZXN1bHQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
UGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtMzcxNiwzMiArMzcxOSw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVi
bGljTGVuZ3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAg
ICAgICAgICAgICBtX291dC5zdG9yZTMyKHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBz
LkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
aGFzRG91YmxlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgTEJh
c2ljQmxvY2sgaW5pdExvb3AgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGluaXREb25lID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5j
aG9yKHZlY3Rvckxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2lu
YWxQb2ludGVyID0gbV9vdXQuYW5jaG9yKGJ1dHRlcmZseSk7Ci0gICAgICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIodmVjdG9yTGVu
Z3RoKSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oaW5pdExvb3AsIGluaXREb25lKTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgaW5kZXgg
PSBtX291dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOwotICAgICAgICAgICAgICAg
IExWYWx1ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQb2ludGVy
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KAotICAg
ICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQ
TmFOKSksCi0gICAgICAgICAgICAgICAgICAgIFR5cGVkUG9pbnRlcihtX2hlYXBzLmluZGV4ZWRE
b3VibGVQcm9wZXJ0aWVzLmF0QW55SW5kZXgoKSwgcG9pbnRlcikpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5zdWIoaW5kZXgsIG1f
b3V0LmludDMyT25lKTsKLSAgICAgICAgICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKGlu
ZGV4LCBtX291dC5hbmNob3IobmV4dEluZGV4KSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYWRk
SW5jb21pbmdUb1BoaShwb2ludGVyLCBtX291dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1f
b3V0LmludFB0ckVpZ2h0KSkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAg
ICAgICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKG5leHRJbmRleCksIHVuc3VyZShpbml0TG9v
cCksIHVuc3VyZShpbml0RG9uZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGluaXREb25lLCBpbml0TGFzdE5leHQpOwotICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhtX25vZGUtPmluZGV4aW5nVHlw
ZSgpLCB2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3Iob2JqZWN0KTsKICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTYyODYsMTEgKzYyNjUsMjEgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gTG93ZXIgdGhlIHZhbHVlcyBmaXJzdCwgdG8gYXZvaWQgY3Jl
YXRpbmcgdmFsdWVzIGluc2lkZSBhIGNvbnRyb2wgZmxvdyBkaWFtb25kLgogICAgICAgICAKICAg
ICAgICAgVmVjdG9yPExWYWx1ZSwgOD4gdmFsdWVzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICB2YWx1
ZXMuYXBwZW5kKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKSkp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCAxICsgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEubV9wcm9wZXJ0aWVzW2ld
LmtpbmQoKSkgeworICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAg
ICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQo
bG93SW50MzIoZWRnZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0pTVmFsdWUoZWRnZSkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCA9IG1fbm9kZS0+c3RydWN0dXJlU2V0
KCk7Ci0gICAgICAgIAorCiAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaywgMT4gYmxvY2tzKHNl
dC5zaXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBpLS07KQog
ICAgICAgICAgICAgYmxvY2tzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTYzMTUsMjEgKzYz
MDQsNTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBvYmplY3Q7CiAgICAgICAgICAg
ICBMVmFsdWUgYnV0dGVyZmx5OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpIHx8IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0g
SlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgp
KTsKICAgICAgICAgICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9ICZ2bSgpLmhl
YXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOwor
CisgICAgICAgICAgICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGluZGV4aW5nSGVhZGVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4
aW5nUGF5bG9hZFNpemVJbkJ5dGVzID0gbV9vdXQuaW50UHRyWmVybzsKKyAgICAgICAgICAgICAg
ICBMVmFsdWUgdmVjdG9yTGVuZ3RoID0gbV9vdXQuaW50MzJaZXJvOworICAgICAgICAgICAgICAg
IExWYWx1ZSBwdWJsaWNMZW5ndGggPSBtX291dC5pbnQzMlplcm87CisgICAgICAgICAgICAgICAg
aWYgKGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nSGVh
ZGVyU2l6ZSA9IHNpemVvZihJbmRleGluZ0hlYWRlcik7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9
IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChk
ZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQdWJsaWNM
ZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY0xlbmd0aCA9IHZh
bHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZWN0b3JMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nUGF5bG9hZFNp
emVJbkJ5dGVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lm11bChtX291dC56ZXJv
RXh0UHRyKHZlY3Rvckxlbmd0aCksIG1fb3V0LmludFB0ckVpZ2h0KTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBMVmFsdWUgYnV0dGVyZmx5U2l6ZSA9IG1fb3V0LmFkZCgK
KyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkg
KyBpbmRleGluZ0hlYWRlclNpemUpLAorICAgICAgICAgICAgICAgICAgICBpbmRleGluZ1BheWxv
YWRTaXplSW5CeXRlcyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTEJhc2lj
QmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdC
bG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IExWYWx1ZSBlbmRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUJhc2ljU3RvcmFnZUFuZEdldEVuZCgKLSAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpKSwKLSAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGgpOwotICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIExWYWx1ZSBlbmRPZlN0b3Jh
Z2UgPSBhbGxvY2F0ZUJhc2ljU3RvcmFnZUFuZEdldEVuZChidXR0ZXJmbHlTaXplLCBzbG93UGF0
aCk7CisKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRlcmZseVZhbHVlID0gbV9vdXQu
YWRkKAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhp
bmdIZWFkZXIpKSwgZW5kT2ZTdG9yYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3Vi
KGVuZE9mU3RvcmFnZSwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpLAorICAgICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhpbmdIZWFkZXIpIC0gaW5kZXhp
bmdIZWFkZXJTaXplKSk7CisKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHZlY3Rvckxl
bmd0aCwgZmFzdEJ1dHRlcmZseVZhbHVlLCBtX2hlYXBzLkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0T2JqZWN0VmFs
dWUgPSBhbGxvY2F0ZU9iamVjdCgKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQ
dHIoYWxsb2NhdG9yKSwgc3RydWN0dXJlLCBmYXN0QnV0dGVyZmx5VmFsdWUsIHNsb3dQYXRoKTsK
QEAgLTYzNDAsMTIgKzYzNTksMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKIAotICAg
ICAgICAgICAgICAgIExWYWx1ZSBzbG93T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCi0gICAg
ICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAt
PiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGly
ZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICBMVmFsdWUgc2xvd09iamVjdFZhbHVlOworICAgICAgICAgICAgICAgIGlmIChoYXNJ
bmRleGluZ0hlYWRlcikgeworICAgICAgICAgICAgICAgICAgICBzbG93T2JqZWN0VmFsdWUgPSBs
YXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxM
b2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJh
dG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RX
aXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd09iamVjdFZhbHVlID0gbGF6
eVNsb3dQYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9j
YXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRv
cigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0
aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd09iamVjdCA9IG1fb3V0LmFuY2hvcihzbG93T2JqZWN0
VmFsdWUpOwogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dCdXR0ZXJmbHkgPSBt
X291dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoc2xvd09iamVj
dFZhbHVlLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRlcmZseSkpOwpAQCAtNjM1Niw2ICs2Mzg3LDEx
MyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG9iamVjdCA9
IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RPYmplY3QsIHNsb3dPYmplY3QpOwogICAgICAg
ICAgICAgICAgIGJ1dHRlcmZseSA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RCdXR0ZXJm
bHksIHNsb3dCdXR0ZXJmbHkpOworCisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihwdWJs
aWNMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKKwor
ICAgICAgICAgICAgICAgIGluaXRpYWxpemVBcnJheUVsZW1lbnRzKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCksIHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5KTsKKworICAgICAgICAgICAgICAgIEhh
c2hNYXA8CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QsIExWYWx1ZSwgRGVmYXVsdEhhc2g8
aW50MzJfdD46Okhhc2gsCisgICAgICAgICAgICAgICAgICAgIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8aW50MzJfdD4+IGluZGV4TWFwOworICAgICAgICAgICAgICAgIFZlY3Rv
cjxpbnQzMl90PiBpbmRpY2VzOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRh
dGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICBQcm9t
b3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07
CisgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmtpbmQoKSAhPSBJbmRleGVkUHJv
cGVydHlQTG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIGludDMyX3QgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQzMl90PihkZXNjcmlwdG9y
LmluZm8oKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IGluZGV4TWFwLmFkZChpbmRleCwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIHJlc3VsdCk7IC8vIER1cGxpY2F0ZXMg
YXJlIGlsbGVnYWwuCisKKyAgICAgICAgICAgICAgICAgICAgaW5kaWNlcy5hcHBlbmQoaW5kZXgp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghaW5kaWNlcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzb3J0KGluZGljZXMuYmVnaW4oKSwg
aW5kaWNlcy5lbmQoKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBWZWN0b3I8TEJhc2ljQmxvY2s+IGJsb2Nrc1dpdGhTdG9yZXMoaW5kaWNlcy5zaXplKCkpOwor
ICAgICAgICAgICAgICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2s+IGJsb2Nrc1dpdGhDaGVja3Mo
aW5kaWNlcy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gaW5kaWNlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2Nrc1dpdGhTdG9yZXNbaV0gPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYmxvY2tzV2l0aENoZWNrc1tpXSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7IC8vIGJsb2Nrc1dpdGhDaGVja3NbMF0gaXMgdGhlIGNvbnRpbnVhdGlvbi4KKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluZGV4TGFz
dE5leHQgPSBtX291dC5tX25leHRCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGluZGV4ID0gaW5kaWNlc1tpXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGluZGV4TWFwLmdldChpbmRleCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJy
YW5jaCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5iZWxvdyhtX291dC5jb25z
dEludDMyKGluZGV4KSwgcHVibGljTGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnN1cmUoYmxvY2tzV2l0aFN0b3Jlc1tpXSksIHVuc3VyZShibG9ja3NXaXRoQ2hlY2tzW2ld
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1dpdGhT
dG9yZXNbaV0sIGJsb2Nrc1dpdGhDaGVja3NbaV0pOworCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGhhcyB0byB0eXBlLWNoZWNrIGFuZCBjb252ZXJ0IGl0cyBpbnB1dHMsIGJ1dCBp
dCBjYW5ub3QgZG8gc28gaW4gYQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2F5IHRoYXQg
dXBkYXRlcyBBSS4gVGhhdCdzIGEgYml0IGFubm95aW5nLCBidXQgaWYgeW91IHRoaW5rIGFib3V0
IGhvdworICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lua2luZyB3b3JrcywgaXQncyBhY3R1
YWxseSBub3QgYSBiYWQgdGhpbmcuIFdlIGFyZSB2aXJ0dWFsbHkgZ3VhcmFudGVlZAorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGVzZSB0eXBlIGNoZWNrcyB3aWxsIG5vdCBmYWls
LCBzaW5jZSB0aGUgdHlwZSBjaGVja3MgdGhhdCBndWFyZGVkCisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB0aGUgb3JpZ2luYWwgc3RvcmVzIHRvIHRoZSBhcnJheSBhcmUgc3RpbGwgc29tZXdo
ZXJlIGFib3ZlIHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6OlN0
b3JlVHlwZSBzdG9yZVR5cGU7CisgICAgICAgICAgICAgICAgICAgICAgICBJbmRleGVkQWJzdHJh
Y3RIZWFwKiBoZWFwOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9JTlQz
Ml9JTkRFWElOR19UWVBFUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBjb3VsZCB1c2UgdGhlIHByb3ZlbiB0eXBlIGlmIHdlIGhhZCB0aGUgRWRnZSBmb3IgdGhl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzcGVjdWxhdGUoQmFkVHlwZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBpc05vdEludDMyKHZhbHVl
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9y
ZTY0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRleGVk
SW50MzJQcm9wZXJ0aWVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSWYgdGhlIHNvdXJjZSBpcyBW
YWx1ZVJlcCwgd2Ugc2hvdWxkIGF2b2lkIGVtaXR0aW5nIGFueQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNoZWNrcy4gV2UgY291bGQgYWxzbyBhdm9pZCBlbWl0dGluZyBjaGVja3Mg
aWYgd2UgaGFkIHRoZSBFZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhp
cyB2YWx1ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTMxMQor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW50Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgZG91
YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHZhbHVlKSwgdW5zdXJlKGlu
dENhc2UpLCB1bnN1cmUoZG91YmxlQ2FzZSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbnRDYXNlLCBkb3VibGVD
YXNlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGludFJl
c3VsdCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFuY2hvcihtX291
dC5pbnRUb0RvdWJsZSh1bmJveEludDMyKHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwgbm9WYWx1ZSgpLCBudWxs
cHRyLCBpc051bWJlcih2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGRvdWJsZVJlc3VsdCA9IG1fb3V0LmFuY2hvcih1bmJveERvdWJsZSh2YWx1ZSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbV9vdXQu
cGhpKERvdWJsZSwgaW50UmVzdWx0LCBkb3VibGVSZXN1bHQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmVEb3VibGU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVY
SU5HX1RZUEVTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1
dDo6U3RvcmU2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMu
aW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJJbnZhbGlkIGluZGV4
aW5nIHR5cGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuc3RvcmUodmFsdWUsIG1fb3V0LmFkZHJlc3MoYnV0dGVyZmx5LCBo
ZWFwLT5hdChpbmRleCkpLCBzdG9yZVR5cGUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBt
X291dC5qdW1wKGJsb2Nrc1dpdGhDaGVja3NbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzV2l0aENo
ZWNrc1tpXSwgaSA/IGJsb2Nrc1dpdGhTdG9yZXNbaSAtIDFdIDogaW5kZXhMYXN0TmV4dCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIC8vIEluIHRoZSBlYXN5IGNhc2Ugd2hlcmUgd2UgY2FuIGRv
IGEgb25lLXNob3QgYWxsb2NhdGlvbiwgd2Ugc2ltcGx5IGFsbG9jYXRlIHRoZQogICAgICAgICAg
ICAgICAgIC8vIG9iamVjdCB0byBkaXJlY3RseSBoYXZlIHRoZSBkZXNpcmVkIHN0cnVjdHVyZS4K
QEAgLTYzNjUsMTIgKzY1MDMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZm9yIChQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVz
Q29uY3VycmVudGx5KCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRh
Lm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICAgICAgUGhhbnRv
bVByb3BlcnR5VmFsdWUgdmFsdWUgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguaWRlbnRpZmllcnMoKVt2YWx1ZS5tX2lkZW50aWZpZXJOdW1i
ZXJdICE9IGVudHJ5LmtleSkKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAg
ICAgICAgICBpZiAoZGVzY3JpcHRvci5raW5kKCkgIT0gTmFtZWRQcm9wZXJ0eVBMb2MpCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGguaWRlbnRpZmllcnMoKVtkZXNjcmlwdG9yLmluZm8oKV0gIT0gZW50cnkua2V5KQogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGlzSW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNl
dCkgPyBvYmplY3QgOiBidXR0ZXJmbHk7Ci0gICAgICAgICAgICAgICAgICAgIHN0b3JlUHJvcGVy
dHkodmFsdWVzW2ldLCBiYXNlLCB2YWx1ZS5tX2lkZW50aWZpZXJOdW1iZXIsIGVudHJ5Lm9mZnNl
dCk7CisgICAgICAgICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkodmFsdWVzW2ldLCBiYXNlLCBk
ZXNjcmlwdG9yLmluZm8oKSwgZW50cnkub2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNjQzNSw5ICs2NTc1LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBhY3RpdmF0aW9uID0gbV9vdXQucGhpKG1fb3V0
LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKSA9PSB0YWJsZS0+c2NvcGVTaXplKCkpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWVzW2ldLAotICAgICAgICAgICAgICAg
IGFjdGl2YXRpb24sCi0gICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3Jk
X3ZhcmlhYmxlc1tkYXRhLm1fcHJvcGVydGllc1tpXS5tX2lkZW50aWZpZXJOdW1iZXJdKTsKKyAg
ICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1f
cHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9PSBD
bG9zdXJlVmFyUExvYyk7CisgICAgICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAg
ICAgIHZhbHVlc1tpXSwgYWN0aXZhdGlvbiwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLkpTRW52
aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzW2Rlc2NyaXB0b3IuaW5mbygpXSk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewpAQCAtNjQ0Niw3ICs2NTg4LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKGxv
Y2tlciksIGVuZCA9IHRhYmxlLT5lbmQobG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewog
ICAgICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkg
PT0gZGF0YS5tX3Byb3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1f
cHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRlc2NyaXB0b3Iua2lu
ZCgpID09IENsb3N1cmVWYXJQTG9jKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZh
bHVlLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgPT0gZGVzY3JpcHRvci5pbmZvKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC02NjEzLDYgKzY3NTcsMjkgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgcmVnRXhwLCBtX2hlYXBzLlJlZ0V4
cE9iamVjdF9sYXN0SW5kZXgpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZVJlY29yZFJlZ0V4
cENhY2hlZFJlc3VsdCgpCisgICAgeworICAgICAgICBFZGdlIGNvbnN0cnVjdG9yRWRnZSA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKTsKKyAgICAgICAgRWRnZSByZWdFeHBFZGdlID0g
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpOworICAgICAgICBFZGdlIHN0cmluZ0VkZ2Ug
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMik7CisgICAgICAgIEVkZ2Ugc3RhcnRFZGdl
ID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpOworICAgICAgICBFZGdlIGVuZEVkZ2Ug
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgNCk7CisgICAgICAgIAorICAgICAgICBMVmFs
dWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKGNvbnN0cnVjdG9yRWRnZSk7CisgICAgICAgIExWYWx1
ZSByZWdFeHAgPSBsb3dDZWxsKHJlZ0V4cEVkZ2UpOworICAgICAgICBMVmFsdWUgc3RyaW5nID0g
bG93Q2VsbChzdHJpbmdFZGdlKTsKKyAgICAgICAgTFZhbHVlIHN0YXJ0ID0gbG93SW50MzIoc3Rh
cnRFZGdlKTsKKyAgICAgICAgTFZhbHVlIGVuZCA9IGxvd0ludDMyKGVuZEVkZ2UpOworCisgICAg
ICAgIG1fb3V0LnN0b3JlUHRyKHJlZ0V4cCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29u
c3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RSZWdFeHApOworICAgICAgICBtX291dC5zdG9yZVB0
cihzdHJpbmcsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJl
c3VsdF9sYXN0SW5wdXQpOworICAgICAgICBtX291dC5zdG9yZTMyKHN0YXJ0LCBjb25zdHJ1Y3Rv
ciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0KTsK
KyAgICAgICAgbV9vdXQuc3RvcmUzMihlbmQsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENv
bnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZXN1bHRfZW5kKTsKKyAgICAgICAgbV9vdXQuc3RvcmUz
MkFzOCgKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoMCksCisgICAgICAgICAgICBtX291
dC5hZGRyZXNzKGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJl
c3VsdF9yZWlmaWVkKSk7CisgICAgfQorCiAgICAgTFZhbHVlIGRpZE92ZXJmbG93U3RhY2soKQog
ICAgIHsKICAgICAgICAgLy8gVGhpcyBkb2VzIGEgdmVyeSBzaW1wbGUgbGVhZiBmdW5jdGlvbiBh
bmFseXNpcy4gVGhlIGludmFyaWFudCBvZiBGVEwgY2FsbApAQCAtNjk3MCw2ICs3MTM3LDM5IEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKworICAg
IHZvaWQgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMoSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwg
TFZhbHVlIHZlY3Rvckxlbmd0aCwgTFZhbHVlIGJ1dHRlcmZseSkKKyAgICB7CisgICAgICAgIGlm
ICghaGFzRG91YmxlKGluZGV4aW5nVHlwZSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBHQyBhbHJl
YWR5IGluaXRpYWxpemVkIGV2ZXJ5dGhpbmcgdG8gSlNWYWx1ZSgpIGZvciB1cy4KKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERvdWJsZXMgbXVzdCBiZSBpbml0
aWFsaXplZCB0byBQTmFOLgorICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGluaXREb25lID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291
dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxQ
b2ludGVyID0gbV9vdXQuYW5jaG9yKGJ1dHRlcmZseSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgK
KyAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExv
b3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKKyAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGlu
aXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7CisgICAgICAg
IExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgb3JpZ2luYWxJbmRleCk7Cisg
ICAgICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQ
b2ludGVyKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICBt
X291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksCisgICAgICAgICAg
ICBUeXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFueUluZGV4
KCksIHBvaW50ZXIpKTsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291
dC5zdWIoaW5kZXgsIG1fb3V0LmludDMyT25lKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdU
b1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRleCkpOworICAgICAgICBtX291dC5hZGRJ
bmNvbWluZ1RvUGhpKHBvaW50ZXIsIG1fb3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRlciwgbV9v
dXQuaW50UHRyRWlnaHQpKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1f
b3V0Lm5vdFplcm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERv
bmUpKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGluaXREb25lLCBpbml0TGFz
dE5leHQpOworICAgIH0KICAgICAKICAgICBMVmFsdWUgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uo
TFZhbHVlIG9iamVjdCwgU3RydWN0dXJlKiBwcmV2aW91c1N0cnVjdHVyZSkKICAgICB7CkBAIC05
MjU3LDcgKzk0NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAg
ICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25aZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVy
KTsKICAgICB9Ci0gICAgCisKICAgICBMVmFsdWUgdW5ib3hEb3VibGUoTFZhbHVlIGpzVmFsdWUp
CiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuYml0Q2FzdChtX291dC5hZGQoanNWYWx1ZSwg
bV90YWdUeXBlTnVtYmVyKSwgbV9vdXQuZG91YmxlVHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDE5ICs0MSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzo6REZHOwogCi1leHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgCi0gICAgQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKLSAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIEluZGV4aW5nSGVhZGVyKCksIDAp
OwotICAgIAotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwotICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVu
c3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQogZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVP
YmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxp
emF0aW9uKiBtYXRlcmlhbGl6YXRpb24sCiAgICAgRW5jb2RlZEpTVmFsdWUqIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUqIHZhbHVlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBA
QCBjbGFzcyBMYXp5U2xvd1BhdGg7CiAKIGV4dGVybiAiQyIgewogCi1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqKSBXVEZfSU5URVJOQUw7Ci0KIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRl
cmlhbGl6ZU9iamVjdEluT1NSKAogICAgIEV4ZWNTdGF0ZSosIEV4aXRUaW1lT2JqZWN0TWF0ZXJp
YWxpemF0aW9uKiwgRW5jb2RlZEpTVmFsdWUqKSBXVEZfSU5URVJOQUw7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTk3OTgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtOTYsNiArOTYsMTAgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCisgICAgLy8gVGhpcyBpcyBhIHN1cGVyIGRh
bmdlcm91cyBtZXRob2QgZm9yIEpJVHMuIFNvbWV0aW1lcyB0aGUgSklUcyB3aWxsIHdhbnQgdG8g
Y3JlYXRlIGVpdGhlciBhCisgICAgLy8gSlNGaW5hbE9iamVjdCBvciBhIEpTQXJyYXkuIFRoaXMg
aXMgdGhlIG1ldGhvZCB0aGF0IHdpbGwgZG8gdGhhdC4KKyAgICBzdGF0aWMgSlNPYmplY3QqIGNy
ZWF0ZVJhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0
ZXJmbHkqID0gbnVsbHB0cik7CisKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgc2l6ZV90
IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGNvcHlCYWNraW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3Im
LCBDb3B5VG9rZW4pOwpAQCAtMTAzNCw2ICsxMDM4LDIwIEBAIHByaXZhdGU6CiAKIEpTX0VYUE9S
VF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJpdmF0ZUZ1bmNJ
bnN0YW5jZU9mKEV4ZWNTdGF0ZSopOwogCitpbmxpbmUgSlNPYmplY3QqIEpTT2JqZWN0OjpjcmVh
dGVSYXdPYmplY3QoCisgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QnV0dGVyZmx5KiBidXR0ZXJmbHkpCit7CisgICAgSlNPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3
ICgKKyAgICAgICAgTm90TnVsbCwgCisgICAgICAgIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsT2JqZWN0
PigKKyAgICAgICAgICAgICpleGVjLT5oZWFwKCksCisgICAgICAgICAgICBKU0ZpbmFsT2JqZWN0
OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpCisgICAgICAgICkK
KyAgICApIEpTT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICBm
aW5hbE9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgcmV0dXJuIGZpbmFs
T2JqZWN0OworfQorCiBpbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRl
KAogICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSog
YnV0dGVyZmx5KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
Y3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsNiArMjYyLDggQEAgUmVnRXhwKiBSZWdF
eHA6OmNyZWF0ZShWTSYgdm0sIGNvbnN0IFN0cgogCiB2b2lkIFJlZ0V4cDo6Y29tcGlsZShWTSog
dm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKKyAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4o
bV9wYXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiAgICAgaWYg
KG1fY29uc3RydWN0aW9uRXJyb3IpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTI5OSw4ICszMDEsMjIgQEAgaW50IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25z
dCBTdHJpbmcmIAogICAgIHJldHVybiBtYXRjaElubGluZSh2bSwgcywgc3RhcnRPZmZzZXQsIG92
ZWN0b3IpOwogfQogCitib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoCisgICAgVk0mIHZt
LCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBW
ZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKworICAgIGlmICghaGFzQ29kZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hh
cjggOiBZYXJyOjpDaGFyMTYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwb3NpdGlv
biA9IG1hdGNoKHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWFycjo6WWFyckNo
YXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcs
IG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25F
cnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzM4LDgg
KzM1NCwyMSBAQCBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgCiAgICAg
cmV0dXJuIG1hdGNoSW5saW5lKHZtLCBzLCBzdGFydE9mZnNldCk7CiB9CiAKK2Jvb2wgUmVnRXhw
OjptYXRjaENvbmN1cnJlbnRseShWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIE1hdGNoUmVzdWx0JiByZXN1bHQpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmICghaGFzTWF0Y2hPbmx5Q29kZUZvcihzLmlzOEJp
dCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXN1bHQgPSBtYXRjaCh2bSwgcywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiB0
cnVlOworfQorCiB2b2lkIFJlZ0V4cDo6ZGVsZXRlQ29kZSgpCiB7CisgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBpZiAoIWhhc0NvZGUoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBOb3RDb21waWxlZDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIs
NyBAQAogI2lmbmRlZiBSZWdFeHBfaAogI2RlZmluZSBSZWdFeHBfaAogCisjaW5jbHVkZSAiQ29u
Y3VycmVudEpJVExvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5j
bHVkZSAiTWF0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKQEAgLTU2LDYgKzU3
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3MgJiBGbGFnSWdub3JlQ2FzZTsgfQogICAgIGJvb2wgbXVsdGlsaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9mbGFncyAmIEZsYWdNdWx0aWxpbmU7IH0KICAgICBib29sIHN0aWNreSgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3MgJiBGbGFnU3RpY2t5OyB9CisgICAgYm9vbCBnbG9iYWxPclN0aWNreSgp
IGNvbnN0IHsgcmV0dXJuIGdsb2JhbCgpIHx8IHN0aWNreSgpOyB9CiAgICAgYm9vbCB1bmljb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdVbmljb2RlOyB9CiAKICAgICBjb25zdCBT
dHJpbmcmIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KQEAgLTY0
LDggKzY2LDE0IEBAIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoKSBjb25z
dCB7IHJldHVybiBtX2NvbnN0cnVjdGlvbkVycm9yOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBpbnQgbWF0Y2goVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVj
dG9yPGludCwgMzI+JiBvdmVjdG9yKTsKKworICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2UgY291
bGRuJ3QgcnVuIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gZm9yIGFueSByZWFzb24uCisgICAgYm9v
bCBtYXRjaENvbmN1cnJlbnRseShWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOworICAgIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIE1hdGNoUmVzdWx0IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwg
dW5zaWduZWQgc3RhcnRPZmZzZXQpOwogCisgICAgYm9vbCBtYXRjaENvbmN1cnJlbnRseShWTSYs
IGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYpOworCiAg
ICAgLy8gQ2FsbCB0aGVzZSB2ZXJzaW9ucyBvZiB0aGUgbWF0Y2ggZnVuY3Rpb25zIGlmIHlvdSdy
ZSBkZXNwZXJhdGUgZm9yIHBlcmZvcm1hbmNlLgogICAgIGludCBtYXRjaElubGluZShWTSYsIGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0
b3IpOwogICAgIE1hdGNoUmVzdWx0IG1hdGNoSW5saW5lKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5z
aWduZWQgc3RhcnRPZmZzZXQpOwpAQCAtNzcsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3N0YXRlICE9IE5vdENvbXBpbGVkOwogICAgIH0KIAorICAgIGJvb2wgaGFzQ29kZUZv
cihZYXJyOjpZYXJyQ2hhclNpemUpOworICAgIGJvb2wgaGFzTWF0Y2hPbmx5Q29kZUZvcihZYXJy
OjpZYXJyQ2hhclNpemUpOworCiAgICAgdm9pZCBkZWxldGVDb2RlKCk7CiAKICNpZiBFTkFCTEUo
UkVHRVhQX1RSQUNJTkcpCkBAIC0xMzIsNiArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX3J0TWF0Y2hDYWxsQ291bnQ7CiAgICAgdW5zaWduZWQgbV9ydE1hdGNoRm91bmRDb3VudDsK
ICNlbmRpZgorICAgIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKIAogI2lmIEVOQUJMRShZQVJS
X0pJVCkKICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrIG1fcmVnRXhwSklUQ29kZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5o
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDYWNoZWRSZXN1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTEgQEAgcHVibGlj
OgogCiAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKKyAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mTGFzdFJlZ0V4cCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihS
ZWdFeHBDYWNoZWRSZXN1bHQsIG1fbGFzdFJlZ0V4cCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mTGFzdElucHV0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENhY2hl
ZFJlc3VsdCwgbV9sYXN0SW5wdXQpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJl
c3VsdCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fcmVz
dWx0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZWlmaWVkKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKFJlZ0V4cENhY2hlZFJlc3VsdCwgbV9yZWlmaWVkKTsgfQorCiBwcml2
YXRlOgogICAgIE1hdGNoUmVzdWx0IG1fcmVzdWx0OwogICAgIGJvb2wgbV9yZWlmaWVkOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw4IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ29uc3RydWN0b3IsIG1fY2FjaGVkUmVzdWx0KTsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFJlZ0V4cFByb3RvdHlw
ZSosIEdldHRlclNldHRlciogc3BlY2llcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjcsMjAgKzY3LDI3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmIC8vIFJFR0VYUF9GVU5DX1RF
U1RfREFUQV9HRU4KIAotQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNz
YXJ5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQorQUxXQVlTX0lOTElORSBi
b29sIFJlZ0V4cDo6aGFzQ29kZUZvcihZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7CiAg
ICAgaWYgKGhhc0NvZGUoKSkgewogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICAgICAgaWYgKG1f
c3RhdGUgIT0gSklUQ29kZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdF
eHBKSVRDb2RlLmhhczhCaXRDb2RlKCkpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjE2KSAm
JiAobV9yZWdFeHBKSVRDb2RlLmhhczE2Qml0Q29kZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FM
V0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6
OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK3sKKyAgICBpZiAoaGFzQ29kZUZvcihjaGFyU2l6ZSkp
CisgICAgICAgIHJldHVybjsKIAogICAgIGNvbXBpbGUoJnZtLCBjaGFyU2l6ZSk7CiB9CkBAIC0x
NTIsMjEgKzE1OSwyOSBAQCBBTFdBWVNfSU5MSU5FIGludCBSZWdFeHA6Om1hdGNoSW5saW5lKFZN
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29t
cGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJT
aXplKQorQUxXQVlTX0lOTElORSBib29sIFJlZ0V4cDo6aGFzTWF0Y2hPbmx5Q29kZUZvcihZYXJy
OjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7CiAgICAgaWYgKGhhc0NvZGUoKSkgewogI2lmIEVO
QUJMRShZQVJSX0pJVCkKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gSklUQ29kZSkKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJT
aXplID09IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczhCaXRDb2RlTWF0Y2hP
bmx5KCkpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2Rl
LmhhczE2Qml0Q29kZU1hdGNoT25seSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICNlbmRpZgogICAgIH0KIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lO
TElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KFZNJiB2bSwgWWFy
cjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQoreworICAgIGlmIChoYXNNYXRjaE9ubHlDb2RlRm9y
KGNoYXJTaXplKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgY29tcGlsZU1hdGNoT25seSgmdm0s
IGNoYXJTaXplKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw2ICs1Niw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0
Y2gKICAgICAKICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CiAgICAgaW50
IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGluZSh2bSwgaW5wdXRWYWx1ZSwgc3RhcnRPZmZz
ZXQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICBBU1NFUlQocG9zaXRpb24gPT0gc3VicGF0dGVy
blJlc3VsdHNbMF0pOwogICAgIGlmIChwb3NpdGlvbiA9PSAtMSkgewogICAgICAgICByZXN1bHQg
PSBNYXRjaFJlc3VsdDo6ZmFpbGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGlu
ZXMuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIEpT
VmFsdWUgUmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKEV4ZWNTdGEKICAgICBTdHJpbmcgaW5wdXQg
PSBzdHJpbmctPnZhbHVlKGV4ZWMpOyAvLyBGSVhNRTogSGFuZGxlIGVycm9ycy4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTE0NQogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKIAotICAgIGJvb2wgZ2xvYmFsT3JTdGlja3kgPSByZWdFeHAtPmdsb2Jh
bCgpIHx8IHJlZ0V4cC0+c3RpY2t5KCk7CisgICAgYm9vbCBnbG9iYWxPclN0aWNreSA9IHJlZ0V4
cC0+Z2xvYmFsT3JTdGlja3koKTsKIAogICAgIHVuc2lnbmVkIGxhc3RJbmRleDsKICAgICBpZiAo
Z2xvYmFsT3JTdGlja3kpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
LWZhaWwuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMSBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiAvKGYpKG8pKG8pLy5l
eGVjKCJiYXIiKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlmIChyZXN1bHQgIT09
IG51bGwpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1l
eGVjLWZvbGRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRp
bmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gZm9vKCkgewor
ICAgIHJldHVybiAvKGYpKG8pKG8pLy5leGVjKCJmb28iKTsKK30KKworbm9JbmxpbmUoZm9vKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZv
bygpOworICAgIGlmIChyZXN1bHQubGVuZ3RoICE9IDQpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzBdICE9ICJmb28iKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3Vs
dFsxXSAhPSAiZiIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsKKyAgICBpZiAocmVzdWx0WzJdICE9ICJvIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1bHRbM10gIT0gIm8iKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1w
bGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWls
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAg
ICByZXR1cm4gLyhmKShvKShvKS8udGVzdCgiYmFyIik7Cit9CisKK25vSW5saW5lKGZvbyk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28o
KTsKKyAgICBpZiAocmVzdWx0ICE9IGZhbHNlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcu
anMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Np
bXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEg
QEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8udGVzdCgiZm9vIik7
Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkg
eworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0ICE9IHRydWUpCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6IFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDE2LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgREZHIGFuZCBGVEwgc2hvdWxkIGNvbnN0YW50LWZvbGQgUmVnRXhwRXhlYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjcwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBleGVj
dXRlSW5zZXJ0aW9ucygpIHJldHVybiB0aGUgYW1vdW50IGJ5IHdoaWNoIHRoZSB2ZWN0b3IgaW5j
cmVhc2VkIGluIHNpemUuIFRoaXMgaXMgYQorICAgICAgICBjb252ZW5pZW50IGZlYXR1cmUgdGhh
dCBJIHVzZSBpbiBERkc6Okluc2VydGlvblNldC4KKworICAgICAgICAqIHd0Zi9JbnNlcnRpb24u
aDoKKyAgICAgICAgKFdURjo6ZXhlY3V0ZUluc2VydGlvbnMpOgorCiAyMDE2LTAzLTEwICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgc3VwcG9y
dCBmb3IgV09GRjIKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9JbnNlcnRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSwxNCAr
NTUsMTUgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFZlY3RvclR5
cGUsIHR5cGVuYW1lIEluc2VydGlvblZlY3RvclR5cGU+Ci12b2lkIGV4ZWN1dGVJbnNlcnRpb25z
KFRhcmdldFZlY3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0aW9uVmVjdG9yVHlwZSYgaW5zZXJ0aW9u
cykKK3NpemVfdCBleGVjdXRlSW5zZXJ0aW9ucyhUYXJnZXRWZWN0b3JUeXBlJiB0YXJnZXQsIElu
c2VydGlvblZlY3RvclR5cGUmIGluc2VydGlvbnMpCiB7Ci0gICAgaWYgKCFpbnNlcnRpb25zLnNp
emUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRhcmdldC5ncm93KHRhcmdldC5zaXplKCkgKyBp
bnNlcnRpb25zLnNpemUoKSk7CisgICAgc2l6ZV90IG51bUluc2VydGlvbnMgPSBpbnNlcnRpb25z
LnNpemUoKTsKKyAgICBpZiAoIW51bUluc2VydGlvbnMpCisgICAgICAgIHJldHVybiAwOworICAg
IHRhcmdldC5ncm93KHRhcmdldC5zaXplKCkgKyBudW1JbnNlcnRpb25zKTsKICAgICBzaXplX3Qg
bGFzdEluZGV4ID0gdGFyZ2V0LnNpemUoKTsKICAgICBzaXplX3Qgb3JpZ2luYWxUYXJnZXRTaXpl
ID0gdGFyZ2V0LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpbmRleEluSW5zZXJ0aW9ucyA9IGlu
c2VydGlvbnMuc2l6ZSgpOyBpbmRleEluSW5zZXJ0aW9ucy0tOykgeworICAgIGZvciAoc2l6ZV90
IGluZGV4SW5JbnNlcnRpb25zID0gbnVtSW5zZXJ0aW9uczsgaW5kZXhJbkluc2VydGlvbnMtLTsp
IHsKICAgICAgICAgQVNTRVJUKCFpbmRleEluSW5zZXJ0aW9ucyB8fCBpbnNlcnRpb25zW2luZGV4
SW5JbnNlcnRpb25zXS5pbmRleCgpID49IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnMgLSAx
XS5pbmRleCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChvcmlnaW5hbFRhcmdldFNpemUsIGlu
c2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4KCkgPCBvcmlnaW5hbFRhcmdldFNpemUp
OwogICAgICAgICBzaXplX3QgZmlyc3RJbmRleCA9IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlv
bnNdLmluZGV4KCkgKyBpbmRleEluSW5zZXJ0aW9uczsKQEAgLTczLDYgKzc0LDcgQEAgdm9pZCBl
eGVjdXRlSW5zZXJ0aW9ucyhUYXJnZXRWZWN0b3JUeXBlJgogICAgICAgICBsYXN0SW5kZXggPSBm
aXJzdEluZGV4OwogICAgIH0KICAgICBpbnNlcnRpb25zLnJlc2l6ZSgwKTsKKyAgICByZXR1cm4g
bnVtSW5zZXJ0aW9uczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxOTc5ODEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI3MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qczogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZv
bGRpbmcuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBs
ZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy1mYWlsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUt
cmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmctZmFpbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1y
ZWdleHAtdGVzdC1mb2xkaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTEwICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBUZXN0IGdh
cmRlbmluZyBhZnRlciByMTk3OTMzCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVj
LWZvbGRpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pT
UmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
LWZhaWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRp
bmctZmFpbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRp
b24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9s
ZGluZy1mYWlsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
IEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3Qt
Zm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLWZhaWwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8g
ZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmctZmFpbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFp
bC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
b3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxl
LXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisoZnVuY3Rpb24oKSB7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgICAgIC9mb28vLmV4ZWMoImJhciIp
OworfSkoKTsKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVn
ZXhwLWV4ZWMtZm9sZGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKyhmdW5j
dGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAg
L2Zvby8uZXhlYygiZm9vIik7Cit9KSgpOworCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICAvZm9vLy50ZXN0KCJiYXIiKTsKK30pKCk7
CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisoZnVuY3Rpb24oKSB7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgICAgIC9mb28vLnRl
c3QoImZvbyIpOworfSkoKTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273691</attachid>
            <date>2016-03-10 23:10:08 -0800</date>
            <delta_ts>2016-03-10 23:58:34 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>129556</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MyBA
QAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMsIFJlZ0V4cFRlc3Qs
IGFuZCBTdHJpbmdSZXBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGVuYWJsZXMgY29uc3RhbnQtZm9sZGluZyBvZiBSZWdFeHBFeGVjLCBS
ZWdFeHBUZXN0LCBhbmQgU3RyaW5nUmVwbGFjZS4KKworICAgICAgICBJdCdzIG5vdyBwb3NzaWJs
ZSB0byBydW4gWWFyciBvbiB0aGUgSklUIHRocmVhZHMuIFNpbmNlIHByZXZpb3VzIHdvcmsgb24g
Y29uc3RhbnQtZm9sZGluZworICAgICAgICBzdHJpbmdzIGdhdmUgdGhlIERGRyBhbiBBUEkgZm9y
IHJlYXNvbmluZyBhYm91dCBKU1N0cmluZyBjb25zdGFudHMgaW4gdGVybXMgb2YKKyAgICAgICAg
SklULXRocmVhZC1sb2NhbCBXVEY6OlN0cmluZ3MsIGl0J3Mgbm93IHN1cGVyIGVhc3kgdG8ganVz
dCBwYXNzIHN0cmluZ3MgdG8gWWFyciBhbmQgYnVpbGQgSVIKKyAgICAgICAgYmFzZWQgb24gdGhl
IHJlc3VsdHMuCisKKyAgICAgICAgQnV0IFJlZ0V4cEV4ZWMgaXMgaGFyZDogdGhlIGZvbGRlZCB2
ZXJzaW9uIHN0aWxsIG11c3QgYWxsb2NhdGUgYSBSZWdFeHBNYXRjaGVzQXJyYXkuIFdlIG11c3QK
KyAgICAgICAgdXNlIHRoZSBzYW1lIFN0cnVjdHVyZSB0aGF0IHRoZSBjb2RlIHdvdWxkIGhhdmUg
dXNlZCBvciBlbHNlIHdlJ2xsIHBvbGx1dGUgdGhlIHByb2dyYW0ncworICAgICAgICBpbmxpbmUg
Y2FjaGVzLiBBbHNvLCBSZWdFeHBNYXRjaGVzQXJyYXkuaHxjcHAgd2lsbCBhbGxvY2F0ZSB0aGUg
YXJyYXkgYW5kIGl0cyBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVzIGluIG9uZSBnbyAtIHdlIGRv
bid0IHdhbnQgdG8gbG9zZSB0aGF0IG9wdGltaXphdGlvbi4gU28sIHRoaXMgcGF0Y2ggZW5hYmxl
cworICAgICAgICBNYXRlcmlhbGl6ZU5ld09iamVjdCB0byBhbGxvY2F0ZSBvYmplY3RzIG9yIGFy
cmF5cyB3aXRoIGFueSBudW1iZXIgb2YgaW5kZXhlZCBvciBuYW1lZAorICAgICAgICBwcm9wZXJ0
aWVzLiBQcmV2aW91c2x5IGl0IGNvdWxkIG9ubHkgaGFuZGxlIG9iamVjdHMgKGJ1dCBub3QgYXJy
YXlzKSBhbmQgbmFlZCBwcm9wZXJ0aWVzCisgICAgICAgIChidXQgbm90IGluZGV4ZWQgb25lcyku
CisKKyAgICAgICAgVGhpcyBhbHNvIGFkZHMgYSBmZXcgbWlub3IgdGhpbmdzIGZvciBzZXR0aW5n
IHRoZSBSZWdFeHBDb25zdHJ1Y3RvciBjYWNoZWQgcmVzdWx0LgorCisgICAgICAgIFRoaXMgaXMg
YWJvdXQgYSAyeCBzcGVlZC11cCBvbiBtaWNyb2JlbmNobWFya3Mgd2hlbiB3ZSBmb2xkIGEgbWF0
Y2ggc3VjY2VzcyBhbmQgYWJvdXQgYQorICAgICAgICA4eCBzcGVlZC11cCB3aGVuIHdlIGZvbGQg
YSBtYXRjaCBmYWlsdXJlLiBJdCdzIGEgMTAlIHNwZWVkLXVwIG9uIE9jdGFuZS9yZWdleHAuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6
aW5zZXJ0U2xvdyk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjpleGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5z
ZXJ0aW9uU2V0OjppbnNlcnRDaGVjayk6CisgICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6dHJ5R2V0U3RyaW5nKToKKyAgICAg
ICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWF5RXhpdCk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdGFja0FjY2Vzc0Rh
dGE6OmZsdXNoZWRBdCk6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YTo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFs
dWU6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE6Om9uZVdheVNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRGRzo6T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oOgorICAgICAg
ICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpQaGFudG9tUHJvcGVydHlWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6Om9wZXJh
dG9yPT0pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkpOiBE
ZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVDb21tdXRhdGl2
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpleGVjdXRl
SW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRh
dGU6OnZhbGlkYXRlQ1BTKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAg
ICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6
ZUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmRpZE92ZXJmbG93U3RhY2spOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzdG9yYWdlRm9yVHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmluaXRpYWxpemVBcnJheUVs
ZW1lbnRzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpp
c05vdENlbGxPck1pc2MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1
bmJveERvdWJsZSk6CisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpG
VEw6Om9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkpOiBEZWxldGVkLgorICAgICAgICAq
IGZ0bC9GVExPcGVyYXRpb25zLmg6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlsaXRpZXMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdCk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlND
OjpSZWdFeHA6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Om1hdGNoKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlJlZ0V4
cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZGVsZXRlQ29kZSk6
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENh
Y2hlZFJlc3VsdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9m
TGFzdFJlZ0V4cCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZM
YXN0SW5wdXQpOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZpZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KToKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpoYXNDb2RlRm9yKToK
KyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlND
OjpSZWdFeHA6Om1hdGNoSW5saW5lKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpoYXNNYXRjaE9u
bHlDb2RlRm9yKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlNYXRj
aE9ubHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAg
IChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZXhlY0lubGlu
ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNTbG93KToKKyAgICAgICAgKEpTQzo6c3Vic3RpdHV0
ZUJhY2tyZWZlcmVuY2VzSW5saW5lKToKKyAgICAgICAgKEpTQzo6c3Vic3RpdHV0ZUJhY2tyZWZl
cmVuY2VzKToKKyAgICAgICAgKEpTQzo6U3RyaW5nUmFuZ2U6OlN0cmluZ1JhbmdlKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5q
czogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1wbGUt
cmVnZXhwLWV4ZWMtZm9sZGluZy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4K
KyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogeWFyci9SZWd1
bGFyRXhwcmVzc2lvbi5jcHA6CisgICAgICAgICogeWFyci9ZYXJyLmg6CisgICAgICAgICogeWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6
aW50ZXJwcmV0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjpCeXRlQ29tcGls
ZXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNoZWNrSW5wdXQpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpieXRlQ29tcGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OmludGVycHJldCk6CisgICAg
ICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZWNv
ZGVQYXR0ZXJuOjpCeXRlY29kZVBhdHRlcm4pOgorCiAyMDE2LTAzLTEwICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCByZWdpc3RlciBy
ZXVzZSBmb3IgQXJpdGhBZGQgb2YgYW4gSW50MzIgYW5kIGNvbnN0YW50IGluIERGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00ODgsNiArNDg4LDcgQEAKIAkJMEY3QzExQUQxQkMzODYyQzAwQzc0
Q0RCIC8qIENvcHlCYXJyaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMTFBQzFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdDMzlGQjFD
OEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4
cElubGluZXMuaCAqLzsgfTsKIAkJMEY3QzM5RkQxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9i
amVjdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi87
IH07CisJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZFMUM5MEM1NUIwMDQ4
MDE1MSAvKiBERkdPcEluZm8uaCAqLzsgfTsKIAkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8q
IEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMzNUI3MTYzOUMxRTYwMDE0
NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1
IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI2NDAsNiArMjY0MSw3IEBACiAJCTBGN0MxMUFDMUJDMzg2MkMwMEM3NENEQiAv
KiBDb3B5QmFycmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5QmFy
cmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGQTFDOEY2MjkzMDA0
ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZD
MUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPcEluZm8uaDsgcGF0aCA9IGRmZy9E
RkdPcEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMy
MzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCeVZhbEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5
QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYy
NDUsNiArNjI0Nyw3IEBACiAJCQkJMEYyQjlDREQxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGEuaCAqLywKIAkJCQk4NkVDOURCRjEzMjhERjgyMDAyQjJBRDcg
LyogREZHT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJODZFQzlEQzAxMzI4REY4MjAwMkIyQUQ3IC8q
IERGR09wZXJhdGlvbnMuaCAqLywKKwkJCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZH
T3BJbmZvLmggKi8sCiAJCQkJQTdEODlDRUUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwICovLAogCQkJCUE3RDg5Q0VGMTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmggKi8sCiAJCQkJMEZEODJFNTIx
NDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCAqLywKQEAgLTc0NDUsNiArNzQ0OCw3
IEBACiAJCQkJMEY2NEVBRjMxQzRFQ0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1RUE3MTA1MTlGNkRFNzQwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpj
X2NvbmZpZ3VyYXRpb25faGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDYxOUY2
REU3NjAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlv
bi5weSBpbiBIZWFkZXJzICovLAorCQkJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdP
cEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA3MTlGNkRFNzgwMDk4RjVFQyAvKiBn
ZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5IGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDgxOUY2REU3QTAwOThGNUVDIC8qIGdlbmVy
YXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJz
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTUyLDYgKzE5NTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAg
IGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTk3OTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkyMyw2ICs5MjMsMTAgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZQogICAgICAgICB3cml0ZShSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAg
ZGVmKEhlYXBMb2NhdGlvbihSZWdFeHBPYmplY3RMYXN0SW5kZXhMb2MsIFJlZ0V4cE9iamVjdF9s
YXN0SW5kZXgsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSk7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0
OgorICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7CisgICAgICAgIHJldHVybjsKICAgICAgICAg
CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOiB7CiAgICAgICAgIEFic3RyYWN0SGVhcCBoZWFw
KERpcmVjdEFyZ3VtZW50c1Byb3BlcnRpZXMsIG5vZGUtPmNhcHR1cmVkQXJndW1lbnRzT2Zmc2V0
KCkub2Zmc2V0KCkpOwpAQCAtMTA4Niw3ICsxMDkwLDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgp
ID09IFJlZ0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2lu
ZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAg
ICAgICAgICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUo
UmVnRXhwU3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmVhZChXb3JsZCk7CkBA
IC0xMDk4LDcgKzExMDQsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2Jq
ZWN0VXNlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlKSB7CiAgICAgICAgICAgICByZWFkKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHJlYWQo
UmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7
CisgICAgICAgICAgICB3cml0ZShSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICByZWFkKFdvcmxkKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3
LDYgKzExNyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAg
ICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBD
YWNoZWRSZXN1bHQ6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgY2FzZSBHZXRHbG9iYWxM
ZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBQdXRHbG9iYWxWYXJpYWJsZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTk3OTgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMwMCw2ICsxMzAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdG9y
ZUJhcnJpZXI6CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAg
ICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdF
eHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgICAgICAvLyBUaGVzZSBhcmUganVzdCBub2RlcyB0aGF0
IHdlIGRvbid0IGN1cnJlbnRseSBleHBlY3QgdG8gc2VlIGR1cmluZyBmaXh1cC4KICAgICAgICAg
ICAgIC8vIElmIHdlIGV2ZXIgd2FudGVkIHRvIGluc2VydCB0aGVtIHByaW9yIHRvIGZpeHVwLCB0
aGVuIHdlIGp1c3QgaGF2ZSB0byBjcmVhdGUKICAgICAgICAgICAgIC8vIGZpeHVwIHJ1bGVzIGZv
ciB0aGVtLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTUsNiArMzE1LDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0LCBjb25zdAogICAgICAgICAgICAgb3V0LnByaW50KGFub3RoZXJDb21tYSwgcG9p
bnRlckR1bXBJbkNvbnRleHQoZnJlZXplKG1fY29kZUJsb2NrLT5jb25zdGFudEJ1ZmZlcihub2Rl
LT5zdGFydENvbnN0YW50KCkpW2ldKSwgY29udGV4dCkpOwogICAgICAgICBvdXQucHJpbnQoIl0i
KTsKICAgICB9CisgICAgaWYgKG5vZGUtPmhhc0xhenlKU1ZhbHVlKCkpCisgICAgICAgIG91dC5w
cmludChjb21tYSwgbm9kZS0+bGF6eUpTVmFsdWUoKSk7CiAgICAgaWYgKG5vZGUtPmhhc0luZGV4
aW5nVHlwZSgpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIEluZGV4aW5nVHlwZUR1bXAobm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICBpZiAobm9kZS0+aGFzVHlwZWRBcnJheVR5cGUoKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5jcHAJ
KHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0
aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBAQCB2b2lkIEluc2VydGlv
blNldDo6aW5zZXJ0U2xvdyhjb25zdCBJbnNlCiAgICAgbV9pbnNlcnRpb25zLmluc2VydCgwLCBp
bnNlcnRpb24pOwogfQogCi12b2lkIEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBi
bG9jaykKK3NpemVfdCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7
Ci0gICAgZXhlY3V0ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2VydGlvbnMpOworICAgIHJldHVy
biBleGVjdXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9ucyk7CiB9CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5z
ZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
bnNlcnRpb25TZXQuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAotICAgIHZvaWQg
ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jayk7CisgICAgc2l6ZV90IGV4ZWN1dGUoQmFzaWNCbG9j
ayogYmxvY2spOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5zZXJ0U2xvdyhjb25zdCBJbnNlcnRp
b24mKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUu
Y3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xh
enlKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDggKzExNiwxMCBAQCBTdHJpbmcg
TGF6eUpTVmFsdWU6OnRyeUdldFN0cmluZyhHcmFwaCYgCiAgICAgZGVmYXVsdDoKICAgICAgICAg
aWYgKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZyA9IHRyeUdldFN0cmluZ0ltcGwoKSkgewogICAg
ICAgICAgICAgdW5zaWduZWQgZ2lub3Jtb3VzU3RyaW5nTGVuZ3RoID0gMTAwMDA7Ci0gICAgICAg
ICAgICBpZiAoc3RyaW5nLT5sZW5ndGgoKSA+IGdpbm9ybW91c1N0cmluZ0xlbmd0aCkKKyAgICAg
ICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID4gZ2lub3Jtb3VzU3RyaW5nTGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2Ugb2Ygc2l6ZSBsaW1pdC5c
biIpOwogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBncmFwaC5tX2NvcGllZFN0cmlu
Z3MuYWRkKHN0cmluZywgU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcgQEAgRXhpdE1vZGUgbWF5RXhpdChHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZAogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgIGNhc2UgUHV0
QnlPZmZzZXQ6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgorICAgIGNhc2UgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0OgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRGR05vZGVUeXBl
LmgiCiAjaW5jbHVkZSAiREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oIgorI2luY2x1ZGUg
IkRGR09wSW5mby5oIgogI2luY2x1ZGUgIkRGR1RyYW5zaXRpb24uaCIKICNpbmNsdWRlICJERkdV
c2VLaW5kLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCkBAIC0yMTksMjAg
KzIyMCw2IEBAIHN0cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogICAgIEZsdXNoZWRBdCBmbHVzaGVk
QXQoKSB7IHJldHVybiBGbHVzaGVkQXQoZm9ybWF0LCBtYWNoaW5lTG9jYWwpOyB9CiB9OwogCi0v
LyBUaGlzIHR5cGUgdXNlZCBpbiBwYXNzaW5nIGFuIGltbWVkaWF0ZSBhcmd1bWVudCB0byBOb2Rl
IGNvbnN0cnVjdG9yOwotLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUgKHR5cGlj
YWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCi0vLyBhIGNv
bnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUqLgotc3Ry
dWN0IE9wSW5mbyB7Ci0gICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQotICAgIGV4cGxpY2l0
IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkpIHsgfQotICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSNpZiBPUyhEQVJXSU4pIHx8IFVT
RShKU1ZBTFVFNjQpCi0gICAgZXhwbGljaXQgT3BJbmZvKHNpemVfdCB2YWx1ZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSNlbmRpZgotICAgIGV4cGxpY2l0
IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQotICAgIHVpbnRwdHJfdCBtX3ZhbHVlOwotfTsKLQogLy8gPT09IE5vZGUg
PT09CiAvLwogLy8gTm9kZSByZXByZXNlbnRzIGEgc2luZ2xlIG9wZXJhdGlvbiBpbiB0aGUgZGF0
YSBmbG93IGdyYXBoLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiArMjI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhckluamVjdGlvbldhdGNocG9pbnQsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAorICAgIG1hY3JvKFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oQ2hlY2tDZWxsLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tOb3RFbXB0eSwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKENoZWNrQmFkQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTc0LDcgKzE5NzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Y2FzZSBOYW1lZFByb3BlcnR5UExvYzogewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobG9j
YXRpb24uYmFzZSgpID09IGFsbG9jYXRpb24uaWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Qcm9wZXJ0eVZhbHVlKGxvY2F0
aW9uLmluZm8oKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBl
bmQobG9jYXRpb24uZGVzY3JpcHRvcigpKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGlmICht
X3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ib3R0b20pOwpAQCAtMjAyNCw3ICsy
MDI0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhclBMb2M6
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9PSBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVz
LmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRlc2NyaXB0b3Io
KSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShibG9jaywgbG9j
YXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlu
cyh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uYXBwZW5kKG1fYm90dG9tKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmNwcAkocmV2aXNpb24g
MTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMzIgKzMyLDExIEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdm9pZCBQaGFudG9tUHJvcGVydHlWYWx1ZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotewotICAgIG91dC5wcmludCgiaWQiLCBtX2lkZW50
aWZpZXJOdW1iZXIpOwotfQotCiB2b2lkIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIlsiLCBsaXN0RHVtcCht
X3Byb3BlcnRpZXMpLCAiXSIpOwogfQogCi1mbG9hdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
OjpvbmVXYXlTaW1pbGFyaXR5U2NvcmUoCi0gICAgY29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgbnVtSGl0cyA9IDA7Ci0gICAgZm9y
IChQaGFudG9tUHJvcGVydHlWYWx1ZSB2YWx1ZSA6IG1fcHJvcGVydGllcykgewotICAgICAgICBp
ZiAob3RoZXIubV9wcm9wZXJ0aWVzLmNvbnRhaW5zKHZhbHVlKSkKLSAgICAgICAgICAgIG51bUhp
dHMrKzsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihudW1IaXRzKSAvIHN0
YXRpY19jYXN0PGZsb2F0PihtX3Byb3BlcnRpZXMuc2l6ZSgpKTsKLX0KLQotZmxvYXQgT2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEmIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBzdGQ6Om1pbihvbmVXYXlT
aW1pbGFyaXR5U2NvcmUob3RoZXIpLCBvdGhlci5vbmVXYXlTaW1pbGFyaXR5U2NvcmUoKnRoaXMp
KTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVk
ZSAiREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAt
MzUsMzggKzM2LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotc3Ry
dWN0IFBoYW50b21Qcm9wZXJ0eVZhbHVlIHsKLSAgICBQaGFudG9tUHJvcGVydHlWYWx1ZSgpCi0g
ICAgICAgIDogbV9pZGVudGlmaWVyTnVtYmVyKFVJTlRfTUFYKQotICAgIHsKLSAgICB9Ci0gICAg
Ci0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUodW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKLSAg
ICAgICAgOiBtX2lkZW50aWZpZXJOdW1iZXIoaWRlbnRpZmllck51bWJlcikKLSAgICB7Ci0gICAg
fQotICAgIAotICAgIHVuc2lnbmVkIG1faWRlbnRpZmllck51bWJlcjsKLSAgICAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUGhhbnRvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllck51bWJlciA9PSBvdGhlci5tX2lkZW50aWZp
ZXJOdW1iZXI7Ci0gICAgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwotfTsKLQogc3RydWN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEgewogICAgIC8vIERldGVy
bWluZXMgdGhlIG1lYW5pbmcgb2YgdGhlIHBhc3NlZCBub2Rlcy4KLSAgICBWZWN0b3I8UGhhbnRv
bVByb3BlcnR5VmFsdWU+IG1fcHJvcGVydGllczsKKyAgICBWZWN0b3I8UHJvbW90ZWRMb2NhdGlv
bkRlc2NyaXB0b3I+IG1fcHJvcGVydGllczsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgZnJhY3Rpb24gb2YgbXkgcHJvcGVydGllcyB0
aGF0IHRoZSBvdGhlciBkYXRhIGhhcy4KLSAgICBmbG9hdCBvbmVXYXlTaW1pbGFyaXR5U2NvcmUo
Y29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYpIGNvbnN0OwotICAgIAotICAgIC8vIFRo
ZSBtaW5pbXVtIG9mIHRoZSB0d28gcG9zc2libGUgb25lLXdheSBzY29yZXMuCi0gICAgZmxvYXQg
c2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmKSBjb25zdDsK
IH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcEluZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR09wSW5mb19o
CisjZGVmaW5lIERGR09wSW5mb19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
KyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewor
CisvLyBUaGlzIHR5cGUgdXNlZCBpbiBwYXNzaW5nIGFuIGltbWVkaWF0ZSBhcmd1bWVudCB0byBO
b2RlIGNvbnN0cnVjdG9yOworLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUgKHR5
cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCisvLyBh
IGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUqLgor
c3RydWN0IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQorICAgIGV4cGxp
Y2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyNpZiBPUyhEQVJXSU4pIHx8
IFVTRShKU1ZBTFVFNjQpCisgICAgZXhwbGljaXQgT3BJbmZvKHNpemVfdCB2YWx1ZSkgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyNlbmRpZgorICAgIGV4cGxp
Y2l0IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pih2YWx1ZSkpIHsgfQorICAgIHVpbnRwdHJfdCBtX3ZhbHVlOworfTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAv
LyBERkdPcEluZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MDEsNiArMTQwMSw2MCBA
QCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZhdWx0SGFzCiAgICAgcmV0dXJuIDA7
CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoKQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOworCisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHk7CisgICAgaWYgKHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSkgeworICAgICAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAgICAg
IGhlYWRlci5zZXRWZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAgICAgICAgaGVhZGVyLnNldFB1Ymxp
Y0xlbmd0aCgwKTsKKyAgICAgICAgCisgICAgICAgIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3Jl
YXRlKAorICAgICAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwKKyAgICAgICAgICAgIGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpLCBoZWFkZXIsCisgICAgICAgICAgICBsZW5ndGggKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnV0dGVyZmx5ID0gbnVsbHB0cjsKKwor
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMsIHN0
cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUg
dGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KHJlc3VsdCk7Cit9CisKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgCisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBC
dXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIEluZGV4aW5nSGVhZGVyKCksIDApOworICAgIAorICAg
IEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMsIHN0cnVj
dHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhh
dCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0
aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIElu
ZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7
CisgICAgaGVhZGVyLnNldFB1YmxpY0xlbmd0aCgwKTsKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAorICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBoZWFkZXIsCisgICAgICAgIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgKiBsZW5ndGgpOworCisgICAgLy8gUGFyYWRveGljYWxseSB0aGlzIG1heSBh
bGxvY2F0ZSBhIEpTQXJyYXkuIFRoYXQncyB0b3RhbGx5IGNvb2wuCisgICAgSlNPYmplY3QqIHJl
c3VsdCA9IEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJm
bHkpOworICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJm
bHkgaXMgaW4gdG8tc3BhY2UuCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2dERkcoRXhlY1N0YXRlKiBleGVj
KSAKIHsKICAgICBleGVjLT52bSgpLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmll
cyhBU0NJSUxpdGVyYWwoIkxvZyBGdWxsLCBjYWxsZWQgZnJvbSBpbnNpZGUgREZHLiIpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAx
OTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1NywxMCBAQCBpbnQ2NF90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29udmVydERvCiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmF1bHRI
YXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU0NlbGwqIHZhbHVlLCBKU0NlbGwqIHByb3RvKTsKIAor
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSYXdPYmplY3QoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RG
X0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhC
dXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CisKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nREZHKEV4ZWNTdGF0ZSopIFdURl9J
TlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxh
dGlvbkZhaWx1cmUoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKSBXVEZfSU5URVJOQUw7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2OCw2ICs2NjgsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFN0YWNr
OgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBT
ZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVk
UmVzdWx0OgogICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OiB7CiAgICAgICAgICAgICAvLyBU
aGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxh
dGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZv
bGxvd3MgdGhpcyBwaGFzZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJv
bW90ZWRIZWFwTG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC03NCw2ICs3NCwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvCiAgICAgY2FzZSBOYW1lZFByb3BlcnR5UExvYzoKICAgICAgICAgb3V0
LnByaW50KCJOYW1lZFByb3BlcnR5UExvYyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNl
IEluZGV4ZWRQcm9wZXJ0eVBMb2M6CisgICAgICAgIG91dC5wcmludCgiSW5kZXhlZFByb3BlcnR5
UExvYyIpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQXJndW1lbnRQTG9j
OgogICAgICAgICBvdXQucHJpbnQoIkFyZ3VtZW50UExvYyIpOwpAQCAtMTAyLDYgKzEwNiwxNCBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHJvCiAgICAgY2FzZSBDbG9z
dXJlVmFyUExvYzoKICAgICAgICAgb3V0LnByaW50KCJDbG9zdXJlVmFyUExvYyIpOwogICAgICAg
ICByZXR1cm47CisKKyAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgIG91dC5wcmlu
dCgiUHVibGljTGVuZ3RoUExvYyIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFZlY3Rv
ckxlbmd0aFBMb2M6CisgICAgICAgIG91dC5wcmludCgiVmVjdG9yTGVuZ3RoUExvYyIpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
MjUgKzI4LDQxIEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkRGR05vZGUu
aCIKKyNpbmNsdWRlICJERkdFZGdlLmgiCisjaW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgorI2lu
Y2x1ZGUgIkRGR09wSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CitzdHJ1Y3QgTm9kZTsKKworLy8gUHJvbW90ZWQgbG9jYXRpb25zIGFyZSBsaWtlIGhlYXAgbG9j
YXRpb25zIGJ1dCBhcmUgbWVhbnQgdG8gYmUgbW9yZSBwcmVjaXNlLiBBIGhlYXAgbG9jYXRpb24g
aXMKKy8vIGFwcGxpY2FibGUgdG8gQ1NFIHNjZW5hcmlvcywgd2hlcmUgaXQgbWFrZXMgc2Vuc2Ug
dG8gc3BlYWsgb2YgYSBsb2NhdGlvbiB2ZXJ5IGFic3RyYWN0bHkuIEEKKy8vIHByb21vdGVkIGhl
YXAgbG9jYXRpb24gaXMgZm9yIGNhc2VzIHdoZXJlIHdlIHNwZWFrIG9mIGEgc3BlY2lmaWMgb2Jq
ZWN0IGFuZCB0aGUgY29tcGlsZXIga25vd3MKKy8vIHRoaXMgb2JqZWN0J3MgaWRlbnRpdHkgLSBm
b3IgZXhhbXBsZSwgdGhlIG9iamVjdCBhbGxvY2F0aW9uIGhhcyBiZWVuIGVsaW1pbmF0ZWQgYW5k
IHdlIHR1cm5lZCB0aGUKKy8vIGZpZWxkcyBpbnRvIGxvY2FsIHZhcmlhYmxlcy4gQmVjYXVzZSB0
aGVzZSB0d28gY2FzZXMgaGF2ZSBzdWJ0bHkgZGlmZmVyZW50IG5lZWRzLCB3ZSB1c2Ugc3VidGx5
CisvLyBkaWZmZXJlbnQgc3RydWN0dXJlcy4gT25lIG9mIHRoZSByZWFsbHkgc2lnbmlmaWNhbnQg
ZGlmZmVyZW5jZXMgaXMgdGhhdCBwcm9tb3RlZCBsb2NhdGlvbnMgY2FuIGJlCisvLyBzcG9rZW4g
b2YgdXNpbmcgZWl0aGVyIGEgZGVzY3JpcHRvciB3aGljaCBkb2VzIG5vdCByZWZlciB0byBhbnkg
Tm9kZSoncyBvciB3aXRoIGEgaGVhcCBsb2NhdGlvbiwKKy8vIHdoaWNoIGlzIGEgZGVzY3JpcHRv
ciB3aXRoIGEgTm9kZSogYmFzZS4KKwogZW51bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAg
SW52YWxpZFByb21vdGVkTG9jYXRpb25LaW5kLAogICAgIAotICAgIFN0cnVjdHVyZVBMb2MsCisg
ICAgQWN0aXZhdGlvblNjb3BlUExvYywKICAgICBBY3RpdmF0aW9uU3ltYm9sVGFibGVQTG9jLAot
ICAgIE5hbWVkUHJvcGVydHlQTG9jLAotICAgIEFyZ3VtZW50UExvYywKICAgICBBcmd1bWVudENv
dW50UExvYywKKyAgICBBcmd1bWVudFBMb2MsCiAgICAgQXJndW1lbnRzQ2FsbGVlUExvYywKLQot
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2MsCisgICAgQ2xvc3VyZVZhclBMb2MsCiAgICAgRnVu
Y3Rpb25BY3RpdmF0aW9uUExvYywKLSAgICBBY3RpdmF0aW9uU2NvcGVQTG9jLAotICAgIENsb3N1
cmVWYXJQTG9jCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlUExvYywKKyAgICBJbmRleGVkUHJvcGVy
dHlQTG9jLAorICAgIE5hbWVkUHJvcGVydHlQTG9jLAorICAgIFB1YmxpY0xlbmd0aFBMb2MsCisg
ICAgU3RydWN0dXJlUExvYywKKyAgICBWZWN0b3JMZW5ndGhQTG9jCiB9OwogCiBjbGFzcyBQcm9t
b3RlZExvY2F0aW9uRGVzY3JpcHRvciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw2
ICszMzYsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAg
Y2FzZSBTdHJpbmdSZXBsYWNlOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4Ogog
ICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgQm90dG9tVmFs
dWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
NDcsNiArMzA0NywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBSZWNvcmRSZWdFeHBD
YWNoZWRSZXN1bHQ6IHsKKyAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIEFycmF5UHVz
aDogewogICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNKU0FycmF5KCkpOwogICAg
ICAgICAKQEAgLTM0OTIsNyArMzQ5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAg
ICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VH
UFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1
bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBh
bm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAg
ICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAg
LTM3MjgsNyArMzczMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0
R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVu
dHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+aW5kZXhpbmdUeXBlKCkg
PT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1f
aml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwpA
QCAtNDk3OCw3ICs0OTgzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAK
LSAgICAgICAgCisgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGls
ZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug
VW5yZWFjaGFibGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcx
LDYgKzMxNzEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogeworICAg
ICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFTU0VS
VChub2RlLT5hcnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CkBAIC0zNTQyLDcgKzM1NDcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VH
UFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJl
c3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAg
ICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIs
IG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IEF0IHRoaXMgcG9pbnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdl
R1BSIGhhdmUgcG9pbnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUg
QnV0dGVyZmx5LCByZXNwZWN0aXZlbHkuCkBAIC0zNzc4LDcgKzM3ODMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9y
YWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwg
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24oaW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAg
ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgc3RvcmFn
ZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0FycmF5
KTsKICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3Rh
bnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQ5NzEsNiArNDk3NiwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNvbXBpbGVN
YXRlcmlhbGl6ZU5ld09iamVjdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFCTEUo
RlRMX0pJVCkgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaEFkZDMyKApAQCAtNTA2MSw3
ICs1MDcwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlSW1tZWRpYXRlOgotICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAg
ICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRTdGFjazoK
ICAgICBjYXNlIEtpbGxTdGFjazoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNs
dWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgogI2luY2x1ZGUgIldyaXRlQmFy
cmllckJ1ZmZlci5oIgpAQCAtNzcsMjcgKzc4LDU0IEBAIFNwZWN1bGF0aXZlSklUOjp+U3BlY3Vs
YXRpdmVKSVQoKQogewogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0Fy
cmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFn
ZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxs
b2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQ
UlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVu
Z3RoKQogewotICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KSkgfHwgaGFzSW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKSkpOworICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpOworICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVk
UHJvcGVydGllcyhpbmRleGluZ1R5cGUpOworCisgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkg
PSBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCk7CisgICAgdW5zaWduZWQgb3V0T2ZMaW5lQ2Fw
YWNpdHkgPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgCiAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwog
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRj
aDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLSAgICAKLSAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgg
PSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIG51bUVsZW1lbnRzKTsKKworICAgIEFTU0VSVCh2
ZWN0b3JMZW5ndGggPj0gbnVtRWxlbWVudHMpOworICAgIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4
KEJBU0VfVkVDVE9SX0xFTiwgdmVjdG9yTGVuZ3RoKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgIAotICAgIHNsb3dDYXNlcy5hcHBlbmQoCi0gICAgICAg
IGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6
ZW9mKEpTVmFsdWUpICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpKTsKLSAg
ICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVl
KSksIHN0b3JhZ2VHUFIpOwotICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBz
Y3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKLSAgICAKLSAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJ
bW0zMihudW1FbGVtZW50cyksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1
dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwotICAgIG1faml0LnN0b3JlMzIoVHJ1
c3RlZEltbTMyKHZlY3Rvckxlbmd0aCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VH
UFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwotICAgIAorCisgICAgc2l6
ZV90IHNpemUgPSAwOworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgc2l6ZSAr
PSB2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIp
OworICAgIHNpemUgKz0gb3V0T2ZMaW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1ZSk7CisKKyAg
ICBpZiAoc2l6ZSkgeworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKAorICAgICAgICAgICAgZW1p
dEFsbG9jYXRlQmFzaWNTdG9yYWdlKFRydXN0ZWRJbW0zMihzaXplKSwgc3RvcmFnZUdQUikpOwor
ICAgICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAgICAgICBtX2ppdC5zdWJQdHIo
VHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSksIHN0b3JhZ2VHUFIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNp
emVvZihJbmRleGluZ0hlYWRlcikpLCBzdG9yYWdlR1BSKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKDApLCBzdG9yYWdlR1BSKTsKKworICAgIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKGlubGluZUNhcGFj
aXR5KTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvclB0ciA9ICZtX2ppdC52bSgpLT5o
ZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsK
KyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yUHRyKSwgc2NyYXRjaEdQUik7
CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwor
CisgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0
ZWRJbW0zMih2ZWN0b3JMZW5ndGgpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKKworICAgIC8vIEkgd2FudCBh
IHNsb3cgcGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0
aGF0J3MKKyAgICAvLyB3aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRo
R2VuZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90CisgICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5
IHNtYWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkuIDotLworICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+
KAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0
R1BSLCBzdG9yYWdlR1BSLAorICAgICAgICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOworCiAg
ICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSAmJiBudW1FbGVtZW50
cyA8IHZlY3Rvckxlbmd0aCkgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHNjcmF0Y2hHUFIp
OwpAQCAtMTEzLDEyICsxNDEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVK
U0FycmF5CiAjZW5kaWYKICAgICB9CiAgICAgCi0gICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRo
YXQgYWxzbyBsb2FkcyBvdXQgdGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQncwotICAgIC8v
IHdoYXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2
ZXMgbWUuIEl0J3MgYSBsb3QKLSAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ug
b2YgZnVuY3Rpb25hbGl0eS4gOi0vCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtl
X3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCi0gICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdG9y
YWdlR1BSLAotICAgICAgICBzdHJ1Y3R1cmUsIG51bUVsZW1lbnRzKSk7CisgICAgaWYgKGhhc0lu
ZGV4aW5nSGVhZGVyKQorICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihudW1FbGVt
ZW50cyksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zm
c2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0R2V0
TGVuZ3RoKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgbGVuZ3RoR1BS
LCBib29sIGluY2x1ZGVUaGlzKQpAQCAtNzY1NSw2ICs3Njc5LDEyNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTGF6eUpTQ29uc3RhCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3
T2JqZWN0KE5vZGUqIG5vZGUpCit7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5z
dHJ1Y3R1cmVTZXQoKVswXTsKKyAgICBBU1NFUlQobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChu
b2RlLCAwKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpID09IHN0cnVjdHVyZSk7
CisKKyAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+b2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YSgpOworICAgICAgICAKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICBib29sIGhhc0luZGV4aW5nSGVh
ZGVyID0gaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKTsKKyAgICBpbnQzMl90IHB1
YmxpY0xlbmd0aCA9IDA7CisgICAgaW50MzJfdCB2ZWN0b3JMZW5ndGggPSAwOworCisgICAgaWYg
KGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9w
cm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9qaXQu
Z3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKGRh
dGEubV9wcm9wZXJ0aWVzW2ldLmtpbmQoKSkgeworICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5n
dGhQTG9jOgorICAgICAgICAgICAgICAgIHB1YmxpY0xlbmd0aCA9IGVkZ2UtPmFzSW50MzIoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExv
YzoKKyAgICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGggPSBlZGdlLT5hc0ludDMyKCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzdG9yYWdlR1BSID0g
c3RvcmFnZS5ncHIoKTsKKyAgICAKKyAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BS
LCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIDAsIHZlY3Rvckxlbmd0aCk7CisgICAgCisgICAgbV9q
aXQuc3RvcmUzMigKKyAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihwdWJsaWNMZW5n
dGgpLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6
Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEu
bV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICBFZGdlIGVkZ2UgPSBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgUHJvbW90ZWRMb2NhdGlv
bkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICBz
d2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5
UExvYzogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSk7Cisg
ICAgICAgICAgICBtX2ppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFs
dWVSZWdzKCksCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RvcmFnZUdQ
Uiwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGRlc2NyaXB0b3IuaW5mbygpKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6
IHsKKyAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1faml0LmdyYXBoKCkuaWRlbnRpZmll
cnMoKVtkZXNjcmlwdG9yLmluZm8oKV07CisgICAgICAgICAgICBmb3IgKFByb3BlcnR5TWFwRW50
cnkgZW50cnkgOiBzdHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25jdXJyZW50bHkoKSkgeworICAg
ICAgICAgICAgICAgIGlmICh1aWQgIT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVk
Z2UpOworICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gaXNJbmxpbmVPZmZzZXQoZW50
cnkub2Zmc2V0KSA/IHJlc3VsdEdQUiA6IHN0b3JhZ2VHUFI7CisgICAgICAgICAgICAgICAgbV9q
aXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwK
KyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0
UmVsYXRpdmVUb0Jhc2UoZW50cnkub2Zmc2V0KSkpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWNvcmRSZWdF
eHBDYWNoZWRSZXN1bHQoTm9kZSogbm9kZSkKK3sKKyAgICBFZGdlIGNvbnN0cnVjdG9yRWRnZSA9
IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCk7CisgICAgRWRnZSByZWdFeHBFZGdl
ID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICBFZGdlIHN0cmluZ0Vk
Z2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpOworICAgIEVkZ2Ugc3RhcnRF
ZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKTsKKyAgICBFZGdlIGVuZEVk
Z2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQpOworCisgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgY29uc3RydWN0b3IodGhpcywgY29uc3RydWN0b3JFZGdlKTsKKyAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCByZWdFeHAodGhpcywgcmVnRXhwRWRnZSk7CisgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgc3RyaW5nKHRoaXMsIHN0cmluZ0VkZ2UpOworICAgIFNwZWN1bGF0ZUludDMy
T3BlcmFuZCBzdGFydCh0aGlzLCBzdGFydEVkZ2UpOworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBlbmQodGhpcywgZW5kRWRnZSk7CisKKyAgICBHUFJSZWcgY29uc3RydWN0b3JHUFIgPSBjb25z
dHJ1Y3Rvci5ncHIoKTsKKyAgICBHUFJSZWcgcmVnRXhwR1BSID0gcmVnRXhwLmdwcigpOworICAg
IEdQUlJlZyBzdHJpbmdHUFIgPSBzdHJpbmcuZ3ByKCk7CisgICAgR1BSUmVnIHN0YXJ0R1BSID0g
c3RhcnQuZ3ByKCk7CisgICAgR1BSUmVnIGVuZEdQUiA9IGVuZC5ncHIoKTsKKworICAgIHB0cmRp
ZmZfdCBvZmZzZXQgPSBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKTsK
KworICAgIG1faml0LnN0b3JlUHRyKAorICAgICAgICByZWdFeHBHUFIsCisgICAgICAgIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1
bHQ6Om9mZnNldE9mTGFzdFJlZ0V4cCgpKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoCisgICAgICAg
IHN0cmluZ0dQUiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY29uc3RydWN0b3JHUFIs
IG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0SW5wdXQoKSkpOworICAg
IG1faml0LnN0b3JlMzIoCisgICAgICAgIHN0YXJ0R1BSLAorICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcygKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0
ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9G
KE1hdGNoUmVzdWx0LCBzdGFydCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBlbmRH
UFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKAorICAgICAgICAgICAgY29uc3RydWN0
b3JHUFIsCisgICAgICAgICAgICBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9m
UmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIGVuZCkpKTsKKyAgICBtX2pp
dC5zdG9yZTgoCisgICAgICAgIFRydXN0ZWRJbW0zMigwKSwKKyAgICAgICAgSklUQ29tcGlsZXI6
OkFkZHJlc3MoY29uc3RydWN0b3JHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zm
c2V0T2ZSZWlmaWVkKCkpKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDAxLDYgKzI0MDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0UmVnRXhwT2JqZWN0
TGFzdEluZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5k
ZXgoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUxhenlKU0NvbnN0YW50KE5vZGUqKTsKKyAgICB2
b2lkIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKik7CisgICAgdm9pZCBjb21waWxl
UmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqKTsKICAgICAKICAgICB2b2lkIG1vdmVUcnVl
VG8oR1BSUmVnKTsKICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJlZyk7CkBAIC0yNTE2LDcgKzI1
MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSk7CiAgICAgfQogCi0gICAg
dm9pZCBlbWl0QWxsb2NhdGVKU0FycmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQ
UlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cyk7CisgICAgdm9pZCBlbWl0QWxs
b2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3Jh
Z2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAg
IAogICAgIHZvaWQgZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqLCBHUFJSZWcgbGVuZ3Ro
R1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwogICAgIHZvaWQgZW1pdEdldExlbmd0aChD
b2RlT3JpZ2luLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTMsMTEgKzI1MywxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2Fz
ZSBQdXRCeUlkOgorICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgICAgICBj
YXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewogICAg
ICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKworICAgICAg
ICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6IHsKKyAgICAgICAgICAgICAgICBj
b25zaWRlckJhcnJpZXIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQdXRDbG9z
dXJlVmFyOgogICAgICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICAgICAgICAgIGNh
c2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgpAQCAtMjY2LDEzICsyNzQsNiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1
c2g6Ci0gICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6IHsKLSAgICAgICAgICAgICAgICBj
b25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6IHsKICAgICAg
ICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDIoKSwgbV9ub2RlLT5jaGls
ZDMoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1
Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxMSArMzYsMTUgQEAKICNpbmNs
dWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1Zhcmlh
YmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAi
UmVnRXhwQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNs
dWRlIDxjc3RkbGliPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNz
IFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworICAgIHN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICAKIHB1YmxpYzoKICAgICBTdHJlbmd0aFJlZHVj
dGlvblBoYXNlKEdyYXBoJiBncmFwaCkKICAgICAgICAgOiBQaGFzZShncmFwaCwgInN0cmVuZ3Ro
IHJlZHVjdGlvbiIpCkBAIC0zMzEsMTEgKzMzNSwzNjggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBpZiAoISFzdHJpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0
VG9Db25zdGFudChtX25vZGUsIGpzTnVtYmVyKHN0cmluZy5sZW5ndGgoKSkpOwogICAgICAgICAg
ICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OiB7CisgICAgICAgICAgICBp
ZiAoSlNPYmplY3QqIG9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3Rh
bnQ8SlNPYmplY3QqPigpKSB7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudChtX25vZGUsIG9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUmVnRXhwRXhlYzoK
KyAgICAgICAgY2FzZSBSZWdFeHBUZXN0OiB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ub2RlLT5jaGlsZDEoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0ds
b2JhbE9iamVjdCo+KCk7CisgICAgICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkgeworICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZp
bmcgdXAgYmVjYXVzZSBubyBnbG9iYWwgb2JqZWN0LlxuIik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmlzSGF2
aW5nQUJhZFRpbWUoKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSBiYWQgdGltZS5cbiIpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBOb2RlKiBy
ZWdFeHBPYmplY3ROb2RlID0gbV9ub2RlLT5jaGlsZDIoKS5ub2RlKCk7CisgICAgICAgICAgICBS
ZWdFeHAqIHJlZ0V4cDsKKyAgICAgICAgICAgIGlmIChSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVj
dCA9IHJlZ0V4cE9iamVjdE5vZGUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8UmVnRXhwT2JqZWN0Kj4o
KSkKKyAgICAgICAgICAgICAgICByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgpOworICAg
ICAgICAgICAgZWxzZSBpZiAocmVnRXhwT2JqZWN0Tm9kZS0+b3AoKSA9PSBOZXdSZWdleHApCisg
ICAgICAgICAgICAgICAgcmVnRXhwID0gY29kZUJsb2NrKCktPnJlZ2V4cChyZWdFeHBPYmplY3RO
b2RlLT5yZWdleHBJbmRleCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVj
YXVzZSB0aGUgcmVnZXhwIGlzIHVua25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTm9kZSogc3RyaW5nTm9kZSA9IG1fbm9kZS0+
Y2hpbGQzKCkubm9kZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOT1RFOiBUaGlz
IG1vc3RseSBhbHJlYWR5IHByb3RlY3RzIHVzIGZyb20gaGF2aW5nIHRoZSBjb21waWxlciBleGVj
dXRlIGEgcmVnZXhwCisgICAgICAgICAgICAvLyBvcGVyYXRpb24gb24gYSBnaW5vcm1vdXMgc3Ry
aW5nIGJ5IHByZXZlbnRpbmcgdXMgZnJvbSBnZXR0aW5nIG91ciBoYW5kcyBvbiBnaW5vcm1vdXMK
KyAgICAgICAgICAgIC8vIHN0cmluZ3MgaW4gdGhlIGZpcnN0IHBsYWNlLgorICAgICAgICAgICAg
U3RyaW5nIHN0cmluZyA9IG1fbm9kZS0+Y2hpbGQzKCktPnRyeUdldFN0cmluZyhtX2dyYXBoKTsK
KyAgICAgICAgICAgIGlmICghc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSBzdHJp
bmcgaXMgdW5rbm93bi5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogcmVnRXhwRnJvemVuVmFsdWUgPSBtX2dyYXBo
LmZyZWV6ZShyZWdFeHApOworCisgICAgICAgICAgICAvLyBSZWZ1c2UgdG8gZG8gdGhpbmdzIHdp
dGggcmVndWxhciBleHByZXNzaW9ucyB0aGF0IGhhdmUgYSBnaW5vcm1vdXMgbnVtYmVyIG9mCisg
ICAgICAgICAgICAvLyBzdWJwYXR0ZXJucy4KKyAgICAgICAgICAgIHVuc2lnbmVkIGdpbm9ybW91
c051bWJlck9mU3ViUGF0dGVybnMgPSAxMDAwOworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+bnVt
U3VicGF0dGVybnMoKSA+IGdpbm9ybW91c051bWJlck9mU3ViUGF0dGVybnMpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5n
IHVwIGJlY2F1c2Ugb2YgcGF0dGVybiBsaW1pdC5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CisgICAg
ICAgICAgICBpZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAg
Ly8gVGhpcyB3aWxsIG9ubHkgd29yayBpZiB3ZSBjYW4gcHJvdmUgd2hhdCB0aGUgdmFsdWUgb2Yg
bGFzdEluZGV4IGlzLiBUbyBkbyB0aGlzCisgICAgICAgICAgICAgICAgLy8gc2FmZWx5LCB3ZSBu
ZWVkIHRvIGV4ZWN1dGUgdGhlIGluc2VydGlvbiBzZXQgc28gdGhhdCB3ZSBzZWUgYW55IHByZXZp
b3VzIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgLy8gcmVkdWN0aW9ucy4gVGhpcyBpcyBuZWVk
ZWQgZm9yIHNvdW5kbmVzcyBzaW5jZSBvdGhlcndpc2UgdGhlIGVmZmVjdGZ1bG5lc3Mgb2YgYW55
CisgICAgICAgICAgICAgICAgLy8gcHJldmlvdXMgc3RyZW5ndGggcmVkdWN0aW9ucyB3b3VsZCBi
ZSBpbnZpc2libGUgdG8gdXMuCisgICAgICAgICAgICAgICAgZXhlY3V0ZUluc2VydGlvblNldCgp
OworICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IFVJTlRfTUFYOworICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgb3RoZXJOb2RlSW5kZXggPSBtX25vZGVJbmRleDsgb3RoZXJOb2RlSW5k
ZXgtLTspIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9ibG9jay0+
YXQob3RoZXJOb2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlID09
IHJlZ0V4cE9iamVjdE5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9
IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpID09IFNldFJlZ0V4cE9i
amVjdExhc3RJbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGls
ZDEoKSA9PSByZWdFeHBPYmplY3ROb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhl
ck5vZGUtPmNoaWxkMigpLT5pc0ludDMyQ29uc3RhbnQoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgb3RoZXJOb2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpID49IDApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxhc3RJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvdGhlck5vZGUt
PmNoaWxkMigpLT5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlc092ZXJs
YXAobV9ncmFwaCwgb3RoZXJOb2RlLCBSZWdFeHBPYmplY3RfbGFzdEluZGV4KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpZiAobGFzdEluZGV4ID09IFVJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1
c2UgdGhlIGxhc3QgaW5kZXggaXMgbm90IGtub3duLlxuIik7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIGxhc3RJbmRleCA9IDA7CisKKyAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMo
KS5hZGRMYXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpICE9IEFycmF5V2l0aENvbnRpZ3VvdXMpIHsKKyAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIGZ1cnRoZXIgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgcmFjZSB3aXRo
IGhhdmVBQmFkVGltZS4KKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhlIHN0cnVjdHVyZSBoYXMgdGhl
IHdyb25nIGluZGV4aW5nIHR5cGUuXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJl
KTsKKworICAgICAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gZ2xvYmFs
T2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3RvcigpOworICAgICAgICAgICAgRnJvemVuVmFsdWUqIGNv
bnN0cnVjdG9yRnJvemVuVmFsdWUgPSBtX2dyYXBoLmZyZWV6ZShjb25zdHJ1Y3Rvcik7CisKKyAg
ICAgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMy
PiBvdmVjdG9yOworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBjYWxsIHRoZSBraW5kIG9mIG1h
dGNoIGZ1bmN0aW9uIHRoYXQgdGhlIG1haW4gdGhyZWFkIHdvdWxkIGhhdmUgY2FsbGVkLgorICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBtaWdodCBub3QgaGF2ZSB0aGUgZGVzaXJlZCBZYXJy
IGNvZGUgY29tcGlsZWQsIGFuZCB0aGUgbWF0Y2ggd2lsbCBmYWlsLgorICAgICAgICAgICAgaWYg
KG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7CisgICAgICAgICAgICAgICAgaW50IHBvc2l0
aW9uOworICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgp
LCBzdHJpbmcsIGxhc3RJbmRleCwgcG9zaXRpb24sIG92ZWN0b3IpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2
aW5nIHVwIGJlY2F1c2UgbWF0Y2ggZmFpbGVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBw
b3NpdGlvbjsKKyAgICAgICAgICAgICAgICByZXN1bHQuZW5kID0gb3ZlY3RvclsxXTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3Vy
cmVudGx5KHZtKCksIHN0cmluZywgbGFzdEluZGV4LCByZXN1bHQpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2
aW5nIHVwIGJlY2F1c2UgbWF0Y2ggZmFpbGVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
V2UndmUgY29uc3RhbnQtZm9sZGVkIHRoZSByZWdleHAuIE5vdyB3ZSdyZSBjb21taXR0ZWQgdG8g
cmVwbGFjaW5nIFJlZ0V4cEV4ZWMvVGVzdC4KKworICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1
ZTsKKworICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBtX25vZGUtPm9yaWdpbjsKKwor
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBt
X25vZGVJbmRleCwgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4uanVz
dENoZWNrcygpKTsKKworICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVj
KSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmVTZXQqIHN0cnVjdHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVj
dHVyZSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IG1vZGVsaW5n
IHRoZSBKUyBhcnJheSB0aGF0IHdlIHdpbGwgdHJ5IHRvIGFsbG9jYXRlLiBUaGlzIGlzCisgICAg
ICAgICAgICAgICAgICAgIC8vIGJhc2ljYWxseSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0
IG92ZXIgQysrIHN0cmluZ3MgaW5zdGVhZCBvZiBKU1N0cmluZ3MuCisgICAgICAgICAgICAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdEFycmF5OworICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheS5hcHBlbmQoc3RyaW5nLnN1YnN0cmluZyhyZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQg
LSByZXN1bHQuc3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MTsgaSA8PSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHN0YXJ0ID0gb3ZlY3RvclsyICogaV07CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RhcnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRB
cnJheS5hcHBlbmQoc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgb3ZlY3RvclsyICogaSArIDFdIC0g
c3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheS5hcHBlbmQoU3RyaW5nKCkpOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHVibGljTGVuZ3RoID0gcmVz
dWx0QXJyYXkuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5n
dGggPSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIHB1YmxpY0xlbmd0aCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGluZGV4VUlEID0gdm0oKS5wcm9wZXJ0eU5h
bWVzLT5pbmRleC5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiBpbnB1dFVJRCA9IHZtKCkucHJvcGVydHlOYW1lcy0+aW5wdXQuaW1wbCgpOworICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbmRleEluZGV4ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVu
c3VyZShpbmRleFVJRCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0SW5kZXgg
PSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlucHV0VUlEKTsKKworICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBmaXJzdENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50
Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4s
IHN0cnVjdHVyZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdE1h
dGVyaWFsaXphdGlvbkRhdGEqIGRhdGEgPSBtX2dyYXBoLm1fb2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YS5hZGQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
dmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocHVibGljTGVuZ3RoKSwgS25vd25JbnQzMlVz
ZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKFB1Ymxp
Y0xlbmd0aFBMb2MpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcih2ZWN0b3JMZW5ndGgpLCBLbm93bkludDMy
VXNlKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoVmVj
dG9yTGVuZ3RoUExvYyk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUlu
ZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHJlc3VsdC5zdGFydCksIFVudHlwZWRVc2UpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBp
bmRleEluZGV4KSk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZChFZGdlKHN0cmluZ05vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBpbnB1dEluZGV4
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRlcmlhbGl6ZVN0cmluZyA9IFsmXSAo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIC0+IE5vZGUqIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNl
cnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IG9yaWdpbiwgdm0oKS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSB2YWx1ZSA9
IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgc3RyaW5nKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgTGF6eUpTQ29uc3RhbnQsIG9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX2xhenlK
U1ZhbHVlcy5hZGQodmFsdWUpKSk7CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdEFycmF5LnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9IG1hdGVyaWFs
aXplU3RyaW5nKHJlc3VsdEFycmF5W2ldKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShub2RlLCBVbnR5cGVkVXNlKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoSW5kZXhlZFByb3BlcnR5UExvYywgaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogcmVzdWx0Tm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0FycmF5LCBOb2RlOjpWYXJBcmcsIE1hdGVy
aWFsaXplTmV3T2JqZWN0LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8o
c3RydWN0dXJlU2V0KSwgT3BJbmZvKGRhdGEpLCBmaXJzdENoaWxkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lk
ZW50aXR5T24ocmVzdWx0Tm9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc051bGwoKSk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0
YW50KG1fbm9kZSwganNCb29sZWFuKCEhcmVzdWx0KSk7CisKKyAgICAgICAgICAgIC8vIFdoZXRo
ZXIgaXQncyBFeGVjIG9yIFRlc3QsIHdlIG5lZWQgdG8gdGVsbCB0aGUgY29uc3RydWN0b3IgYW5k
IFJlZ0V4cE9iamVjdCB3aGF0J3MgdXAuCisgICAgICAgICAgICAvLyBCZWNhdXNlIFNldFJlZ0V4
cE9iamVjdExhc3RJbmRleCBtYXkgZXhpdCBhbmQgaXQgY2xvYmJlcnMgZXhpdCBzdGF0ZSwgd2Ug
ZG8gdGhhdAorICAgICAgICAgICAgLy8gZmlyc3QuCisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmIChyZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCkpIHsKKyAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3Bl
Y05vbmUsIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgb3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICBFZGdlKHJlZ0V4cE9iamVjdE5vZGUsIFJlZ0V4cE9iamVjdFVzZSksCisgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0ID8gcmVz
dWx0LmVuZCA6IDApLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZmly
c3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCk7CisgICAgICAgICAgICAg
ICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBjb25zdHJ1Y3RvckZyb3plblZhbHVlLCBLbm93bkNl
bGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5k
KAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVz
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHJlZ0V4cEZy
b3plblZhbHVlLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uoc3RyaW5nTm9kZSwgS25vd25DZWxsVXNlKSk7CisgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQp
LCBLbm93bkludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29u
c3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2lu
LCBqc051bWJlcihyZXN1bHQuZW5kKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUlu
ZGV4LCBTcGVjTm9uZSwgTm9kZTo6VmFyQXJnLCBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIG9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKCksIE9wSW5mbygpLCBmaXJzdENoaWxk
LCBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisKKyAgICAg
ICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbm9kZS0+b3JpZ2luID0gb3JpZ2luOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFN0cmluZ1JlcGxh
Y2U6IHsKKyAgICAgICAgICAgIE5vZGUqIHN0cmluZ05vZGUgPSBtX25vZGUtPmNoaWxkMSgpLm5v
ZGUoKTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJpbmdOb2RlLT50cnlHZXRTdHJp
bmcobV9ncmFwaCk7CisgICAgICAgICAgICBpZiAoIXN0cmluZykKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTm9kZSogcmVnRXhwT2JqZWN0Tm9kZSA9
IG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpOworICAgICAgICAgICAgUmVnRXhwKiByZWdFeHA7Cisg
ICAgICAgICAgICBpZiAoUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QgPSByZWdFeHBPYmplY3RO
b2RlLT5keW5hbWljQ2FzdENvbnN0YW50PFJlZ0V4cE9iamVjdCo+KCkpCisgICAgICAgICAgICAg
ICAgcmVnRXhwID0gcmVnRXhwT2JqZWN0LT5yZWdFeHAoKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHJlZ0V4cE9iamVjdE5vZGUtPm9wKCkgPT0gTmV3UmVnZXhwKQorICAgICAgICAgICAgICAgIHJl
Z0V4cCA9IGNvZGVCbG9jaygpLT5yZWdleHAocmVnRXhwT2JqZWN0Tm9kZS0+cmVnZXhwSW5kZXgo
KSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhlIHJlZ2V4cCBp
cyB1bmtub3duLlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIFN0cmluZyByZXBsYWNlID0gbV9ub2RlLT5jaGlsZDMoKS0+dHJ5R2V0U3Ry
aW5nKG1fZ3JhcGgpOworICAgICAgICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgICAgICAg
ICAgdW5zaWduZWQgbGFzdEluZGV4ID0gMDsKKyAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0UG9z
aXRpb24gPSAwOworICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7CisgICAgICAgICAgICBkbyB7
CisgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OworICAgICAgICAgICAgICAgIFZl
Y3RvcjxpbnQsIDMyPiBvdmVjdG9yOworICAgICAgICAgICAgICAgIC8vIE1vZGVsIHdoaWNoIHZl
cnNpb24gb2YgbWF0Y2goKSBpcyBjYWxsZWQgYnkgdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAg
ICAgICAgIGlmIChyZXBsYWNlLmlzRW1wdHkoKSAmJiByZWdFeHAtPmdsb2JhbCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJp
bmcsIHN0YXJ0UG9zaXRpb24sIHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9r
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlu
dCBwb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3Vy
cmVudGx5KHZtKCksIHN0cmluZywgc3RhcnRQb3NpdGlvbiwgcG9zaXRpb24sIG92ZWN0b3IpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zdGFydCA9IHBvc2l0aW9uOworICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuZW5kID0gb3ZlY3RvclsxXTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgaW50IHJlcGxMZW4gPSByZXBsYWNl
Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChsYXN0SW5kZXggPCByZXN1bHQuc3RhcnQg
fHwgcmVwbExlbikgeworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmcs
IGxhc3RJbmRleCwgcmVzdWx0LnN0YXJ0IC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHJlcGxMZW4pCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChz
dWJzdGl0dXRlQmFja3JlZmVyZW5jZXMocmVwbGFjZSwgc3RyaW5nLCBvdmVjdG9yLmRhdGEoKSwg
cmVnRXhwKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbGFzdEluZGV4
ID0gcmVzdWx0LmVuZDsKKyAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gbGFzdEluZGV4
OworCisgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIG9mIGVtcHR5IG1hdGNoCisgICAg
ICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRQb3Np
dGlvbisrOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRQb3NpdGlvbiA+IHN0cmluZy5s
ZW5ndGgoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gd2hpbGUgKHJlZ0V4cC0+Z2xvYmFsKCkpOworICAgICAgICAgICAg
aWYgKCFvaykKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLy8gV2UgYXJl
IGNvbW1pdHRlZCBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsK
KworICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBtX25vZGUtPm9yaWdpbjsKKworICAg
ICAgICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsKCkpIHsKKyAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3Bl
Y05vbmUsIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgb3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICBFZGdlKHJlZ0V4cE9iamVjdE5vZGUsIFJlZ0V4cE9iamVjdFVzZSksCisgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIoMCksIFVudHlwZWRV
c2UpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW4u
d2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbGFz
dEluZGV4ICYmIGJ1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIG1fbm9kZS0+Y29u
dmVydFRvSWRlbnRpdHlPbihzdHJpbmdOb2RlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmIChsYXN0SW5kZXggPCBzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0cmluZywgbGFzdEluZGV4LCBzdHJpbmcubGVuZ3RoKCkg
LSBsYXN0SW5kZXgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1fbm9kZS0+
Y29udmVydFRvTGF6eUpTQ29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIExh
enlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgYnVpbGRlci50b1N0cmluZygpKSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG1fbm9kZS0+b3JpZ2luID0gb3JpZ2luOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTM4MCw2ICs3NDEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZUluc2VydGlv
blNldCgpCisgICAgeworICAgICAgICBtX25vZGVJbmRleCArPSBtX2luc2VydGlvblNldC5leGVj
dXRlKG1fYmxvY2spOworICAgIH0KICAgICAKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25T
ZXQ7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3OCw2ICsy
NzgsMTggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPmRmZ1Nob3VsZFdhdGNoKCkp
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgICAgICAgICAg
ICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHN1cHBvcnRzIHN0cnVjdHVyZXMg
dGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5LgorICAgICAgICAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNGaW5hbE9i
amVjdDo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RydWN0dXJlLT5j
bGFzc0luZm8oKSA9PSBKU0FycmF5OjppbmZvKCkpOworCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBXZSBvbmx5IHN1cHBvcnQgY2VydGFpbiBpbmRleGluZyBzaGFwZXMuCisgICAgICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNBbnlBcnJheVN0b3JhZ2Uoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAg
ICAgICAgICAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSksIG5vZGUtPmlzTnVtYmVyQ29uc3RhbnQoKSk7CkBAIC00NjEsMTMgKzQ3
Myw0MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFs
OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlSW1tZWRpYXRlOgotICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVO
ZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRp
b246CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBjYXNl
IEtpbGxTdGFjazoKICAgICAgICAgICAgICAgICBjYXNlIEdldFN0YWNrOgogICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSksICEidW5leHBlY3RlZCBub2RlIHR5cGUgaW4gQ1BTIik7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdPYmplY3Q6IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIG9ubHkgYWxsb3dz
IGFycmF5IGxlbmd0aHMgdG8gYmUgY29uc3RhbnQuIFRoaXMgY29uc3RyYWludCBvbmx5IGV4aXN0
cworICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgREZHIHN1cHBv
cnQgZm9yIGFueXRoaW5nIG1vcmUgYW5kIHdlIGRvbid0IG5lZWQgYW55CisgICAgICAgICAgICAg
ICAgICAgIC8vIG90aGVyIGtpbmQgb2Ygc3VwcG9ydCBmb3Igbm93LgorICAgICAgICAgICAgICAg
ICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+b2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YSgpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBk
YXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGll
c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSArIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkZXNj
cmlwdG9yLmtpbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5n
dGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+
aXNJbnQzMkNvbnN0YW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBvbmUgc3RydWN0
dXJlLgorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPnN0cnVjdHVy
ZVNldCgpLnNpemUoKSA9PSAxKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBDUFMgZGlzYWxs
b3dzIGludDMyIGFuZCBkb3VibGUgYXJyYXlzLiBUaG9zZSByZXF1aXJlIHdlaXJkIHR5cGUgY2hl
Y2tzIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzaW9ucy4gVGhleSBhcmUgbm90
IG5lZWRlZCBpbiB0aGUgREZHIHJpZ2h0IG5vdy4gV2Ugc2hvdWxkIGFkZCBzdXBwb3J0CisgICAg
ICAgICAgICAgICAgICAgIC8vIGZvciB0aGVzZSBpZiB0aGUgREZHIGV2ZXIgbmVlZHMgaXQuCisg
ICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1
Y3R1cmVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAh
aGFzSW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG1fZ3JhcGgubV9maXhwb2ludFN0YXRlICE9
IEZpeHBvaW50Tm90Q29udmVyZ2VkKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNs
dWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlJlZ0V4
cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpTU3ltYm9s
VGFibGVPYmplY3Rfc3ltYm9sVGFibGUsIEpTU3ltYm9sVGFibGVPYmplY3Q6Om9mZnNldE9mU3lt
Ym9sVGFibGUoKSkgXAogICAgIG1hY3JvKEpTV3JhcHBlck9iamVjdF9pbnRlcm5hbFZhbHVlLCBK
U1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWVPZmZzZXQoKSkgXAogICAgIG1hY3JvKE1hcmtl
ZEFsbG9jYXRvcl9mcmVlTGlzdEhlYWQsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlz
dEhlYWQoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0
UmVnRXhwLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4
cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkpIFwKKyAgICBtYWNybyhSZWdFeHBD
b25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdElucHV0LCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zm
c2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0SW5w
dXQoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZXN1bHRf
c3RhcnQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhw
Q2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVz
dWx0LCBzdGFydCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRf
cmVzdWx0X2VuZCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBS
ZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0
Y2hSZXN1bHQsIGVuZCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1
bHRfcmVpZmllZCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBS
ZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSBcCiAgICAgbWFjcm8oUmVnRXhw
T2JqZWN0X2xhc3RJbmRleCwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleCgpKSBcCiAg
ICAgbWFjcm8oUmVnRXhwT2JqZWN0X2xhc3RJbmRleElzV3JpdGFibGUsIFJlZ0V4cE9iamVjdDo6
b2Zmc2V0T2ZMYXN0SW5kZXhJc1dyaXRhYmxlKCkpIFwKICAgICBtYWNybyhTY29wZWRBcmd1bWVu
dHNfb3ZlcnJvZGVUaGluZ3MsIFNjb3BlZEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycm9kZVRoaW5n
cygpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBTdHJpbmdSZXBs
YWNlOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgIGNhc2UgU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogog
ICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkzOCw2ICs5MzgsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFNl
dFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgICAgIGNvbXBpbGVTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlY29yZFJl
Z0V4cENhY2hlZFJlc3VsdDoKKyAgICAgICAgICAgIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRS
ZXN1bHQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2Fs
OgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtMzcxNiwzMiArMzcxOSw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVibGljTGVuZ3RoLCBi
dXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAgICAgICAgICAgICBt
X291dC5zdG9yZTMyKHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRlcmZseV92
ZWN0b3JMZW5ndGgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaGFzRG91YmxlKG1f
bm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5p
dExvb3AgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlu
aXREb25lID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5jaG9yKHZlY3Rvckxl
bmd0aCk7Ci0gICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxQb2ludGVyID0g
bV9vdXQuYW5jaG9yKGJ1dHRlcmZseSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAot
ICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJl
KGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW5pdExv
b3AsIGluaXREb25lKTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5waGko
bV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOwotICAgICAgICAgICAgICAgIExWYWx1ZSBwb2lu
dGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQb2ludGVyKTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KAotICAgICAgICAgICAgICAg
ICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksCi0gICAg
ICAgICAgICAgICAgICAgIFR5cGVkUG9pbnRlcihtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0
aWVzLmF0QW55SW5kZXgoKSwgcG9pbnRlcikpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5zdWIoaW5kZXgsIG1fb3V0LmludDMyT25l
KTsKLSAgICAgICAgICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKGluZGV4LCBtX291dC5h
bmNob3IobmV4dEluZGV4KSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1Bo
aShwb2ludGVyLCBtX291dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1fb3V0LmludFB0ckVp
Z2h0KSkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQubm90WmVybzMyKG5leHRJbmRleCksIHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShp
bml0RG9uZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGluaXREb25lLCBpbml0TGFzdE5leHQpOwotICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhtX25vZGUtPmluZGV4aW5nVHlwZSgpLCB2ZWN0b3JM
ZW5ndGgsIGJ1dHRlcmZseSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3Iob2JqZWN0KTsKICAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTYyODYsMTEgKzYyNjUsMjEgQEAgcHJpdmF0ZToKICAg
ICAgICAgLy8gTG93ZXIgdGhlIHZhbHVlcyBmaXJzdCwgdG8gYXZvaWQgY3JlYXRpbmcgdmFsdWVz
IGluc2lkZSBhIGNvbnRyb2wgZmxvdyBkaWFtb25kLgogICAgICAgICAKICAgICAgICAgVmVjdG9y
PExWYWx1ZSwgOD4gdmFsdWVzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0
YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxv
d0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKSkpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxICsg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEubV9wcm9wZXJ0aWVzW2ldLmtpbmQoKSkgewor
ICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAgICAgY2FzZSBWZWN0
b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SW50MzIoZWRn
ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0pTVmFsdWUoZWRnZSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBj
b25zdCBTdHJ1Y3R1cmVTZXQmIHNldCA9IG1fbm9kZS0+c3RydWN0dXJlU2V0KCk7Ci0gICAgICAg
IAorCiAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaywgMT4gYmxvY2tzKHNldC5zaXplKCkpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAg
YmxvY2tzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTYzMTUsMjEgKzYzMDQsNTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBvYmplY3Q7CiAgICAgICAgICAgICBMVmFsdWUgYnV0
dGVyZmx5OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpIHx8IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkp
KSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVj
dDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAg
ICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9ICZ2bSgpLmhlYXAuYWxsb2NhdG9y
Rm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoYWxsb2NhdGlvblNpemUpOworCisgICAgICAgICAg
ICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4aW5n
SGVhZGVyU2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nUGF5bG9hZFNp
emVJbkJ5dGVzID0gbV9vdXQuaW50UHRyWmVybzsKKyAgICAgICAgICAgICAgICBMVmFsdWUgdmVj
dG9yTGVuZ3RoID0gbV9vdXQuaW50MzJaZXJvOworICAgICAgICAgICAgICAgIExWYWx1ZSBwdWJs
aWNMZW5ndGggPSBtX291dC5pbnQzMlplcm87CisgICAgICAgICAgICAgICAgaWYgKGhhc0luZGV4
aW5nSGVhZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nSGVhZGVyU2l6ZSA9IHNp
emVvZihJbmRleGluZ0hlYWRlcik7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9w
ZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmtp
bmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY0xlbmd0aCA9IHZhbHVlc1tpXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0
b3JMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzID0K
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lm11bChtX291dC56ZXJvRXh0UHRyKHZlY3Rv
ckxlbmd0aCksIG1fb3V0LmludFB0ckVpZ2h0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBMVmFsdWUgYnV0dGVyZmx5U2l6ZSA9IG1fb3V0LmFkZCgKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkgKyBpbmRleGluZ0hl
YWRlclNpemUpLAorICAgICAgICAgICAgICAgICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRl
cyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1Bh
dGggPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUo
c2xvd1BhdGgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIExWYWx1ZSBlbmRP
ZlN0b3JhZ2UgPSBhbGxvY2F0ZUJhc2ljU3RvcmFnZUFuZEdldEVuZCgKLSAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICog
c2l6ZW9mKEpTVmFsdWUpKSwKLSAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGgpOwotICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIExWYWx1ZSBlbmRPZlN0b3JhZ2UgPSBhbGxvY2F0
ZUJhc2ljU3RvcmFnZUFuZEdldEVuZChidXR0ZXJmbHlTaXplLCBzbG93UGF0aCk7CisKICAgICAg
ICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRlcmZseVZhbHVlID0gbV9vdXQuYWRkKAotICAgICAg
ICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwg
ZW5kT2ZTdG9yYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3ViKGVuZE9mU3RvcmFn
ZSwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICBtX291
dC5jb25zdEludFB0cihzaXplb2YoSW5kZXhpbmdIZWFkZXIpIC0gaW5kZXhpbmdIZWFkZXJTaXpl
KSk7CisKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHZlY3Rvckxlbmd0aCwgZmFzdEJ1
dHRlcmZseVZhbHVlLCBtX2hlYXBzLkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0T2JqZWN0VmFsdWUgPSBhbGxvY2F0
ZU9iamVjdCgKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9y
KSwgc3RydWN0dXJlLCBmYXN0QnV0dGVyZmx5VmFsdWUsIHNsb3dQYXRoKTsKQEAgLTYzNDAsMTIg
KzYzNTksMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKIAotICAgICAgICAgICAgICAg
IExWYWx1ZSBzbG93T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCi0gICAgICAgICAgICAgICAg
ICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6
eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
cmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVy
YXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSkpOwotICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBMVmFs
dWUgc2xvd09iamVjdFZhbHVlOworICAgICAgICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRl
cikgeworICAgICAgICAgICAgICAgICAgICBzbG93T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgo
CisgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxv
Y2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5
V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvbnNbMV0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAor
ICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2Nh
dGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseSwg
bG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgc2xvd09iamVjdCA9IG1fb3V0LmFuY2hvcihzbG93T2JqZWN0VmFsdWUpOwogICAg
ICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dCdXR0ZXJmbHkgPSBtX291dC5hbmNob3Io
CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoc2xvd09iamVjdFZhbHVlLCBtX2hl
YXBzLkpTT2JqZWN0X2J1dHRlcmZseSkpOwpAQCAtNjM1Niw2ICs2Mzg3LDExMyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG9iamVjdCA9IG1fb3V0LnBoaSht
X291dC5pbnRQdHIsIGZhc3RPYmplY3QsIHNsb3dPYmplY3QpOwogICAgICAgICAgICAgICAgIGJ1
dHRlcmZseSA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RCdXR0ZXJmbHksIHNsb3dCdXR0
ZXJmbHkpOworCisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihwdWJsaWNMZW5ndGgsIGJ1
dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKKworICAgICAgICAgICAg
ICAgIGluaXRpYWxpemVBcnJheUVsZW1lbnRzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCksIHZl
Y3Rvckxlbmd0aCwgYnV0dGVyZmx5KTsKKworICAgICAgICAgICAgICAgIEhhc2hNYXA8CisgICAg
ICAgICAgICAgICAgICAgIGludDMyX3QsIExWYWx1ZSwgRGVmYXVsdEhhc2g8aW50MzJfdD46Okhh
c2gsCisgICAgICAgICAgICAgICAgICAgIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8aW50MzJfdD4+IGluZGV4TWFwOworICAgICAgICAgICAgICAgIFZlY3RvcjxpbnQzMl90PiBp
bmRpY2VzOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0
aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAg
ICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmtpbmQoKSAhPSBJbmRleGVkUHJvcGVydHlQTG9jKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlu
dDMyX3QgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQzMl90PihkZXNjcmlwdG9yLmluZm8oKSk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlu
ZGV4TWFwLmFkZChpbmRleCwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBtX25vZGUsIHJlc3VsdCk7IC8vIER1cGxpY2F0ZXMgYXJlIGlsbGVnYWwu
CisKKyAgICAgICAgICAgICAgICAgICAgaW5kaWNlcy5hcHBlbmQoaW5kZXgpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghaW5kaWNlcy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzb3J0KGluZGljZXMuYmVnaW4oKSwgaW5kaWNlcy5lbmQo
KSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBWZWN0b3I8TEJh
c2ljQmxvY2s+IGJsb2Nrc1dpdGhTdG9yZXMoaW5kaWNlcy5zaXplKCkpOworICAgICAgICAgICAg
ICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2s+IGJsb2Nrc1dpdGhDaGVja3MoaW5kaWNlcy5zaXpl
KCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gaW5kaWNlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJsb2Nrc1dpdGhTdG9yZXNbaV0gPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYmxvY2tzV2l0aENoZWNrc1tpXSA9IG1fb3V0Lm5ld0Jsb2NrKCk7IC8vIGJsb2Nr
c1dpdGhDaGVja3NbMF0gaXMgdGhlIGNvbnRpbnVhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluZGV4TGFzdE5leHQgPSBtX291
dC5tX25leHRCbG9jazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90IGluZGV4ID0gaW5kaWNlc1tpXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIExWYWx1ZSB2YWx1ZSA9IGluZGV4TWFwLmdldChpbmRleCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5iZWxvdyhtX291dC5jb25zdEludDMyKGluZGV4
KSwgcHVibGljTGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN1cmUoYmxv
Y2tzV2l0aFN0b3Jlc1tpXSksIHVuc3VyZShibG9ja3NXaXRoQ2hlY2tzW2ldKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1dpdGhTdG9yZXNbaV0sIGJs
b2Nrc1dpdGhDaGVja3NbaV0pOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGhh
cyB0byB0eXBlLWNoZWNrIGFuZCBjb252ZXJ0IGl0cyBpbnB1dHMsIGJ1dCBpdCBjYW5ub3QgZG8g
c28gaW4gYQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2F5IHRoYXQgdXBkYXRlcyBBSS4g
VGhhdCdzIGEgYml0IGFubm95aW5nLCBidXQgaWYgeW91IHRoaW5rIGFib3V0IGhvdworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gc2lua2luZyB3b3JrcywgaXQncyBhY3R1YWxseSBub3QgYSBi
YWQgdGhpbmcuIFdlIGFyZSB2aXJ0dWFsbHkgZ3VhcmFudGVlZAorICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhhdCB0aGVzZSB0eXBlIGNoZWNrcyB3aWxsIG5vdCBmYWlsLCBzaW5jZSB0aGUg
dHlwZSBjaGVja3MgdGhhdCBndWFyZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUg
b3JpZ2luYWwgc3RvcmVzIHRvIHRoZSBhcnJheSBhcmUgc3RpbGwgc29tZXdoZXJlIGFib3ZlIHRo
aXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6OlN0b3JlVHlwZSBzdG9y
ZVR5cGU7CisgICAgICAgICAgICAgICAgICAgICAgICBJbmRleGVkQWJzdHJhY3RIZWFwKiBoZWFw
OworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlw
ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19U
WVBFUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1
c2UgdGhlIHByb3ZlbiB0eXBlIGlmIHdlIGhhZCB0aGUgRWRnZSBmb3IgdGhlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUzMTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUo
QmFkVHlwZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBpc05vdEludDMyKHZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZTY0OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRleGVkSW50MzJQcm9wZXJ0
aWVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSWYgdGhlIHNvdXJjZSBpcyBWYWx1ZVJlcCwgd2Ug
c2hvdWxkIGF2b2lkIGVtaXR0aW5nIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNoZWNrcy4gV2UgY291bGQgYWxzbyBhdm9pZCBlbWl0dGluZyBjaGVja3MgaWYgd2UgaGFkIHRo
ZSBFZGdlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB2YWx1ZS4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTMxMQorCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sg
Y29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHZhbHVlKSwgdW5zdXJlKGludENhc2UpLCB1bnN1
cmUoZG91YmxlQ2FzZSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbnRDYXNlLCBkb3VibGVDYXNlKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGludFJlc3VsdCA9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFuY2hvcihtX291dC5pbnRUb0RvdWJs
ZSh1bmJveEludDMyKHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBpc051bWJl
cih2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGRv
dWJsZVJlc3VsdCA9IG1fb3V0LmFuY2hvcih1bmJveERvdWJsZSh2YWx1ZSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbV9vdXQucGhpKERvdWJsZSwg
aW50UmVzdWx0LCBkb3VibGVSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
b3JlVHlwZSA9IE91dHB1dDo6U3RvcmVEb3VibGU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmU2NDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZENvbnRp
Z3VvdXNQcm9wZXJ0aWVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJJbnZhbGlkIGluZGV4aW5nIHR5cGUiKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9vdXQuc3RvcmUodmFsdWUsIG1fb3V0LmFkZHJlc3MoYnV0dGVyZmx5LCBoZWFwLT5hdChpbmRl
eCkpLCBzdG9yZVR5cGUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGJs
b2Nrc1dpdGhDaGVja3NbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzV2l0aENoZWNrc1tpXSwgaSA/
IGJsb2Nrc1dpdGhTdG9yZXNbaSAtIDFdIDogaW5kZXhMYXN0TmV4dCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIC8vIEluIHRoZSBlYXN5IGNhc2Ugd2hlcmUgd2UgY2FuIGRvIGEgb25lLXNob3Qg
YWxsb2NhdGlvbiwgd2Ugc2ltcGx5IGFsbG9jYXRlIHRoZQogICAgICAgICAgICAgICAgIC8vIG9i
amVjdCB0byBkaXJlY3RseSBoYXZlIHRoZSBkZXNpcmVkIHN0cnVjdHVyZS4KQEAgLTYzNjUsMTIg
KzY1MDMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChQcm9w
ZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVzQ29uY3VycmVudGx5
KCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGll
cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICAgICAgUGhhbnRvbVByb3BlcnR5VmFs
dWUgdmFsdWUgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGguaWRlbnRpZmllcnMoKVt2YWx1ZS5tX2lkZW50aWZpZXJOdW1iZXJdICE9IGVudHJ5
LmtleSkKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVz
Y3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAo
ZGVzY3JpcHRvci5raW5kKCkgIT0gTmFtZWRQcm9wZXJ0eVBMb2MpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaWRlbnRp
ZmllcnMoKVtkZXNjcmlwdG9yLmluZm8oKV0gIT0gZW50cnkua2V5KQogICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBMVmFsdWUgYmFzZSA9IGlzSW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNldCkgPyBvYmplY3Qg
OiBidXR0ZXJmbHk7Ci0gICAgICAgICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkodmFsdWVzW2ld
LCBiYXNlLCB2YWx1ZS5tX2lkZW50aWZpZXJOdW1iZXIsIGVudHJ5Lm9mZnNldCk7CisgICAgICAg
ICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkodmFsdWVzW2ldLCBiYXNlLCBkZXNjcmlwdG9yLmlu
Zm8oKSwgZW50cnkub2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNjQzNSw5ICs2NTc1LDExIEBAIHByaXZhdGU6
CiAgICAgICAgIExWYWx1ZSBhY3RpdmF0aW9uID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFz
dFJlc3VsdCwgc2xvd1Jlc3VsdCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEubV9wcm9w
ZXJ0aWVzLnNpemUoKSA9PSB0YWJsZS0+c2NvcGVTaXplKCkpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgIG1fb3V0LnN0b3JlNjQodmFsdWVzW2ldLAotICAgICAgICAgICAgICAgIGFjdGl2YXRpb24s
Ci0gICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlc1tk
YXRhLm1fcHJvcGVydGllc1tpXS5tX2lkZW50aWZpZXJOdW1iZXJdKTsKKyAgICAgICAgICAgIFBy
b21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tp
XTsKKyAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9PSBDbG9zdXJlVmFyUExv
Yyk7CisgICAgICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgICAgIHZhbHVlc1tp
XSwgYWN0aXZhdGlvbiwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLkpTRW52aXJvbm1lbnRSZWNv
cmRfdmFyaWFibGVzW2Rlc2NyaXB0b3IuaW5mbygpXSk7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewpAQCAtNjQ0Niw3ICs2NTg4LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKGxvY2tlciksIGVuZCA9
IHRhYmxlLT5lbmQobG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAgICAg
ICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGl0ZXItPnZhbHVlLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgPT0gZGF0YS5tX3By
b3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyKSB7CisgICAgICAgICAgICAgICAgICAgIFBy
b21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tp
XTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRlc2NyaXB0b3Iua2luZCgpID09IENsb3N1
cmVWYXJQTG9jKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLnNjb3BlT2Zm
c2V0KCkub2Zmc2V0KCkgPT0gZGVzY3JpcHRvci5pbmZvKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICB9CkBAIC02NjEzLDYgKzY3NTcsMjkgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgcmVnRXhwLCBtX2hlYXBzLlJlZ0V4cE9iamVjdF9sYXN0
SW5kZXgpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3Vs
dCgpCisgICAgeworICAgICAgICBFZGdlIGNvbnN0cnVjdG9yRWRnZSA9IG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAwKTsKKyAgICAgICAgRWRnZSByZWdFeHBFZGdlID0gbV9ncmFwaC52YXJB
cmdDaGlsZChtX25vZGUsIDEpOworICAgICAgICBFZGdlIHN0cmluZ0VkZ2UgPSBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMik7CisgICAgICAgIEVkZ2Ugc3RhcnRFZGdlID0gbV9ncmFwaC52
YXJBcmdDaGlsZChtX25vZGUsIDMpOworICAgICAgICBFZGdlIGVuZEVkZ2UgPSBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgNCk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY29uc3RydWN0
b3IgPSBsb3dDZWxsKGNvbnN0cnVjdG9yRWRnZSk7CisgICAgICAgIExWYWx1ZSByZWdFeHAgPSBs
b3dDZWxsKHJlZ0V4cEVkZ2UpOworICAgICAgICBMVmFsdWUgc3RyaW5nID0gbG93Q2VsbChzdHJp
bmdFZGdlKTsKKyAgICAgICAgTFZhbHVlIHN0YXJ0ID0gbG93SW50MzIoc3RhcnRFZGdlKTsKKyAg
ICAgICAgTFZhbHVlIGVuZCA9IGxvd0ludDMyKGVuZEVkZ2UpOworCisgICAgICAgIG1fb3V0LnN0
b3JlUHRyKHJlZ0V4cCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2Fj
aGVkUmVzdWx0X2xhc3RSZWdFeHApOworICAgICAgICBtX291dC5zdG9yZVB0cihzdHJpbmcsIGNv
bnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0SW5w
dXQpOworICAgICAgICBtX291dC5zdG9yZTMyKHN0YXJ0LCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5S
ZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0KTsKKyAgICAgICAgbV9v
dXQuc3RvcmUzMihlbmQsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2Nh
Y2hlZFJlc3VsdF9yZXN1bHRfZW5kKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMkFzOCgKKyAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50MzIoMCksCisgICAgICAgICAgICBtX291dC5hZGRyZXNzKGNv
bnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZWlmaWVk
KSk7CisgICAgfQorCiAgICAgTFZhbHVlIGRpZE92ZXJmbG93U3RhY2soKQogICAgIHsKICAgICAg
ICAgLy8gVGhpcyBkb2VzIGEgdmVyeSBzaW1wbGUgbGVhZiBmdW5jdGlvbiBhbmFseXNpcy4gVGhl
IGludmFyaWFudCBvZiBGVEwgY2FsbApAQCAtNjk3MCw2ICs3MTM3LDM5IEBAIHByaXZhdGU6CiAg
ICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKworICAgIHZvaWQgaW5pdGlh
bGl6ZUFycmF5RWxlbWVudHMoSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgTFZhbHVlIHZlY3Rv
ckxlbmd0aCwgTFZhbHVlIGJ1dHRlcmZseSkKKyAgICB7CisgICAgICAgIGlmICghaGFzRG91Ymxl
KGluZGV4aW5nVHlwZSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBHQyBhbHJlYWR5IGluaXRpYWxp
emVkIGV2ZXJ5dGhpbmcgdG8gSlNWYWx1ZSgpIGZvciB1cy4KKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIERvdWJsZXMgbXVzdCBiZSBpbml0aWFsaXplZCB0byBQ
TmFOLgorICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGluaXREb25lID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291dC5hbmNob3IodmVj
dG9yTGVuZ3RoKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxQb2ludGVyID0gbV9v
dXQuYW5jaG9yKGJ1dHRlcmZseSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAg
IG1fb3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUo
aW5pdERvbmUpKTsKKyAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7CisgICAgICAgIExWYWx1ZSBpbmRl
eCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgb3JpZ2luYWxJbmRleCk7CisgICAgICAgIExWYWx1
ZSBwb2ludGVyID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQb2ludGVyKTsKKyAg
ICAgICAgCisgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICBtX291dC5jb25zdElu
dDY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksCisgICAgICAgICAgICBUeXBlZFBvaW50
ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFueUluZGV4KCksIHBvaW50ZXIp
KTsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5zdWIoaW5kZXgs
IG1fb3V0LmludDMyT25lKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShpbmRleCwg
bV9vdXQuYW5jaG9yKG5leHRJbmRleCkpOworICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhp
KHBvaW50ZXIsIG1fb3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRlciwgbV9vdXQuaW50UHRyRWln
aHQpKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8z
MihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKKyAgICAg
ICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGluaXREb25lLCBpbml0TGFzdE5leHQpOworICAg
IH0KICAgICAKICAgICBMVmFsdWUgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTFZhbHVlIG9iamVj
dCwgU3RydWN0dXJlKiBwcmV2aW91c1N0cnVjdHVyZSkKICAgICB7CkBAIC05MjU3LDcgKzk0NTcs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJu
IG1fb3V0LnRlc3ROb25aZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKTsKICAgICB9Ci0g
ICAgCisKICAgICBMVmFsdWUgdW5ib3hEb3VibGUoTFZhbHVlIGpzVmFsdWUpCiAgICAgewogICAg
ICAgICByZXR1cm4gbV9vdXQuYml0Q2FzdChtX291dC5hZGQoanNWYWx1ZSwgbV90YWdUeXBlTnVt
YmVyKSwgbV9vdXQuZG91YmxlVHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE5ICs0
MSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzo6REZHOwogCi1leHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgCi0gICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBC
dXR0ZXJmbHk6OmNyZWF0ZSgKLSAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIEluZGV4aW5nSGVhZGVyKCksIDApOwotICAgIAotICAg
IEpTT2JqZWN0KiByZXN1bHQgPSBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhlYywgc3RydWN0dXJl
LCBidXR0ZXJmbHkpOwotICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRo
ZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogZXh0
ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUigK
ICAgICBFeGVjU3RhdGUqIGV4ZWMsIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiBtYXRl
cmlhbGl6YXRpb24sCiAgICAgRW5jb2RlZEpTVmFsdWUqIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUqIHZhbHVlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBAQCBjbGFzcyBMYXp5
U2xvd1BhdGg7CiAKIGV4dGVybiAiQyIgewogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5U
RVJOQUw7Ci0KIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVj
dEluT1NSKAogICAgIEV4ZWNTdGF0ZSosIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiwg
RW5jb2RlZEpTVmFsdWUqKSBXVEZfSU5URVJOQUw7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNw
cAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9D
b250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNz
aW9uLmgiCiAjaW5jbHVkZSAiWWFyci5oIgorI2luY2x1ZGUgIllhcnJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE5Nzk4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk2LDYgKzk2LDEwIEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAorICAgIC8vIFRoaXMgaXMgYSBzdXBl
ciBkYW5nZXJvdXMgbWV0aG9kIGZvciBKSVRzLiBTb21ldGltZXMgdGhlIEpJVHMgd2lsbCB3YW50
IHRvIGNyZWF0ZSBlaXRoZXIgYQorICAgIC8vIEpTRmluYWxPYmplY3Qgb3IgYSBKU0FycmF5LiBU
aGlzIGlzIHRoZSBtZXRob2QgdGhhdCB3aWxsIGRvIHRoYXQuCisgICAgc3RhdGljIEpTT2JqZWN0
KiBjcmVhdGVSYXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QnV0dGVyZmx5KiA9IG51bGxwdHIpOworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHNp
emVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNp
dG9yJiwgQ29weVRva2VuKTsKQEAgLTEwMzQsNiArMTAzOCwyMCBAQCBwcml2YXRlOgogCiBKU19F
WFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByaXZhdGVG
dW5jSW5zdGFuY2VPZihFeGVjU3RhdGUqKTsKIAoraW5saW5lIEpTT2JqZWN0KiBKU09iamVjdDo6
Y3JlYXRlUmF3T2JqZWN0KAorICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQoreworICAgIEpTT2JqZWN0KiBmaW5hbE9iamVjdCA9
IG5ldyAoCisgICAgICAgIE5vdE51bGwsIAorICAgICAgICBhbGxvY2F0ZUNlbGw8SlNGaW5hbE9i
amVjdD4oCisgICAgICAgICAgICAqZXhlYy0+aGVhcCgpLAorICAgICAgICAgICAgSlNGaW5hbE9i
amVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKQorICAgICAg
ICApCisgICAgKSBKU09iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Cisg
ICAgZmluYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgIHJldHVybiBm
aW5hbE9iamVjdDsKK30KKwogaW5saW5lIEpTRmluYWxPYmplY3QqIEpTRmluYWxPYmplY3Q6OmNy
ZWF0ZSgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJm
bHkqIGJ1dHRlcmZseSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDYgKzI2Miw4IEBAIFJlZ0V4cCog
UmVnRXhwOjpjcmVhdGUoVk0mIHZtLCBjb25zdCBTdHIKIAogdm9pZCBSZWdFeHA6OmNvbXBpbGUo
Vk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7CisgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0
ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IpOwogICAg
IGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yOTEsNyArMjkzLDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGUoVk0qIHZt
LCBZYXJyOjpZYXJyQwogI2VuZGlmCiAKICAgICBtX3N0YXRlID0gQnl0ZUNvZGU7Ci0gICAgbV9y
ZWdFeHBCeXRlY29kZSA9IFlhcnI6OmJ5dGVDb21waWxlKHBhdHRlcm4sICZ2bS0+bV9yZWdFeHBB
bGxvY2F0b3IpOworICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShwYXR0
ZXJuLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9yLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9yTG9jayk7
CiB9CiAKIGludCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKQpAQCAtMjk5LDggKzMwMSwy
MiBAQCBpbnQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYgCiAgICAgcmV0dXJu
IG1hdGNoSW5saW5lKHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7CiB9CiAKK2Jvb2wgUmVn
RXhwOjptYXRjaENvbmN1cnJlbnRseSgKKyAgICBWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rv
cikKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYg
KCFoYXNDb2RlRm9yKHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHBvc2l0aW9uID0gbWF0Y2godm0sIHMsIHN0YXJ0
T2Zmc2V0LCBvdmVjdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZWdFeHA6OmNv
bXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7Cisg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBZYXJyOjpZ
YXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0
aW9uRXJyb3IpOwogICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zMzAsNyArMzQ2LDcgQEAgdm9pZCBSZWdFeHA6
OmNvbXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYQogI2VuZGlmCiAKICAgICBtX3N0YXRlID0gQnl0
ZUNvZGU7Ci0gICAgbV9yZWdFeHBCeXRlY29kZSA9IFlhcnI6OmJ5dGVDb21waWxlKHBhdHRlcm4s
ICZ2bS0+bV9yZWdFeHBBbGxvY2F0b3IpOworICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpi
eXRlQ29tcGlsZShwYXR0ZXJuLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9yLCAmdm0tPm1fcmVnRXhw
QWxsb2NhdG9yTG9jayk7CiB9CiAKIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBj
b25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KQpAQCAtMzM4LDggKzM1NCwyMSBA
QCBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgCiAgICAgcmV0dXJuIG1h
dGNoSW5saW5lKHZtLCBzLCBzdGFydE9mZnNldCk7CiB9CiAKK2Jvb2wgUmVnRXhwOjptYXRjaENv
bmN1cnJlbnRseShWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IE1hdGNoUmVzdWx0JiByZXN1bHQpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKworICAgIGlmICghaGFzTWF0Y2hPbmx5Q29kZUZvcihzLmlzOEJpdCgpID8gWWFy
cjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXN1bHQgPSBtYXRjaCh2bSwgcywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIFJlZ0V4cDo6ZGVsZXRlQ29kZSgpCiB7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBpZiAoIWhhc0NvZGUoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fc3RhdGUgPSBOb3RDb21waWxlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lm
bmRlZiBSZWdFeHBfaAogI2RlZmluZSBSZWdFeHBfaAogCisjaW5jbHVkZSAiQ29uY3VycmVudEpJ
VExvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiTWF0
Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKQEAgLTU2LDYgKzU3LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFn
SWdub3JlQ2FzZTsgfQogICAgIGJvb2wgbXVsdGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mbGFn
cyAmIEZsYWdNdWx0aWxpbmU7IH0KICAgICBib29sIHN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmxhZ3MgJiBGbGFnU3RpY2t5OyB9CisgICAgYm9vbCBnbG9iYWxPclN0aWNreSgpIGNvbnN0IHsg
cmV0dXJuIGdsb2JhbCgpIHx8IHN0aWNreSgpOyB9CiAgICAgYm9vbCB1bmljb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGFncyAmIEZsYWdVbmljb2RlOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHBh
dHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KQEAgLTY0LDggKzY2LDE0
IEBAIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVy
biBtX2NvbnN0cnVjdGlvbkVycm9yOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgbWF0
Y2goVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwg
MzI+JiBvdmVjdG9yKTsKKworICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2UgY291bGRuJ3QgcnVu
IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gZm9yIGFueSByZWFzb24uCisgICAgYm9vbCBtYXRjaENv
bmN1cnJlbnRseShWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQm
IHBvc2l0aW9uLCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOworICAgIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIE1hdGNoUmVzdWx0IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQg
c3RhcnRPZmZzZXQpOwogCisgICAgYm9vbCBtYXRjaENvbmN1cnJlbnRseShWTSYsIGNvbnN0IFN0
cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYpOworCiAgICAgLy8gQ2Fs
bCB0aGVzZSB2ZXJzaW9ucyBvZiB0aGUgbWF0Y2ggZnVuY3Rpb25zIGlmIHlvdSdyZSBkZXNwZXJh
dGUgZm9yIHBlcmZvcm1hbmNlLgogICAgIGludCBtYXRjaElubGluZShWTSYsIGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOwogICAg
IE1hdGNoUmVzdWx0IG1hdGNoSW5saW5lKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQpOwpAQCAtNzcsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3N0
YXRlICE9IE5vdENvbXBpbGVkOwogICAgIH0KIAorICAgIGJvb2wgaGFzQ29kZUZvcihZYXJyOjpZ
YXJyQ2hhclNpemUpOworICAgIGJvb2wgaGFzTWF0Y2hPbmx5Q29kZUZvcihZYXJyOjpZYXJyQ2hh
clNpemUpOworCiAgICAgdm9pZCBkZWxldGVDb2RlKCk7CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RS
QUNJTkcpCkBAIC0xMzIsNiArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3J0TWF0
Y2hDYWxsQ291bnQ7CiAgICAgdW5zaWduZWQgbV9ydE1hdGNoRm91bmRDb3VudDsKICNlbmRpZgor
ICAgIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKIAogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAg
ICBZYXJyOjpZYXJyQ29kZUJsb2NrIG1fcmVnRXhwSklUQ29kZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCShyZXZpc2lv
biAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRS
ZXN1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTEgQEAgcHVibGljOgogCiAgICAg
dm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mTGFzdFJlZ0V4cCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNo
ZWRSZXN1bHQsIG1fbGFzdFJlZ0V4cCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
TGFzdElucHV0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENhY2hlZFJlc3VsdCwg
bV9sYXN0SW5wdXQpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlc3VsdCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fcmVzdWx0KTsgfQor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZWlmaWVkKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFJlZ0V4cENhY2hlZFJlc3VsdCwgbV9yZWlmaWVkKTsgfQorCiBwcml2YXRlOgogICAg
IE1hdGNoUmVzdWx0IG1fcmVzdWx0OwogICAgIGJvb2wgbV9yZWlmaWVkOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAorICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoUmVnRXhwQ29uc3RydWN0b3IsIG1fY2FjaGVkUmVzdWx0KTsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFJlZ0V4cFByb3RvdHlwZSosIEdldHRl
clNldHRlciogc3BlY2llcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJZYXJyLmgiCisjaW5jbHVkZSAiWWFyckludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
WWFyckpJVC5oIgogCiAjZGVmaW5lIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4gMApAQCAtNjcs
MjAgKzY4LDI3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmIC8vIFJFR0VYUF9GVU5DX1RFU1RfREFU
QV9HRU4KIAotQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZN
JiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQorQUxXQVlTX0lOTElORSBib29sIFJl
Z0V4cDo6aGFzQ29kZUZvcihZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7CiAgICAgaWYg
KGhhc0NvZGUoKSkgewogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICAgICAgaWYgKG1fc3RhdGUg
IT0gSklUQ29kZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdFeHBKSVRD
b2RlLmhhczhCaXRDb2RlKCkpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjE2KSAmJiAobV9y
ZWdFeHBKSVRDb2RlLmhhczE2Qml0Q29kZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdHJ1ZTsKICNlbmRpZgogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19J
TkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6OllhcnJD
aGFyU2l6ZSBjaGFyU2l6ZSkKK3sKKyAgICBpZiAoaGFzQ29kZUZvcihjaGFyU2l6ZSkpCisgICAg
ICAgIHJldHVybjsKIAogICAgIGNvbXBpbGUoJnZtLCBjaGFyU2l6ZSk7CiB9CkBAIC0xNTIsMjEg
KzE2MCwyOSBAQCBBTFdBWVNfSU5MSU5FIGludCBSZWdFeHA6Om1hdGNoSW5saW5lKFZNCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlm
TmVjZXNzYXJ5TWF0Y2hPbmx5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQor
QUxXQVlTX0lOTElORSBib29sIFJlZ0V4cDo6aGFzTWF0Y2hPbmx5Q29kZUZvcihZYXJyOjpZYXJy
Q2hhclNpemUgY2hhclNpemUpCiB7CiAgICAgaWYgKGhhc0NvZGUoKSkgewogI2lmIEVOQUJMRShZ
QVJSX0pJVCkKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gSklUQ29kZSkKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09
IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczhCaXRDb2RlTWF0Y2hPbmx5KCkp
KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczE2
Qml0Q29kZU1hdGNoT25seSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsK
ICNlbmRpZgogICAgIH0KIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSB2
b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KFZNJiB2bSwgWWFycjo6WWFy
ckNoYXJTaXplIGNoYXJTaXplKQoreworICAgIGlmIChoYXNNYXRjaE9ubHlDb2RlRm9yKGNoYXJT
aXplKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgY29tcGlsZU1hdGNoT25seSgmdm0sIGNoYXJT
aXplKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0
Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw2ICs1Niw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2gKICAg
ICAKICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CiAgICAgaW50IHBvc2l0
aW9uID0gcmVnRXhwLT5tYXRjaElubGluZSh2bSwgaW5wdXRWYWx1ZSwgc3RhcnRPZmZzZXQsIHN1
YnBhdHRlcm5SZXN1bHRzKTsKKyAgICBBU1NFUlQocG9zaXRpb24gPT0gc3VicGF0dGVyblJlc3Vs
dHNbMF0pOwogICAgIGlmIChwb3NpdGlvbiA9PSAtMSkgewogICAgICAgICByZXN1bHQgPSBNYXRj
aFJlc3VsdDo6ZmFpbGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIEpTVmFsdWUg
UmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKEV4ZWNTdGEKICAgICBTdHJpbmcgaW5wdXQgPSBzdHJp
bmctPnZhbHVlKGV4ZWMpOyAvLyBGSVhNRTogSGFuZGxlIGVycm9ycy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTE0NQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKIAotICAgIGJvb2wgZ2xvYmFsT3JTdGlja3kgPSByZWdFeHAtPmdsb2JhbCgpIHx8
IHJlZ0V4cC0+c3RpY2t5KCk7CisgICAgYm9vbCBnbG9iYWxPclN0aWNreSA9IHJlZ0V4cC0+Z2xv
YmFsT3JTdGlja3koKTsKIAogICAgIHVuc2lnbmVkIGxhc3RJbmRleDsKICAgICBpZiAoZ2xvYmFs
T3JTdGlja3kpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgx
LDcgKzI4MSw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgU3RyaW5nIHN1YnN0aXR1dGVCYWMKICAg
ICByZXR1cm4gc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC50b1N0cmluZygpOwogfQogCi1zdGF0aWMg
aW5saW5lIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3RvciwgUmVnRXhwKiBy
ZWcpCitpbmxpbmUgU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlc0lubGluZShjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9y
LCBSZWdFeHAqIHJlZykKIHsKICAgICBzaXplX3QgaSA9IHJlcGxhY2VtZW50LmZpbmQoJyQnKTsK
ICAgICBpZiAoVU5MSUtFTFkoaSAhPSBub3RGb3VuZCkpCkBAIC0yOTAsNiArMjkwLDExIEBAIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXIKICAgICByZXR1cm4gcmVwbGFj
ZW1lbnQ7CiB9CiAKK1N0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3RvciwgUmVn
RXhwKiByZWcpCit7CisgICAgcmV0dXJuIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlc0lubGluZShy
ZXBsYWNlbWVudCwgc291cmNlLCBvdmVjdG9yLCByZWcpOworfQorCiBzdHJ1Y3QgU3RyaW5nUmFu
Z2UgewogICAgIFN0cmluZ1JhbmdlKGludCBwb3MsIGludCBsZW4pCiAgICAgICAgIDogcG9zaXRp
b24ocG9zKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgT2JqZWN0UHJvdG90eXBlOworY2xhc3MgUmVnRXhw
OwogY2xhc3MgUmVnRXhwT2JqZWN0OwogCiBjbGFzcyBTdHJpbmdQcm90b3R5cGUgOiBwdWJsaWMg
U3RyaW5nT2JqZWN0IHsKQEAgLTYyLDYgKzYzLDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25TdAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25T
dHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nKAogICAgIEV4ZWNTdGF0ZSosIEpTU3Ry
aW5nKiB0aGlzVmFsdWUsIFJlZ0V4cE9iamVjdCogc2VhcmNoVmFsdWUsIEpTU3RyaW5nKiByZXBs
YWNlVmFsdWUpOwogCitTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJl
Z0V4cCogcmVnKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTdHJpbmdQcm90
b3R5cGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIFZNX2gKICNkZWZpbmUgVk1faAogCisjaW5jbHVk
ZSAiQ29uY3VycmVudEpJVExvY2suaCIKICNpbmNsdWRlICJDb250cm9sRmxvd1Byb2ZpbGVyLmgi
CiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxs
b2NhdG9yLmgiCkBAIC01NDEsNiArNTQyLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxUeXBlZEFy
cmF5Q29udHJvbGxlcj4gbV90eXBlZEFycmF5Q29udHJvbGxlcjsKICAgICBSZWdFeHBDYWNoZSog
bV9yZWdFeHBDYWNoZTsKICAgICBCdW1wUG9pbnRlckFsbG9jYXRvciBtX3JlZ0V4cEFsbG9jYXRv
cjsKKyAgICBDb25jdXJyZW50SklUTG9jayBtX3JlZ0V4cEFsbG9jYXRvckxvY2s7CiAKICNpZiBF
TkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWdFeHAqPiBS
VFRyYWNlTGlzdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwu
anMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Np
bXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMSBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiAvKGYpKG8pKG8pLy5leGVjKCJi
YXIiKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlmIChyZXN1bHQgIT09IG51bGwp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZv
bGRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJl
dHVybiAvKGYpKG8pKG8pLy5leGVjKCJmb28iKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOwor
ICAgIGlmIChyZXN1bHQubGVuZ3RoICE9IDQpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzBdICE9ICJmb28iKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFsxXSAh
PSAiZiIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAg
ICBpZiAocmVzdWx0WzJdICE9ICJvIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1bHRbM10gIT0gIm8iKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVn
ZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1
cm4gLyhmKShvKShvKS8udGVzdCgiYmFyIik7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAg
ICBpZiAocmVzdWx0ICE9IGZhbHNlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1y
ZWdleHAtdGVzdC1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1
bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8udGVzdCgiZm9vIik7Cit9CisK
K25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAg
IHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0ICE9IHRydWUpCisgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5jcHAJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLQogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KQEAgLTMwLDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogCiAjaW5jbHVkZSAiWWFyci5oIgorI2luY2x1ZGUgIllh
cnJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJyLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2lmbmRlZiBZYXJyX2gKICNk
ZWZpbmUgWWFycl9oCiAKLSNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJZ
YXJyUGF0dGVybi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewpAQCAtNjMs
NiArNjIsOCBAQCBlbnVtIFlhcnJDaGFyU2l6ZSB7CiAgICAgQ2hhcjE2CiB9OwogCitzdHJ1Y3Qg
Qnl0ZWNvZGVQYXR0ZXJuOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6WWFycgogCiAjZW5kaWYg
Ly8gWWFycl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTcsNiArMTUxNyw5
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFpbnB1dC5pc0F2YWlsYWJsZUlucHV0KDApKQogICAg
ICAgICAgICAgcmV0dXJuIG9mZnNldE5vTWF0Y2g7CiAKKyAgICAgICAgaWYgKHBhdHRlcm4tPm1f
bG9jaykKKyAgICAgICAgICAgIHBhdHRlcm4tPm1fbG9jay0+bG9jaygpOworICAgICAgICAKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdHRlcm4tPm1fYm9keS0+bV9udW1TdWJw
YXR0ZXJucyArIDE7ICsraSkKICAgICAgICAgICAgIG91dHB1dFtpIDw8IDFdID0gb2Zmc2V0Tm9N
YXRjaDsKIApAQCAtMTUzNiw2ICsxNTM5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcGF0dGVybi0+
bV9hbGxvY2F0b3ItPnN0b3BBbGxvY2F0b3IoKTsKIAogICAgICAgICBBU1NFUlQoKHJlc3VsdCA9
PSBKU1JlZ0V4cE1hdGNoKSA9PSAob3V0cHV0WzBdICE9IG9mZnNldE5vTWF0Y2gpKTsKKworICAg
ICAgICBpZiAocGF0dGVybi0+bV9sb2NrKQorICAgICAgICAgICAgcGF0dGVybi0+bV9sb2NrLT51
bmxvY2soKTsKKyAgICAgICAgCiAgICAgICAgIHJldHVybiBvdXRwdXRbMF07CiAgICAgfQogCkBA
IC0xNTc2LDEzICsxNTgzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9jdXJyZW50QWx0ZXJuYXRp
dmVJbmRleCA9IDA7CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVy
bj4gY29tcGlsZShCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZVBhdHRlcm4+IGNvbXBpbGUoQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFs
bG9jYXRvciwgQ29uY3VycmVudEpJVExvY2sqIGxvY2spCiAgICAgewogICAgICAgICByZWdleEJl
Z2luKG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zLCBtX3BhdHRlcm4ubV9ib2R5LT5tX2NhbGxG
cmFtZVNpemUsIG1fcGF0dGVybi5tX2JvZHktPm1fYWx0ZXJuYXRpdmVzWzBdLT5vbmNlVGhyb3Vn
aCgpKTsKICAgICAgICAgZW1pdERpc2p1bmN0aW9uKG1fcGF0dGVybi5tX2JvZHkpOwogICAgICAg
ICByZWdleEVuZCgpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2Rl
UGF0dGVybj4oV1RGTW92ZShtX2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZv
LCBtX3BhdHRlcm4sIGFsbG9jYXRvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEJ5dGVjb2RlUGF0dGVybj4oV1RGTW92ZShtX2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50
aGVzZXNJbmZvLCBtX3BhdHRlcm4sIGFsbG9jYXRvciwgbG9jayk7CiAgICAgfQogCiAgICAgdm9p
ZCBjaGVja0lucHV0KHVuc2lnbmVkIGNvdW50KQpAQCAtMjAyNyw5ICsyMDM0LDkgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4+IG1fYWxsUGFy
ZW50aGVzZXNJbmZvOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0
ZUNvbXBpbGUoWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCitzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJy
UGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvciwgQ29uY3Vy
cmVudEpJVExvY2sqIGxvY2spCiB7Ci0gICAgcmV0dXJuIEJ5dGVDb21waWxlcihwYXR0ZXJuKS5j
b21waWxlKGFsbG9jYXRvcik7CisgICAgcmV0dXJuIEJ5dGVDb21waWxlcihwYXR0ZXJuKS5jb21w
aWxlKGFsbG9jYXRvciwgbG9jayk7CiB9CiAKIHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBh
dHRlcm4qIGJ5dGVjb2RlLCBjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQqIG91dHB1dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRl
cnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJ
bnRlcnByZXRlci5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBZYXJySW50ZXJwcmV0ZXJfaAogI2RlZmluZSBZYXJySW50ZXJwcmV0ZXJfaAogCisj
aW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKICNpbmNsdWRlICJZYXJyUGF0dGVybi5oIgog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTMzNywxMCArMzM4LDExIEBAIHB1YmxpYzoKIHN0cnVjdCBC
eXRlY29kZVBhdHRlcm4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIEJ5dGVjb2RlUGF0dGVybihzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPiBib2R5
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4+JiBwYXJlbnRoZXNlc0lu
Zm9Ub0Fkb3B0LCBZYXJyUGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFs
bG9jYXRvcikKKyAgICBCeXRlY29kZVBhdHRlcm4oc3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5j
dGlvbj4gYm9keSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiYgcGFy
ZW50aGVzZXNJbmZvVG9BZG9wdCwgWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKSVRMb2NrKiBsb2NrKQogICAgICAgICA6IG1f
Ym9keShXVEZNb3ZlKGJvZHkpKQogICAgICAgICAsIG1fZmxhZ3MocGF0dGVybi5tX2ZsYWdzKQog
ICAgICAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKKyAgICAgICAgLCBtX2xvY2sobG9jaykK
ICAgICB7CiAgICAgICAgIG1fYm9keS0+dGVybXMuc2hyaW5rVG9GaXQoKTsKIApAQCAtMzY2LDYg
KzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyBFYWNoIEJ5dGVjb2RlUGF0dGVybiBpcyBhc3NvY2lh
dGVkIHdpdGggYSBSZWdFeHAsIGVhY2ggUmVnRXhwIGlzIGFzc29jaWF0ZWQKICAgICAvLyB3aXRo
IGEgVk0uICBDYWNoZSBhIHBvaW50ZXIgdG8gb3V0IFZNJ3MgbV9yZWdFeHBBbGxvY2F0b3IuCiAg
ICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAgIExvY2sqIG1fbG9jazsK
IAogICAgIENoYXJhY3RlckNsYXNzKiBuZXdsaW5lQ2hhcmFjdGVyQ2xhc3M7CiAgICAgQ2hhcmFj
dGVyQ2xhc3MqIHdvcmRjaGFyQ2hhcmFjdGVyQ2xhc3M7CkBAIC0zNzUsNyArMzc4LDcgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPj4gbV91c2Vy
Q2hhcmFjdGVyQ2xhc3NlczsKIH07CiAKLUpTX0VYUE9SVF9QUklWQVRFIHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiwgQnVtcFBvaW50ZXJB
bGxvY2F0b3IqKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZVBh
dHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqLCBD
b25jdXJyZW50SklUTG9jayogPSBudWxscHRyKTsKIEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVk
IGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCk7CiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQ
YXR0ZXJuKiwgY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCogb3V0cHV0KTsKIHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBhdHRl
cm4qLCBjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkKiBvdXRwdXQpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDMtMTAg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBERkcgYW5kIEZUTCBz
aG91bGQgY29uc3RhbnQtZm9sZCBSZWdFeHBFeGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGV4ZWN1dGVJbnNlcnRpb25zKCkgcmV0dXJuIHRo
ZSBhbW91bnQgYnkgd2hpY2ggdGhlIHZlY3RvciBpbmNyZWFzZWQgaW4gc2l6ZS4gVGhpcyBpcyBh
CisgICAgICAgIGNvbnZlbmllbnQgZmVhdHVyZSB0aGF0IEkgdXNlIGluIERGRzo6SW5zZXJ0aW9u
U2V0LgorCisgICAgICAgICogd3RmL0luc2VydGlvbi5oOgorICAgICAgICAoV1RGOjpleGVjdXRl
SW5zZXJ0aW9ucyk6CisKIDIwMTYtMDMtMTAgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBXT0ZGMgpJbmRleDogU291cmNl
L1dURi93dGYvSW5zZXJ0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSW5zZXJ0
aW9uLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDE0ICs1NSwxNSBAQCBwcml2YXRlOgogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0VmVjdG9yVHlwZSwgdHlwZW5hbWUgSW5zZXJ0aW9uVmVj
dG9yVHlwZT4KLXZvaWQgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlwZSYgdGFyZ2V0
LCBJbnNlcnRpb25WZWN0b3JUeXBlJiBpbnNlcnRpb25zKQorc2l6ZV90IGV4ZWN1dGVJbnNlcnRp
b25zKFRhcmdldFZlY3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0aW9uVmVjdG9yVHlwZSYgaW5zZXJ0
aW9ucykKIHsKLSAgICBpZiAoIWluc2VydGlvbnMuc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUoKSArIGluc2VydGlvbnMuc2l6ZSgpKTsKKyAgICBz
aXplX3QgbnVtSW5zZXJ0aW9ucyA9IGluc2VydGlvbnMuc2l6ZSgpOworICAgIGlmICghbnVtSW5z
ZXJ0aW9ucykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUo
KSArIG51bUluc2VydGlvbnMpOwogICAgIHNpemVfdCBsYXN0SW5kZXggPSB0YXJnZXQuc2l6ZSgp
OwogICAgIHNpemVfdCBvcmlnaW5hbFRhcmdldFNpemUgPSB0YXJnZXQuc2l6ZSgpOwotICAgIGZv
ciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gaW5zZXJ0aW9ucy5zaXplKCk7IGluZGV4SW5J
bnNlcnRpb25zLS07KSB7CisgICAgZm9yIChzaXplX3QgaW5kZXhJbkluc2VydGlvbnMgPSBudW1J
bnNlcnRpb25zOyBpbmRleEluSW5zZXJ0aW9ucy0tOykgewogICAgICAgICBBU1NFUlQoIWluZGV4
SW5JbnNlcnRpb25zIHx8IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4KCkgPj0g
aW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9ucyAtIDFdLmluZGV4KCkpOwogICAgICAgICBBU1NF
UlRfVU5VU0VEKG9yaWdpbmFsVGFyZ2V0U2l6ZSwgaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9u
c10uaW5kZXgoKSA8IG9yaWdpbmFsVGFyZ2V0U2l6ZSk7CiAgICAgICAgIHNpemVfdCBmaXJzdElu
ZGV4ID0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSArIGluZGV4SW5JbnNl
cnRpb25zOwpAQCAtNzMsNiArNzQsNyBAQCB2b2lkIGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZl
Y3RvclR5cGUmCiAgICAgICAgIGxhc3RJbmRleCA9IGZpcnN0SW5kZXg7CiAgICAgfQogICAgIGlu
c2VydGlvbnMucmVzaXplKDApOworICAgIHJldHVybiBudW1JbnNlcnRpb25zOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzk4MSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAzLTEwICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIGFuZCBGVEwgc2hv
dWxkIGNvbnN0YW50LWZvbGQgUmVnRXhwRXhlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVn
ZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qczogQWRkZWQuCisgICAgICAg
ICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFp
bC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJl
Z2V4cC10ZXN0LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxl
LXJlZ2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwu
aHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9s
ZGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1w
bGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbDog
QWRkZWQuCisKIDIwMTYtMDMtMTAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29jb2FdIFRlc3QgZ2FyZGVuaW5nIGFmdGVyIHIxOTc5MzMKSW5k
ZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJl
Z2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhl
Yy1mb2xkaW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2Vw
dGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1m
b2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xk
aW5nLWZhaWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pT
UmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZh
aWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJl
Z2V4cC1leGVjLWZvbGRpbmctZmFpbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9y
ZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4
cC1leGVjLWZvbGRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Np
bXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcmVn
ZXhwLXRlc3QtZm9sZGluZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
byBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhw
LXRlc3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRl
c3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
IEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbAorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy1mYWlsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Np
bXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBs
ZS1yZWdleHAtdGVzdC1mb2xkaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWls
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7
ICsraSkKKyAgICAgICAgL2Zvby8uZXhlYygiYmFyIik7Cit9KSgpOworCkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICAvZm9vLy5leGVjKCJmb28iKTsKK30pKCk7
CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLWZhaWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1y
ZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBA
CisoZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisg
ICAgICAgIC9mb28vLnRlc3QoImJhciIpOworfSkoKTsKKwpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4
cC10ZXN0LWZvbGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwMDA7ICsraSkKKyAgICAgICAgL2Zvby8udGVzdCgiZm9vIik7Cit9KSgpOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273692</attachid>
            <date>2016-03-10 23:58:34 -0800</date>
            <delta_ts>2016-03-11 00:15:07 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>129563</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MyBA
QAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMsIFJlZ0V4cFRlc3Qs
IGFuZCBTdHJpbmdSZXBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGVuYWJsZXMgY29uc3RhbnQtZm9sZGluZyBvZiBSZWdFeHBFeGVjLCBS
ZWdFeHBUZXN0LCBhbmQgU3RyaW5nUmVwbGFjZS4KKworICAgICAgICBJdCdzIG5vdyBwb3NzaWJs
ZSB0byBydW4gWWFyciBvbiB0aGUgSklUIHRocmVhZHMuIFNpbmNlIHByZXZpb3VzIHdvcmsgb24g
Y29uc3RhbnQtZm9sZGluZworICAgICAgICBzdHJpbmdzIGdhdmUgdGhlIERGRyBhbiBBUEkgZm9y
IHJlYXNvbmluZyBhYm91dCBKU1N0cmluZyBjb25zdGFudHMgaW4gdGVybXMgb2YKKyAgICAgICAg
SklULXRocmVhZC1sb2NhbCBXVEY6OlN0cmluZ3MsIGl0J3Mgbm93IHN1cGVyIGVhc3kgdG8ganVz
dCBwYXNzIHN0cmluZ3MgdG8gWWFyciBhbmQgYnVpbGQgSVIKKyAgICAgICAgYmFzZWQgb24gdGhl
IHJlc3VsdHMuCisKKyAgICAgICAgQnV0IFJlZ0V4cEV4ZWMgaXMgaGFyZDogdGhlIGZvbGRlZCB2
ZXJzaW9uIHN0aWxsIG11c3QgYWxsb2NhdGUgYSBSZWdFeHBNYXRjaGVzQXJyYXkuIFdlIG11c3QK
KyAgICAgICAgdXNlIHRoZSBzYW1lIFN0cnVjdHVyZSB0aGF0IHRoZSBjb2RlIHdvdWxkIGhhdmUg
dXNlZCBvciBlbHNlIHdlJ2xsIHBvbGx1dGUgdGhlIHByb2dyYW0ncworICAgICAgICBpbmxpbmUg
Y2FjaGVzLiBBbHNvLCBSZWdFeHBNYXRjaGVzQXJyYXkuaHxjcHAgd2lsbCBhbGxvY2F0ZSB0aGUg
YXJyYXkgYW5kIGl0cyBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVzIGluIG9uZSBnbyAtIHdlIGRv
bid0IHdhbnQgdG8gbG9zZSB0aGF0IG9wdGltaXphdGlvbi4gU28sIHRoaXMgcGF0Y2ggZW5hYmxl
cworICAgICAgICBNYXRlcmlhbGl6ZU5ld09iamVjdCB0byBhbGxvY2F0ZSBvYmplY3RzIG9yIGFy
cmF5cyB3aXRoIGFueSBudW1iZXIgb2YgaW5kZXhlZCBvciBuYW1lZAorICAgICAgICBwcm9wZXJ0
aWVzLiBQcmV2aW91c2x5IGl0IGNvdWxkIG9ubHkgaGFuZGxlIG9iamVjdHMgKGJ1dCBub3QgYXJy
YXlzKSBhbmQgbmFlZCBwcm9wZXJ0aWVzCisgICAgICAgIChidXQgbm90IGluZGV4ZWQgb25lcyku
CisKKyAgICAgICAgVGhpcyBhbHNvIGFkZHMgYSBmZXcgbWlub3IgdGhpbmdzIGZvciBzZXR0aW5n
IHRoZSBSZWdFeHBDb25zdHJ1Y3RvciBjYWNoZWQgcmVzdWx0LgorCisgICAgICAgIFRoaXMgaXMg
YWJvdXQgYSAyeCBzcGVlZC11cCBvbiBtaWNyb2JlbmNobWFya3Mgd2hlbiB3ZSBmb2xkIGEgbWF0
Y2ggc3VjY2VzcyBhbmQgYWJvdXQgYQorICAgICAgICA4eCBzcGVlZC11cCB3aGVuIHdlIGZvbGQg
YSBtYXRjaCBmYWlsdXJlLiBJdCdzIGEgMTAlIHNwZWVkLXVwIG9uIE9jdGFuZS9yZWdleHAuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6
aW5zZXJ0U2xvdyk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjpleGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5z
ZXJ0aW9uU2V0OjppbnNlcnRDaGVjayk6CisgICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6dHJ5R2V0U3RyaW5nKToKKyAgICAg
ICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWF5RXhpdCk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdGFja0FjY2Vzc0Rh
dGE6OmZsdXNoZWRBdCk6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YTo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFs
dWU6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE6Om9uZVdheVNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRGRzo6T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oOgorICAgICAg
ICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpQaGFudG9tUHJvcGVydHlWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6Om9wZXJh
dG9yPT0pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkpOiBE
ZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVDb21tdXRhdGl2
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpleGVjdXRl
SW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRh
dGU6OnZhbGlkYXRlQ1BTKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAg
ICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6
ZUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmRpZE92ZXJmbG93U3RhY2spOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzdG9yYWdlRm9yVHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmluaXRpYWxpemVBcnJheUVs
ZW1lbnRzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpp
c05vdENlbGxPck1pc2MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1
bmJveERvdWJsZSk6CisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpG
VEw6Om9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkpOiBEZWxldGVkLgorICAgICAgICAq
IGZ0bC9GVExPcGVyYXRpb25zLmg6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlsaXRpZXMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdCk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlND
OjpSZWdFeHA6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Om1hdGNoKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlJlZ0V4
cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZGVsZXRlQ29kZSk6
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENh
Y2hlZFJlc3VsdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9m
TGFzdFJlZ0V4cCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZM
YXN0SW5wdXQpOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZpZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KToKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpoYXNDb2RlRm9yKToK
KyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlND
OjpSZWdFeHA6Om1hdGNoSW5saW5lKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpoYXNNYXRjaE9u
bHlDb2RlRm9yKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlNYXRj
aE9ubHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAg
IChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZXhlY0lubGlu
ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNTbG93KToKKyAgICAgICAgKEpTQzo6c3Vic3RpdHV0
ZUJhY2tyZWZlcmVuY2VzSW5saW5lKToKKyAgICAgICAgKEpTQzo6c3Vic3RpdHV0ZUJhY2tyZWZl
cmVuY2VzKToKKyAgICAgICAgKEpTQzo6U3RyaW5nUmFuZ2U6OlN0cmluZ1JhbmdlKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5q
czogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1wbGUt
cmVnZXhwLWV4ZWMtZm9sZGluZy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4K
KyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogeWFyci9SZWd1
bGFyRXhwcmVzc2lvbi5jcHA6CisgICAgICAgICogeWFyci9ZYXJyLmg6CisgICAgICAgICogeWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6
aW50ZXJwcmV0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjpCeXRlQ29tcGls
ZXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNoZWNrSW5wdXQpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpieXRlQ29tcGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OmludGVycHJldCk6CisgICAg
ICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZWNv
ZGVQYXR0ZXJuOjpCeXRlY29kZVBhdHRlcm4pOgorCiAyMDE2LTAzLTEwICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCByZWdpc3RlciBy
ZXVzZSBmb3IgQXJpdGhBZGQgb2YgYW4gSW50MzIgYW5kIGNvbnN0YW50IGluIERGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00ODgsNiArNDg4LDcgQEAKIAkJMEY3QzExQUQxQkMzODYyQzAwQzc0
Q0RCIC8qIENvcHlCYXJyaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMTFBQzFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdDMzlGQjFD
OEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4
cElubGluZXMuaCAqLzsgfTsKIAkJMEY3QzM5RkQxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9i
amVjdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi87
IH07CisJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZFMUM5MEM1NUIwMDQ4
MDE1MSAvKiBERkdPcEluZm8uaCAqLzsgfTsKIAkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8q
IEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMzNUI3MTYzOUMxRTYwMDE0
NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1
IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI2NDAsNiArMjY0MSw3IEBACiAJCTBGN0MxMUFDMUJDMzg2MkMwMEM3NENEQiAv
KiBDb3B5QmFycmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5QmFy
cmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGQTFDOEY2MjkzMDA0
ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZD
MUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPcEluZm8uaDsgcGF0aCA9IGRmZy9E
RkdPcEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMy
MzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCeVZhbEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5
QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYy
NDUsNiArNjI0Nyw3IEBACiAJCQkJMEYyQjlDREQxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGEuaCAqLywKIAkJCQk4NkVDOURCRjEzMjhERjgyMDAyQjJBRDcg
LyogREZHT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJODZFQzlEQzAxMzI4REY4MjAwMkIyQUQ3IC8q
IERGR09wZXJhdGlvbnMuaCAqLywKKwkJCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZH
T3BJbmZvLmggKi8sCiAJCQkJQTdEODlDRUUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwICovLAogCQkJCUE3RDg5Q0VGMTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmggKi8sCiAJCQkJMEZEODJFNTIx
NDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCAqLywKQEAgLTc0NDUsNiArNzQ0OCw3
IEBACiAJCQkJMEY2NEVBRjMxQzRFQ0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1RUE3MTA1MTlGNkRFNzQwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpj
X2NvbmZpZ3VyYXRpb25faGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDYxOUY2
REU3NjAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlv
bi5weSBpbiBIZWFkZXJzICovLAorCQkJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdP
cEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA3MTlGNkRFNzgwMDk4RjVFQyAvKiBn
ZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5IGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDgxOUY2REU3QTAwOThGNUVDIC8qIGdlbmVy
YXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJz
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTUyLDYgKzE5NTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAg
IGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTk3OTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkyMyw2ICs5MjMsMTAgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZQogICAgICAgICB3cml0ZShSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAg
ZGVmKEhlYXBMb2NhdGlvbihSZWdFeHBPYmplY3RMYXN0SW5kZXhMb2MsIFJlZ0V4cE9iamVjdF9s
YXN0SW5kZXgsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSk7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0
OgorICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7CisgICAgICAgIHJldHVybjsKICAgICAgICAg
CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOiB7CiAgICAgICAgIEFic3RyYWN0SGVhcCBoZWFw
KERpcmVjdEFyZ3VtZW50c1Byb3BlcnRpZXMsIG5vZGUtPmNhcHR1cmVkQXJndW1lbnRzT2Zmc2V0
KCkub2Zmc2V0KCkpOwpAQCAtMTA4Niw3ICsxMDkwLDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgp
ID09IFJlZ0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2lu
ZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAg
ICAgICAgICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUo
UmVnRXhwU3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmVhZChXb3JsZCk7CkBA
IC0xMDk4LDcgKzExMDQsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2Jq
ZWN0VXNlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlKSB7CiAgICAgICAgICAgICByZWFkKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHJlYWQo
UmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7
CisgICAgICAgICAgICB3cml0ZShSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICByZWFkKFdvcmxkKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3
LDYgKzExNyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAg
ICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBD
YWNoZWRSZXN1bHQ6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgY2FzZSBHZXRHbG9iYWxM
ZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBQdXRHbG9iYWxWYXJpYWJsZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTk3OTgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMwMCw2ICsxMzAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdG9y
ZUJhcnJpZXI6CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAg
ICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdF
eHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgICAgICAvLyBUaGVzZSBhcmUganVzdCBub2RlcyB0aGF0
IHdlIGRvbid0IGN1cnJlbnRseSBleHBlY3QgdG8gc2VlIGR1cmluZyBmaXh1cC4KICAgICAgICAg
ICAgIC8vIElmIHdlIGV2ZXIgd2FudGVkIHRvIGluc2VydCB0aGVtIHByaW9yIHRvIGZpeHVwLCB0
aGVuIHdlIGp1c3QgaGF2ZSB0byBjcmVhdGUKICAgICAgICAgICAgIC8vIGZpeHVwIHJ1bGVzIGZv
ciB0aGVtLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTUsNiArMzE1LDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0LCBjb25zdAogICAgICAgICAgICAgb3V0LnByaW50KGFub3RoZXJDb21tYSwgcG9p
bnRlckR1bXBJbkNvbnRleHQoZnJlZXplKG1fY29kZUJsb2NrLT5jb25zdGFudEJ1ZmZlcihub2Rl
LT5zdGFydENvbnN0YW50KCkpW2ldKSwgY29udGV4dCkpOwogICAgICAgICBvdXQucHJpbnQoIl0i
KTsKICAgICB9CisgICAgaWYgKG5vZGUtPmhhc0xhenlKU1ZhbHVlKCkpCisgICAgICAgIG91dC5w
cmludChjb21tYSwgbm9kZS0+bGF6eUpTVmFsdWUoKSk7CiAgICAgaWYgKG5vZGUtPmhhc0luZGV4
aW5nVHlwZSgpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIEluZGV4aW5nVHlwZUR1bXAobm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICBpZiAobm9kZS0+aGFzVHlwZWRBcnJheVR5cGUoKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5jcHAJ
KHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0
aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBAQCB2b2lkIEluc2VydGlv
blNldDo6aW5zZXJ0U2xvdyhjb25zdCBJbnNlCiAgICAgbV9pbnNlcnRpb25zLmluc2VydCgwLCBp
bnNlcnRpb24pOwogfQogCi12b2lkIEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBi
bG9jaykKK3NpemVfdCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7
Ci0gICAgZXhlY3V0ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2VydGlvbnMpOworICAgIHJldHVy
biBleGVjdXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9ucyk7CiB9CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5z
ZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
bnNlcnRpb25TZXQuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAotICAgIHZvaWQg
ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jayk7CisgICAgc2l6ZV90IGV4ZWN1dGUoQmFzaWNCbG9j
ayogYmxvY2spOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5zZXJ0U2xvdyhjb25zdCBJbnNlcnRp
b24mKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUu
Y3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xh
enlKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDggKzExNiwxMCBAQCBTdHJpbmcg
TGF6eUpTVmFsdWU6OnRyeUdldFN0cmluZyhHcmFwaCYgCiAgICAgZGVmYXVsdDoKICAgICAgICAg
aWYgKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZyA9IHRyeUdldFN0cmluZ0ltcGwoKSkgewogICAg
ICAgICAgICAgdW5zaWduZWQgZ2lub3Jtb3VzU3RyaW5nTGVuZ3RoID0gMTAwMDA7Ci0gICAgICAg
ICAgICBpZiAoc3RyaW5nLT5sZW5ndGgoKSA+IGdpbm9ybW91c1N0cmluZ0xlbmd0aCkKKyAgICAg
ICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID4gZ2lub3Jtb3VzU3RyaW5nTGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2Ugb2Ygc2l6ZSBsaW1pdC5c
biIpOwogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBncmFwaC5tX2NvcGllZFN0cmlu
Z3MuYWRkKHN0cmluZywgU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcgQEAgRXhpdE1vZGUgbWF5RXhpdChHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZAogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgIGNhc2UgUHV0
QnlPZmZzZXQ6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgorICAgIGNhc2UgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0OgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRGR05vZGVUeXBl
LmgiCiAjaW5jbHVkZSAiREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oIgorI2luY2x1ZGUg
IkRGR09wSW5mby5oIgogI2luY2x1ZGUgIkRGR1RyYW5zaXRpb24uaCIKICNpbmNsdWRlICJERkdV
c2VLaW5kLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCkBAIC0yMTksMjAg
KzIyMCw2IEBAIHN0cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogICAgIEZsdXNoZWRBdCBmbHVzaGVk
QXQoKSB7IHJldHVybiBGbHVzaGVkQXQoZm9ybWF0LCBtYWNoaW5lTG9jYWwpOyB9CiB9OwogCi0v
LyBUaGlzIHR5cGUgdXNlZCBpbiBwYXNzaW5nIGFuIGltbWVkaWF0ZSBhcmd1bWVudCB0byBOb2Rl
IGNvbnN0cnVjdG9yOwotLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUgKHR5cGlj
YWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCi0vLyBhIGNv
bnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUqLgotc3Ry
dWN0IE9wSW5mbyB7Ci0gICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQotICAgIGV4cGxpY2l0
IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkpIHsgfQotICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSNpZiBPUyhEQVJXSU4pIHx8IFVT
RShKU1ZBTFVFNjQpCi0gICAgZXhwbGljaXQgT3BJbmZvKHNpemVfdCB2YWx1ZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSNlbmRpZgotICAgIGV4cGxpY2l0
IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQotICAgIHVpbnRwdHJfdCBtX3ZhbHVlOwotfTsKLQogLy8gPT09IE5vZGUg
PT09CiAvLwogLy8gTm9kZSByZXByZXNlbnRzIGEgc2luZ2xlIG9wZXJhdGlvbiBpbiB0aGUgZGF0
YSBmbG93IGdyYXBoLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiArMjI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhckluamVjdGlvbldhdGNocG9pbnQsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAorICAgIG1hY3JvKFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oQ2hlY2tDZWxsLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tOb3RFbXB0eSwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKENoZWNrQmFkQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTc0LDcgKzE5NzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Y2FzZSBOYW1lZFByb3BlcnR5UExvYzogewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobG9j
YXRpb24uYmFzZSgpID09IGFsbG9jYXRpb24uaWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Qcm9wZXJ0eVZhbHVlKGxvY2F0
aW9uLmluZm8oKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBl
bmQobG9jYXRpb24uZGVzY3JpcHRvcigpKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGlmICht
X3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ib3R0b20pOwpAQCAtMjAyNCw3ICsy
MDI0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhclBMb2M6
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9PSBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVz
LmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRlc2NyaXB0b3Io
KSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShibG9jaywgbG9j
YXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlu
cyh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uYXBwZW5kKG1fYm90dG9tKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmNwcAkocmV2aXNpb24g
MTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMzIgKzMyLDExIEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdm9pZCBQaGFudG9tUHJvcGVydHlWYWx1ZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotewotICAgIG91dC5wcmludCgiaWQiLCBtX2lkZW50
aWZpZXJOdW1iZXIpOwotfQotCiB2b2lkIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIlsiLCBsaXN0RHVtcCht
X3Byb3BlcnRpZXMpLCAiXSIpOwogfQogCi1mbG9hdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
OjpvbmVXYXlTaW1pbGFyaXR5U2NvcmUoCi0gICAgY29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgbnVtSGl0cyA9IDA7Ci0gICAgZm9y
IChQaGFudG9tUHJvcGVydHlWYWx1ZSB2YWx1ZSA6IG1fcHJvcGVydGllcykgewotICAgICAgICBp
ZiAob3RoZXIubV9wcm9wZXJ0aWVzLmNvbnRhaW5zKHZhbHVlKSkKLSAgICAgICAgICAgIG51bUhp
dHMrKzsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihudW1IaXRzKSAvIHN0
YXRpY19jYXN0PGZsb2F0PihtX3Byb3BlcnRpZXMuc2l6ZSgpKTsKLX0KLQotZmxvYXQgT2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEmIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBzdGQ6Om1pbihvbmVXYXlT
aW1pbGFyaXR5U2NvcmUob3RoZXIpLCBvdGhlci5vbmVXYXlTaW1pbGFyaXR5U2NvcmUoKnRoaXMp
KTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVk
ZSAiREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAt
MzUsMzggKzM2LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotc3Ry
dWN0IFBoYW50b21Qcm9wZXJ0eVZhbHVlIHsKLSAgICBQaGFudG9tUHJvcGVydHlWYWx1ZSgpCi0g
ICAgICAgIDogbV9pZGVudGlmaWVyTnVtYmVyKFVJTlRfTUFYKQotICAgIHsKLSAgICB9Ci0gICAg
Ci0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUodW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKLSAg
ICAgICAgOiBtX2lkZW50aWZpZXJOdW1iZXIoaWRlbnRpZmllck51bWJlcikKLSAgICB7Ci0gICAg
fQotICAgIAotICAgIHVuc2lnbmVkIG1faWRlbnRpZmllck51bWJlcjsKLSAgICAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUGhhbnRvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllck51bWJlciA9PSBvdGhlci5tX2lkZW50aWZp
ZXJOdW1iZXI7Ci0gICAgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwotfTsKLQogc3RydWN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEgewogICAgIC8vIERldGVy
bWluZXMgdGhlIG1lYW5pbmcgb2YgdGhlIHBhc3NlZCBub2Rlcy4KLSAgICBWZWN0b3I8UGhhbnRv
bVByb3BlcnR5VmFsdWU+IG1fcHJvcGVydGllczsKKyAgICBWZWN0b3I8UHJvbW90ZWRMb2NhdGlv
bkRlc2NyaXB0b3I+IG1fcHJvcGVydGllczsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgZnJhY3Rpb24gb2YgbXkgcHJvcGVydGllcyB0
aGF0IHRoZSBvdGhlciBkYXRhIGhhcy4KLSAgICBmbG9hdCBvbmVXYXlTaW1pbGFyaXR5U2NvcmUo
Y29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYpIGNvbnN0OwotICAgIAotICAgIC8vIFRo
ZSBtaW5pbXVtIG9mIHRoZSB0d28gcG9zc2libGUgb25lLXdheSBzY29yZXMuCi0gICAgZmxvYXQg
c2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmKSBjb25zdDsK
IH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcEluZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR09wSW5mb19o
CisjZGVmaW5lIERGR09wSW5mb19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
KyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewor
CisvLyBUaGlzIHR5cGUgdXNlZCBpbiBwYXNzaW5nIGFuIGltbWVkaWF0ZSBhcmd1bWVudCB0byBO
b2RlIGNvbnN0cnVjdG9yOworLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUgKHR5
cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCisvLyBh
IGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUqLgor
c3RydWN0IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQorICAgIGV4cGxp
Y2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyNpZiBPUyhEQVJXSU4pIHx8
IFVTRShKU1ZBTFVFNjQpCisgICAgZXhwbGljaXQgT3BJbmZvKHNpemVfdCB2YWx1ZSkgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyNlbmRpZgorICAgIGV4cGxp
Y2l0IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pih2YWx1ZSkpIHsgfQorICAgIHVpbnRwdHJfdCBtX3ZhbHVlOworfTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAv
LyBERkdPcEluZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MDEsNiArMTQwMSw2MCBA
QCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZhdWx0SGFzCiAgICAgcmV0dXJuIDA7
CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoKQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOworCisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHk7CisgICAgaWYgKHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSkgeworICAgICAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAgICAg
IGhlYWRlci5zZXRWZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAgICAgICAgaGVhZGVyLnNldFB1Ymxp
Y0xlbmd0aCgwKTsKKyAgICAgICAgCisgICAgICAgIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3Jl
YXRlKAorICAgICAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwKKyAgICAgICAgICAgIGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpLCBoZWFkZXIsCisgICAgICAgICAgICBsZW5ndGggKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnV0dGVyZmx5ID0gbnVsbHB0cjsKKwor
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMsIHN0
cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUg
dGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KHJlc3VsdCk7Cit9CisKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgCisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBC
dXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIEluZGV4aW5nSGVhZGVyKCksIDApOworICAgIAorICAg
IEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMsIHN0cnVj
dHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhh
dCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0
aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIElu
ZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7
CisgICAgaGVhZGVyLnNldFB1YmxpY0xlbmd0aCgwKTsKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAorICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBoZWFkZXIsCisgICAgICAgIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgKiBsZW5ndGgpOworCisgICAgLy8gUGFyYWRveGljYWxseSB0aGlzIG1heSBh
bGxvY2F0ZSBhIEpTQXJyYXkuIFRoYXQncyB0b3RhbGx5IGNvb2wuCisgICAgSlNPYmplY3QqIHJl
c3VsdCA9IEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJm
bHkpOworICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJm
bHkgaXMgaW4gdG8tc3BhY2UuCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2dERkcoRXhlY1N0YXRlKiBleGVj
KSAKIHsKICAgICBleGVjLT52bSgpLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmll
cyhBU0NJSUxpdGVyYWwoIkxvZyBGdWxsLCBjYWxsZWQgZnJvbSBpbnNpZGUgREZHLiIpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAx
OTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1NywxMCBAQCBpbnQ2NF90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29udmVydERvCiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmF1bHRI
YXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU0NlbGwqIHZhbHVlLCBKU0NlbGwqIHByb3RvKTsKIAor
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSYXdPYmplY3QoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RG
X0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhC
dXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CisKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nREZHKEV4ZWNTdGF0ZSopIFdURl9J
TlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxh
dGlvbkZhaWx1cmUoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKSBXVEZfSU5URVJOQUw7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2OCw2ICs2NjgsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFN0YWNr
OgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBT
ZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVk
UmVzdWx0OgogICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OiB7CiAgICAgICAgICAgICAvLyBU
aGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxh
dGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZv
bGxvd3MgdGhpcyBwaGFzZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJv
bW90ZWRIZWFwTG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC03NCw2ICs3NCwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvCiAgICAgY2FzZSBOYW1lZFByb3BlcnR5UExvYzoKICAgICAgICAgb3V0
LnByaW50KCJOYW1lZFByb3BlcnR5UExvYyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNl
IEluZGV4ZWRQcm9wZXJ0eVBMb2M6CisgICAgICAgIG91dC5wcmludCgiSW5kZXhlZFByb3BlcnR5
UExvYyIpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQXJndW1lbnRQTG9j
OgogICAgICAgICBvdXQucHJpbnQoIkFyZ3VtZW50UExvYyIpOwpAQCAtMTAyLDYgKzEwNiwxNCBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHJvCiAgICAgY2FzZSBDbG9z
dXJlVmFyUExvYzoKICAgICAgICAgb3V0LnByaW50KCJDbG9zdXJlVmFyUExvYyIpOwogICAgICAg
ICByZXR1cm47CisKKyAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgIG91dC5wcmlu
dCgiUHVibGljTGVuZ3RoUExvYyIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFZlY3Rv
ckxlbmd0aFBMb2M6CisgICAgICAgIG91dC5wcmludCgiVmVjdG9yTGVuZ3RoUExvYyIpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
MjUgKzI4LDQxIEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkRGR05vZGUu
aCIKKyNpbmNsdWRlICJERkdFZGdlLmgiCisjaW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgorI2lu
Y2x1ZGUgIkRGR09wSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CitzdHJ1Y3QgTm9kZTsKKworLy8gUHJvbW90ZWQgbG9jYXRpb25zIGFyZSBsaWtlIGhlYXAgbG9j
YXRpb25zIGJ1dCBhcmUgbWVhbnQgdG8gYmUgbW9yZSBwcmVjaXNlLiBBIGhlYXAgbG9jYXRpb24g
aXMKKy8vIGFwcGxpY2FibGUgdG8gQ1NFIHNjZW5hcmlvcywgd2hlcmUgaXQgbWFrZXMgc2Vuc2Ug
dG8gc3BlYWsgb2YgYSBsb2NhdGlvbiB2ZXJ5IGFic3RyYWN0bHkuIEEKKy8vIHByb21vdGVkIGhl
YXAgbG9jYXRpb24gaXMgZm9yIGNhc2VzIHdoZXJlIHdlIHNwZWFrIG9mIGEgc3BlY2lmaWMgb2Jq
ZWN0IGFuZCB0aGUgY29tcGlsZXIga25vd3MKKy8vIHRoaXMgb2JqZWN0J3MgaWRlbnRpdHkgLSBm
b3IgZXhhbXBsZSwgdGhlIG9iamVjdCBhbGxvY2F0aW9uIGhhcyBiZWVuIGVsaW1pbmF0ZWQgYW5k
IHdlIHR1cm5lZCB0aGUKKy8vIGZpZWxkcyBpbnRvIGxvY2FsIHZhcmlhYmxlcy4gQmVjYXVzZSB0
aGVzZSB0d28gY2FzZXMgaGF2ZSBzdWJ0bHkgZGlmZmVyZW50IG5lZWRzLCB3ZSB1c2Ugc3VidGx5
CisvLyBkaWZmZXJlbnQgc3RydWN0dXJlcy4gT25lIG9mIHRoZSByZWFsbHkgc2lnbmlmaWNhbnQg
ZGlmZmVyZW5jZXMgaXMgdGhhdCBwcm9tb3RlZCBsb2NhdGlvbnMgY2FuIGJlCisvLyBzcG9rZW4g
b2YgdXNpbmcgZWl0aGVyIGEgZGVzY3JpcHRvciB3aGljaCBkb2VzIG5vdCByZWZlciB0byBhbnkg
Tm9kZSoncyBvciB3aXRoIGEgaGVhcCBsb2NhdGlvbiwKKy8vIHdoaWNoIGlzIGEgZGVzY3JpcHRv
ciB3aXRoIGEgTm9kZSogYmFzZS4KKwogZW51bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAg
SW52YWxpZFByb21vdGVkTG9jYXRpb25LaW5kLAogICAgIAotICAgIFN0cnVjdHVyZVBMb2MsCisg
ICAgQWN0aXZhdGlvblNjb3BlUExvYywKICAgICBBY3RpdmF0aW9uU3ltYm9sVGFibGVQTG9jLAot
ICAgIE5hbWVkUHJvcGVydHlQTG9jLAotICAgIEFyZ3VtZW50UExvYywKICAgICBBcmd1bWVudENv
dW50UExvYywKKyAgICBBcmd1bWVudFBMb2MsCiAgICAgQXJndW1lbnRzQ2FsbGVlUExvYywKLQot
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2MsCisgICAgQ2xvc3VyZVZhclBMb2MsCiAgICAgRnVu
Y3Rpb25BY3RpdmF0aW9uUExvYywKLSAgICBBY3RpdmF0aW9uU2NvcGVQTG9jLAotICAgIENsb3N1
cmVWYXJQTG9jCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlUExvYywKKyAgICBJbmRleGVkUHJvcGVy
dHlQTG9jLAorICAgIE5hbWVkUHJvcGVydHlQTG9jLAorICAgIFB1YmxpY0xlbmd0aFBMb2MsCisg
ICAgU3RydWN0dXJlUExvYywKKyAgICBWZWN0b3JMZW5ndGhQTG9jCiB9OwogCiBjbGFzcyBQcm9t
b3RlZExvY2F0aW9uRGVzY3JpcHRvciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw2
ICszMzYsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAg
Y2FzZSBTdHJpbmdSZXBsYWNlOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4Ogog
ICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgQm90dG9tVmFs
dWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
NDcsNiArMzA0NywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBSZWNvcmRSZWdFeHBD
YWNoZWRSZXN1bHQ6IHsKKyAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIEFycmF5UHVz
aDogewogICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNKU0FycmF5KCkpOwogICAg
ICAgICAKQEAgLTM0OTIsNyArMzQ5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAg
ICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VH
UFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1
bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBh
bm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAg
ICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAg
LTM3MjgsNyArMzczMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0
R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVu
dHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+aW5kZXhpbmdUeXBlKCkg
PT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1f
aml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwpA
QCAtNDk3OCw3ICs0OTgzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAK
LSAgICAgICAgCisgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGls
ZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug
VW5yZWFjaGFibGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcx
LDYgKzMxNzEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogeworICAg
ICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFTU0VS
VChub2RlLT5hcnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CkBAIC0zNTQyLDcgKzM1NDcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VH
UFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJl
c3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAg
ICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIs
IG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IEF0IHRoaXMgcG9pbnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdl
R1BSIGhhdmUgcG9pbnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUg
QnV0dGVyZmx5LCByZXNwZWN0aXZlbHkuCkBAIC0zNzc4LDcgKzM3ODMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9y
YWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwg
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24oaW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAg
ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgc3RvcmFn
ZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0FycmF5
KTsKICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3Rh
bnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQ5NzEsNiArNDk3NiwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNvbXBpbGVN
YXRlcmlhbGl6ZU5ld09iamVjdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFCTEUo
RlRMX0pJVCkgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaEFkZDMyKApAQCAtNTA2MSw3
ICs1MDcwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlSW1tZWRpYXRlOgotICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAg
ICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRTdGFjazoK
ICAgICBjYXNlIEtpbGxTdGFjazoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNs
dWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgogI2luY2x1ZGUgIldyaXRlQmFy
cmllckJ1ZmZlci5oIgpAQCAtNzcsMjcgKzc4LDU0IEBAIFNwZWN1bGF0aXZlSklUOjp+U3BlY3Vs
YXRpdmVKSVQoKQogewogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0Fy
cmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFn
ZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxs
b2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQ
UlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVu
Z3RoKQogewotICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KSkgfHwgaGFzSW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKSkpOworICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpOworICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVk
UHJvcGVydGllcyhpbmRleGluZ1R5cGUpOworCisgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkg
PSBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCk7CisgICAgdW5zaWduZWQgb3V0T2ZMaW5lQ2Fw
YWNpdHkgPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgCiAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwog
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRj
aDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLSAgICAKLSAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgg
PSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIG51bUVsZW1lbnRzKTsKKworICAgIEFTU0VSVCh2
ZWN0b3JMZW5ndGggPj0gbnVtRWxlbWVudHMpOworICAgIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4
KEJBU0VfVkVDVE9SX0xFTiwgdmVjdG9yTGVuZ3RoKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgIAotICAgIHNsb3dDYXNlcy5hcHBlbmQoCi0gICAgICAg
IGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6
ZW9mKEpTVmFsdWUpICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpKTsKLSAg
ICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVl
KSksIHN0b3JhZ2VHUFIpOwotICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBz
Y3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKLSAgICAKLSAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJ
bW0zMihudW1FbGVtZW50cyksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1
dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwotICAgIG1faml0LnN0b3JlMzIoVHJ1
c3RlZEltbTMyKHZlY3Rvckxlbmd0aCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VH
UFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwotICAgIAorCisgICAgc2l6
ZV90IHNpemUgPSAwOworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgc2l6ZSAr
PSB2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIp
OworICAgIHNpemUgKz0gb3V0T2ZMaW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1ZSk7CisKKyAg
ICBpZiAoc2l6ZSkgeworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKAorICAgICAgICAgICAgZW1p
dEFsbG9jYXRlQmFzaWNTdG9yYWdlKFRydXN0ZWRJbW0zMihzaXplKSwgc3RvcmFnZUdQUikpOwor
ICAgICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAgICAgICBtX2ppdC5zdWJQdHIo
VHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSksIHN0b3JhZ2VHUFIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNp
emVvZihJbmRleGluZ0hlYWRlcikpLCBzdG9yYWdlR1BSKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKDApLCBzdG9yYWdlR1BSKTsKKworICAgIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKGlubGluZUNhcGFj
aXR5KTsKKyAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvclB0ciA9ICZtX2ppdC52bSgpLT5o
ZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsK
KyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yUHRyKSwgc2NyYXRjaEdQUik7
CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwor
CisgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0
ZWRJbW0zMih2ZWN0b3JMZW5ndGgpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKKworICAgIC8vIEkgd2FudCBh
IHNsb3cgcGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0
aGF0J3MKKyAgICAvLyB3aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRo
R2VuZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90CisgICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5
IHNtYWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkuIDotLworICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+
KAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0
R1BSLCBzdG9yYWdlR1BSLAorICAgICAgICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOworCiAg
ICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSAmJiBudW1FbGVtZW50
cyA8IHZlY3Rvckxlbmd0aCkgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHNjcmF0Y2hHUFIp
OwpAQCAtMTEzLDEyICsxNDEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVK
U0FycmF5CiAjZW5kaWYKICAgICB9CiAgICAgCi0gICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRo
YXQgYWxzbyBsb2FkcyBvdXQgdGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQncwotICAgIC8v
IHdoYXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2
ZXMgbWUuIEl0J3MgYSBsb3QKLSAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ug
b2YgZnVuY3Rpb25hbGl0eS4gOi0vCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtl
X3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCi0gICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdG9y
YWdlR1BSLAotICAgICAgICBzdHJ1Y3R1cmUsIG51bUVsZW1lbnRzKSk7CisgICAgaWYgKGhhc0lu
ZGV4aW5nSGVhZGVyKQorICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihudW1FbGVt
ZW50cyksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zm
c2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0R2V0
TGVuZ3RoKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgbGVuZ3RoR1BS
LCBib29sIGluY2x1ZGVUaGlzKQpAQCAtNzY1NSw2ICs3Njc5LDEyNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTGF6eUpTQ29uc3RhCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3
T2JqZWN0KE5vZGUqIG5vZGUpCit7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5z
dHJ1Y3R1cmVTZXQoKVswXTsKKyAgICBBU1NFUlQobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChu
b2RlLCAwKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpID09IHN0cnVjdHVyZSk7
CisKKyAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+b2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YSgpOworICAgICAgICAKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICBib29sIGhhc0luZGV4aW5nSGVh
ZGVyID0gaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKTsKKyAgICBpbnQzMl90IHB1
YmxpY0xlbmd0aCA9IDA7CisgICAgaW50MzJfdCB2ZWN0b3JMZW5ndGggPSAwOworCisgICAgaWYg
KGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9w
cm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9qaXQu
Z3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKGRh
dGEubV9wcm9wZXJ0aWVzW2ldLmtpbmQoKSkgeworICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5n
dGhQTG9jOgorICAgICAgICAgICAgICAgIHB1YmxpY0xlbmd0aCA9IGVkZ2UtPmFzSW50MzIoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExv
YzoKKyAgICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGggPSBlZGdlLT5hc0ludDMyKCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzdG9yYWdlR1BSID0g
c3RvcmFnZS5ncHIoKTsKKyAgICAKKyAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BS
LCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIDAsIHZlY3Rvckxlbmd0aCk7CisgICAgCisgICAgbV9q
aXQuc3RvcmUzMigKKyAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihwdWJsaWNMZW5n
dGgpLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6
Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEu
bV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICBFZGdlIGVkZ2UgPSBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgUHJvbW90ZWRMb2NhdGlv
bkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICBz
d2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5
UExvYzogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSk7Cisg
ICAgICAgICAgICBtX2ppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFs
dWVSZWdzKCksCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RvcmFnZUdQ
Uiwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGRlc2NyaXB0b3IuaW5mbygpKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6
IHsKKyAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1faml0LmdyYXBoKCkuaWRlbnRpZmll
cnMoKVtkZXNjcmlwdG9yLmluZm8oKV07CisgICAgICAgICAgICBmb3IgKFByb3BlcnR5TWFwRW50
cnkgZW50cnkgOiBzdHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25jdXJyZW50bHkoKSkgeworICAg
ICAgICAgICAgICAgIGlmICh1aWQgIT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVk
Z2UpOworICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gaXNJbmxpbmVPZmZzZXQoZW50
cnkub2Zmc2V0KSA/IHJlc3VsdEdQUiA6IHN0b3JhZ2VHUFI7CisgICAgICAgICAgICAgICAgbV9q
aXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwK
KyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0
UmVsYXRpdmVUb0Jhc2UoZW50cnkub2Zmc2V0KSkpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWNvcmRSZWdF
eHBDYWNoZWRSZXN1bHQoTm9kZSogbm9kZSkKK3sKKyAgICBFZGdlIGNvbnN0cnVjdG9yRWRnZSA9
IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCk7CisgICAgRWRnZSByZWdFeHBFZGdl
ID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICBFZGdlIHN0cmluZ0Vk
Z2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpOworICAgIEVkZ2Ugc3RhcnRF
ZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKTsKKyAgICBFZGdlIGVuZEVk
Z2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQpOworCisgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgY29uc3RydWN0b3IodGhpcywgY29uc3RydWN0b3JFZGdlKTsKKyAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCByZWdFeHAodGhpcywgcmVnRXhwRWRnZSk7CisgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgc3RyaW5nKHRoaXMsIHN0cmluZ0VkZ2UpOworICAgIFNwZWN1bGF0ZUludDMy
T3BlcmFuZCBzdGFydCh0aGlzLCBzdGFydEVkZ2UpOworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBlbmQodGhpcywgZW5kRWRnZSk7CisKKyAgICBHUFJSZWcgY29uc3RydWN0b3JHUFIgPSBjb25z
dHJ1Y3Rvci5ncHIoKTsKKyAgICBHUFJSZWcgcmVnRXhwR1BSID0gcmVnRXhwLmdwcigpOworICAg
IEdQUlJlZyBzdHJpbmdHUFIgPSBzdHJpbmcuZ3ByKCk7CisgICAgR1BSUmVnIHN0YXJ0R1BSID0g
c3RhcnQuZ3ByKCk7CisgICAgR1BSUmVnIGVuZEdQUiA9IGVuZC5ncHIoKTsKKworICAgIHB0cmRp
ZmZfdCBvZmZzZXQgPSBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKTsK
KworICAgIG1faml0LnN0b3JlUHRyKAorICAgICAgICByZWdFeHBHUFIsCisgICAgICAgIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1
bHQ6Om9mZnNldE9mTGFzdFJlZ0V4cCgpKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoCisgICAgICAg
IHN0cmluZ0dQUiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY29uc3RydWN0b3JHUFIs
IG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0SW5wdXQoKSkpOworICAg
IG1faml0LnN0b3JlMzIoCisgICAgICAgIHN0YXJ0R1BSLAorICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcygKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0
ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9G
KE1hdGNoUmVzdWx0LCBzdGFydCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBlbmRH
UFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKAorICAgICAgICAgICAgY29uc3RydWN0
b3JHUFIsCisgICAgICAgICAgICBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9m
UmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIGVuZCkpKTsKKyAgICBtX2pp
dC5zdG9yZTgoCisgICAgICAgIFRydXN0ZWRJbW0zMigwKSwKKyAgICAgICAgSklUQ29tcGlsZXI6
OkFkZHJlc3MoY29uc3RydWN0b3JHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zm
c2V0T2ZSZWlmaWVkKCkpKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDAxLDYgKzI0MDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0UmVnRXhwT2JqZWN0
TGFzdEluZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5k
ZXgoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUxhenlKU0NvbnN0YW50KE5vZGUqKTsKKyAgICB2
b2lkIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKik7CisgICAgdm9pZCBjb21waWxl
UmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqKTsKICAgICAKICAgICB2b2lkIG1vdmVUcnVl
VG8oR1BSUmVnKTsKICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJlZyk7CkBAIC0yNTE2LDcgKzI1
MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSk7CiAgICAgfQogCi0gICAg
dm9pZCBlbWl0QWxsb2NhdGVKU0FycmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQ
UlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cyk7CisgICAgdm9pZCBlbWl0QWxs
b2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3Jh
Z2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAg
IAogICAgIHZvaWQgZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqLCBHUFJSZWcgbGVuZ3Ro
R1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwogICAgIHZvaWQgZW1pdEdldExlbmd0aChD
b2RlT3JpZ2luLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTMsMTEgKzI1MywxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2Fz
ZSBQdXRCeUlkOgorICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgICAgICBj
YXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewogICAg
ICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKworICAgICAg
ICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6IHsKKyAgICAgICAgICAgICAgICBj
b25zaWRlckJhcnJpZXIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQdXRDbG9z
dXJlVmFyOgogICAgICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICAgICAgICAgIGNh
c2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgpAQCAtMjY2LDEzICsyNzQsNiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1
c2g6Ci0gICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6IHsKLSAgICAgICAgICAgICAgICBj
b25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6IHsKICAgICAg
ICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDIoKSwgbV9ub2RlLT5jaGls
ZDMoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1
Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxMSArMzYsMTUgQEAKICNpbmNs
dWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1Zhcmlh
YmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAi
UmVnRXhwQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNs
dWRlIDxjc3RkbGliPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNz
IFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworICAgIHN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICAKIHB1YmxpYzoKICAgICBTdHJlbmd0aFJlZHVj
dGlvblBoYXNlKEdyYXBoJiBncmFwaCkKICAgICAgICAgOiBQaGFzZShncmFwaCwgInN0cmVuZ3Ro
IHJlZHVjdGlvbiIpCkBAIC0zMzEsMTEgKzMzNSwzNjggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBpZiAoISFzdHJpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0
VG9Db25zdGFudChtX25vZGUsIGpzTnVtYmVyKHN0cmluZy5sZW5ndGgoKSkpOwogICAgICAgICAg
ICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OiB7CisgICAgICAgICAgICBp
ZiAoSlNPYmplY3QqIG9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3Rh
bnQ8SlNPYmplY3QqPigpKSB7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudChtX25vZGUsIG9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUmVnRXhwRXhlYzoK
KyAgICAgICAgY2FzZSBSZWdFeHBUZXN0OiB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ub2RlLT5jaGlsZDEoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0ds
b2JhbE9iamVjdCo+KCk7CisgICAgICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkgeworICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZp
bmcgdXAgYmVjYXVzZSBubyBnbG9iYWwgb2JqZWN0LlxuIik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmlzSGF2
aW5nQUJhZFRpbWUoKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSBiYWQgdGltZS5cbiIpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBOb2RlKiBy
ZWdFeHBPYmplY3ROb2RlID0gbV9ub2RlLT5jaGlsZDIoKS5ub2RlKCk7CisgICAgICAgICAgICBS
ZWdFeHAqIHJlZ0V4cDsKKyAgICAgICAgICAgIGlmIChSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVj
dCA9IHJlZ0V4cE9iamVjdE5vZGUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8UmVnRXhwT2JqZWN0Kj4o
KSkKKyAgICAgICAgICAgICAgICByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgpOworICAg
ICAgICAgICAgZWxzZSBpZiAocmVnRXhwT2JqZWN0Tm9kZS0+b3AoKSA9PSBOZXdSZWdleHApCisg
ICAgICAgICAgICAgICAgcmVnRXhwID0gY29kZUJsb2NrKCktPnJlZ2V4cChyZWdFeHBPYmplY3RO
b2RlLT5yZWdleHBJbmRleCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVj
YXVzZSB0aGUgcmVnZXhwIGlzIHVua25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTm9kZSogc3RyaW5nTm9kZSA9IG1fbm9kZS0+
Y2hpbGQzKCkubm9kZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOT1RFOiBUaGlz
IG1vc3RseSBhbHJlYWR5IHByb3RlY3RzIHVzIGZyb20gaGF2aW5nIHRoZSBjb21waWxlciBleGVj
dXRlIGEgcmVnZXhwCisgICAgICAgICAgICAvLyBvcGVyYXRpb24gb24gYSBnaW5vcm1vdXMgc3Ry
aW5nIGJ5IHByZXZlbnRpbmcgdXMgZnJvbSBnZXR0aW5nIG91ciBoYW5kcyBvbiBnaW5vcm1vdXMK
KyAgICAgICAgICAgIC8vIHN0cmluZ3MgaW4gdGhlIGZpcnN0IHBsYWNlLgorICAgICAgICAgICAg
U3RyaW5nIHN0cmluZyA9IG1fbm9kZS0+Y2hpbGQzKCktPnRyeUdldFN0cmluZyhtX2dyYXBoKTsK
KyAgICAgICAgICAgIGlmICghc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSBzdHJp
bmcgaXMgdW5rbm93bi5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogcmVnRXhwRnJvemVuVmFsdWUgPSBtX2dyYXBo
LmZyZWV6ZShyZWdFeHApOworCisgICAgICAgICAgICAvLyBSZWZ1c2UgdG8gZG8gdGhpbmdzIHdp
dGggcmVndWxhciBleHByZXNzaW9ucyB0aGF0IGhhdmUgYSBnaW5vcm1vdXMgbnVtYmVyIG9mCisg
ICAgICAgICAgICAvLyBzdWJwYXR0ZXJucy4KKyAgICAgICAgICAgIHVuc2lnbmVkIGdpbm9ybW91
c051bWJlck9mU3ViUGF0dGVybnMgPSAxMDAwOworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+bnVt
U3VicGF0dGVybnMoKSA+IGdpbm9ybW91c051bWJlck9mU3ViUGF0dGVybnMpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5n
IHVwIGJlY2F1c2Ugb2YgcGF0dGVybiBsaW1pdC5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CisgICAg
ICAgICAgICBpZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAg
Ly8gVGhpcyB3aWxsIG9ubHkgd29yayBpZiB3ZSBjYW4gcHJvdmUgd2hhdCB0aGUgdmFsdWUgb2Yg
bGFzdEluZGV4IGlzLiBUbyBkbyB0aGlzCisgICAgICAgICAgICAgICAgLy8gc2FmZWx5LCB3ZSBu
ZWVkIHRvIGV4ZWN1dGUgdGhlIGluc2VydGlvbiBzZXQgc28gdGhhdCB3ZSBzZWUgYW55IHByZXZp
b3VzIHN0cmVuZ3RoCisgICAgICAgICAgICAgICAgLy8gcmVkdWN0aW9ucy4gVGhpcyBpcyBuZWVk
ZWQgZm9yIHNvdW5kbmVzcyBzaW5jZSBvdGhlcndpc2UgdGhlIGVmZmVjdGZ1bG5lc3Mgb2YgYW55
CisgICAgICAgICAgICAgICAgLy8gcHJldmlvdXMgc3RyZW5ndGggcmVkdWN0aW9ucyB3b3VsZCBi
ZSBpbnZpc2libGUgdG8gdXMuCisgICAgICAgICAgICAgICAgZXhlY3V0ZUluc2VydGlvblNldCgp
OworICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IFVJTlRfTUFYOworICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgb3RoZXJOb2RlSW5kZXggPSBtX25vZGVJbmRleDsgb3RoZXJOb2RlSW5k
ZXgtLTspIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9ibG9jay0+
YXQob3RoZXJOb2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlID09
IHJlZ0V4cE9iamVjdE5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9
IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpID09IFNldFJlZ0V4cE9i
amVjdExhc3RJbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGls
ZDEoKSA9PSByZWdFeHBPYmplY3ROb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhl
ck5vZGUtPmNoaWxkMigpLT5pc0ludDMyQ29uc3RhbnQoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgb3RoZXJOb2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpID49IDApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxhc3RJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvdGhlck5vZGUt
PmNoaWxkMigpLT5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlc092ZXJs
YXAobV9ncmFwaCwgb3RoZXJOb2RlLCBSZWdFeHBPYmplY3RfbGFzdEluZGV4KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpZiAobGFzdEluZGV4ID09IFVJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1
c2UgdGhlIGxhc3QgaW5kZXggaXMgbm90IGtub3duLlxuIik7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIGxhc3RJbmRleCA9IDA7CisKKyAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMo
KS5hZGRMYXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpICE9IEFycmF5V2l0aENvbnRpZ3VvdXMpIHsKKyAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIGZ1cnRoZXIgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgcmFjZSB3aXRo
IGhhdmVBQmFkVGltZS4KKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhlIHN0cnVjdHVyZSBoYXMgdGhl
IHdyb25nIGluZGV4aW5nIHR5cGUuXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJl
KTsKKworICAgICAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gZ2xvYmFs
T2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3RvcigpOworICAgICAgICAgICAgRnJvemVuVmFsdWUqIGNv
bnN0cnVjdG9yRnJvemVuVmFsdWUgPSBtX2dyYXBoLmZyZWV6ZShjb25zdHJ1Y3Rvcik7CisKKyAg
ICAgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMy
PiBvdmVjdG9yOworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBjYWxsIHRoZSBraW5kIG9mIG1h
dGNoIGZ1bmN0aW9uIHRoYXQgdGhlIG1haW4gdGhyZWFkIHdvdWxkIGhhdmUgY2FsbGVkLgorICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBtaWdodCBub3QgaGF2ZSB0aGUgZGVzaXJlZCBZYXJy
IGNvZGUgY29tcGlsZWQsIGFuZCB0aGUgbWF0Y2ggd2lsbCBmYWlsLgorICAgICAgICAgICAgaWYg
KG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7CisgICAgICAgICAgICAgICAgaW50IHBvc2l0
aW9uOworICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgp
LCBzdHJpbmcsIGxhc3RJbmRleCwgcG9zaXRpb24sIG92ZWN0b3IpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2
aW5nIHVwIGJlY2F1c2UgbWF0Y2ggZmFpbGVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBw
b3NpdGlvbjsKKyAgICAgICAgICAgICAgICByZXN1bHQuZW5kID0gb3ZlY3RvclsxXTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3Vy
cmVudGx5KHZtKCksIHN0cmluZywgbGFzdEluZGV4LCByZXN1bHQpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2
aW5nIHVwIGJlY2F1c2UgbWF0Y2ggZmFpbGVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
V2UndmUgY29uc3RhbnQtZm9sZGVkIHRoZSByZWdleHAuIE5vdyB3ZSdyZSBjb21taXR0ZWQgdG8g
cmVwbGFjaW5nIFJlZ0V4cEV4ZWMvVGVzdC4KKworICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1
ZTsKKworICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBtX25vZGUtPm9yaWdpbjsKKwor
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBt
X25vZGVJbmRleCwgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4uanVz
dENoZWNrcygpKTsKKworICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVj
KSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmVTZXQqIHN0cnVjdHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVj
dHVyZSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IG1vZGVsaW5n
IHRoZSBKUyBhcnJheSB0aGF0IHdlIHdpbGwgdHJ5IHRvIGFsbG9jYXRlLiBUaGlzIGlzCisgICAg
ICAgICAgICAgICAgICAgIC8vIGJhc2ljYWxseSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0
IG92ZXIgQysrIHN0cmluZ3MgaW5zdGVhZCBvZiBKU1N0cmluZ3MuCisgICAgICAgICAgICAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdEFycmF5OworICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheS5hcHBlbmQoc3RyaW5nLnN1YnN0cmluZyhyZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQg
LSByZXN1bHQuc3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MTsgaSA8PSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHN0YXJ0ID0gb3ZlY3RvclsyICogaV07CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RhcnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRB
cnJheS5hcHBlbmQoc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgb3ZlY3RvclsyICogaSArIDFdIC0g
c3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheS5hcHBlbmQoU3RyaW5nKCkpOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHVibGljTGVuZ3RoID0gcmVz
dWx0QXJyYXkuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5n
dGggPSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIHB1YmxpY0xlbmd0aCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGluZGV4VUlEID0gdm0oKS5wcm9wZXJ0eU5h
bWVzLT5pbmRleC5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiBpbnB1dFVJRCA9IHZtKCkucHJvcGVydHlOYW1lcy0+aW5wdXQuaW1wbCgpOworICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbmRleEluZGV4ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVu
c3VyZShpbmRleFVJRCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0SW5kZXgg
PSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlucHV0VUlEKTsKKworICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBmaXJzdENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNp
emUoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50
Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4s
IHN0cnVjdHVyZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdE1h
dGVyaWFsaXphdGlvbkRhdGEqIGRhdGEgPSBtX2dyYXBoLm1fb2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YS5hZGQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
dmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocHVibGljTGVuZ3RoKSwgS25vd25JbnQzMlVz
ZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKFB1Ymxp
Y0xlbmd0aFBMb2MpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcih2ZWN0b3JMZW5ndGgpLCBLbm93bkludDMy
VXNlKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoVmVj
dG9yTGVuZ3RoUExvYyk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUlu
ZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHJlc3VsdC5zdGFydCksIFVudHlwZWRVc2UpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBp
bmRleEluZGV4KSk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZChFZGdlKHN0cmluZ05vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBpbnB1dEluZGV4
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRlcmlhbGl6ZVN0cmluZyA9IFsmXSAo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIC0+IE5vZGUqIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNl
cnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IG9yaWdpbiwgdm0oKS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSB2YWx1ZSA9
IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgc3RyaW5nKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgTGF6eUpTQ29uc3RhbnQsIG9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX2xhenlK
U1ZhbHVlcy5hZGQodmFsdWUpKSk7CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdEFycmF5LnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9IG1hdGVyaWFs
aXplU3RyaW5nKHJlc3VsdEFycmF5W2ldKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShub2RlLCBVbnR5cGVkVXNlKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoSW5kZXhlZFByb3BlcnR5UExvYywgaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
Tm9kZSogcmVzdWx0Tm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0FycmF5LCBOb2RlOjpWYXJBcmcsIE1hdGVy
aWFsaXplTmV3T2JqZWN0LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8o
c3RydWN0dXJlU2V0KSwgT3BJbmZvKGRhdGEpLCBmaXJzdENoaWxkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lk
ZW50aXR5T24ocmVzdWx0Tm9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc051bGwoKSk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0
YW50KG1fbm9kZSwganNCb29sZWFuKCEhcmVzdWx0KSk7CisKKyAgICAgICAgICAgIC8vIFdoZXRo
ZXIgaXQncyBFeGVjIG9yIFRlc3QsIHdlIG5lZWQgdG8gdGVsbCB0aGUgY29uc3RydWN0b3IgYW5k
IFJlZ0V4cE9iamVjdCB3aGF0J3MgdXAuCisgICAgICAgICAgICAvLyBCZWNhdXNlIFNldFJlZ0V4
cE9iamVjdExhc3RJbmRleCBtYXkgZXhpdCBhbmQgaXQgY2xvYmJlcnMgZXhpdCBzdGF0ZSwgd2Ug
ZG8gdGhhdAorICAgICAgICAgICAgLy8gZmlyc3QuCisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmIChyZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCkpIHsKKyAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3Bl
Y05vbmUsIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgb3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICBFZGdlKHJlZ0V4cE9iamVjdE5vZGUsIFJlZ0V4cE9iamVjdFVzZSksCisgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0ID8gcmVz
dWx0LmVuZCA6IDApLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZmly
c3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCk7CisgICAgICAgICAgICAg
ICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBjb25zdHJ1Y3RvckZyb3plblZhbHVlLCBLbm93bkNl
bGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5k
KAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVz
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHJlZ0V4cEZy
b3plblZhbHVlLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uoc3RyaW5nTm9kZSwgS25vd25DZWxsVXNlKSk7CisgICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQp
LCBLbm93bkludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29u
c3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2lu
LCBqc051bWJlcihyZXN1bHQuZW5kKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUlu
ZGV4LCBTcGVjTm9uZSwgTm9kZTo6VmFyQXJnLCBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIG9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKCksIE9wSW5mbygpLCBmaXJzdENoaWxk
LCBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisKKyAgICAg
ICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbm9kZS0+b3JpZ2luID0gb3JpZ2luOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFN0cmluZ1JlcGxh
Y2U6IHsKKyAgICAgICAgICAgIE5vZGUqIHN0cmluZ05vZGUgPSBtX25vZGUtPmNoaWxkMSgpLm5v
ZGUoKTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJpbmdOb2RlLT50cnlHZXRTdHJp
bmcobV9ncmFwaCk7CisgICAgICAgICAgICBpZiAoIXN0cmluZykKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTm9kZSogcmVnRXhwT2JqZWN0Tm9kZSA9
IG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpOworICAgICAgICAgICAgUmVnRXhwKiByZWdFeHA7Cisg
ICAgICAgICAgICBpZiAoUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QgPSByZWdFeHBPYmplY3RO
b2RlLT5keW5hbWljQ2FzdENvbnN0YW50PFJlZ0V4cE9iamVjdCo+KCkpCisgICAgICAgICAgICAg
ICAgcmVnRXhwID0gcmVnRXhwT2JqZWN0LT5yZWdFeHAoKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHJlZ0V4cE9iamVjdE5vZGUtPm9wKCkgPT0gTmV3UmVnZXhwKQorICAgICAgICAgICAgICAgIHJl
Z0V4cCA9IGNvZGVCbG9jaygpLT5yZWdleHAocmVnRXhwT2JqZWN0Tm9kZS0+cmVnZXhwSW5kZXgo
KSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhlIHJlZ2V4cCBp
cyB1bmtub3duLlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIFN0cmluZyByZXBsYWNlID0gbV9ub2RlLT5jaGlsZDMoKS0+dHJ5R2V0U3Ry
aW5nKG1fZ3JhcGgpOworICAgICAgICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgICAgICAg
ICAgdW5zaWduZWQgbGFzdEluZGV4ID0gMDsKKyAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0UG9z
aXRpb24gPSAwOworICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7CisgICAgICAgICAgICBkbyB7
CisgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OworICAgICAgICAgICAgICAgIFZl
Y3RvcjxpbnQsIDMyPiBvdmVjdG9yOworICAgICAgICAgICAgICAgIC8vIE1vZGVsIHdoaWNoIHZl
cnNpb24gb2YgbWF0Y2goKSBpcyBjYWxsZWQgYnkgdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAg
ICAgICAgIGlmIChyZXBsYWNlLmlzRW1wdHkoKSAmJiByZWdFeHAtPmdsb2JhbCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJp
bmcsIHN0YXJ0UG9zaXRpb24sIHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9r
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlu
dCBwb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3Vy
cmVudGx5KHZtKCksIHN0cmluZywgc3RhcnRQb3NpdGlvbiwgcG9zaXRpb24sIG92ZWN0b3IpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zdGFydCA9IHBvc2l0aW9uOworICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuZW5kID0gb3ZlY3RvclsxXTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgaW50IHJlcGxMZW4gPSByZXBsYWNl
Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChsYXN0SW5kZXggPCByZXN1bHQuc3RhcnQg
fHwgcmVwbExlbikgeworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmcs
IGxhc3RJbmRleCwgcmVzdWx0LnN0YXJ0IC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHJlcGxMZW4pCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChz
dWJzdGl0dXRlQmFja3JlZmVyZW5jZXMocmVwbGFjZSwgc3RyaW5nLCBvdmVjdG9yLmRhdGEoKSwg
cmVnRXhwKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbGFzdEluZGV4
ID0gcmVzdWx0LmVuZDsKKyAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gbGFzdEluZGV4
OworCisgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIG9mIGVtcHR5IG1hdGNoCisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdC5lbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0
YXJ0UG9zaXRpb24rKzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9zaXRpb24gPiBz
dHJpbmcubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IHdoaWxlIChyZWdFeHAtPmdsb2JhbCgpKTsKKyAgICAg
ICAgICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIC8v
IFdlIGFyZSBjb21taXR0ZWQgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CisKKyAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbV9ub2RlLT5vcmlnaW47
CisKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPmdsb2JhbCgpKSB7CisgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5k
ZXgsIFNwZWNOb25lLCBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIG9yaWdpbiwKKyAgICAgICAg
ICAgICAgICAgICAgRWRnZShyZWdFeHBPYmplY3ROb2RlLCBSZWdFeHBPYmplY3RVc2UpLAorICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKDApLCBV
bnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb3JpZ2luID0g
b3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIWxhc3RJbmRleCAmJiBidWlsZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtX25v
ZGUtPmNvbnZlcnRUb0lkZW50aXR5T24oc3RyaW5nTm9kZSk7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZiAobGFzdEluZGV4IDwgc3RyaW5nLmxlbmd0aCgpKQorICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmcsIGxhc3RJbmRleCwgc3RyaW5nLmxl
bmd0aCgpIC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBt
X25vZGUtPmNvbnZlcnRUb0xhenlKU0NvbnN0YW50KAorICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLCBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIGJ1aWxkZXIudG9TdHJpbmcoKSkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX25vZGUtPm9yaWdpbiA9IG9yaWdpbjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zODAsNiArNzQxLDExIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGVJ
bnNlcnRpb25TZXQoKQorICAgIHsKKyAgICAgICAgbV9ub2RlSW5kZXggKz0gbV9pbnNlcnRpb25T
ZXQuZXhlY3V0ZShtX2Jsb2NrKTsKKyAgICB9CiAgICAgCiAgICAgSW5zZXJ0aW9uU2V0IG1faW5z
ZXJ0aW9uU2V0OwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NzgsNiArMjc4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KChub2RlKSwgIXZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5kZmdTaG91bGRX
YXRjaCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICAg
ICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1
Y3R1cmVzIHRoYXQgYXJlIEpTRmluYWxPYmplY3Qgb3IgSlNBcnJheS4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIFZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpT
RmluYWxPYmplY3Q6OmluZm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNBcnJheTo6aW5mbygpKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGNlcnRhaW4gaW5kZXhpbmcgc2hhcGVzLgorICAg
ICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzQW55QXJyYXlTdG9yYWdl
KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZUNvbnN0
YW50OgogICAgICAgICAgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5pc051bWJlckNvbnN0YW50KCkpOwpAQCAtNDYx
LDEzICs0NzMsNDIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1l
bnRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKLSAgICAgICAgICAgICAgICBjYXNlIE1hdGVy
aWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAgICAgICAg
ICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAg
ICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhInVuZXhwZWN0ZWQgbm9kZSB0eXBlIGlu
IENQUyIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IE1hdGVyaWFsaXplTmV3T2JqZWN0OiB7CisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5
IGFsbG93cyBhcnJheSBsZW5ndGhzIHRvIGJlIGNvbnN0YW50LiBUaGlzIGNvbnN0cmFpbnQgb25s
eSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZlIERG
RyBzdXBwb3J0IGZvciBhbnl0aGluZyBtb3JlIGFuZCB3ZSBkb24ndCBuZWVkIGFueQorICAgICAg
ICAgICAgICAgICAgICAvLyBvdGhlciBraW5kIG9mIHN1cHBvcnQgZm9yIG5vdy4KKyAgICAgICAg
ICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3By
b3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHVi
bGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3Ro
UExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSks
IGVkZ2UtPmlzSW50MzJDb25zdGFudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3Mgb25l
IHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5z
dHJ1Y3R1cmVTZXQoKS5zaXplKCkgPT0gMSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BT
IGRpc2FsbG93cyBpbnQzMiBhbmQgZG91YmxlIGFycmF5cy4gVGhvc2UgcmVxdWlyZSB3ZWlyZCB0
eXBlIGNoZWNrcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgLy8gY29udmVyc2lvbnMuIFRoZXkg
YXJlIG5vdCBuZWVkZWQgaW4gdGhlIERGRyByaWdodCBub3cuIFdlIHNob3VsZCBhZGQgc3VwcG9y
dAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhlc2UgaWYgdGhlIERGRyBldmVyIG5lZWRz
IGl0LgorICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9k
ZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChu
b2RlKSwgIWhhc0ludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4
aW5nVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToK
ICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBtX2dyYXBoLm1fZml4cG9pbnRT
dGF0ZSAhPSBGaXhwb2ludE5vdENvbnZlcmdlZCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1
ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgi
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDYgKzc3LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhK
U1N5bWJvbFRhYmxlT2JqZWN0X3N5bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpvZmZz
ZXRPZlN5bWJvbFRhYmxlKCkpIFwKICAgICBtYWNybyhKU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxW
YWx1ZSwgSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlT2Zmc2V0KCkpIFwKICAgICBtYWNy
byhNYXJrZWRBbGxvY2F0b3JfZnJlZUxpc3RIZWFkLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9m
RnJlZUxpc3RIZWFkKCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1
bHRfbGFzdFJlZ0V4cCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkg
KyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4cCgpKSBcCisgICAgbWFjcm8o
UmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RJbnB1dCwgUmVnRXhwQ29uc3RydWN0
b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9m
TGFzdElucHV0KCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRf
cmVzdWx0X3N0YXJ0LCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSAr
IFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihN
YXRjaFJlc3VsdCwgc3RhcnQpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVk
UmVzdWx0X3Jlc3VsdF9lbmQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3Vs
dCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNF
VE9GKE1hdGNoUmVzdWx0LCBlbmQpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2Fj
aGVkUmVzdWx0X3JlaWZpZWQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3Vs
dCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZpZWQoKSkgXAogICAgIG1hY3Jv
KFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXgo
KSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXhJc1dyaXRhYmxlLCBSZWdFeHBP
YmplY3Q6Om9mZnNldE9mTGFzdEluZGV4SXNXcml0YWJsZSgpKSBcCiAgICAgbWFjcm8oU2NvcGVk
QXJndW1lbnRzX292ZXJyb2RlVGhpbmdzLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJv
ZGVUaGluZ3MoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgU3Ry
aW5nUmVwbGFjZToKICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNl
IFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJl
c3VsdDoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzgsNiArOTM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgICAgICBjb21waWxlU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBS
ZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CisgICAgICAgICAgICBjb21waWxlUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0KCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50
b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTM3MTYsMzIgKzM3MTksOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xl
bmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAg
ICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0
ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGhhc0Rv
dWJsZShtX25vZGUtPmluZGV4aW5nVHlwZSgpKSkgewotICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGluaXRMb29wID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICBMQmFzaWNC
bG9jayBpbml0RG9uZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxJbmRleCA9IG1fb3V0LmFuY2hvcih2
ZWN0b3JMZW5ndGgpOwotICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9p
bnRlciA9IG1fb3V0LmFuY2hvcihidXR0ZXJmbHkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJy
YW5jaCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKHZlY3Rvckxlbmd0aCks
IHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShpbml0RG9uZSkpOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRv
KGluaXRMb29wLCBpbml0RG9uZSk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9v
dXQucGhpKG1fb3V0LmludDMyLCBvcmlnaW5hbEluZGV4KTsKLSAgICAgICAgICAgICAgICBMVmFs
dWUgcG9pbnRlciA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKLSAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikp
LAotICAgICAgICAgICAgICAgICAgICBUeXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91Ymxl
UHJvcGVydGllcy5hdEFueUluZGV4KCksIHBvaW50ZXIpKTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5p
bnQzMk9uZSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShpbmRleCwg
bV9vdXQuYW5jaG9yKG5leHRJbmRleCkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmFkZEluY29t
aW5nVG9QaGkocG9pbnRlciwgbV9vdXQuYW5jaG9yKG1fb3V0LmFkZChwb2ludGVyLCBtX291dC5p
bnRQdHJFaWdodCkpKTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAg
ICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1
bnN1cmUoaW5pdERvbmUpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5pdExhc3ROZXh0KTsKLSAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMobV9ub2RlLT5pbmRleGluZ1R5cGUoKSwg
dmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG9iamVjdCk7CiAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC02Mjg2LDExICs2MjY1LDIxIEBAIHByaXZh
dGU6CiAgICAgICAgIC8vIExvd2VyIHRoZSB2YWx1ZXMgZmlyc3QsIHRvIGF2b2lkIGNyZWF0aW5n
IHZhbHVlcyBpbnNpZGUgYSBjb250cm9sIGZsb3cgZGlhbW9uZC4KICAgICAgICAgCiAgICAgICAg
IFZlY3RvcjxMVmFsdWUsIDg+IHZhbHVlczsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgdmFsdWVzLmFw
cGVuZChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxICsgaSkpKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgMSArIGkpOworICAgICAgICAgICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5k
KCkpIHsKKyAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgIGNh
c2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0lu
dDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dKU1ZhbHVlKGVkZ2UpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQgPSBtX25vZGUtPnN0cnVjdHVyZVNldCgpOwot
ICAgICAgICAKKwogICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2ssIDE+IGJsb2NrcyhzZXQuc2l6
ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKICAgICAg
ICAgICAgIGJsb2Nrc1tpXSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC02MzE1LDIxICs2MzA0LDUx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgb2JqZWN0OwogICAgICAgICAgICAgTFZh
bHVlIGJ1dHRlcmZseTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSB8fCBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKSkgewogICAgICAgICAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmlu
YWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAg
ICAgICAgICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmdm0oKS5oZWFwLmFs
bG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKworICAg
ICAgICAgICAgICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJvcGVydGll
cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bmRleGluZ0hlYWRlclNpemUgPSAwOworICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleGluZ1Bh
eWxvYWRTaXplSW5CeXRlcyA9IG1fb3V0LmludFB0clplcm87CisgICAgICAgICAgICAgICAgTFZh
bHVlIHZlY3Rvckxlbmd0aCA9IG1fb3V0LmludDMyWmVybzsKKyAgICAgICAgICAgICAgICBMVmFs
dWUgcHVibGljTGVuZ3RoID0gbV9vdXQuaW50MzJaZXJvOworICAgICAgICAgICAgICAgIGlmICho
YXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICAgICAgICAgICAgICBpbmRleGluZ0hlYWRlclNp
emUgPSBzaXplb2YoSW5kZXhpbmdIZWFkZXIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRh
Lm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3Jp
cHRvci5raW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3Ro
UExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSB2YWx1ZXNb
aV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmVjdG9yTGVuZ3RoID0gdmFsdWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5C
eXRlcyA9CisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5tdWwobV9vdXQuemVyb0V4dFB0
cih2ZWN0b3JMZW5ndGgpLCBtX291dC5pbnRQdHJFaWdodCk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseVNpemUgPSBtX291dC5hZGQoCisgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKAorICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpICsgaW5k
ZXhpbmdIZWFkZXJTaXplKSwKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6
ZUluQnl0ZXMpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tz
QmVmb3JlKHNsb3dQYXRoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFs
dWUgZW5kT2ZTdG9yYWdlID0gYWxsb2NhdGVCYXNpY1N0b3JhZ2VBbmRHZXRFbmQoCi0gICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAqIHNpemVvZihKU1ZhbHVlKSksCi0gICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsK
LSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9yYWdlID0g
YWxsb2NhdGVCYXNpY1N0b3JhZ2VBbmRHZXRFbmQoYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpOwor
CiAgICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RCdXR0ZXJmbHlWYWx1ZSA9IG1fb3V0LmFkZCgK
LSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVh
ZGVyKSksIGVuZE9mU3RvcmFnZSk7CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN1YihlbmRP
ZlN0b3JhZ2UsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKSwKKyAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSAtIGluZGV4aW5nSGVh
ZGVyU2l6ZSkpOworCisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgs
IGZhc3RCdXR0ZXJmbHlWYWx1ZSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdE9iamVjdFZhbHVlID0g
YWxsb2NhdGVPYmplY3QoCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFs
bG9jYXRvciksIHN0cnVjdHVyZSwgZmFzdEJ1dHRlcmZseVZhbHVlLCBzbG93UGF0aCk7CkBAIC02
MzQwLDEyICs2MzU5LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAg
ICAgICAgICBMVmFsdWUgc2xvd09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAotICAgICAgICAg
ICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVm
UHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQ
UigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgTFZhbHVlIHNsb3dPYmplY3RWYWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhp
bmdIZWFkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd09iamVjdFZhbHVlID0gbGF6eVNs
b3dQYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRp
b24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1
dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGgpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93
UGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9u
PiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0
ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHNsb3dPYmplY3QgPSBtX291dC5hbmNob3Ioc2xvd09iamVjdFZhbHVl
KTsKICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93QnV0dGVyZmx5ID0gbV9vdXQu
YW5jaG9yKAogICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKHNsb3dPYmplY3RWYWx1
ZSwgbV9oZWFwcy5KU09iamVjdF9idXR0ZXJmbHkpKTsKQEAgLTYzNTYsNiArNjM4NywxMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBvYmplY3QgPSBtX291
dC5waGkobV9vdXQuaW50UHRyLCBmYXN0T2JqZWN0LCBzbG93T2JqZWN0KTsKICAgICAgICAgICAg
ICAgICBidXR0ZXJmbHkgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0QnV0dGVyZmx5LCBz
bG93QnV0dGVyZmx5KTsKKworICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVibGljTGVu
Z3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisKKyAgICAg
ICAgICAgICAgICBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlw
ZSgpLCB2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSk7CisKKyAgICAgICAgICAgICAgICBIYXNoTWFw
PAorICAgICAgICAgICAgICAgICAgICBpbnQzMl90LCBMVmFsdWUsIERlZmF1bHRIYXNoPGludDMy
X3Q+OjpIYXNoLAorICAgICAgICAgICAgICAgICAgICBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPGludDMyX3Q+PiBpbmRleE1hcDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8aW50
MzJfdD4gaW5kaWNlczsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1f
cHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRM
b2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAg
ICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5raW5kKCkgIT0gSW5kZXhlZFByb3BlcnR5
UExvYykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVzY3JpcHRvci5pbmZv
KCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBpbmRleE1hcC5hZGQoaW5kZXgsIHZhbHVlc1tpXSk7CisgICAgICAgICAgICAgICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCByZXN1bHQpOyAvLyBEdXBsaWNhdGVzIGFyZSBp
bGxlZ2FsLgorCisgICAgICAgICAgICAgICAgICAgIGluZGljZXMuYXBwZW5kKGluZGV4KTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWluZGljZXMuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c29ydChpbmRpY2VzLmJlZ2luKCksIGluZGlj
ZXMuZW5kKCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgVmVj
dG9yPExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoU3RvcmVzKGluZGljZXMuc2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoQ2hlY2tzKGluZGlj
ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBibG9ja3NXaXRoU3RvcmVzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3NbaV0gPSBtX291dC5uZXdCbG9jaygpOyAv
LyBibG9ja3NXaXRoQ2hlY2tzWzBdIGlzIHRoZSBjb250aW51YXRpb24uCisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbmRleExhc3ROZXh0
ID0gbV9vdXQubV9uZXh0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9IGluZGljZXNbaV07CisgICAgICAgICAg
ICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBpbmRleE1hcC5nZXQoaW5kZXgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2go
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYmVsb3cobV9vdXQuY29uc3RJbnQz
MihpbmRleCksIHB1YmxpY0xlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
dXJlKGJsb2Nrc1dpdGhTdG9yZXNbaV0pLCB1bnN1cmUoYmxvY2tzV2l0aENoZWNrc1tpXSkpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NXaXRoU3RvcmVz
W2ldLCBibG9ja3NXaXRoQ2hlY2tzW2ldKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBoYXMgdG8gdHlwZS1jaGVjayBhbmQgY29udmVydCBpdHMgaW5wdXRzLCBidXQgaXQgY2Fu
bm90IGRvIHNvIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdheSB0aGF0IHVwZGF0
ZXMgQUkuIFRoYXQncyBhIGJpdCBhbm5veWluZywgYnV0IGlmIHlvdSB0aGluayBhYm91dCBob3cK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpbmtpbmcgd29ya3MsIGl0J3MgYWN0dWFsbHkg
bm90IGEgYmFkIHRoaW5nLiBXZSBhcmUgdmlydHVhbGx5IGd1YXJhbnRlZWQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHRoYXQgdGhlc2UgdHlwZSBjaGVja3Mgd2lsbCBub3QgZmFpbCwgc2lu
Y2UgdGhlIHR5cGUgY2hlY2tzIHRoYXQgZ3VhcmRlZAorICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhlIG9yaWdpbmFsIHN0b3JlcyB0byB0aGUgYXJyYXkgYXJlIHN0aWxsIHNvbWV3aGVyZSBh
Ym92ZSB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OjpTdG9yZVR5
cGUgc3RvcmVUeXBlOworICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhlZEFic3RyYWN0SGVh
cCogaGVhcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5E
RVhJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
Y291bGQgdXNlIHRoZSBwcm92ZW4gdHlwZSBpZiB3ZSBoYWQgdGhlIEVkZ2UgZm9yIHRoZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOb3RJbnQzMih2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmU2NDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZEludDMy
UHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBzb3VyY2UgaXMgVmFsdWVS
ZXAsIHdlIHNob3VsZCBhdm9pZCBlbWl0dGluZyBhbnkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBjaGVja3MuIFdlIGNvdWxkIGFsc28gYXZvaWQgZW1pdHRpbmcgY2hlY2tzIGlmIHdl
IGhhZCB0aGUgRWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgdmFs
dWUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTEKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNh
c2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMih2YWx1ZSksIHVuc3VyZShpbnRDYXNl
KSwgdW5zdXJlKGRvdWJsZUNhc2UpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBpbnRSZXN1bHQg
PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hbmNob3IobV9vdXQuaW50
VG9Eb3VibGUodW5ib3hJbnQzMih2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwg
aXNOdW1iZXIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBkb3VibGVSZXN1bHQgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUodmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1fb3V0LnBoaShE
b3VibGUsIGludFJlc3VsdCwgZG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlRG91YmxlOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllczsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19U
WVBFUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0
b3JlNjQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4
ZWRDb250aWd1b3VzUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiSW52YWxpZCBpbmRleGluZyB0
eXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LnN0b3JlKHZhbHVlLCBtX291dC5hZGRyZXNzKGJ1dHRlcmZseSwgaGVhcC0+
YXQoaW5kZXgpKSwgc3RvcmVUeXBlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
anVtcChibG9ja3NXaXRoQ2hlY2tzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3Nb
aV0sIGkgPyBibG9ja3NXaXRoU3RvcmVzW2kgLSAxXSA6IGluZGV4TGFzdE5leHQpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgZWFzeSBjYXNlIHdoZXJlIHdlIGNhbiBkbyBhIG9u
ZS1zaG90IGFsbG9jYXRpb24sIHdlIHNpbXBseSBhbGxvY2F0ZSB0aGUKICAgICAgICAgICAgICAg
ICAvLyBvYmplY3QgdG8gZGlyZWN0bHkgaGF2ZSB0aGUgZGVzaXJlZCBzdHJ1Y3R1cmUuCkBAIC02
MzY1LDEyICs2NTAzLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZv
ciAoUHJvcGVydHlNYXBFbnRyeSBlbnRyeSA6IHN0cnVjdHVyZS0+Z2V0UHJvcGVydGllc0NvbmN1
cnJlbnRseSgpKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3By
b3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIFBoYW50b21Qcm9w
ZXJ0eVZhbHVlIHZhbHVlID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClbdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyXSAh
PSBlbnRyeS5rZXkpCisgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlw
dG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGRlc2NyaXB0b3Iua2luZCgpICE9IE5hbWVkUHJvcGVydHlQTG9jKQorICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCldICE9IGVudHJ5LmtleSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBpc0lubGluZU9mZnNldChlbnRyeS5vZmZzZXQpID8g
b2JqZWN0IDogYnV0dGVyZmx5OwotICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZh
bHVlc1tpXSwgYmFzZSwgdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyLCBlbnRyeS5vZmZzZXQpOwor
ICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgZGVzY3Jp
cHRvci5pbmZvKCksIGVudHJ5Lm9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTY0MzUsOSArNjU3NSwxMSBAQCBw
cml2YXRlOgogICAgICAgICBMVmFsdWUgYWN0aXZhdGlvbiA9IG1fb3V0LnBoaShtX291dC5pbnRQ
dHIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChkYXRh
Lm1fcHJvcGVydGllcy5zaXplKCkgPT0gdGFibGUtPnNjb3BlU2l6ZSgpKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlc1tpXSwKLSAgICAgICAgICAgICAgICBhY3Rp
dmF0aW9uLAotICAgICAgICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJp
YWJsZXNbZGF0YS5tX3Byb3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAg
ICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3Bl
cnRpZXNbaV07CisgICAgICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ2xvc3Vy
ZVZhclBMb2MpOworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgICAgICB2
YWx1ZXNbaV0sIGFjdGl2YXRpb24sCisgICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25t
ZW50UmVjb3JkX3ZhcmlhYmxlc1tkZXNjcmlwdG9yLmluZm8oKV0pOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKQEAgLTY0NDYsNyArNjU4OCw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbihsb2NrZXIp
LCBlbmQgPSB0YWJsZS0+ZW5kKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAg
ICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09IGRh
dGEubV9wcm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcikgeworICAgICAgICAgICAgICAg
ICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3Bl
cnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9
PSBDbG9zdXJlVmFyUExvYyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5z
Y29wZU9mZnNldCgpLm9mZnNldCgpID09IGRlc2NyaXB0b3IuaW5mbygpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNjYxMyw2ICs2NzU3LDI5IEBAIHByaXZhdGU6
CiAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUsIHJlZ0V4cCwgbV9oZWFwcy5SZWdFeHBPYmpl
Y3RfbGFzdEluZGV4KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQoKQorICAgIHsKKyAgICAgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2dyYXBo
LnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CisgICAgICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9n
cmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpOworICAgICAgICBFZGdlIHN0YXJ0RWRnZSA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKTsKKyAgICAgICAgRWRnZSBlbmRFZGdlID0gbV9n
cmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIGNv
bnN0cnVjdG9yID0gbG93Q2VsbChjb25zdHJ1Y3RvckVkZ2UpOworICAgICAgICBMVmFsdWUgcmVn
RXhwID0gbG93Q2VsbChyZWdFeHBFZGdlKTsKKyAgICAgICAgTFZhbHVlIHN0cmluZyA9IGxvd0Nl
bGwoc3RyaW5nRWRnZSk7CisgICAgICAgIExWYWx1ZSBzdGFydCA9IGxvd0ludDMyKHN0YXJ0RWRn
ZSk7CisgICAgICAgIExWYWx1ZSBlbmQgPSBsb3dJbnQzMihlbmRFZGdlKTsKKworICAgICAgICBt
X291dC5zdG9yZVB0cihyZWdFeHAsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVj
dG9yX2NhY2hlZFJlc3VsdF9sYXN0UmVnRXhwKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3Ry
aW5nLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRf
bGFzdElucHV0KTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihzdGFydCwgY29uc3RydWN0b3IsIG1f
aGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9zdGFydCk7CisgICAg
ICAgIG1fb3V0LnN0b3JlMzIoZW5kLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1
Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X2VuZCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzJBczgo
CisgICAgICAgICAgICBtX291dC5jb25zdEludDMyKDApLAorICAgICAgICAgICAgbV9vdXQuYWRk
cmVzcyhjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRf
cmVpZmllZCkpOworICAgIH0KKwogICAgIExWYWx1ZSBkaWRPdmVyZmxvd1N0YWNrKCkKICAgICB7
CiAgICAgICAgIC8vIFRoaXMgZG9lcyBhIHZlcnkgc2ltcGxlIGxlYWYgZnVuY3Rpb24gYW5hbHlz
aXMuIFRoZSBpbnZhcmlhbnQgb2YgRlRMIGNhbGwKQEAgLTY5NzAsNiArNzEzNywzOSBAQCBwcml2
YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2b2lk
IGluaXRpYWxpemVBcnJheUVsZW1lbnRzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIExWYWx1
ZSB2ZWN0b3JMZW5ndGgsIExWYWx1ZSBidXR0ZXJmbHkpCisgICAgeworICAgICAgICBpZiAoIWhh
c0RvdWJsZShpbmRleGluZ1R5cGUpKSB7CisgICAgICAgICAgICAvLyBUaGUgR0MgYWxyZWFkeSBp
bml0aWFsaXplZCBldmVyeXRoaW5nIHRvIEpTVmFsdWUoKSBmb3IgdXMuCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBEb3VibGVzIG11c3QgYmUgaW5pdGlhbGl6
ZWQgdG8gUE5hTi4KKyAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExvb3AgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIAorICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5j
aG9yKHZlY3Rvckxlbmd0aCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRl
ciA9IG1fb3V0LmFuY2hvcihidXR0ZXJmbHkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAg
ICAgICAgICBtX291dC5ub3RaZXJvMzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJlKGluaXRMb29wKSwg
dW5zdXJlKGluaXREb25lKSk7CisgICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFz
dE5leHQgPSBtX291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOworICAgICAgICBMVmFs
dWUgaW5kZXggPSBtX291dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOworICAgICAg
ICBMVmFsdWUgcG9pbnRlciA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRl
cik7CisgICAgICAgIAorICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgbV9vdXQu
Y29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAorICAgICAgICAgICAgVHlw
ZWRQb2ludGVyKG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBw
b2ludGVyKSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuc3Vi
KGluZGV4LCBtX291dC5pbnQzMk9uZSk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGko
aW5kZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21p
bmdUb1BoaShwb2ludGVyLCBtX291dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1fb3V0Lmlu
dFB0ckVpZ2h0KSkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5u
b3RaZXJvMzIobmV4dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7
CisgICAgICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5pdExhc3ROZXh0
KTsKKyAgICB9CiAgICAgCiAgICAgTFZhbHVlIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKExWYWx1
ZSBvYmplY3QsIFN0cnVjdHVyZSogcHJldmlvdXNTdHJ1Y3R1cmUpCiAgICAgewpAQCAtOTI1Nyw3
ICs5NDU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAg
IHJldHVybiBtX291dC50ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CiAg
ICAgfQotICAgIAorCiAgICAgTFZhbHVlIHVuYm94RG91YmxlKExWYWx1ZSBqc1ZhbHVlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmJpdENhc3QobV9vdXQuYWRkKGpzVmFsdWUsIG1fdGFn
VHlwZU51bWJlciksIG1fb3V0LmRvdWJsZVR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MSwxOSArNDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M6OkRGRzsKIAotZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIAotICAgIEJ1dHRlcmZseSogYnV0dGVy
Zmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCi0gICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigpLCAwKTsKLSAg
ICAKLSAgICBKU09iamVjdCogcmVzdWx0ID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0
cnVjdHVyZSwgYnV0dGVyZmx5KTsKLSAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUg
dGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0
SW5PU1IoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlv
biogbWF0ZXJpYWxpemF0aW9uLAogICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlKiB2YWx1ZXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAgY2xh
c3MgTGF6eVNsb3dQYXRoOwogCiBleHRlcm4gIkMiIHsKIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikg
V1RGX0lOVEVSTkFMOwotCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxp
emVPYmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXph
dGlvbiosIEVuY29kZWRKU1ZhbHVlKikgV1RGX0lOVEVSTkFMOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxp
dGllcy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJSZWd1bGFy
RXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIllhcnIuaCIKKyNpbmNsdWRlICJZYXJySW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAx
OTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Niw2ICs5NiwxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAgICAvLyBUaGlzIGlz
IGEgc3VwZXIgZGFuZ2Vyb3VzIG1ldGhvZCBmb3IgSklUcy4gU29tZXRpbWVzIHRoZSBKSVRzIHdp
bGwgd2FudCB0byBjcmVhdGUgZWl0aGVyIGEKKyAgICAvLyBKU0ZpbmFsT2JqZWN0IG9yIGEgSlNB
cnJheS4gVGhpcyBpcyB0aGUgbWV0aG9kIHRoYXQgd2lsbCBkbyB0aGF0LgorICAgIHN0YXRpYyBK
U09iamVjdCogY3JlYXRlUmF3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEJ1dHRlcmZseSogPSBudWxscHRyKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBD
b3B5VmlzaXRvciYsIENvcHlUb2tlbik7CkBAIC0xMDM0LDYgKzEwMzgsMjAgQEAgcHJpdmF0ZToK
IAogSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cml2YXRlRnVuY0luc3RhbmNlT2YoRXhlY1N0YXRlKik7CiAKK2lubGluZSBKU09iamVjdCogSlNP
YmplY3Q6OmNyZWF0ZVJhd09iamVjdCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKK3sKKyAgICBKU09iamVjdCogZmluYWxP
YmplY3QgPSBuZXcgKAorICAgICAgICBOb3ROdWxsLCAKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpT
RmluYWxPYmplY3Q+KAorICAgICAgICAgICAgKmV4ZWMtPmhlYXAoKSwKKyAgICAgICAgICAgIEpT
RmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSkK
KyAgICAgICAgKQorICAgICkgSlNPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidXR0ZXJm
bHkpOworICAgIGZpbmFsT2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAgICBy
ZXR1cm4gZmluYWxPYmplY3Q7Cit9CisKIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2Jq
ZWN0OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QnV0dGVyZmx5KiBidXR0ZXJmbHkpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsOCBAQCBS
ZWdFeHAqIFJlZ0V4cDo6Y3JlYXRlKFZNJiB2bSwgY29uc3QgU3RyCiAKIHZvaWQgUmVnRXhwOjpj
b21waWxlKFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRl
cm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9y
KTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjkxLDcgKzI5Myw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxl
KFZNKiB2bSwgWWFycjo6WWFyckMKICNlbmRpZgogCiAgICAgbV9zdGF0ZSA9IEJ5dGVDb2RlOwot
ICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmdm0tPm1f
cmVnRXhwQWxsb2NhdG9yKTsKKyAgICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBp
bGUocGF0dGVybiwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvciwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRv
ckxvY2spOwogfQogCiBpbnQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3RvcikKQEAgLTI5OSw4
ICszMDEsMjIgQEAgaW50IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcmIAogICAg
IHJldHVybiBtYXRjaElubGluZSh2bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOwogfQogCiti
b29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoCisgICAgVk0mIHZtLCBjb25zdCBTdHJpbmcm
IHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50LCAzMj4m
IG92ZWN0b3IpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKwor
ICAgIGlmICghaGFzQ29kZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFy
MTYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwb3NpdGlvbiA9IG1hdGNoKHZtLCBz
LCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVn
RXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXpl
KQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAg
WWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2Nv
bnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzMwLDcgKzM0Niw3IEBAIHZvaWQg
UmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWEKICNlbmRpZgogCiAgICAgbV9zdGF0
ZSA9IEJ5dGVDb2RlOwotICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShw
YXR0ZXJuLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9yKTsKKyAgICBtX3JlZ0V4cEJ5dGVjb2RlID0g
WWFycjo6Ynl0ZUNvbXBpbGUocGF0dGVybiwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvciwgJnZtLT5t
X3JlZ0V4cEFsbG9jYXRvckxvY2spOwogfQogCiBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoKFZN
JiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKQEAgLTMzOCw4ICsz
NTQsMjEgQEAgTWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IAogICAgIHJl
dHVybiBtYXRjaElubGluZSh2bSwgcywgc3RhcnRPZmZzZXQpOwogfQogCitib29sIFJlZ0V4cDo6
bWF0Y2hDb25jdXJyZW50bHkoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCBNYXRjaFJlc3VsdCYgcmVzdWx0KQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoIWhhc01hdGNoT25seUNvZGVGb3Iocy5pczhCaXQo
KSA/IFlhcnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmVzdWx0ID0gbWF0Y2godm0sIHMsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogdm9pZCBSZWdFeHA6OmRlbGV0ZUNvZGUoKQogeworICAgIENvbmN1cnJlbnRKSVRM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgaWYgKCFoYXNDb2RlKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBtX3N0YXRlID0gTm90Q29tcGlsZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcg
QEAKICNpZm5kZWYgUmVnRXhwX2gKICNkZWZpbmUgUmVnRXhwX2gKIAorI2luY2x1ZGUgIkNvbmN1
cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIk1hdGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiUmVnRXhwS2V5LmgiCkBAIC01Niw2ICs1Nyw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdz
ICYgRmxhZ0lnbm9yZUNhc2U7IH0KICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxhZ3MgJiBGbGFnTXVsdGlsaW5lOyB9CiAgICAgYm9vbCBzdGlja3koKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdzICYgRmxhZ1N0aWNreTsgfQorICAgIGJvb2wgZ2xvYmFsT3JTdGlja3koKSBj
b25zdCB7IHJldHVybiBnbG9iYWwoKSB8fCBzdGlja3koKTsgfQogICAgIGJvb2wgdW5pY29kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnVW5pY29kZTsgfQogCiAgICAgY29uc3QgU3Ry
aW5nJiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CkBAIC02NCw4
ICs2NiwxNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25FcnJvcjsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
aW50IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3Rv
cjxpbnQsIDMyPiYgb3ZlY3Rvcik7CisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIGNvdWxk
bid0IHJ1biB0aGUgcmVndWxhciBleHByZXNzaW9uIGZvciBhbnkgcmVhc29uLgorICAgIGJvb2wg
bWF0Y2hDb25jdXJyZW50bHkoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgaW50JiBwb3NpdGlvbiwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsKKyAgICAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBNYXRjaFJlc3VsdCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KTsKIAorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0mLCBj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmKTsKKwogICAg
IC8vIENhbGwgdGhlc2UgdmVyc2lvbnMgb2YgdGhlIG1hdGNoIGZ1bmN0aW9ucyBpZiB5b3UncmUg
ZGVzcGVyYXRlIGZvciBwZXJmb3JtYW5jZS4KICAgICBpbnQgbWF0Y2hJbmxpbmUoVk0mLCBjb25z
dCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9y
KTsKICAgICBNYXRjaFJlc3VsdCBtYXRjaElubGluZShWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0KTsKQEAgLTc3LDYgKzg1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9zdGF0ZSAhPSBOb3RDb21waWxlZDsKICAgICB9CiAKKyAgICBib29sIGhhc0NvZGVGb3Io
WWFycjo6WWFyckNoYXJTaXplKTsKKyAgICBib29sIGhhc01hdGNoT25seUNvZGVGb3IoWWFycjo6
WWFyckNoYXJTaXplKTsKKwogICAgIHZvaWQgZGVsZXRlQ29kZSgpOwogCiAjaWYgRU5BQkxFKFJF
R0VYUF9UUkFDSU5HKQpAQCAtMTMyLDYgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9ydE1hdGNoQ2FsbENvdW50OwogICAgIHVuc2lnbmVkIG1fcnRNYXRjaEZvdW5kQ291bnQ7CiAj
ZW5kaWYKKyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CiAKICNpZiBFTkFCTEUoWUFSUl9K
SVQpCiAgICAgWWFycjo6WWFyckNvZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q2FjaGVkUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCisgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkxhc3RSZWdFeHAoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVn
RXhwQ2FjaGVkUmVzdWx0LCBtX2xhc3RSZWdFeHApOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkxhc3RJbnB1dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRS
ZXN1bHQsIG1fbGFzdElucHV0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZXN1
bHQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX3Jlc3Vs
dCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVpZmllZCgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fcmVpZmllZCk7IH0KKwogcHJpdmF0
ZToKICAgICBNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKICAgICBib29sIG1fcmVpZmllZDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
aAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKFJlZ0V4cENvbnN0cnVjdG9yLCBtX2NhY2hlZFJlc3VsdCk7IH0KKwog
cHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBSZWdFeHBQcm90b3R5cGUq
LCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXMpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiWWFyci5oIgorI2luY2x1ZGUgIllhcnJJbnRlcnByZXRlci5oIgogI2lu
Y2x1ZGUgIllhcnJKSVQuaCIKIAogI2RlZmluZSBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOIDAK
QEAgLTY3LDIwICs2OCwyNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZiAvLyBSRUdFWFBfRlVOQ19U
RVNUX0RBVEFfR0VOCiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vz
c2FyeShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUg
Ym9vbCBSZWdFeHA6Omhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewog
ICAgIGlmIChoYXNDb2RlKCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmICht
X3N0YXRlICE9IEpJVENvZGUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVn
RXhwSklUQ29kZS5oYXM4Qml0Q29kZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikg
JiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitB
TFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJy
OjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit7CisgICAgaWYgKGhhc0NvZGVGb3IoY2hhclNpemUp
KQorICAgICAgICByZXR1cm47CiAKICAgICBjb21waWxlKCZ2bSwgY2hhclNpemUpOwogfQpAQCAt
MTUyLDIxICsxNjAsMjkgQEAgQUxXQVlTX0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGluZShW
TQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNv
bXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFy
U2l6ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IoWWFy
cjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewogICAgIGlmIChoYXNDb2RlKCkpIHsKICNpZiBF
TkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0gICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFy
U2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZU1hdGNo
T25seSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29k
ZS5oYXMxNkJpdENvZGVNYXRjaE9ubHkoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAjZW5kaWYKICAgICB9CiAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19J
TkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShWTSYgdm0sIFlh
cnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK3sKKyAgICBpZiAoaGFzTWF0Y2hPbmx5Q29kZUZv
cihjaGFyU2l6ZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGNvbXBpbGVNYXRjaE9ubHkoJnZt
LCBjaGFyU2l6ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNiArNTYsNyBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1h
dGNoCiAgICAgCiAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOwogICAgIGlu
dCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2hJbmxpbmUodm0sIGlucHV0VmFsdWUsIHN0YXJ0T2Zm
c2V0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7CisgICAgQVNTRVJUKHBvc2l0aW9uID09IHN1YnBhdHRl
cm5SZXN1bHRzWzBdKTsKICAgICBpZiAocG9zaXRpb24gPT0gLTEpIHsKICAgICAgICAgcmVzdWx0
ID0gTWF0Y2hSZXN1bHQ6OmZhaWxlZCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxp
bmVzLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBK
U1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlY0lubGluZShFeGVjU3RhCiAgICAgU3RyaW5nIGlucHV0
ID0gc3RyaW5nLT52YWx1ZShleGVjKTsgLy8gRklYTUU6IEhhbmRsZSBlcnJvcnMuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUxNDUKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAKLSAgICBib29sIGdsb2JhbE9yU3RpY2t5ID0gcmVnRXhwLT5nbG9i
YWwoKSB8fCByZWdFeHAtPnN0aWNreSgpOworICAgIGJvb2wgZ2xvYmFsT3JTdGlja3kgPSByZWdF
eHAtPmdsb2JhbE9yU3RpY2t5KCk7CiAKICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CiAgICAgaWYg
KGdsb2JhbE9yU3RpY2t5KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4MSw3ICsyODEsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIFN0cmluZyBzdWJzdGl0dXRl
QmFjCiAgICAgcmV0dXJuIHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQudG9TdHJpbmcoKTsKIH0KIAot
c3RhdGljIGlubGluZSBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJl
Z0V4cCogcmVnKQoraW5saW5lIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNJbmxpbmUo
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCog
b3ZlY3RvciwgUmVnRXhwKiByZWcpCiB7CiAgICAgc2l6ZV90IGkgPSByZXBsYWNlbWVudC5maW5k
KCckJyk7CiAgICAgaWYgKFVOTElLRUxZKGkgIT0gbm90Rm91bmQpKQpAQCAtMjkwLDYgKzI5MCwx
MSBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyCiAgICAgcmV0dXJu
IHJlcGxhY2VtZW50OwogfQogCitTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0
b3IsIFJlZ0V4cCogcmVnKQoreworICAgIHJldHVybiBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNJ
bmxpbmUocmVwbGFjZW1lbnQsIHNvdXJjZSwgb3ZlY3RvciwgcmVnKTsKK30KKwogc3RydWN0IFN0
cmluZ1JhbmdlIHsKICAgICBTdHJpbmdSYW5nZShpbnQgcG9zLCBpbnQgbGVuKQogICAgICAgICA6
IHBvc2l0aW9uKHBvcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE9iamVjdFByb3RvdHlwZTsKK2NsYXNz
IFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cE9iamVjdDsKIAogY2xhc3MgU3RyaW5nUHJvdG90eXBlIDog
cHVibGljIFN0cmluZ09iamVjdCB7CkBAIC02Miw2ICs2Myw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU3QKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZygKICAgICBFeGVjU3RhdGUq
LCBKU1N0cmluZyogdGhpc1ZhbHVlLCBSZWdFeHBPYmplY3QqIHNlYXJjaFZhbHVlLCBKU1N0cmlu
ZyogcmVwbGFjZVZhbHVlKTsKIAorU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVj
dG9yLCBSZWdFeHAqIHJlZyk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3Ry
aW5nUHJvdG90eXBlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBWTV9oCiAjZGVmaW5lIFZNX2gKIAor
I2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9m
aWxlci5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0
YWJsZUFsbG9jYXRvci5oIgpAQCAtNTQxLDYgKzU0Miw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8
VHlwZWRBcnJheUNvbnRyb2xsZXI+IG1fdHlwZWRBcnJheUNvbnRyb2xsZXI7CiAgICAgUmVnRXhw
Q2FjaGUqIG1fcmVnRXhwQ2FjaGU7CiAgICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IgbV9yZWdFeHBB
bGxvY2F0b3I7CisgICAgQ29uY3VycmVudEpJVExvY2sgbV9yZWdFeHBBbGxvY2F0b3JMb2NrOwog
CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVn
RXhwKj4gUlRUcmFjZUxpc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8u
ZXhlYygiYmFyIik7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0ICE9
PSBudWxsKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAt
ZXhlYy1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xk
aW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIGZvbygpIHsK
KyAgICByZXR1cm4gLyhmKShvKShvKS8uZXhlYygiZm9vIik7Cit9CisKK25vSW5saW5lKGZvbyk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBm
b28oKTsKKyAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPSA0KQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFswXSAhPSAiZm9vIikKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1
bHRbMV0gIT0gImYiKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CisgICAgaWYgKHJlc3VsdFsyXSAhPSAibyIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFk
IHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzNdICE9ICJvIikKKyAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWls
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2lt
cGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFp
bC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBmb28oKSB7Cisg
ICAgcmV0dXJuIC8oZikobykobykvLnRlc3QoImJhciIpOworfQorCitub0lubGluZShmb28pOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9v
KCk7CisgICAgaWYgKHJlc3VsdCAhPSBmYWxzZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5n
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9z
aW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEx
IEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykvLnRlc3QoImZvbyIp
OworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kp
IHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSB0cnVlKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVz
c2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCkBAIC0zMCw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKIAogI2luY2x1ZGUgIllhcnIuaCIKKyNpbmNs
dWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyci5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpZm5kZWYgWWFy
cl9oCiAjZGVmaW5lIFlhcnJfaAogCi0jaW5jbHVkZSAiWWFyckludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiWWFyclBhdHRlcm4uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsK
QEAgLTYzLDYgKzYyLDggQEAgZW51bSBZYXJyQ2hhclNpemUgewogICAgIENoYXIxNgogfTsKIAor
c3RydWN0IEJ5dGVjb2RlUGF0dGVybjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIKIAog
I2VuZGlmIC8vIFlhcnJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE3LDYg
KzE1MTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghaW5wdXQuaXNBdmFpbGFibGVJbnB1dCgw
KSkKICAgICAgICAgICAgIHJldHVybiBvZmZzZXROb01hdGNoOwogCisgICAgICAgIGlmIChwYXR0
ZXJuLT5tX2xvY2spCisgICAgICAgICAgICBwYXR0ZXJuLT5tX2xvY2stPmxvY2soKTsKKyAgICAg
ICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXR0ZXJuLT5tX2JvZHktPm1f
bnVtU3VicGF0dGVybnMgKyAxOyArK2kpCiAgICAgICAgICAgICBvdXRwdXRbaSA8PCAxXSA9IG9m
ZnNldE5vTWF0Y2g7CiAKQEAgLTE1MzYsNiArMTUzOSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHBh
dHRlcm4tPm1fYWxsb2NhdG9yLT5zdG9wQWxsb2NhdG9yKCk7CiAKICAgICAgICAgQVNTRVJUKChy
ZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgPT0gKG91dHB1dFswXSAhPSBvZmZzZXROb01hdGNoKSk7
CisKKyAgICAgICAgaWYgKHBhdHRlcm4tPm1fbG9jaykKKyAgICAgICAgICAgIHBhdHRlcm4tPm1f
bG9jay0+dW5sb2NrKCk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gb3V0cHV0WzBdOwogICAg
IH0KIApAQCAtMTU3NiwxMyArMTU4MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY3VycmVudEFs
dGVybmF0aXZlSW5kZXggPSAwOwogICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZVBhdHRlcm4+IGNvbXBpbGUoQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBjb21waWxlKEJ1bXBQb2ludGVyQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKSVRMb2NrKiBsb2NrKQogICAgIHsKICAgICAgICAg
cmVnZXhCZWdpbihtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucywgbV9wYXR0ZXJuLm1fYm9keS0+
bV9jYWxsRnJhbWVTaXplLCBtX3BhdHRlcm4ubV9ib2R5LT5tX2FsdGVybmF0aXZlc1swXS0+b25j
ZVRocm91Z2goKSk7CiAgICAgICAgIGVtaXREaXNqdW5jdGlvbihtX3BhdHRlcm4ubV9ib2R5KTsK
ICAgICAgICAgcmVnZXhFbmQoKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxC
eXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhl
c2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IpOworICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2Fs
bFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOwogICAgIH0KIAog
ICAgIHZvaWQgY2hlY2tJbnB1dCh1bnNpZ25lZCBjb3VudCkKQEAgLTIwMjcsOSArMjAzNCw5IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiBt
X2FsbFBhcmVudGhlc2VzSW5mbzsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZVBhdHRl
cm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9jYXRv
ciogYWxsb2NhdG9yKQorc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBp
bGUoWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IENvbmN1cnJlbnRKSVRMb2NrKiBsb2NrKQogewotICAgIHJldHVybiBCeXRlQ29tcGlsZXIocGF0
dGVybikuY29tcGlsZShhbGxvY2F0b3IpOworICAgIHJldHVybiBCeXRlQ29tcGlsZXIocGF0dGVy
bikuY29tcGlsZShhbGxvY2F0b3IsIGxvY2spOwogfQogCiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0
ZWNvZGVQYXR0ZXJuKiBieXRlY29kZSwgY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkKiBvdXRwdXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgWWFyckludGVycHJldGVyX2gKICNkZWZpbmUgWWFyckludGVycHJldGVy
X2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRl
cm4uaCIKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0zMzcsMTAgKzMzOCwxMSBAQCBwdWJsaWM6CiBz
dHJ1Y3QgQnl0ZWNvZGVQYXR0ZXJuIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBCeXRlY29kZVBhdHRlcm4oc3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlv
bj4gYm9keSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiYgcGFyZW50
aGVzZXNJbmZvVG9BZG9wdCwgWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2Nh
dG9yKiBhbGxvY2F0b3IpCisgICAgQnl0ZWNvZGVQYXR0ZXJuKHN0ZDo6dW5pcXVlX3B0cjxCeXRl
RGlzanVuY3Rpb24+IGJvZHksIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9u
Pj4mIHBhcmVudGhlc2VzSW5mb1RvQWRvcHQsIFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBCdW1wUG9p
bnRlckFsbG9jYXRvciogYWxsb2NhdG9yLCBDb25jdXJyZW50SklUTG9jayogbG9jaykKICAgICAg
ICAgOiBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAgICAgLCBtX2ZsYWdzKHBhdHRlcm4ubV9m
bGFncykKICAgICAgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCisgICAgICAgICwgbV9sb2Nr
KGxvY2spCiAgICAgewogICAgICAgICBtX2JvZHktPnRlcm1zLnNocmlua1RvRml0KCk7CiAKQEAg
LTM2Niw2ICszNjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gRWFjaCBCeXRlY29kZVBhdHRlcm4gaXMg
YXNzb2NpYXRlZCB3aXRoIGEgUmVnRXhwLCBlYWNoIFJlZ0V4cCBpcyBhc3NvY2lhdGVkCiAgICAg
Ly8gd2l0aCBhIFZNLiAgQ2FjaGUgYSBwb2ludGVyIHRvIG91dCBWTSdzIG1fcmVnRXhwQWxsb2Nh
dG9yLgogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICBMb2NrKiBt
X2xvY2s7CiAKICAgICBDaGFyYWN0ZXJDbGFzcyogbmV3bGluZUNoYXJhY3RlckNsYXNzOwogICAg
IENoYXJhY3RlckNsYXNzKiB3b3JkY2hhckNoYXJhY3RlckNsYXNzOwpAQCAtMzc1LDcgKzM3OCw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDaGFyYWN0ZXJDbGFzcz4+
IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yKik7CitKU19FWFBPUlRfUFJJVkFURSBzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQb2ludGVyQWxsb2Nh
dG9yKiwgQ29uY3VycmVudEpJVExvY2sqID0gbnVsbHB0cik7CiBKU19FWFBPUlRfUFJJVkFURSB1
bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiwgY29uc3QgU3RyaW5nJiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpOwogdW5zaWduZWQgaW50ZXJwcmV0KEJ5
dGVjb2RlUGF0dGVybiosIGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCk7CiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNv
ZGVQYXR0ZXJuKiwgY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCogb3V0cHV0KTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc5ODEpCisrKyBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2
LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIGFu
ZCBGVEwgc2hvdWxkIGNvbnN0YW50LWZvbGQgUmVnRXhwRXhlYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjcwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBleGVjdXRlSW5zZXJ0aW9ucygpIHJl
dHVybiB0aGUgYW1vdW50IGJ5IHdoaWNoIHRoZSB2ZWN0b3IgaW5jcmVhc2VkIGluIHNpemUuIFRo
aXMgaXMgYQorICAgICAgICBjb252ZW5pZW50IGZlYXR1cmUgdGhhdCBJIHVzZSBpbiBERkc6Oklu
c2VydGlvblNldC4KKworICAgICAgICAqIHd0Zi9JbnNlcnRpb24uaDoKKyAgICAgICAgKFdURjo6
ZXhlY3V0ZUluc2VydGlvbnMpOgorCiAyMDE2LTAzLTEwICBGcmVkZXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgV09GRjIKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0luc2VydGlvbi5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvV1RGL3d0Zi9JbnNlcnRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSwxNCArNTUsMTUgQEAgcHJpdmF0ZToK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFZlY3RvclR5cGUsIHR5cGVuYW1lIEluc2Vy
dGlvblZlY3RvclR5cGU+Ci12b2lkIGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUm
IHRhcmdldCwgSW5zZXJ0aW9uVmVjdG9yVHlwZSYgaW5zZXJ0aW9ucykKK3NpemVfdCBleGVjdXRl
SW5zZXJ0aW9ucyhUYXJnZXRWZWN0b3JUeXBlJiB0YXJnZXQsIEluc2VydGlvblZlY3RvclR5cGUm
IGluc2VydGlvbnMpCiB7Ci0gICAgaWYgKCFpbnNlcnRpb25zLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHRhcmdldC5ncm93KHRhcmdldC5zaXplKCkgKyBpbnNlcnRpb25zLnNpemUoKSk7
CisgICAgc2l6ZV90IG51bUluc2VydGlvbnMgPSBpbnNlcnRpb25zLnNpemUoKTsKKyAgICBpZiAo
IW51bUluc2VydGlvbnMpCisgICAgICAgIHJldHVybiAwOworICAgIHRhcmdldC5ncm93KHRhcmdl
dC5zaXplKCkgKyBudW1JbnNlcnRpb25zKTsKICAgICBzaXplX3QgbGFzdEluZGV4ID0gdGFyZ2V0
LnNpemUoKTsKICAgICBzaXplX3Qgb3JpZ2luYWxUYXJnZXRTaXplID0gdGFyZ2V0LnNpemUoKTsK
LSAgICBmb3IgKHNpemVfdCBpbmRleEluSW5zZXJ0aW9ucyA9IGluc2VydGlvbnMuc2l6ZSgpOyBp
bmRleEluSW5zZXJ0aW9ucy0tOykgeworICAgIGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25z
ID0gbnVtSW5zZXJ0aW9uczsgaW5kZXhJbkluc2VydGlvbnMtLTspIHsKICAgICAgICAgQVNTRVJU
KCFpbmRleEluSW5zZXJ0aW9ucyB8fCBpbnNlcnRpb25zW2luZGV4SW5JbnNlcnRpb25zXS5pbmRl
eCgpID49IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnMgLSAxXS5pbmRleCgpKTsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChvcmlnaW5hbFRhcmdldFNpemUsIGluc2VydGlvbnNbaW5kZXhJbklu
c2VydGlvbnNdLmluZGV4KCkgPCBvcmlnaW5hbFRhcmdldFNpemUpOwogICAgICAgICBzaXplX3Qg
Zmlyc3RJbmRleCA9IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4KCkgKyBpbmRl
eEluSW5zZXJ0aW9uczsKQEAgLTczLDYgKzc0LDcgQEAgdm9pZCBleGVjdXRlSW5zZXJ0aW9ucyhU
YXJnZXRWZWN0b3JUeXBlJgogICAgICAgICBsYXN0SW5kZXggPSBmaXJzdEluZGV4OwogICAgIH0K
ICAgICBpbnNlcnRpb25zLnJlc2l6ZSgwKTsKKyAgICByZXR1cm4gbnVtSW5zZXJ0aW9uczsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc5ODEpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0w
My0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBhbmQg
RlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI3MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanM6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Np
bXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy1mYWlsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1l
eGVjLWZvbGRpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVn
ZXhwLXRlc3QtZm9sZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5n
Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTEwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBUZXN0IGdhcmRlbmluZyBhZnRlciByMTk3
OTMzCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xk
aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Np
bXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcmVn
ZXhwLWV4ZWMtZm9sZGluZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
byBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhw
LWV4ZWMtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4
ZWMtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
IEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbAorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9s
ZGluZy1mYWlsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Np
bXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVj
LWZvbGRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRl
c3QtZm9sZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2lt
cGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxl
LXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJl
Z2V4cC10ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmctZmFpbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRp
bmctZmFpbC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1IEBACisoZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDAwOyArK2kpCisgICAgICAgIC9mb28vLmV4ZWMoImJhciIpOworfSkoKTsKKwpJbmRleDog
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZv
bGRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgL2Zvby8uZXhlYygiZm9vIik7
Cit9KSgpOworCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1w
bGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
aW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsg
KytpKQorICAgICAgICAvZm9vLy50ZXN0KCJiYXIiKTsKK30pKCk7CisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBs
ZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1IEBACisoZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgICAgIC9mb28vLnRlc3QoImZvbyIpOworfSkoKTsK
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273695</attachid>
            <date>2016-03-11 00:15:07 -0800</date>
            <delta_ts>2016-03-11 10:49:05 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>129840</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MyBA
QAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMsIFJlZ0V4cFRlc3Qs
IGFuZCBTdHJpbmdSZXBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGVuYWJsZXMgY29uc3RhbnQtZm9sZGluZyBvZiBSZWdFeHBFeGVjLCBS
ZWdFeHBUZXN0LCBhbmQgU3RyaW5nUmVwbGFjZS4KKworICAgICAgICBJdCdzIG5vdyBwb3NzaWJs
ZSB0byBydW4gWWFyciBvbiB0aGUgSklUIHRocmVhZHMuIFNpbmNlIHByZXZpb3VzIHdvcmsgb24g
Y29uc3RhbnQtZm9sZGluZworICAgICAgICBzdHJpbmdzIGdhdmUgdGhlIERGRyBhbiBBUEkgZm9y
IHJlYXNvbmluZyBhYm91dCBKU1N0cmluZyBjb25zdGFudHMgaW4gdGVybXMgb2YKKyAgICAgICAg
SklULXRocmVhZC1sb2NhbCBXVEY6OlN0cmluZ3MsIGl0J3Mgbm93IHN1cGVyIGVhc3kgdG8ganVz
dCBwYXNzIHN0cmluZ3MgdG8gWWFyciBhbmQgYnVpbGQgSVIKKyAgICAgICAgYmFzZWQgb24gdGhl
IHJlc3VsdHMuCisKKyAgICAgICAgQnV0IFJlZ0V4cEV4ZWMgaXMgaGFyZDogdGhlIGZvbGRlZCB2
ZXJzaW9uIHN0aWxsIG11c3QgYWxsb2NhdGUgYSBSZWdFeHBNYXRjaGVzQXJyYXkuIFdlIG11c3QK
KyAgICAgICAgdXNlIHRoZSBzYW1lIFN0cnVjdHVyZSB0aGF0IHRoZSBjb2RlIHdvdWxkIGhhdmUg
dXNlZCBvciBlbHNlIHdlJ2xsIHBvbGx1dGUgdGhlIHByb2dyYW0ncworICAgICAgICBpbmxpbmUg
Y2FjaGVzLiBBbHNvLCBSZWdFeHBNYXRjaGVzQXJyYXkuaHxjcHAgd2lsbCBhbGxvY2F0ZSB0aGUg
YXJyYXkgYW5kIGl0cyBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVzIGluIG9uZSBnbyAtIHdlIGRv
bid0IHdhbnQgdG8gbG9zZSB0aGF0IG9wdGltaXphdGlvbi4gU28sIHRoaXMgcGF0Y2ggZW5hYmxl
cworICAgICAgICBNYXRlcmlhbGl6ZU5ld09iamVjdCB0byBhbGxvY2F0ZSBvYmplY3RzIG9yIGFy
cmF5cyB3aXRoIGFueSBudW1iZXIgb2YgaW5kZXhlZCBvciBuYW1lZAorICAgICAgICBwcm9wZXJ0
aWVzLiBQcmV2aW91c2x5IGl0IGNvdWxkIG9ubHkgaGFuZGxlIG9iamVjdHMgKGJ1dCBub3QgYXJy
YXlzKSBhbmQgbmFlZCBwcm9wZXJ0aWVzCisgICAgICAgIChidXQgbm90IGluZGV4ZWQgb25lcyku
CisKKyAgICAgICAgVGhpcyBhbHNvIGFkZHMgYSBmZXcgbWlub3IgdGhpbmdzIGZvciBzZXR0aW5n
IHRoZSBSZWdFeHBDb25zdHJ1Y3RvciBjYWNoZWQgcmVzdWx0LgorCisgICAgICAgIFRoaXMgaXMg
YWJvdXQgYSAyeCBzcGVlZC11cCBvbiBtaWNyb2JlbmNobWFya3Mgd2hlbiB3ZSBmb2xkIGEgbWF0
Y2ggc3VjY2VzcyBhbmQgYWJvdXQgYQorICAgICAgICA4eCBzcGVlZC11cCB3aGVuIHdlIGZvbGQg
YSBtYXRjaCBmYWlsdXJlLiBJdCdzIGEgMTAlIHNwZWVkLXVwIG9uIE9jdGFuZS9yZWdleHAuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6
aW5zZXJ0U2xvdyk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjpleGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5z
ZXJ0aW9uU2V0OjppbnNlcnRDaGVjayk6CisgICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6dHJ5R2V0U3RyaW5nKToKKyAgICAg
ICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWF5RXhpdCk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdGFja0FjY2Vzc0Rh
dGE6OmZsdXNoZWRBdCk6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YTo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFs
dWU6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE6Om9uZVdheVNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRGRzo6T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oOgorICAgICAg
ICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpQaGFudG9tUHJvcGVydHlWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6Om9wZXJh
dG9yPT0pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkpOiBE
ZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVDb21tdXRhdGl2
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpleGVjdXRl
SW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRh
dGU6OnZhbGlkYXRlQ1BTKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAg
ICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6
ZUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmRpZE92ZXJmbG93U3RhY2spOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzdG9yYWdlRm9yVHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmluaXRpYWxpemVBcnJheUVs
ZW1lbnRzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpp
c05vdENlbGxPck1pc2MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1
bmJveERvdWJsZSk6CisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpG
VEw6Om9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkpOiBEZWxldGVkLgorICAgICAgICAq
IGZ0bC9GVExPcGVyYXRpb25zLmg6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlsaXRpZXMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdCk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlND
OjpSZWdFeHA6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Om1hdGNoKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlJlZ0V4
cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZGVsZXRlQ29kZSk6
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENh
Y2hlZFJlc3VsdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9m
TGFzdFJlZ0V4cCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZM
YXN0SW5wdXQpOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZpZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KToKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpoYXNDb2RlRm9yKToK
KyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlND
OjpSZWdFeHA6Om1hdGNoSW5saW5lKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpoYXNNYXRjaE9u
bHlDb2RlRm9yKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlNYXRj
aE9ubHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAg
IChKU0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZXhlY0lubGlu
ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNTbG93KToKKyAgICAgICAgKEpTQzo6c3Vic3RpdHV0
ZUJhY2tyZWZlcmVuY2VzSW5saW5lKToKKyAgICAgICAgKEpTQzo6c3Vic3RpdHV0ZUJhY2tyZWZl
cmVuY2VzKToKKyAgICAgICAgKEpTQzo6U3RyaW5nUmFuZ2U6OlN0cmluZ1JhbmdlKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5q
czogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1wbGUt
cmVnZXhwLWV4ZWMtZm9sZGluZy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4K
KyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogeWFyci9SZWd1
bGFyRXhwcmVzc2lvbi5jcHA6CisgICAgICAgICogeWFyci9ZYXJyLmg6CisgICAgICAgICogeWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6
aW50ZXJwcmV0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjpCeXRlQ29tcGls
ZXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNoZWNrSW5wdXQpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpieXRlQ29tcGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OmludGVycHJldCk6CisgICAg
ICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZWNv
ZGVQYXR0ZXJuOjpCeXRlY29kZVBhdHRlcm4pOgorCiAyMDE2LTAzLTEwICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCByZWdpc3RlciBy
ZXVzZSBmb3IgQXJpdGhBZGQgb2YgYW4gSW50MzIgYW5kIGNvbnN0YW50IGluIERGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00ODgsNiArNDg4LDcgQEAKIAkJMEY3QzExQUQxQkMzODYyQzAwQzc0
Q0RCIC8qIENvcHlCYXJyaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMTFBQzFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdDMzlGQjFD
OEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4
cElubGluZXMuaCAqLzsgfTsKIAkJMEY3QzM5RkQxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9i
amVjdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi87
IH07CisJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZFMUM5MEM1NUIwMDQ4
MDE1MSAvKiBERkdPcEluZm8uaCAqLzsgfTsKIAkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8q
IEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMzNUI3MTYzOUMxRTYwMDE0
NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1
IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI2NDAsNiArMjY0MSw3IEBACiAJCTBGN0MxMUFDMUJDMzg2MkMwMEM3NENEQiAv
KiBDb3B5QmFycmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5QmFy
cmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGQTFDOEY2MjkzMDA0
ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZD
MUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPcEluZm8uaDsgcGF0aCA9IGRmZy9E
RkdPcEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMy
MzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCeVZhbEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5
QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYy
NDUsNiArNjI0Nyw3IEBACiAJCQkJMEYyQjlDREQxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGEuaCAqLywKIAkJCQk4NkVDOURCRjEzMjhERjgyMDAyQjJBRDcg
LyogREZHT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJODZFQzlEQzAxMzI4REY4MjAwMkIyQUQ3IC8q
IERGR09wZXJhdGlvbnMuaCAqLywKKwkJCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZH
T3BJbmZvLmggKi8sCiAJCQkJQTdEODlDRUUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWls
YWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwICovLAogCQkJCUE3RDg5Q0VGMTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmggKi8sCiAJCQkJMEZEODJFNTIx
NDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCAqLywKQEAgLTc0NDUsNiArNzQ0OCw3
IEBACiAJCQkJMEY2NEVBRjMxQzRFQ0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1RUE3MTA1MTlGNkRFNzQwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpj
X2NvbmZpZ3VyYXRpb25faGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDYxOUY2
REU3NjAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlv
bi5weSBpbiBIZWFkZXJzICovLAorCQkJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdP
cEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA3MTlGNkRFNzgwMDk4RjVFQyAvKiBn
ZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5IGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDgxOUY2REU3QTAwOThGNUVDIC8qIGdlbmVy
YXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJz
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTUyLDYgKzE5NTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAg
IGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTk3OTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkyMyw2ICs5MjMsMTAgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZQogICAgICAgICB3cml0ZShSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAg
ZGVmKEhlYXBMb2NhdGlvbihSZWdFeHBPYmplY3RMYXN0SW5kZXhMb2MsIFJlZ0V4cE9iamVjdF9s
YXN0SW5kZXgsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSk7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0
OgorICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7CisgICAgICAgIHJldHVybjsKICAgICAgICAg
CiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOiB7CiAgICAgICAgIEFic3RyYWN0SGVhcCBoZWFw
KERpcmVjdEFyZ3VtZW50c1Byb3BlcnRpZXMsIG5vZGUtPmNhcHR1cmVkQXJndW1lbnRzT2Zmc2V0
KCkub2Zmc2V0KCkpOwpAQCAtMTA4Niw3ICsxMDkwLDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgp
ID09IFJlZ0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2lu
ZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAg
ICAgICAgICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUo
UmVnRXhwU3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmVhZChXb3JsZCk7CkBA
IC0xMDk4LDcgKzExMDQsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2Jq
ZWN0VXNlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlKSB7CiAgICAgICAgICAgICByZWFkKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHJlYWQo
UmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7
CisgICAgICAgICAgICB3cml0ZShSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICByZWFkKFdvcmxkKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3
LDYgKzExNyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAg
ICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBD
YWNoZWRSZXN1bHQ6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgY2FzZSBHZXRHbG9iYWxM
ZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBQdXRHbG9iYWxWYXJpYWJsZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTk3OTgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMwMCw2ICsxMzAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdG9y
ZUJhcnJpZXI6CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAg
ICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdF
eHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgICAgICAvLyBUaGVzZSBhcmUganVzdCBub2RlcyB0aGF0
IHdlIGRvbid0IGN1cnJlbnRseSBleHBlY3QgdG8gc2VlIGR1cmluZyBmaXh1cC4KICAgICAgICAg
ICAgIC8vIElmIHdlIGV2ZXIgd2FudGVkIHRvIGluc2VydCB0aGVtIHByaW9yIHRvIGZpeHVwLCB0
aGVuIHdlIGp1c3QgaGF2ZSB0byBjcmVhdGUKICAgICAgICAgICAgIC8vIGZpeHVwIHJ1bGVzIGZv
ciB0aGVtLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTUsNiArMzE1LDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0LCBjb25zdAogICAgICAgICAgICAgb3V0LnByaW50KGFub3RoZXJDb21tYSwgcG9p
bnRlckR1bXBJbkNvbnRleHQoZnJlZXplKG1fY29kZUJsb2NrLT5jb25zdGFudEJ1ZmZlcihub2Rl
LT5zdGFydENvbnN0YW50KCkpW2ldKSwgY29udGV4dCkpOwogICAgICAgICBvdXQucHJpbnQoIl0i
KTsKICAgICB9CisgICAgaWYgKG5vZGUtPmhhc0xhenlKU1ZhbHVlKCkpCisgICAgICAgIG91dC5w
cmludChjb21tYSwgbm9kZS0+bGF6eUpTVmFsdWUoKSk7CiAgICAgaWYgKG5vZGUtPmhhc0luZGV4
aW5nVHlwZSgpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIEluZGV4aW5nVHlwZUR1bXAobm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICBpZiAobm9kZS0+aGFzVHlwZWRBcnJheVR5cGUoKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5jcHAJ
KHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0
aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBAQCB2b2lkIEluc2VydGlv
blNldDo6aW5zZXJ0U2xvdyhjb25zdCBJbnNlCiAgICAgbV9pbnNlcnRpb25zLmluc2VydCgwLCBp
bnNlcnRpb24pOwogfQogCi12b2lkIEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBi
bG9jaykKK3NpemVfdCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7
Ci0gICAgZXhlY3V0ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2VydGlvbnMpOworICAgIHJldHVy
biBleGVjdXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9ucyk7CiB9CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5z
ZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
bnNlcnRpb25TZXQuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAotICAgIHZvaWQg
ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jayk7CisgICAgc2l6ZV90IGV4ZWN1dGUoQmFzaWNCbG9j
ayogYmxvY2spOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5zZXJ0U2xvdyhjb25zdCBJbnNlcnRp
b24mKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUu
Y3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xh
enlKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDggKzExNiwxMCBAQCBTdHJpbmcg
TGF6eUpTVmFsdWU6OnRyeUdldFN0cmluZyhHcmFwaCYgCiAgICAgZGVmYXVsdDoKICAgICAgICAg
aWYgKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZyA9IHRyeUdldFN0cmluZ0ltcGwoKSkgewogICAg
ICAgICAgICAgdW5zaWduZWQgZ2lub3Jtb3VzU3RyaW5nTGVuZ3RoID0gMTAwMDA7Ci0gICAgICAg
ICAgICBpZiAoc3RyaW5nLT5sZW5ndGgoKSA+IGdpbm9ybW91c1N0cmluZ0xlbmd0aCkKKyAgICAg
ICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID4gZ2lub3Jtb3VzU3RyaW5nTGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2Ugb2Ygc2l6ZSBsaW1pdC5c
biIpOwogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBncmFwaC5tX2NvcGllZFN0cmlu
Z3MuYWRkKHN0cmluZywgU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZp
c2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcgQEAgRXhpdE1vZGUgbWF5RXhpdChHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZAogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgIGNhc2UgUHV0
QnlPZmZzZXQ6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgorICAgIGNhc2UgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0OgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRGR05vZGVUeXBl
LmgiCiAjaW5jbHVkZSAiREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oIgorI2luY2x1ZGUg
IkRGR09wSW5mby5oIgogI2luY2x1ZGUgIkRGR1RyYW5zaXRpb24uaCIKICNpbmNsdWRlICJERkdV
c2VLaW5kLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCkBAIC0yMTksMjAg
KzIyMCw2IEBAIHN0cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogICAgIEZsdXNoZWRBdCBmbHVzaGVk
QXQoKSB7IHJldHVybiBGbHVzaGVkQXQoZm9ybWF0LCBtYWNoaW5lTG9jYWwpOyB9CiB9OwogCi0v
LyBUaGlzIHR5cGUgdXNlZCBpbiBwYXNzaW5nIGFuIGltbWVkaWF0ZSBhcmd1bWVudCB0byBOb2Rl
IGNvbnN0cnVjdG9yOwotLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUgKHR5cGlj
YWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCi0vLyBhIGNv
bnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUqLgotc3Ry
dWN0IE9wSW5mbyB7Ci0gICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQotICAgIGV4cGxpY2l0
IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkpIHsgfQotICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSNpZiBPUyhEQVJXSU4pIHx8IFVT
RShKU1ZBTFVFNjQpCi0gICAgZXhwbGljaXQgT3BJbmZvKHNpemVfdCB2YWx1ZSkgOiBtX3ZhbHVl
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSNlbmRpZgotICAgIGV4cGxpY2l0
IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQotICAgIHVpbnRwdHJfdCBtX3ZhbHVlOwotfTsKLQogLy8gPT09IE5vZGUg
PT09CiAvLwogLy8gTm9kZSByZXByZXNlbnRzIGEgc2luZ2xlIG9wZXJhdGlvbiBpbiB0aGUgZGF0
YSBmbG93IGdyYXBoLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiArMjI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhckluamVjdGlvbldhdGNocG9pbnQsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAorICAgIG1hY3JvKFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oQ2hlY2tDZWxsLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tOb3RFbXB0eSwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKENoZWNrQmFkQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTc0LDcgKzE5NzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAg
Y2FzZSBOYW1lZFByb3BlcnR5UExvYzogewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobG9j
YXRpb24uYmFzZSgpID09IGFsbG9jYXRpb24uaWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Qcm9wZXJ0eVZhbHVlKGxvY2F0
aW9uLmluZm8oKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBl
bmQobG9jYXRpb24uZGVzY3JpcHRvcigpKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGlmICht
X3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ib3R0b20pOwpAQCAtMjAyNCw3ICsy
MDI0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhclBMb2M6
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9PSBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVz
LmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRlc2NyaXB0b3Io
KSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShibG9jaywgbG9j
YXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlu
cyh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uYXBwZW5kKG1fYm90dG9tKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmNwcAkocmV2aXNpb24g
MTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMzIgKzMyLDExIEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdm9pZCBQaGFudG9tUHJvcGVydHlWYWx1ZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotewotICAgIG91dC5wcmludCgiaWQiLCBtX2lkZW50
aWZpZXJOdW1iZXIpOwotfQotCiB2b2lkIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIlsiLCBsaXN0RHVtcCht
X3Byb3BlcnRpZXMpLCAiXSIpOwogfQogCi1mbG9hdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
OjpvbmVXYXlTaW1pbGFyaXR5U2NvcmUoCi0gICAgY29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgbnVtSGl0cyA9IDA7Ci0gICAgZm9y
IChQaGFudG9tUHJvcGVydHlWYWx1ZSB2YWx1ZSA6IG1fcHJvcGVydGllcykgewotICAgICAgICBp
ZiAob3RoZXIubV9wcm9wZXJ0aWVzLmNvbnRhaW5zKHZhbHVlKSkKLSAgICAgICAgICAgIG51bUhp
dHMrKzsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihudW1IaXRzKSAvIHN0
YXRpY19jYXN0PGZsb2F0PihtX3Byb3BlcnRpZXMuc2l6ZSgpKTsKLX0KLQotZmxvYXQgT2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEmIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBzdGQ6Om1pbihvbmVXYXlT
aW1pbGFyaXR5U2NvcmUob3RoZXIpLCBvdGhlci5vbmVXYXlTaW1pbGFyaXR5U2NvcmUoKnRoaXMp
KTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVk
ZSAiREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAt
MzUsMzggKzM2LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotc3Ry
dWN0IFBoYW50b21Qcm9wZXJ0eVZhbHVlIHsKLSAgICBQaGFudG9tUHJvcGVydHlWYWx1ZSgpCi0g
ICAgICAgIDogbV9pZGVudGlmaWVyTnVtYmVyKFVJTlRfTUFYKQotICAgIHsKLSAgICB9Ci0gICAg
Ci0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUodW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKLSAg
ICAgICAgOiBtX2lkZW50aWZpZXJOdW1iZXIoaWRlbnRpZmllck51bWJlcikKLSAgICB7Ci0gICAg
fQotICAgIAotICAgIHVuc2lnbmVkIG1faWRlbnRpZmllck51bWJlcjsKLSAgICAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUGhhbnRvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllck51bWJlciA9PSBvdGhlci5tX2lkZW50aWZp
ZXJOdW1iZXI7Ci0gICAgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwotfTsKLQogc3RydWN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEgewogICAgIC8vIERldGVy
bWluZXMgdGhlIG1lYW5pbmcgb2YgdGhlIHBhc3NlZCBub2Rlcy4KLSAgICBWZWN0b3I8UGhhbnRv
bVByb3BlcnR5VmFsdWU+IG1fcHJvcGVydGllczsKKyAgICBWZWN0b3I8UHJvbW90ZWRMb2NhdGlv
bkRlc2NyaXB0b3I+IG1fcHJvcGVydGllczsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgZnJhY3Rpb24gb2YgbXkgcHJvcGVydGllcyB0
aGF0IHRoZSBvdGhlciBkYXRhIGhhcy4KLSAgICBmbG9hdCBvbmVXYXlTaW1pbGFyaXR5U2NvcmUo
Y29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYpIGNvbnN0OwotICAgIAotICAgIC8vIFRo
ZSBtaW5pbXVtIG9mIHRoZSB0d28gcG9zc2libGUgb25lLXdheSBzY29yZXMuCi0gICAgZmxvYXQg
c2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmKSBjb25zdDsK
IH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcEluZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR09wSW5mb19o
CisjZGVmaW5lIERGR09wSW5mb19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
KyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewor
CisvLyBUaGlzIHR5cGUgdXNlZCBpbiBwYXNzaW5nIGFuIGltbWVkaWF0ZSBhcmd1bWVudCB0byBO
b2RlIGNvbnN0cnVjdG9yOworLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlhdGUgdmFsdWUgKHR5
cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlIC0gCisvLyBh
IGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJvbSBhIE5vZGUqLgor
c3RydWN0IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsgfQorICAgIGV4cGxp
Y2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2YWx1ZSkgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyNpZiBPUyhEQVJXSU4pIHx8
IFVTRShKU1ZBTFVFNjQpCisgICAgZXhwbGljaXQgT3BJbmZvKHNpemVfdCB2YWx1ZSkgOiBtX3Zh
bHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyNlbmRpZgorICAgIGV4cGxp
Y2l0IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pih2YWx1ZSkpIHsgfQorICAgIHVpbnRwdHJfdCBtX3ZhbHVlOworfTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAv
LyBERkdPcEluZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MDEsNiArMTQwMSw2MCBA
QCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZhdWx0SGFzCiAgICAgcmV0dXJuIDA7
CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoKQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOworCisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHk7CisgICAgaWYgKHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSkgeworICAgICAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAgICAg
IGhlYWRlci5zZXRWZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAgICAgICAgaGVhZGVyLnNldFB1Ymxp
Y0xlbmd0aCgwKTsKKyAgICAgICAgCisgICAgICAgIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3Jl
YXRlKAorICAgICAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwKKyAgICAgICAgICAgIGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpLCBoZWFkZXIsCisgICAgICAgICAgICBsZW5ndGggKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnV0dGVyZmx5ID0gbnVsbHB0cjsKKwor
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMsIHN0
cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUg
dGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KHJlc3VsdCk7Cit9CisKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgCisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBC
dXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIEluZGV4aW5nSGVhZGVyKCksIDApOworICAgIAorICAg
IEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMsIHN0cnVj
dHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhh
dCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0
aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIElu
ZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7
CisgICAgaGVhZGVyLnNldFB1YmxpY0xlbmd0aCgwKTsKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAorICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBoZWFkZXIsCisgICAgICAgIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgKiBsZW5ndGgpOworCisgICAgLy8gUGFyYWRveGljYWxseSB0aGlzIG1heSBh
bGxvY2F0ZSBhIEpTQXJyYXkuIFRoYXQncyB0b3RhbGx5IGNvb2wuCisgICAgSlNPYmplY3QqIHJl
c3VsdCA9IEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJm
bHkpOworICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJm
bHkgaXMgaW4gdG8tc3BhY2UuCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2dERkcoRXhlY1N0YXRlKiBleGVj
KSAKIHsKICAgICBleGVjLT52bSgpLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmll
cyhBU0NJSUxpdGVyYWwoIkxvZyBGdWxsLCBjYWxsZWQgZnJvbSBpbnNpZGUgREZHLiIpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAx
OTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1NywxMCBAQCBpbnQ2NF90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29udmVydERvCiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmF1bHRI
YXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU0NlbGwqIHZhbHVlLCBKU0NlbGwqIHByb3RvKTsKIAor
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSYXdPYmplY3QoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RG
X0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhC
dXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CisKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nREZHKEV4ZWNTdGF0ZSopIFdURl9J
TlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxh
dGlvbkZhaWx1cmUoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKSBXVEZfSU5URVJOQUw7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2OCw2ICs2NjgsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFN0YWNr
OgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBT
ZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVk
UmVzdWx0OgogICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OiB7CiAgICAgICAgICAgICAvLyBU
aGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxh
dGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZv
bGxvd3MgdGhpcyBwaGFzZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJv
bW90ZWRIZWFwTG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC03NCw2ICs3NCwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHJvCiAgICAgY2FzZSBOYW1lZFByb3BlcnR5UExvYzoKICAgICAgICAgb3V0
LnByaW50KCJOYW1lZFByb3BlcnR5UExvYyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNl
IEluZGV4ZWRQcm9wZXJ0eVBMb2M6CisgICAgICAgIG91dC5wcmludCgiSW5kZXhlZFByb3BlcnR5
UExvYyIpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQXJndW1lbnRQTG9j
OgogICAgICAgICBvdXQucHJpbnQoIkFyZ3VtZW50UExvYyIpOwpAQCAtMTAyLDYgKzEwNiwxNCBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHJvCiAgICAgY2FzZSBDbG9z
dXJlVmFyUExvYzoKICAgICAgICAgb3V0LnByaW50KCJDbG9zdXJlVmFyUExvYyIpOwogICAgICAg
ICByZXR1cm47CisKKyAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgIG91dC5wcmlu
dCgiUHVibGljTGVuZ3RoUExvYyIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFZlY3Rv
ckxlbmd0aFBMb2M6CisgICAgICAgIG91dC5wcmludCgiVmVjdG9yTGVuZ3RoUExvYyIpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
MjUgKzI4LDQxIEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkRGR05vZGUu
aCIKKyNpbmNsdWRlICJERkdFZGdlLmgiCisjaW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgorI2lu
Y2x1ZGUgIkRGR09wSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CitzdHJ1Y3QgTm9kZTsKKworLy8gUHJvbW90ZWQgbG9jYXRpb25zIGFyZSBsaWtlIGhlYXAgbG9j
YXRpb25zIGJ1dCBhcmUgbWVhbnQgdG8gYmUgbW9yZSBwcmVjaXNlLiBBIGhlYXAgbG9jYXRpb24g
aXMKKy8vIGFwcGxpY2FibGUgdG8gQ1NFIHNjZW5hcmlvcywgd2hlcmUgaXQgbWFrZXMgc2Vuc2Ug
dG8gc3BlYWsgb2YgYSBsb2NhdGlvbiB2ZXJ5IGFic3RyYWN0bHkuIEEKKy8vIHByb21vdGVkIGhl
YXAgbG9jYXRpb24gaXMgZm9yIGNhc2VzIHdoZXJlIHdlIHNwZWFrIG9mIGEgc3BlY2lmaWMgb2Jq
ZWN0IGFuZCB0aGUgY29tcGlsZXIga25vd3MKKy8vIHRoaXMgb2JqZWN0J3MgaWRlbnRpdHkgLSBm
b3IgZXhhbXBsZSwgdGhlIG9iamVjdCBhbGxvY2F0aW9uIGhhcyBiZWVuIGVsaW1pbmF0ZWQgYW5k
IHdlIHR1cm5lZCB0aGUKKy8vIGZpZWxkcyBpbnRvIGxvY2FsIHZhcmlhYmxlcy4gQmVjYXVzZSB0
aGVzZSB0d28gY2FzZXMgaGF2ZSBzdWJ0bHkgZGlmZmVyZW50IG5lZWRzLCB3ZSB1c2Ugc3VidGx5
CisvLyBkaWZmZXJlbnQgc3RydWN0dXJlcy4gT25lIG9mIHRoZSByZWFsbHkgc2lnbmlmaWNhbnQg
ZGlmZmVyZW5jZXMgaXMgdGhhdCBwcm9tb3RlZCBsb2NhdGlvbnMgY2FuIGJlCisvLyBzcG9rZW4g
b2YgdXNpbmcgZWl0aGVyIGEgZGVzY3JpcHRvciB3aGljaCBkb2VzIG5vdCByZWZlciB0byBhbnkg
Tm9kZSoncyBvciB3aXRoIGEgaGVhcCBsb2NhdGlvbiwKKy8vIHdoaWNoIGlzIGEgZGVzY3JpcHRv
ciB3aXRoIGEgTm9kZSogYmFzZS4KKwogZW51bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAg
SW52YWxpZFByb21vdGVkTG9jYXRpb25LaW5kLAogICAgIAotICAgIFN0cnVjdHVyZVBMb2MsCisg
ICAgQWN0aXZhdGlvblNjb3BlUExvYywKICAgICBBY3RpdmF0aW9uU3ltYm9sVGFibGVQTG9jLAot
ICAgIE5hbWVkUHJvcGVydHlQTG9jLAotICAgIEFyZ3VtZW50UExvYywKICAgICBBcmd1bWVudENv
dW50UExvYywKKyAgICBBcmd1bWVudFBMb2MsCiAgICAgQXJndW1lbnRzQ2FsbGVlUExvYywKLQot
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2MsCisgICAgQ2xvc3VyZVZhclBMb2MsCiAgICAgRnVu
Y3Rpb25BY3RpdmF0aW9uUExvYywKLSAgICBBY3RpdmF0aW9uU2NvcGVQTG9jLAotICAgIENsb3N1
cmVWYXJQTG9jCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlUExvYywKKyAgICBJbmRleGVkUHJvcGVy
dHlQTG9jLAorICAgIE5hbWVkUHJvcGVydHlQTG9jLAorICAgIFB1YmxpY0xlbmd0aFBMb2MsCisg
ICAgU3RydWN0dXJlUExvYywKKyAgICBWZWN0b3JMZW5ndGhQTG9jCiB9OwogCiBjbGFzcyBQcm9t
b3RlZExvY2F0aW9uRGVzY3JpcHRvciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw2
ICszMzYsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAg
Y2FzZSBTdHJpbmdSZXBsYWNlOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4Ogog
ICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgQm90dG9tVmFs
dWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
NDcsNiArMzA0NywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBSZWNvcmRSZWdFeHBD
YWNoZWRSZXN1bHQ6IHsKKyAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIEFycmF5UHVz
aDogewogICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNKU0FycmF5KCkpOwogICAg
ICAgICAKQEAgLTM0OTIsNyArMzQ5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAg
ICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VH
UFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1
bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBh
bm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAg
ICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAg
LTM3MjgsNyArMzczMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BS
LCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0
R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVu
dHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+aW5kZXhpbmdUeXBlKCkg
PT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1f
aml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwpA
QCAtNDk3OCw3ICs0OTgzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAK
LSAgICAgICAgCisgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAgY29tcGls
ZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug
VW5yZWFjaGFibGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNTAwNSw3ICs1MDEzLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAg
Y2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAgY2Fz
ZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZh
dGlvbjoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0YWNrOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcxLDYgKzMxNzEsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBj
YXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogeworICAgICAgICBjb21waWxlUmVjb3JkUmVn
RXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5p
c0pTQXJyYXkoKSk7CkBAIC0zNTQyLDcgKzM1NDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwog
Ci0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBz
dG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmpl
Y3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVt
ZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIG9uZSB3
YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdlR1BSIGhhdmUgcG9pbnRlcnMgdG8K
ICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUgQnV0dGVyZmx5LCByZXNwZWN0aXZl
bHkuCkBAIC0zNzc4LDcgKzM3ODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwog
ICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAg
ICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgc3Rv
cmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0
KHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51
bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5n
cmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0FycmF5KTsKICAgICAgICAgICAgIEpTVmFs
dWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIobm9kZS0+c3RhcnRD
b25zdGFudCgpKTsKQEAgLTQ5NzEsNiArNDk3NiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgTWF0
ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFCTEUoRlRMX0pJVCkgICAgICAgIAogICAg
IGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
ZG9uZSA9IG1faml0LmJyYW5jaEFkZDMyKApAQCAtNTA2MSw3ICs1MDcwLDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5
VmFsOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRl
OgotICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNy
ZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBjYXNlIEtpbGxTdGFjazoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1
ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvci5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllckJ1ZmZlci5oIgpAQCAtNzcs
MjcgKzc4LDU0IEBAIFNwZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVKSVQoKQogewogfQogCi12
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KEdQUlJlZyByZXN1bHRHUFIs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxl
bWVudHMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVn
IHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQogewotICAgIEFTU0VSVCho
YXNVbmRlY2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkpIHx8IGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgIElu
ZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOworICAg
IGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5
cGUpOworCisgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSBzdHJ1Y3R1cmUtPmlubGluZUNh
cGFjaXR5KCk7CisgICAgdW5zaWduZWQgb3V0T2ZMaW5lQ2FwYWNpdHkgPSBzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc2NyYXRjaC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIo
KTsKLSAgICAKLSAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChCQVNFX1ZFQ1RP
Ul9MRU4sIG51bUVsZW1lbnRzKTsKKworICAgIEFTU0VSVCh2ZWN0b3JMZW5ndGggPj0gbnVtRWxl
bWVudHMpOworICAgIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgdmVj
dG9yTGVuZ3RoKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwot
ICAgIAotICAgIHNsb3dDYXNlcy5hcHBlbmQoCi0gICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3Rv
cmFnZShUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpICsgc2l6ZW9m
KEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpKTsKLSAgICBtX2ppdC5zdWJQdHIoVHJ1c3Rl
ZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSksIHN0b3JhZ2VHUFIpOwotICAg
IGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2Vz
KTsKLSAgICAKLSAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihudW1FbGVtZW50cyksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJs
aWNMZW5ndGgoKSkpOwotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0
aCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0
T2ZWZWN0b3JMZW5ndGgoKSkpOwotICAgIAorCisgICAgc2l6ZV90IHNpemUgPSAwOworICAgIGlm
IChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgc2l6ZSArPSB2ZWN0b3JMZW5ndGggKiBzaXpl
b2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpOworICAgIHNpemUgKz0gb3V0T2ZM
aW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1ZSk7CisKKyAgICBpZiAoc2l6ZSkgeworICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKAorICAgICAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdl
KFRydXN0ZWRJbW0zMihzaXplKSwgc3RvcmFnZUdQUikpOworICAgICAgICBpZiAoaGFzSW5kZXhp
bmdIZWFkZXIpCisgICAgICAgICAgICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHZlY3Rvckxl
bmd0aCAqIHNpemVvZihKU1ZhbHVlKSksIHN0b3JhZ2VHUFIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihJbmRleGluZ0hlYWRlcikp
LCBzdG9yYWdlR1BSKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
UHRyKDApLCBzdG9yYWdlR1BSKTsKKworICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmlu
YWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKGlubGluZUNhcGFjaXR5KTsKKyAgICBNYXJrZWRBbGxv
Y2F0b3IqIGFsbG9jYXRvclB0ciA9ICZtX2ppdC52bSgpLT5oZWFwLmFsbG9jYXRvckZvck9iamVj
dFdpdGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIoYWxsb2NhdG9yUHRyKSwgc2NyYXRjaEdQUik7CisgICAgZW1pdEFsbG9jYXRlSlNP
YmplY3QocmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0
b3JhZ2VHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOworCisgICAgaWYgKGhhc0luZGV4aW5n
SGVhZGVyKQorICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGgp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9m
VmVjdG9yTGVuZ3RoKCkpKTsKKworICAgIC8vIEkgd2FudCBhIHNsb3cgcGF0aCB0aGF0IGFsc28g
bG9hZHMgb3V0IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0aGF0J3MKKyAgICAvLyB3aGF0IHRo
aXMgY3VzdG9tIENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdpdmVzIG1lLiBJ
dCdzIGEgbG90CisgICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNlIG9mIGZ1bmN0
aW9uYWxpdHkuIDotLworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8
Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0R1BSLCBzdG9yYWdlR1BSLAorICAg
ICAgICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOworCiAgICAgaWYgKGhhc0RvdWJsZShzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSAmJiBudW1FbGVtZW50cyA8IHZlY3Rvckxlbmd0aCkgewog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGJpdHdp
c2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHNjcmF0Y2hHUFIpOwpAQCAtMTEzLDEyICsxNDEsOCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5CiAjZW5kaWYKICAgICB9
CiAgICAgCi0gICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRoYXQgYWxzbyBsb2FkcyBvdXQgdGhl
IHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQncwotICAgIC8vIHdoYXQgdGhpcyBjdXN0b20gQ2Fs
bEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMgbWUuIEl0J3MgYSBsb3QKLSAg
ICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4gOi0v
Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxv
Y2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdG9yYWdlR1BSLAotICAgICAgICBzdHJ1
Y3R1cmUsIG51bUVsZW1lbnRzKSk7CisgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAg
ICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihudW1FbGVtZW50cyksIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkp
OwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3RoKElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzKQpA
QCAtNzY1NSw2ICs3Njc5LDEyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTGF6eUpT
Q29uc3RhCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KE5vZGUqIG5vZGUpCit7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXTsKKyAg
ICBBU1NFUlQobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKS0+ZHluYW1pY0Nhc3RD
b25zdGFudDxTdHJ1Y3R1cmUqPigpID09IHN0cnVjdHVyZSk7CisKKyAgICBPYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+b2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSgpOwor
ICAgICAgICAKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gc3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKTsKKyAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gaGFzSW5kZXhlZFByb3Bl
cnRpZXMoaW5kZXhpbmdUeXBlKTsKKyAgICBpbnQzMl90IHB1YmxpY0xlbmd0aCA9IDA7CisgICAg
aW50MzJfdCB2ZWN0b3JMZW5ndGggPSAwOworCisgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKSB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0t
OykgeworICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChu
b2RlLCAxICsgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEubV9wcm9wZXJ0aWVzW2ldLmtp
bmQoKSkgeworICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICAgICAg
ICAgIHB1YmxpY0xlbmd0aCA9IGVkZ2UtPmFzSW50MzIoKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICB2
ZWN0b3JMZW5ndGggPSBlZGdlLT5hc0ludDMyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOworICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKyAgICAK
KyAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VH
UFIsIDAsIHZlY3Rvckxlbmd0aCk7CisgICAgCisgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihwdWJsaWNMZW5ndGgpLAorICAgICAgICBKSVRDb21w
aWxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsg
aS0tOykgeworICAgICAgICBFZGdlIGVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5v
ZGUsIDEgKyBpKTsKKyAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRv
ciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iua2lu
ZCgpKSB7CisgICAgICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5UExvYzogeworICAgICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSk7CisgICAgICAgICAgICBtX2ppdC5zdG9y
ZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksCisgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSAqIGRlc2NyaXB0b3IuaW5mbygpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgIFN0cmlu
Z0ltcGwqIHVpZCA9IG1faml0LmdyYXBoKCkuaWRlbnRpZmllcnMoKVtkZXNjcmlwdG9yLmluZm8o
KV07CisgICAgICAgICAgICBmb3IgKFByb3BlcnR5TWFwRW50cnkgZW50cnkgOiBzdHJ1Y3R1cmUt
PmdldFByb3BlcnRpZXNDb25jdXJyZW50bHkoKSkgeworICAgICAgICAgICAgICAgIGlmICh1aWQg
IT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UpOworICAgICAgICAgICAgICAg
IEdQUlJlZyBiYXNlR1BSID0gaXNJbmxpbmVPZmZzZXQoZW50cnkub2Zmc2V0KSA/IHJlc3VsdEdQ
UiA6IHN0b3JhZ2VHUFI7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwKKyAgICAgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UoZW50cnku
b2Zmc2V0KSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQoTm9kZSog
bm9kZSkKK3sKKyAgICBFZGdlIGNvbnN0cnVjdG9yRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMCk7CisgICAgRWRnZSByZWdFeHBFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAxKTsKKyAgICBFZGdlIHN0cmluZ0VkZ2UgPSBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDIpOworICAgIEVkZ2Ugc3RhcnRFZGdlID0gbV9qaXQuZ3JhcGgoKS52
YXJBcmdDaGlsZChub2RlLCAzKTsKKyAgICBFZGdlIGVuZEVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDQpOworCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY29uc3RydWN0
b3IodGhpcywgY29uc3RydWN0b3JFZGdlKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByZWdF
eHAodGhpcywgcmVnRXhwRWRnZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3RyaW5nKHRo
aXMsIHN0cmluZ0VkZ2UpOworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzdGFydCh0aGlzLCBz
dGFydEVkZ2UpOworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBlbmQodGhpcywgZW5kRWRnZSk7
CisKKyAgICBHUFJSZWcgY29uc3RydWN0b3JHUFIgPSBjb25zdHJ1Y3Rvci5ncHIoKTsKKyAgICBH
UFJSZWcgcmVnRXhwR1BSID0gcmVnRXhwLmdwcigpOworICAgIEdQUlJlZyBzdHJpbmdHUFIgPSBz
dHJpbmcuZ3ByKCk7CisgICAgR1BSUmVnIHN0YXJ0R1BSID0gc3RhcnQuZ3ByKCk7CisgICAgR1BS
UmVnIGVuZEdQUiA9IGVuZC5ncHIoKTsKKworICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBSZWdFeHBD
b25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKTsKKworICAgIG1faml0LnN0b3JlUHRy
KAorICAgICAgICByZWdFeHBHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0
cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4
cCgpKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoCisgICAgICAgIHN0cmluZ0dQUiwKKyAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3MoY29uc3RydWN0b3JHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hl
ZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0SW5wdXQoKSkpOworICAgIG1faml0LnN0b3JlMzIoCisgICAg
ICAgIHN0YXJ0R1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcygKKyAgICAgICAgICAg
IGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0
OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBzdGFydCkp
KTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBlbmRHUFIsCisgICAgICAgIEpJVENvbXBp
bGVyOjpBZGRyZXNzKAorICAgICAgICAgICAgY29uc3RydWN0b3JHUFIsCisgICAgICAgICAgICBv
ZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1RfT0ZG
U0VUT0YoTWF0Y2hSZXN1bHQsIGVuZCkpKTsKKyAgICBtX2ppdC5zdG9yZTgoCisgICAgICAgIFRy
dXN0ZWRJbW0zMigwKSwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY29uc3RydWN0b3JH
UFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZWlmaWVkKCkpKTsKKwor
ICAgIG5vUmVzdWx0KG5vZGUpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAxLDYgKzI0MDEsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21waWxlR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUxhenlKU0NvbnN0YW50KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVNYXRlcmlhbGl6
ZU5ld09iamVjdChOb2RlKik7CisgICAgdm9pZCBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVz
dWx0KE5vZGUqKTsKICAgICAKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lk
IG1vdmVGYWxzZVRvKEdQUlJlZyk7CkBAIC0yNTE2LDcgKzI1MTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLT5jbGFzc0luZm8oKSks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6
OmNsYXNzSW5mb09mZnNldCgpKSk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0QWxsb2NhdGVKU0Fy
cmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNp
Z25lZCBudW1FbGVtZW50cyk7CisgICAgdm9pZCBlbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVn
IHJlc3VsdEdQUiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAgIHZvaWQgZW1pdEdldExl
bmd0aChJbmxpbmVDYWxsRnJhbWUqLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlz
ID0gZmFsc2UpOwogICAgIHZvaWQgZW1pdEdldExlbmd0aChDb2RlT3JpZ2luLCBHUFJSZWcgbGVu
Z3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsMTEg
KzI1MywxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgorICAgICAgICAg
ICAgY2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAg
ICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewogICAgICAgICAgICAgICAgIGNvbnNpZGVy
QmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgY2FzZSBSZWNvcmRSZWdF
eHBDYWNoZWRSZXN1bHQ6IHsKKyAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ncmFw
aC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICAgICAg
Y2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFz
dEluZGV4OgpAQCAtMjY2LDEzICsyNzQsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBQ
dXRCeUlkOgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6Ci0gICAgICAgICAgICBjYXNl
IFB1dEJ5SWREaXJlY3Q6IHsKLSAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KICAg
ICAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJh
cnJpZXIobV9ub2RlLT5jaGlsZDIoKSwgbV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNiwxMSArMzYsMTUgQEAKICNpbmNsdWRlICJERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIK
KyNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlIDxjc3RkbGliPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIFN0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgeworICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKKyAgICAKIHB1YmxpYzoKICAgICBTdHJlbmd0aFJlZHVjdGlvblBoYXNlKEdyYXBoJiBncmFw
aCkKICAgICAgICAgOiBQaGFzZShncmFwaCwgInN0cmVuZ3RoIHJlZHVjdGlvbiIpCkBAIC0zMzEs
MTEgKzMzNSwzNjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoISFzdHJpbmcpIHsK
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChtX25vZGUsIGpz
TnVtYmVyKHN0cmluZy5sZW5ndGgoKSkpOwogICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNh
c2UgR2V0R2xvYmFsT2JqZWN0OiB7CisgICAgICAgICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9
IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNPYmplY3QqPigpKSB7Cisg
ICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChtX25vZGUsIG9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgUmVnRXhwRXhlYzoKKyAgICAgICAgY2FzZSBSZWdFeHBU
ZXN0OiB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ub2Rl
LT5jaGlsZDEoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0dsb2JhbE9iamVjdCo+KCk7CisgICAg
ICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSBubyBnbG9i
YWwgb2JqZWN0LlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkgeworICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJH
aXZpbmcgdXAgYmVjYXVzZSBiYWQgdGltZS5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBOb2RlKiByZWdFeHBPYmplY3ROb2RlID0gbV9u
b2RlLT5jaGlsZDIoKS5ub2RlKCk7CisgICAgICAgICAgICBSZWdFeHAqIHJlZ0V4cDsKKyAgICAg
ICAgICAgIGlmIChSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCA9IHJlZ0V4cE9iamVjdE5vZGUt
PmR5bmFtaWNDYXN0Q29uc3RhbnQ8UmVnRXhwT2JqZWN0Kj4oKSkKKyAgICAgICAgICAgICAgICBy
ZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgpOworICAgICAgICAgICAgZWxzZSBpZiAocmVn
RXhwT2JqZWN0Tm9kZS0+b3AoKSA9PSBOZXdSZWdleHApCisgICAgICAgICAgICAgICAgcmVnRXhw
ID0gY29kZUJsb2NrKCktPnJlZ2V4cChyZWdFeHBPYmplY3ROb2RlLT5yZWdleHBJbmRleCgpKTsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSB0aGUgcmVnZXhwIGlzIHVu
a25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgTm9kZSogc3RyaW5nTm9kZSA9IG1fbm9kZS0+Y2hpbGQzKCkubm9kZSgpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBOT1RFOiBUaGlzIG1vc3RseSBhbHJlYWR5IHByb3Rl
Y3RzIHVzIGZyb20gaGF2aW5nIHRoZSBjb21waWxlciBleGVjdXRlIGEgcmVnZXhwCisgICAgICAg
ICAgICAvLyBvcGVyYXRpb24gb24gYSBnaW5vcm1vdXMgc3RyaW5nIGJ5IHByZXZlbnRpbmcgdXMg
ZnJvbSBnZXR0aW5nIG91ciBoYW5kcyBvbiBnaW5vcm1vdXMKKyAgICAgICAgICAgIC8vIHN0cmlu
Z3MgaW4gdGhlIGZpcnN0IHBsYWNlLgorICAgICAgICAgICAgU3RyaW5nIHN0cmluZyA9IG1fbm9k
ZS0+Y2hpbGQzKCktPnRyeUdldFN0cmluZyhtX2dyYXBoKTsKKyAgICAgICAgICAgIGlmICghc3Ry
aW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSBzdHJpbmcgaXMgdW5rbm93bi5cbiIpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBGcm96
ZW5WYWx1ZSogcmVnRXhwRnJvemVuVmFsdWUgPSBtX2dyYXBoLmZyZWV6ZShyZWdFeHApOworCisg
ICAgICAgICAgICAvLyBSZWZ1c2UgdG8gZG8gdGhpbmdzIHdpdGggcmVndWxhciBleHByZXNzaW9u
cyB0aGF0IGhhdmUgYSBnaW5vcm1vdXMgbnVtYmVyIG9mCisgICAgICAgICAgICAvLyBzdWJwYXR0
ZXJucy4KKyAgICAgICAgICAgIHVuc2lnbmVkIGdpbm9ybW91c051bWJlck9mU3ViUGF0dGVybnMg
PSAxMDAwOworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSA+IGdpbm9y
bW91c051bWJlck9mU3ViUGF0dGVybnMpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2Ugb2YgcGF0dGVy
biBsaW1pdC5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CisgICAgICAgICAgICBpZiAocmVnRXhwLT5n
bG9iYWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIG9ubHkgd29y
ayBpZiB3ZSBjYW4gcHJvdmUgd2hhdCB0aGUgdmFsdWUgb2YgbGFzdEluZGV4IGlzLiBUbyBkbyB0
aGlzCisgICAgICAgICAgICAgICAgLy8gc2FmZWx5LCB3ZSBuZWVkIHRvIGV4ZWN1dGUgdGhlIGlu
c2VydGlvbiBzZXQgc28gdGhhdCB3ZSBzZWUgYW55IHByZXZpb3VzIHN0cmVuZ3RoCisgICAgICAg
ICAgICAgICAgLy8gcmVkdWN0aW9ucy4gVGhpcyBpcyBuZWVkZWQgZm9yIHNvdW5kbmVzcyBzaW5j
ZSBvdGhlcndpc2UgdGhlIGVmZmVjdGZ1bG5lc3Mgb2YgYW55CisgICAgICAgICAgICAgICAgLy8g
cHJldmlvdXMgc3RyZW5ndGggcmVkdWN0aW9ucyB3b3VsZCBiZSBpbnZpc2libGUgdG8gdXMuCisg
ICAgICAgICAgICAgICAgZXhlY3V0ZUluc2VydGlvblNldCgpOworICAgICAgICAgICAgICAgIGxh
c3RJbmRleCA9IFVJTlRfTUFYOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgb3RoZXJO
b2RlSW5kZXggPSBtX25vZGVJbmRleDsgb3RoZXJOb2RlSW5kZXgtLTspIHsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9ibG9jay0+YXQob3RoZXJOb2RlSW5kZXgpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlID09IHJlZ0V4cE9iamVjdE5vZGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IDA7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpZiAob3RoZXJOb2RlLT5vcCgpID09IFNldFJlZ0V4cE9iamVjdExhc3RJbmRleAorICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGlsZDEoKSA9PSByZWdFeHBPYmplY3RO
b2RlCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlck5vZGUtPmNoaWxkMigpLT5pc0lu
dDMyQ29uc3RhbnQoKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGls
ZDIoKS0+YXNJbnQzMigpID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbmRl
eCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvdGhlck5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlc092ZXJsYXAobV9ncmFwaCwgb3RoZXJOb2Rl
LCBSZWdFeHBPYmplY3RfbGFzdEluZGV4KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobGFzdEluZGV4ID09IFVJ
TlRfTUFYKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhlIGxhc3QgaW5kZXggaXMg
bm90IGtub3duLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IDA7
CisKKyAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoZ2xvYmFsT2Jq
ZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
ICE9IEFycmF5V2l0aENvbnRpZ3VvdXMpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZ1
cnRoZXIgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgcmFjZSB3aXRoIGhhdmVBQmFkVGltZS4KKyAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2
aW5nIHVwIGJlY2F1c2UgdGhlIHN0cnVjdHVyZSBoYXMgdGhlIHdyb25nIGluZGV4aW5nIHR5cGUu
XG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKworICAgICAgICAgICAgUmVn
RXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25zdHJ1
Y3RvcigpOworICAgICAgICAgICAgRnJvemVuVmFsdWUqIGNvbnN0cnVjdG9yRnJvemVuVmFsdWUg
PSBtX2dyYXBoLmZyZWV6ZShjb25zdHJ1Y3Rvcik7CisKKyAgICAgICAgICAgIE1hdGNoUmVzdWx0
IHJlc3VsdDsKKyAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVjdG9yOworICAgICAgICAg
ICAgLy8gV2UgaGF2ZSB0byBjYWxsIHRoZSBraW5kIG9mIG1hdGNoIGZ1bmN0aW9uIHRoYXQgdGhl
IG1haW4gdGhyZWFkIHdvdWxkIGhhdmUgY2FsbGVkLgorICAgICAgICAgICAgLy8gT3RoZXJ3aXNl
LCB3ZSBtaWdodCBub3QgaGF2ZSB0aGUgZGVzaXJlZCBZYXJyIGNvZGUgY29tcGlsZWQsIGFuZCB0
aGUgbWF0Y2ggd2lsbCBmYWlsLgorICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBSZWdF
eHBFeGVjKSB7CisgICAgICAgICAgICAgICAgaW50IHBvc2l0aW9uOworICAgICAgICAgICAgICAg
IGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJpbmcsIGxhc3RJbmRleCwg
cG9zaXRpb24sIG92ZWN0b3IpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgbWF0Y2gg
ZmFpbGVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBwb3NpdGlvbjsKKyAgICAgICAgICAg
ICAgICByZXN1bHQuZW5kID0gb3ZlY3RvclsxXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3VycmVudGx5KHZtKCksIHN0cmluZywg
bGFzdEluZGV4LCByZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgbWF0Y2gg
ZmFpbGVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UndmUgY29uc3RhbnQtZm9sZGVk
IHRoZSByZWdleHAuIE5vdyB3ZSdyZSBjb21taXR0ZWQgdG8gcmVwbGFjaW5nIFJlZ0V4cEV4ZWMv
VGVzdC4KKworICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgTm9k
ZU9yaWdpbiBvcmlnaW4gPSBtX25vZGUtPm9yaWdpbjsKKworICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUs
IENoZWNrLCBvcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4uanVzdENoZWNrcygpKTsKKworICAgICAg
ICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7CisgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQqIHN0cnVjdHVy
ZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IG1vZGVsaW5nIHRoZSBKUyBhcnJheSB0aGF0IHdl
IHdpbGwgdHJ5IHRvIGFsbG9jYXRlLiBUaGlzIGlzCisgICAgICAgICAgICAgICAgICAgIC8vIGJh
c2ljYWxseSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0IG92ZXIgQysrIHN0cmluZ3MgaW5z
dGVhZCBvZiBKU1N0cmluZ3MuCisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHJl
c3VsdEFycmF5OworICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheS5hcHBlbmQoc3RyaW5n
LnN1YnN0cmluZyhyZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSByZWdFeHAtPm51bVN1
YnBhdHRlcm5zKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0g
b3ZlY3RvclsyICogaV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheS5hcHBlbmQoc3RyaW5nLnN1
YnN0cmluZyhzdGFydCwgb3ZlY3RvclsyICogaSArIDFdIC0gc3RhcnQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eS5hcHBlbmQoU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgcHVibGljTGVuZ3RoID0gcmVzdWx0QXJyYXkuc2l6ZSgpOworICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChCQVNFX1ZF
Q1RPUl9MRU4sIHB1YmxpY0xlbmd0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0
cmluZ0ltcGwqIGluZGV4VUlEID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5pbmRleC5pbXBsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbnB1dFVJRCA9IHZtKCkucHJv
cGVydHlOYW1lcy0+aW5wdXQuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bmRleEluZGV4ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpbmRleFVJRCk7CisgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0SW5kZXggPSBtX2dyYXBoLmlkZW50aWZpZXJz
KCkuZW5zdXJlKGlucHV0VUlEKTsKKworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmaXJz
dENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHN0cnVjdHVyZSwgS25vd25DZWxs
VXNlKSk7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEqIGRh
dGEgPSBtX2dyYXBoLm1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5hZGQoKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5k
KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRG
b3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwg
anNOdW1iZXIocHVibGljTGVuZ3RoKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKFB1YmxpY0xlbmd0aFBMb2MpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBl
bmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFu
dEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2lu
LCBqc051bWJlcih2ZWN0b3JMZW5ndGgpLCBLbm93bkludDMyVXNlKSk7CisgICAgICAgICAgICAg
ICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoVmVjdG9yTGVuZ3RoUExvYyk7CisKKyAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVy
KHJlc3VsdC5zdGFydCksIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+
bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9j
YXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBpbmRleEluZGV4KSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKHN0cmlu
Z05vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0
aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNj
cmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBpbnB1dEluZGV4KSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgYXV0byBtYXRlcmlhbGl6ZVN0cmluZyA9IFsmXSAoY29uc3QgU3RyaW5nJiBzdHJpbmcp
IC0+IE5vZGUqIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmcuaXNOdWxsKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwgdm0oKS5zbWFsbFN0
cmluZ3MuZW1wdHlTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSB2YWx1ZSA9IExhenlKU1ZhbHVlOjpuZXdTdHJp
bmcobV9ncmFwaCwgc3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9k
ZUluZGV4LCBTcGVjTm9uZSwgTGF6eUpTQ29uc3RhbnQsIG9yaWdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX2xhenlKU1ZhbHVlcy5hZGQodmFsdWUpKSk7
CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHJlc3VsdEFycmF5LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9IG1hdGVyaWFsaXplU3RyaW5nKHJlc3VsdEFycmF5
W2ldKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbi5hcHBlbmQoRWRnZShub2RlLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoSW5kZXhlZFByb3BlcnR5UExv
YywgaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0Tm9kZSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJ
bmRleCwgU3BlY0FycmF5LCBOb2RlOjpWYXJBcmcsIE1hdGVyaWFsaXplTmV3T2JqZWN0LCBvcmln
aW4sCisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oc3RydWN0dXJlU2V0KSwgT3BJbmZv
KGRhdGEpLCBmaXJzdENoaWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24ocmVzdWx0Tm9kZSk7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguY29u
dmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc051bGwoKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNCb29sZWFu
KCEhcmVzdWx0KSk7CisKKyAgICAgICAgICAgIC8vIFdoZXRoZXIgaXQncyBFeGVjIG9yIFRlc3Qs
IHdlIG5lZWQgdG8gdGVsbCB0aGUgY29uc3RydWN0b3IgYW5kIFJlZ0V4cE9iamVjdCB3aGF0J3Mg
dXAuCisgICAgICAgICAgICAvLyBCZWNhdXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCBtYXkg
ZXhpdCBhbmQgaXQgY2xvYmJlcnMgZXhpdCBzdGF0ZSwgd2UgZG8gdGhhdAorICAgICAgICAgICAg
Ly8gZmlyc3QuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPmdsb2JhbE9y
U3RpY2t5KCkpIHsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIFNldFJlZ0V4cE9iamVj
dExhc3RJbmRleCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKHJlZ0V4cE9iamVj
dE5vZGUsIFJlZ0V4cE9iamVjdFVzZSksCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2Rl
SW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0ID8gcmVzdWx0LmVuZCA6IDApLCBVbnR5cGVk
VXNlKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2lu
LndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVz
dWx0KSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5zaXplKCk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3Jp
Z2luLCBjb25zdHJ1Y3RvckZyb3plblZhbHVlLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHJlZ0V4cEZyb3plblZhbHVlLCBLbm93bkNlbGxV
c2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVk
Z2Uoc3RyaW5nTm9kZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5t
X3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJ
bmRleCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQpLCBLbm93bkludDMyVXNlKSk7Cisg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuZW5k
KSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgTm9kZTo6
VmFyQXJnLCBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIG9yaWdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgT3BJbmZvKCksIE9wSW5mbygpLCBmaXJzdENoaWxkLCBtX2dyYXBoLm1fdmFyQXJnQ2hp
bGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisKKyAgICAgICAgICAgICAgICBvcmlnaW4gPSBv
cmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIG1fbm9kZS0+b3JpZ2luID0gb3JpZ2luOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6IHsKKyAgICAgICAgICAgIE5v
ZGUqIHN0cmluZ05vZGUgPSBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKTsKKyAgICAgICAgICAgIFN0
cmluZyBzdHJpbmcgPSBzdHJpbmdOb2RlLT50cnlHZXRTdHJpbmcobV9ncmFwaCk7CisgICAgICAg
ICAgICBpZiAoIXN0cmluZykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgTm9kZSogcmVnRXhwT2JqZWN0Tm9kZSA9IG1fbm9kZS0+Y2hpbGQyKCkubm9k
ZSgpOworICAgICAgICAgICAgUmVnRXhwKiByZWdFeHA7CisgICAgICAgICAgICBpZiAoUmVnRXhw
T2JqZWN0KiByZWdFeHBPYmplY3QgPSByZWdFeHBPYmplY3ROb2RlLT5keW5hbWljQ2FzdENvbnN0
YW50PFJlZ0V4cE9iamVjdCo+KCkpCisgICAgICAgICAgICAgICAgcmVnRXhwID0gcmVnRXhwT2Jq
ZWN0LT5yZWdFeHAoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ0V4cE9iamVjdE5vZGUtPm9w
KCkgPT0gTmV3UmVnZXhwKQorICAgICAgICAgICAgICAgIHJlZ0V4cCA9IGNvZGVCbG9jaygpLT5y
ZWdleHAocmVnRXhwT2JqZWN0Tm9kZS0+cmVnZXhwSW5kZXgoKSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhlIHJlZ2V4cCBpcyB1bmtub3duLlxuIik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZyBy
ZXBsYWNlID0gbV9ub2RlLT5jaGlsZDMoKS0+dHJ5R2V0U3RyaW5nKG1fZ3JhcGgpOworICAgICAg
ICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgICAgICAgICAgdW5zaWduZWQgbGFzdEluZGV4
ID0gMDsKKyAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSAwOworICAgICAgICAg
ICAgYm9vbCBvayA9IHRydWU7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTWF0
Y2hSZXN1bHQgcmVzdWx0OworICAgICAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVjdG9y
OworICAgICAgICAgICAgICAgIC8vIE1vZGVsIHdoaWNoIHZlcnNpb24gb2YgbWF0Y2goKSBpcyBj
YWxsZWQgYnkgdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlLmlz
RW1wdHkoKSAmJiByZWdFeHAtPmdsb2JhbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
cmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJpbmcsIHN0YXJ0UG9zaXRpb24sIHJl
c3VsdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGludCBwb3NpdGlvbjsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3VycmVudGx5KHZtKCksIHN0cmluZywg
c3RhcnRQb3NpdGlvbiwgcG9zaXRpb24sIG92ZWN0b3IpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5zdGFydCA9IHBvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICByZXN1bHQuZW5k
ID0gb3ZlY3RvclsxXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgaW50IHJlcGxMZW4gPSByZXBsYWNlLmxlbmd0aCgpOworICAgICAgICAg
ICAgICAgIGlmIChsYXN0SW5kZXggPCByZXN1bHQuc3RhcnQgfHwgcmVwbExlbikgeworICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmcsIGxhc3RJbmRleCwgcmVzdWx0LnN0
YXJ0IC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGxMZW4pCisgICAg
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdWJzdGl0dXRlQmFja3JlZmVyZW5j
ZXMocmVwbGFjZSwgc3RyaW5nLCBvdmVjdG9yLmRhdGEoKSwgcmVnRXhwKSk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gcmVzdWx0LmVuZDsKKyAgICAg
ICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gbGFzdEluZGV4OworCisgICAgICAgICAgICAgICAg
Ly8gc3BlY2lhbCBjYXNlIG9mIGVtcHR5IG1hdGNoCisgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC5lbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24rKzsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9zaXRpb24gPiBzdHJpbmcubGVuZ3RoKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IHdoaWxlIChyZWdFeHAtPmdsb2JhbCgpKTsKKyAgICAgICAgICAgIGlmICghb2spCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIC8vIFdlIGFyZSBjb21taXR0ZWQgYXQg
dGhpcyBwb2ludC4KKyAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgICAg
IE5vZGVPcmlnaW4gb3JpZ2luID0gbV9ub2RlLT5vcmlnaW47CisKKyAgICAgICAgICAgIGlmIChy
ZWdFeHAtPmdsb2JhbCgpKSB7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBTZXRSZWdF
eHBPYmplY3RMYXN0SW5kZXgsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShyZWdF
eHBPYmplY3ROb2RlLCBSZWdFeHBPYmplY3RVc2UpLAorICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKDApLCBVbnR5cGVkVXNlKSk7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhp
dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWxhc3RJbmRleCAmJiBidWls
ZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lkZW50aXR5
T24oc3RyaW5nTm9kZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAo
bGFzdEluZGV4IDwgc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChzdHJpbmcsIGxhc3RJbmRleCwgc3RyaW5nLmxlbmd0aCgpIC0gbGFzdEluZGV4KTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0xhenlK
U0NvbnN0YW50KAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBMYXp5SlNWYWx1ZTo6bmV3
U3RyaW5nKG1fZ3JhcGgsIGJ1aWxkZXIudG9TdHJpbmcoKSkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBtX25vZGUtPm9yaWdpbiA9IG9yaWdpbjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0zODAsNiArNzQxLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGVJbnNlcnRpb25TZXQoKQorICAgIHsK
KyAgICAgICAgbV9ub2RlSW5kZXggKz0gbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShtX2Jsb2NrKTsK
KyAgICB9CiAgICAgCiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OwogICAgIEJhc2lj
QmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNzgsNiArMjc4LDE4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIXZhcmlhbnQub2xk
U3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5kZmdTaG91bGRXYXRjaCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVj
dHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1Y3R1cmVzIHRoYXQgYXJlIEpTRmlu
YWxPYmplY3Qgb3IgSlNBcnJheS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTRmluYWxPYmplY3Q6OmluZm8oKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0g
SlNBcnJheTo6aW5mbygpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBz
dXBwb3J0IGNlcnRhaW4gaW5kZXhpbmcgc2hhcGVzLgorICAgICAgICAgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUpLCAhaGFzQW55QXJyYXlTdG9yYWdlKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICAgICAgICAg
IGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCBub2RlLT5pc051bWJlckNvbnN0YW50KCkpOwpAQCAtNDYxLDEzICs0NzMsNDIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAg
ICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUlt
bWVkaWF0ZToKLSAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAg
ICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAg
ICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCAhInVuZXhwZWN0ZWQgbm9kZSB0eXBlIGluIENQUyIpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0
OiB7CisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBhcnJheSBsZW5ndGhz
IHRvIGJlIGNvbnN0YW50LiBUaGlzIGNvbnN0cmFpbnQgb25seSBleGlzdHMKKyAgICAgICAgICAg
ICAgICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZlIERGRyBzdXBwb3J0IGZvciBhbnl0aGlu
ZyBtb3JlIGFuZCB3ZSBkb24ndCBuZWVkIGFueQorICAgICAgICAgICAgICAgICAgICAvLyBvdGhl
ciBraW5kIG9mIHN1cHBvcnQgZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEo
KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRp
ZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAg
ICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEg
KyBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmlzSW50MzJDb25zdGFu
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3Mgb25lIHN0cnVjdHVyZS4KKyAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkg
PT0gMSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQzMiBhbmQg
ZG91YmxlIGFycmF5cy4gVGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQKKyAgICAg
ICAgICAgICAgICAgICAgLy8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQgaW4gdGhl
IERGRyByaWdodCBub3cuIFdlIHNob3VsZCBhZGQgc3VwcG9ydAorICAgICAgICAgICAgICAgICAg
ICAvLyBmb3IgdGhlc2UgaWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgorICAgICAgICAgICAgICAg
ICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0ludDMyKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KChub2RlKSwgIWhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUpLCBtX2dyYXBoLm1fZml4cG9pbnRTdGF0ZSAhPSBGaXhwb2ludE5vdENv
bnZlcmdlZCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTY29wZS5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2
aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDExIEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU1N5bWJvbFRhYmxlT2JqZWN0X3N5
bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpIFwK
ICAgICBtYWNybyhKU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSwgSlNXcmFwcGVyT2JqZWN0
OjppbnRlcm5hbFZhbHVlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhNYXJrZWRBbGxvY2F0b3JfZnJl
ZUxpc3RIZWFkLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpIFwKKyAg
ICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCwgUmVnRXhw
Q29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6
Om9mZnNldE9mTGFzdFJlZ0V4cCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2Fj
aGVkUmVzdWx0X2xhc3RJbnB1dCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVz
dWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpIFwKKyAgICBt
YWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0LCBSZWdFeHBD
b25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6
b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSBc
CisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9lbmQsIFJl
Z0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVz
dWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQp
KSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3JlaWZpZWQsIFJl
Z0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVz
dWx0OjpvZmZzZXRPZlJlaWZpZWQoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9sYXN0SW5k
ZXgsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXgoKSkgXAogICAgIG1hY3JvKFJlZ0V4
cE9iamVjdF9sYXN0SW5kZXhJc1dyaXRhYmxlLCBSZWdFeHBPYmplY3Q6Om9mZnNldE9mTGFzdElu
ZGV4SXNXcml0YWJsZSgpKSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzX292ZXJyb2RlVGhp
bmdzLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJvZGVUaGluZ3MoKSkgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDcgQEAgaW5saW5lIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICBjYXNl
IEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJ
bmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgLy8gVGhl
c2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MzgsNiArOTM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RM
YXN0SW5kZXg6CiAgICAgICAgICAgICBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1
bHQ6CisgICAgICAgICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KCk7CisgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2Fz
ZSBMb29wSGludDoKQEAgLTM3MTYsMzIgKzM3MTksOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5LCBtX2hl
YXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2
ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGhhc0RvdWJsZShtX25vZGUtPmluZGV4aW5n
VHlwZSgpKSkgewotICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMb29wID0gbV9vdXQu
bmV3QmxvY2soKTsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgb3JpZ2luYWxJbmRleCA9IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5ndGgpOwotICAgICAg
ICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFuY2hvcihi
dXR0ZXJmbHkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAg
ICAgICAgbV9vdXQubm90WmVybzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShpbml0TG9vcCksIHVu
c3VyZShpbml0RG9uZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGluaXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7
Ci0gICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0LmludDMyLCBv
cmlnaW5hbEluZGV4KTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1fb3V0LnBo
aShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAotICAgICAgICAgICAgICAgICAg
ICBUeXBlZFBvaW50ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFueUluZGV4
KCksIHBvaW50ZXIpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFsdWUg
bmV4dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5pbnQzMk9uZSk7Ci0gICAgICAgICAg
ICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRl
eCkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkocG9pbnRlciwgbV9v
dXQuYW5jaG9yKG1fb3V0LmFkZChwb2ludGVyLCBtX291dC5pbnRQdHJFaWdodCkpKTsKLSAgICAg
ICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFpl
cm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwg
aW5pdExhc3ROZXh0KTsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5pdGlhbGl6ZUFy
cmF5RWxlbWVudHMobV9ub2RlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJm
bHkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKG9iamVjdCk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CkBAIC02Mjg2LDExICs2MjY1LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIExvd2Vy
IHRoZSB2YWx1ZXMgZmlyc3QsIHRvIGF2b2lkIGNyZWF0aW5nIHZhbHVlcyBpbnNpZGUgYSBjb250
cm9sIGZsb3cgZGlhbW9uZC4KICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxMVmFsdWUsIDg+IHZh
bHVlczsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVz
LnNpemUoKTsgKytpKQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dKU1ZhbHVlKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxICsgaSkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBF
ZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpOworICAgICAgICAg
ICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAgIGNh
c2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoK
KyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFs
dWVzLmFwcGVuZChsb3dKU1ZhbHVlKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY29uc3QgU3RydWN0dXJl
U2V0JiBzZXQgPSBtX25vZGUtPnN0cnVjdHVyZVNldCgpOwotICAgICAgICAKKwogICAgICAgICBW
ZWN0b3I8TEJhc2ljQmxvY2ssIDE+IGJsb2NrcyhzZXQuc2l6ZSgpKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGJsb2Nrc1tpXSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CkBAIC02MzE1LDIxICs2MzA0LDUxIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBMVmFsdWUgb2JqZWN0OwogICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkg
eworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJ
bmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAg
ICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25T
aXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAgICAgTWFya2Vk
QWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmdm0oKS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhv
dXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKworICAgICAgICAgICAgICAgIGJvb2wgaGFz
SW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleGluZ0hlYWRlclNpemUgPSAw
OworICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9IG1f
b3V0LmludFB0clplcm87CisgICAgICAgICAgICAgICAgTFZhbHVlIHZlY3Rvckxlbmd0aCA9IG1f
b3V0LmludDMyWmVybzsKKyAgICAgICAgICAgICAgICBMVmFsdWUgcHVibGljTGVuZ3RoID0gbV9v
dXQuaW50MzJaZXJvOworICAgICAgICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgewor
ICAgICAgICAgICAgICAgICAgICBpbmRleGluZ0hlYWRlclNpemUgPSBzaXplb2YoSW5kZXhpbmdI
ZWFkZXIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJv
cGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZlY3Rvckxl
bmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gdmFs
dWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5tdWwobV9vdXQuemVyb0V4dFB0cih2ZWN0b3JMZW5ndGgpLCBtX291
dC5pbnRQdHJFaWdodCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTFZh
bHVlIGJ1dHRlcmZseVNpemUgPSBtX291dC5hZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50UHRyKAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpICsgaW5kZXhpbmdIZWFkZXJTaXplKSwKKyAg
ICAgICAgICAgICAgICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3
QmxvY2soKTsKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9yYWdlID0gYWxs
b2NhdGVCYXNpY1N0b3JhZ2VBbmRHZXRFbmQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVl
KSksCi0gICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoKTsKLSAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9yYWdlID0gYWxsb2NhdGVCYXNpY1N0b3JhZ2VB
bmRHZXRFbmQoYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpOworCiAgICAgICAgICAgICAgICAgTFZh
bHVlIGZhc3RCdXR0ZXJmbHlWYWx1ZSA9IG1fb3V0LmFkZCgKLSAgICAgICAgICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIGVuZE9mU3RvcmFnZSk7
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN1YihlbmRPZlN0b3JhZ2UsIGluZGV4aW5nUGF5
bG9hZFNpemVJbkJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
c2l6ZW9mKEluZGV4aW5nSGVhZGVyKSAtIGluZGV4aW5nSGVhZGVyU2l6ZSkpOworCisgICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgsIGZhc3RCdXR0ZXJmbHlWYWx1ZSwg
bV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBMVmFsdWUgZmFzdE9iamVjdFZhbHVlID0gYWxsb2NhdGVPYmplY3QoCiAgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvciksIHN0cnVjdHVyZSwg
ZmFzdEJ1dHRlcmZseVZhbHVlLCBzbG93UGF0aCk7CkBAIC02MzQwLDEyICs2MzU5LDI0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd09i
amVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAotICAgICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0
IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2Vu
ZXJhdG9yPiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxH
ZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0
V2l0aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKLSAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RW
YWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgc2xvd09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAg
ICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJl
ZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hl
YWRlckFuZFZlY3Rvckxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb25zWzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzFdLmRpcmVj
dEdQUigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICB2ZWN0b3JMZW5ndGgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQ
dHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0aW9uc1swXS5k
aXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dP
YmplY3QgPSBtX291dC5hbmNob3Ioc2xvd09iamVjdFZhbHVlKTsKICAgICAgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBzbG93QnV0dGVyZmx5ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAg
ICAgICAgICBtX291dC5sb2FkUHRyKHNsb3dPYmplY3RWYWx1ZSwgbV9oZWFwcy5KU09iamVjdF9i
dXR0ZXJmbHkpKTsKQEAgLTYzNTYsNiArNjM4NywxMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBvYmplY3QgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBm
YXN0T2JqZWN0LCBzbG93T2JqZWN0KTsKICAgICAgICAgICAgICAgICBidXR0ZXJmbHkgPSBtX291
dC5waGkobV9vdXQuaW50UHRyLCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVyZmx5KTsKKworICAg
ICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVibGljTGVuZ3RoLCBidXR0ZXJmbHksIG1faGVh
cHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CisKKyAgICAgICAgICAgICAgICBpbml0aWFsaXpl
QXJyYXlFbGVtZW50cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpLCB2ZWN0b3JMZW5ndGgsIGJ1
dHRlcmZseSk7CisKKyAgICAgICAgICAgICAgICBIYXNoTWFwPAorICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90LCBMVmFsdWUsIERlZmF1bHRIYXNoPGludDMyX3Q+OjpIYXNoLAorICAgICAgICAg
ICAgICAgICAgICBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludDMyX3Q+PiBp
bmRleE1hcDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8aW50MzJfdD4gaW5kaWNlczsKKyAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGkt
LTspIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVz
Y3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAo
ZGVzY3JpcHRvci5raW5kKCkgIT0gSW5kZXhlZFByb3BlcnR5UExvYykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGluZGV4ID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVzY3JpcHRvci5pbmZvKCkpOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBpbmRleE1hcC5hZGQoaW5k
ZXgsIHZhbHVlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bV9ub2RlLCByZXN1bHQpOyAvLyBEdXBsaWNhdGVzIGFyZSBpbGxlZ2FsLgorCisgICAgICAgICAg
ICAgICAgICAgIGluZGljZXMuYXBwZW5kKGluZGV4KTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAoIWluZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c29ydChpbmRpY2VzLmJlZ2luKCksIGluZGljZXMuZW5kKCkpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrPiBibG9j
a3NXaXRoU3RvcmVzKGluZGljZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9y
PExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoQ2hlY2tzKGluZGljZXMuc2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGluZGlj
ZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoU3Rv
cmVzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nr
c1dpdGhDaGVja3NbaV0gPSBtX291dC5uZXdCbG9jaygpOyAvLyBibG9ja3NXaXRoQ2hlY2tzWzBd
IGlzIHRoZSBjb250aW51YXRpb24uCisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBpbmRleExhc3ROZXh0ID0gbV9vdXQubV9uZXh0QmxvY2s7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBpbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCBpbmRleCA9IGluZGljZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBMVmFsdWUg
dmFsdWUgPSBpbmRleE1hcC5nZXQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuYmVsb3cobV9vdXQuY29uc3RJbnQzMihpbmRleCksIHB1YmxpY0xlbmd0
aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGJsb2Nrc1dpdGhTdG9yZXNb
aV0pLCB1bnN1cmUoYmxvY2tzV2l0aENoZWNrc1tpXSkpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NXaXRoU3RvcmVzW2ldLCBibG9ja3NXaXRoQ2hlY2tz
W2ldKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBoYXMgdG8gdHlwZS1jaGVj
ayBhbmQgY29udmVydCBpdHMgaW5wdXRzLCBidXQgaXQgY2Fubm90IGRvIHNvIGluIGEKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHdheSB0aGF0IHVwZGF0ZXMgQUkuIFRoYXQncyBhIGJpdCBh
bm5veWluZywgYnV0IGlmIHlvdSB0aGluayBhYm91dCBob3cKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHNpbmtpbmcgd29ya3MsIGl0J3MgYWN0dWFsbHkgbm90IGEgYmFkIHRoaW5nLiBXZSBh
cmUgdmlydHVhbGx5IGd1YXJhbnRlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQg
dGhlc2UgdHlwZSBjaGVja3Mgd2lsbCBub3QgZmFpbCwgc2luY2UgdGhlIHR5cGUgY2hlY2tzIHRo
YXQgZ3VhcmRlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIHN0b3Jl
cyB0byB0aGUgYXJyYXkgYXJlIHN0aWxsIHNvbWV3aGVyZSBhYm92ZSB0aGlzIHBvaW50LgorICAg
ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOworICAgICAg
ICAgICAgICAgICAgICAgICAgSW5kZXhlZEFic3RyYWN0SGVhcCogaGVhcDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIHRoZSBwcm92ZW4g
dHlwZSBpZiB3ZSBoYWQgdGhlIEVkZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
MzExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIG5vVmFs
dWUoKSwgbnVsbHB0ciwgaXNOb3RJbnQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmU2NDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGllczsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IElmIHRoZSBzb3VyY2UgaXMgVmFsdWVSZXAsIHdlIHNob3VsZCBhdm9pZCBl
bWl0dGluZyBhbnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVja3MuIFdlIGNv
dWxkIGFsc28gYXZvaWQgZW1pdHRpbmcgY2hlY2tzIGlmIHdlIGhhZCB0aGUgRWRnZSBvZgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTEKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2goaXNJbnQzMih2YWx1ZSksIHVuc3VyZShpbnRDYXNlKSwgdW5zdXJlKGRvdWJsZUNhc2Up
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBpbnRSZXN1bHQgPQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX291dC5hbmNob3IobV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMih2
YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhkb3Vi
bGVDYXNlLCBjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOdW1iZXIodmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBkb3VibGVSZXN1bHQgPSBt
X291dC5hbmNob3IodW5ib3hEb3VibGUodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1fb3V0LnBoaShEb3VibGUsIGludFJlc3VsdCwgZG91
YmxlUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRw
dXQ6OlN0b3JlRG91YmxlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9o
ZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlNjQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWRDb250aWd1b3VzUHJvcGVydGll
czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbV9ub2RlLCAiSW52YWxpZCBpbmRleGluZyB0eXBlIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlKHZh
bHVlLCBtX291dC5hZGRyZXNzKGJ1dHRlcmZseSwgaGVhcC0+YXQoaW5kZXgpKSwgc3RvcmVUeXBl
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChibG9ja3NXaXRoQ2hlY2tz
W2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3NbaV0sIGkgPyBibG9ja3NXaXRoU3Rv
cmVzW2kgLSAxXSA6IGluZGV4TGFzdE5leHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJ
biB0aGUgZWFzeSBjYXNlIHdoZXJlIHdlIGNhbiBkbyBhIG9uZS1zaG90IGFsbG9jYXRpb24sIHdl
IHNpbXBseSBhbGxvY2F0ZSB0aGUKICAgICAgICAgICAgICAgICAvLyBvYmplY3QgdG8gZGlyZWN0
bHkgaGF2ZSB0aGUgZGVzaXJlZCBzdHJ1Y3R1cmUuCkBAIC02MzY1LDEyICs2NTAzLDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoUHJvcGVydHlNYXBFbnRyeSBl
bnRyeSA6IHN0cnVjdHVyZS0+Z2V0UHJvcGVydGllc0NvbmN1cnJlbnRseSgpKSB7CiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVlID0gZGF0
YS5tX3Byb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50
aWZpZXJzKClbdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyXSAhPSBlbnRyeS5rZXkpCisgICAgICAg
ICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRh
Lm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iua2lu
ZCgpICE9IE5hbWVkUHJvcGVydHlQTG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClbZGVzY3Jp
cHRvci5pbmZvKCldICE9IGVudHJ5LmtleSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGJh
c2UgPSBpc0lubGluZU9mZnNldChlbnRyeS5vZmZzZXQpID8gb2JqZWN0IDogYnV0dGVyZmx5Owot
ICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgdmFsdWUu
bV9pZGVudGlmaWVyTnVtYmVyLCBlbnRyeS5vZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBz
dG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgZGVzY3JpcHRvci5pbmZvKCksIGVudHJ5Lm9m
ZnNldCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KQEAgLTY0MzUsOSArNjU3NSwxMSBAQCBwcml2YXRlOgogICAgICAgICBMVmFs
dWUgYWN0aXZhdGlvbiA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RSZXN1bHQsIHNsb3dS
ZXN1bHQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChkYXRhLm1fcHJvcGVydGllcy5zaXplKCkg
PT0gdGFibGUtPnNjb3BlU2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBtX291dC5zdG9y
ZTY0KHZhbHVlc1tpXSwKLSAgICAgICAgICAgICAgICBhY3RpdmF0aW9uLAotICAgICAgICAgICAg
ICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGF0YS5tX3Byb3BlcnRp
ZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAg
ICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ2xvc3VyZVZhclBMb2MpOworICAgICAgICAg
ICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgICAgICB2YWx1ZXNbaV0sIGFjdGl2YXRpb24s
CisgICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlc1tk
ZXNjcmlwdG9yLmluZm8oKV0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHZhbGlkYXRpb25F
bmFibGVkKCkpIHsKQEAgLTY0NDYsNyArNjU4OCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBm
b3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbihsb2NrZXIpLCBlbmQgPSB0YWJsZS0+ZW5kKGxv
Y2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgICAgICAgICBib29sIGZvdW5k
ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEu
bV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVy
LT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09IGRhdGEubV9wcm9wZXJ0aWVzW2ldLm1f
aWRlbnRpZmllck51bWJlcikgeworICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9PSBDbG9zdXJlVmFyUExvYyk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgp
ID09IGRlc2NyaXB0b3IuaW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgfQpAQCAtNjYxMyw2ICs2NzU3LDI5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LnN0b3Jl
NjQodmFsdWUsIHJlZ0V4cCwgbV9oZWFwcy5SZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICB9
CiAKKyAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQoKQorICAgIHsKKyAg
ICAgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MCk7CisgICAgICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2Rl
LCAxKTsKKyAgICAgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDIpOworICAgICAgICBFZGdlIHN0YXJ0RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAzKTsKKyAgICAgICAgRWRnZSBlbmRFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDQpOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIGNvbnN0cnVjdG9yID0gbG93Q2VsbChj
b25zdHJ1Y3RvckVkZ2UpOworICAgICAgICBMVmFsdWUgcmVnRXhwID0gbG93Q2VsbChyZWdFeHBF
ZGdlKTsKKyAgICAgICAgTFZhbHVlIHN0cmluZyA9IGxvd0NlbGwoc3RyaW5nRWRnZSk7CisgICAg
ICAgIExWYWx1ZSBzdGFydCA9IGxvd0ludDMyKHN0YXJ0RWRnZSk7CisgICAgICAgIExWYWx1ZSBl
bmQgPSBsb3dJbnQzMihlbmRFZGdlKTsKKworICAgICAgICBtX291dC5zdG9yZVB0cihyZWdFeHAs
IGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0
UmVnRXhwKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RyaW5nLCBjb25zdHJ1Y3RvciwgbV9o
ZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdElucHV0KTsKKyAgICAgICAg
bV9vdXQuc3RvcmUzMihzdGFydCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0
b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9zdGFydCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIoZW5k
LCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVz
dWx0X2VuZCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzJBczgoCisgICAgICAgICAgICBtX291dC5j
b25zdEludDMyKDApLAorICAgICAgICAgICAgbV9vdXQuYWRkcmVzcyhjb25zdHJ1Y3RvciwgbV9o
ZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVpZmllZCkpOworICAgIH0KKwog
ICAgIExWYWx1ZSBkaWRPdmVyZmxvd1N0YWNrKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZG9l
cyBhIHZlcnkgc2ltcGxlIGxlYWYgZnVuY3Rpb24gYW5hbHlzaXMuIFRoZSBpbnZhcmlhbnQgb2Yg
RlRMIGNhbGwKQEAgLTY5NzAsNiArNzEzNywzOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemVBcnJheUVsZW1l
bnRzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIExWYWx1ZSB2ZWN0b3JMZW5ndGgsIExWYWx1
ZSBidXR0ZXJmbHkpCisgICAgeworICAgICAgICBpZiAoIWhhc0RvdWJsZShpbmRleGluZ1R5cGUp
KSB7CisgICAgICAgICAgICAvLyBUaGUgR0MgYWxyZWFkeSBpbml0aWFsaXplZCBldmVyeXRoaW5n
IHRvIEpTVmFsdWUoKSBmb3IgdXMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBEb3VibGVzIG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gUE5hTi4KKyAgICAgICAg
TEJhc2ljQmxvY2sgaW5pdExvb3AgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNC
bG9jayBpbml0RG9uZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1
ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5jaG9yKHZlY3Rvckxlbmd0aCk7Cisg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFuY2hvcihidXR0
ZXJmbHkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5ub3RaZXJv
MzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Cisg
ICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhpbml0TG9vcCwgaW5pdERvbmUpOworICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5waGko
bV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOworICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1f
b3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7CisgICAgICAgIAorICAgICAg
ICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nh
c3Q8aW50NjRfdD4oUE5hTikpLAorICAgICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVhcHMuaW5k
ZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSk7CisgICAgICAgIAor
ICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5pbnQzMk9u
ZSk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFuY2hvcihu
ZXh0SW5kZXgpKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShwb2ludGVyLCBtX291
dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1fb3V0LmludFB0ckVpZ2h0KSkpOworICAgICAg
ICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIobmV4dEluZGV4KSwg
dW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7CisgICAgICAgIAorICAgICAgICBt
X291dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5pdExhc3ROZXh0KTsKKyAgICB9CiAgICAgCiAgICAg
TFZhbHVlIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKExWYWx1ZSBvYmplY3QsIFN0cnVjdHVyZSog
cHJldmlvdXNTdHJ1Y3R1cmUpCiAgICAgewpAQCAtOTI1Nyw3ICs5NDU3LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC50ZXN0Tm9u
WmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQotICAgIAorCiAgICAgTFZh
bHVlIHVuYm94RG91YmxlKExWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
b3V0LmJpdENhc3QobV9vdXQuYWRkKGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlciksIG1fb3V0LmRv
dWJsZVR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxOSArNDEsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKIAot
ZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1
dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOwotICAgIAotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVh
dGUoCi0gICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigpLCAwKTsKLSAgICAKLSAgICBKU09iamVjdCogcmVz
dWx0ID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsK
LSAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlz
IGluIHRvLXNwYWNlLgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGV4dGVybiAiQyIgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoCiAgICAgRXhlY1N0YXRl
KiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiogbWF0ZXJpYWxpemF0aW9uLAog
ICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlKiB2YWx1ZXMp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAkocmV2aXNp
b24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAgY2xhc3MgTGF6eVNsb3dQYXRoOwogCiBl
eHRlcm4gIkMiIHsKIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdp
dGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwotCiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICBF
eGVjU3RhdGUqLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiosIEVuY29kZWRKU1ZhbHVl
KikgV1RGX0lOVEVSTkFMOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1
ZGUgIllhcnIuaCIKKyNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYv
QnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5
NiwxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAgICAvLyBUaGlzIGlzIGEgc3VwZXIgZGFuZ2Vyb3VzIG1l
dGhvZCBmb3IgSklUcy4gU29tZXRpbWVzIHRoZSBKSVRzIHdpbGwgd2FudCB0byBjcmVhdGUgZWl0
aGVyIGEKKyAgICAvLyBKU0ZpbmFsT2JqZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBpcyB0aGUgbWV0
aG9kIHRoYXQgd2lsbCBkbyB0aGF0LgorICAgIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUmF3T2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogPSBu
dWxscHRyKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVk
U2l6ZShKU0NlbGwqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tl
bik7CkBAIC0xMDM0LDYgKzEwMzgsMjAgQEAgcHJpdmF0ZToKIAogSlNfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2Yo
RXhlY1N0YXRlKik7CiAKK2lubGluZSBKU09iamVjdCogSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVj
dCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkq
IGJ1dHRlcmZseSkKK3sKKyAgICBKU09iamVjdCogZmluYWxPYmplY3QgPSBuZXcgKAorICAgICAg
ICBOb3ROdWxsLCAKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KAorICAgICAg
ICAgICAgKmV4ZWMtPmhlYXAoKSwKKyAgICAgICAgICAgIEpTRmluYWxPYmplY3Q6OmFsbG9jYXRp
b25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgKQorICAgICkgSlNP
YmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIGZpbmFsT2JqZWN0
LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAgICByZXR1cm4gZmluYWxPYmplY3Q7Cit9
CisKIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoCiAgICAgRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkp
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlz
aW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsOCBAQCBSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRl
KFZNJiB2bSwgY29uc3QgU3RyCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFycjo6
WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5T
dHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1
Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MjkxLDcgKzI5Myw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFycjo6WWFyckMK
ICNlbmRpZgogCiAgICAgbV9zdGF0ZSA9IEJ5dGVDb2RlOwotICAgIG1fcmVnRXhwQnl0ZWNvZGUg
PSBZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9yKTsKKyAg
ICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGUocGF0dGVybiwgJnZtLT5tX3Jl
Z0V4cEFsbG9jYXRvciwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvckxvY2spOwogfQogCiBpbnQgUmVn
RXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3RvcikKQEAgLTI5OSw4ICszMDEsMjIgQEAgaW50IFJlZ0V4
cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcmIAogICAgIHJldHVybiBtYXRjaElubGluZSh2
bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOwogfQogCitib29sIFJlZ0V4cDo6bWF0Y2hDb25j
dXJyZW50bHkoCisgICAgVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpCit7CisgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmICghaGFzQ29kZUZvcihz
LmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBwb3NpdGlvbiA9IG1hdGNoKHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rv
cik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5
KFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0
dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAg
ICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMzMwLDcgKzM0Niw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hP
bmx5KFZNKiB2bSwgWWEKICNlbmRpZgogCiAgICAgbV9zdGF0ZSA9IEJ5dGVDb2RlOwotICAgIG1f
cmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmdm0tPm1fcmVnRXhw
QWxsb2NhdG9yKTsKKyAgICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGUocGF0
dGVybiwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvciwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvckxvY2sp
OwogfQogCiBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBz
LCB1bnNpZ25lZCBzdGFydE9mZnNldCkKQEAgLTMzOCw4ICszNTQsMjEgQEAgTWF0Y2hSZXN1bHQg
UmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IAogICAgIHJldHVybiBtYXRjaElubGluZSh2bSwg
cywgc3RhcnRPZmZzZXQpOwogfQogCitib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoVk0m
IHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYg
cmVzdWx0KQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAg
ICBpZiAoIWhhc01hdGNoT25seUNvZGVGb3Iocy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4IDogWWFy
cjo6Q2hhcjE2KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0gbWF0Y2go
dm0sIHMsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZWdFeHA6
OmRlbGV0ZUNvZGUoKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgCiAgICAgaWYgKCFoYXNDb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRl
ID0gTm90Q29tcGlsZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYgUmVnRXhwX2gK
ICNkZWZpbmUgUmVnRXhwX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hdGNoUmVzdWx0LmgiCiAj
aW5jbHVkZSAiUmVnRXhwS2V5LmgiCkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0K
ICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnTXVsdGls
aW5lOyB9CiAgICAgYm9vbCBzdGlja3koKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ1N0
aWNreTsgfQorICAgIGJvb2wgZ2xvYmFsT3JTdGlja3koKSBjb25zdCB7IHJldHVybiBnbG9iYWwo
KSB8fCBzdGlja3koKTsgfQogICAgIGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3MgJiBGbGFnVW5pY29kZTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CkBAIC02NCw4ICs2NiwxNCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rp
b25FcnJvcjsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IG1hdGNoKFZNJiwgY29uc3Qg
U3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7
CisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIGNvdWxkbid0IHJ1biB0aGUgcmVndWxhciBl
eHByZXNzaW9uIGZvciBhbnkgcmVhc29uLgorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0m
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgVmVj
dG9yPGludCwgMzI+JiBvdmVjdG9yKTsKKyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBNYXRj
aFJlc3VsdCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsK
IAorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmKTsKKwogICAgIC8vIENhbGwgdGhlc2UgdmVyc2lv
bnMgb2YgdGhlIG1hdGNoIGZ1bmN0aW9ucyBpZiB5b3UncmUgZGVzcGVyYXRlIGZvciBwZXJmb3Jt
YW5jZS4KICAgICBpbnQgbWF0Y2hJbmxpbmUoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsKICAgICBNYXRjaFJlc3VsdCBt
YXRjaElubGluZShWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKQEAg
LTc3LDYgKzg1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdGF0ZSAhPSBOb3RDb21w
aWxlZDsKICAgICB9CiAKKyAgICBib29sIGhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsK
KyAgICBib29sIGhhc01hdGNoT25seUNvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsKKwogICAg
IHZvaWQgZGVsZXRlQ29kZSgpOwogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtMTMy
LDYgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ydE1hdGNoQ2FsbENvdW50Owog
ICAgIHVuc2lnbmVkIG1fcnRNYXRjaEZvdW5kQ291bnQ7CiAjZW5kaWYKKyAgICBDb25jdXJyZW50
SklUTG9jayBtX2xvY2s7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgWWFycjo6WWFyckNv
ZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkocmV2aXNpb24gMTk3OTgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYpOwogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RS
ZWdFeHAoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX2xh
c3RSZWdFeHApOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RJbnB1dCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fbGFzdElucHV0KTsg
fQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZXN1bHQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX3Jlc3VsdCk7IH0KKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mUmVpZmllZCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBD
YWNoZWRSZXN1bHQsIG1fcmVpZmllZCk7IH0KKwogcHJpdmF0ZToKICAgICBNYXRjaFJlc3VsdCBt
X3Jlc3VsdDsKICAgICBib29sIG1fcmVpZmllZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTk3OTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4
cENvbnN0cnVjdG9yLCBtX2NhY2hlZFJlc3VsdCk7IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBSZWdFeHBQcm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNp
ZXMpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5s
aW5lcy5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiWWFyci5o
IgorI2luY2x1ZGUgIllhcnJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIllhcnJKSVQuaCIKIAog
I2RlZmluZSBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOIDAKQEAgLTY3LDIwICs2OCwyNyBAQCBw
cml2YXRlOgogfTsKICNlbmRpZiAvLyBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOCiAKLUFMV0FZ
U19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6Ollh
cnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc0NvZGVG
b3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewogICAgIGlmIChoYXNDb2RlKCkpIHsK
ICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYg
KChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29k
ZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5o
YXMxNkJpdENvZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgUmVn
RXhwOjpjb21waWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNp
emUpCit7CisgICAgaWYgKGhhc0NvZGVGb3IoY2hhclNpemUpKQorICAgICAgICByZXR1cm47CiAK
ICAgICBjb21waWxlKCZ2bSwgY2hhclNpemUpOwogfQpAQCAtMTUyLDIxICsxNjAsMjkgQEAgQUxX
QVlTX0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGluZShWTQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNo
T25seShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUg
Ym9vbCBSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJT
aXplKQogewogICAgIGlmIChoYXNDb2RlKCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAg
ICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkg
JiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZU1hdGNoT25seSgpKSkKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXpl
ID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGVNYXRjaE9u
bHkoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNl
bHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICB9
CiAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNv
bXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFy
U2l6ZSkKK3sKKyAgICBpZiAoaGFzTWF0Y2hPbmx5Q29kZUZvcihjaGFyU2l6ZSkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGNvbXBpbGVNYXRjaE9ubHkoJnZtLCBjaGFyU2l6ZSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBB
TFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgCiAgICAgVmVjdG9y
PGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOwogICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+
bWF0Y2hJbmxpbmUodm0sIGlucHV0VmFsdWUsIHN0YXJ0T2Zmc2V0LCBzdWJwYXR0ZXJuUmVzdWx0
cyk7CisgICAgQVNTRVJUKHBvc2l0aW9uID09IHN1YnBhdHRlcm5SZXN1bHRzWzBdKTsKICAgICBp
ZiAocG9zaXRpb24gPT0gLTEpIHsKICAgICAgICAgcmVzdWx0ID0gTWF0Y2hSZXN1bHQ6OmZhaWxl
ZCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDE5Nzk4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6
ZXhlY0lubGluZShFeGVjU3RhCiAgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVj
KTsgLy8gRklYTUU6IEhhbmRsZSBlcnJvcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUxNDUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAg
ICBib29sIGdsb2JhbE9yU3RpY2t5ID0gcmVnRXhwLT5nbG9iYWwoKSB8fCByZWdFeHAtPnN0aWNr
eSgpOworICAgIGJvb2wgZ2xvYmFsT3JTdGlja3kgPSByZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCk7
CiAKICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CiAgICAgaWYgKGdsb2JhbE9yU3RpY2t5KSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCBz
dGF0aWMgTkVWRVJfSU5MSU5FIFN0cmluZyBzdWJzdGl0dXRlQmFjCiAgICAgcmV0dXJuIHN1YnN0
aXR1dGVkUmVwbGFjZW1lbnQudG9TdHJpbmcoKTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcg
c3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIFN0cmlu
Z1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnKQoraW5saW5lIFN0
cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNJbmxpbmUoY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcp
CiB7CiAgICAgc2l6ZV90IGkgPSByZXBsYWNlbWVudC5maW5kKCckJyk7CiAgICAgaWYgKFVOTElL
RUxZKGkgIT0gbm90Rm91bmQpKQpAQCAtMjkwLDYgKzI5MCwxMSBAQCBzdGF0aWMgaW5saW5lIFN0
cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyCiAgICAgcmV0dXJuIHJlcGxhY2VtZW50OwogfQogCitT
dHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQs
IFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnKQorewor
ICAgIHJldHVybiBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNJbmxpbmUocmVwbGFjZW1lbnQsIHNv
dXJjZSwgb3ZlY3RvciwgcmVnKTsKK30KKwogc3RydWN0IFN0cmluZ1JhbmdlIHsKICAgICBTdHJp
bmdSYW5nZShpbnQgcG9zLCBpbnQgbGVuKQogICAgICAgICA6IHBvc2l0aW9uKHBvcykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCShy
ZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIE9iamVjdFByb3RvdHlwZTsKK2NsYXNzIFJlZ0V4cDsKIGNsYXNzIFJlZ0V4
cE9iamVjdDsKIAogY2xhc3MgU3RyaW5nUHJvdG90eXBlIDogcHVibGljIFN0cmluZ09iamVjdCB7
CkBAIC02Miw2ICs2Myw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U3QKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5j
UmVwbGFjZVJlZ0V4cFN0cmluZygKICAgICBFeGVjU3RhdGUqLCBKU1N0cmluZyogdGhpc1ZhbHVl
LCBSZWdFeHBPYmplY3QqIHNlYXJjaFZhbHVlLCBKU1N0cmluZyogcmVwbGFjZVZhbHVlKTsKIAor
U3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZyk7CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RyaW5nUHJvdG90eXBlX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogI2lmbmRlZiBWTV9oCiAjZGVmaW5lIFZNX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRK
SVRMb2NrLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgogI2luY2x1ZGUgIkRh
dGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgpAQCAt
NTQxLDYgKzU0Miw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8VHlwZWRBcnJheUNvbnRyb2xsZXI+
IG1fdHlwZWRBcnJheUNvbnRyb2xsZXI7CiAgICAgUmVnRXhwQ2FjaGUqIG1fcmVnRXhwQ2FjaGU7
CiAgICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IgbV9yZWdFeHBBbGxvY2F0b3I7CisgICAgQ29uY3Vy
cmVudEpJVExvY2sgbV9yZWdFeHBBbGxvY2F0b3JMb2NrOwogCiAjaWYgRU5BQkxFKFJFR0VYUF9U
UkFDSU5HKQogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVnRXhwKj4gUlRUcmFjZUxpc3Q7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhl
Yy1mb2xkaW5nLWZhaWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4
ZWMtZm9sZGluZy1mYWlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0
aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8uZXhlYygiYmFyIik7Cit9CisKK25v
SW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZh
ciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0ICE9PSBudWxsKQorICAgICAgICB0aHJv
dyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4
cC1leGVjLWZvbGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShv
KS8uZXhlYygiZm9vIik7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0
Lmxlbmd0aCAhPSA0KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CisgICAgaWYgKHJlc3VsdFswXSAhPSAiZm9vIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1bHRbMV0gIT0gImYiKQorICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFsy
XSAhPSAibyIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
KyAgICBpZiAocmVzdWx0WzNdICE9ICJvIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVz
dWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmctZmFpbC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykv
LnRlc3QoImJhciIpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAh
PSBmYWxzZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhw
LXRlc3QtZm9sZGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBmb28oKSB7
CisgICAgcmV0dXJuIC8oZikobykobykvLnRlc3QoImZvbyIpOworfQorCitub0lubGluZShmb28p
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0g
Zm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSB0cnVlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9SZWd1bGFyRXhwcmVzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSBMdGQuCkBAIC0zMCw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUmVndWxhckV4cHJl
c3Npb24uaCIKIAogI2luY2x1ZGUgIllhcnIuaCIKKyNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRl
ckFsbG9jYXRvci5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCShyZXZpc2lv
biAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpZm5kZWYgWWFycl9oCiAjZGVmaW5lIFlhcnJfaAog
Ci0jaW5jbHVkZSAiWWFyckludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKQEAgLTYzLDYgKzYyLDggQEAgZW51
bSBZYXJyQ2hhclNpemUgewogICAgIENoYXIxNgogfTsKIAorc3RydWN0IEJ5dGVjb2RlUGF0dGVy
bjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIKIAogI2VuZGlmIC8vIFlhcnJfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJw
cmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE3LDYgKzE1MTcsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghaW5wdXQuaXNBdmFpbGFibGVJbnB1dCgwKSkKICAgICAgICAgICAgIHJldHVy
biBvZmZzZXROb01hdGNoOwogCisgICAgICAgIGlmIChwYXR0ZXJuLT5tX2xvY2spCisgICAgICAg
ICAgICBwYXR0ZXJuLT5tX2xvY2stPmxvY2soKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwYXR0ZXJuLT5tX2JvZHktPm1fbnVtU3VicGF0dGVybnMgKyAxOyAr
K2kpCiAgICAgICAgICAgICBvdXRwdXRbaSA8PCAxXSA9IG9mZnNldE5vTWF0Y2g7CiAKQEAgLTE1
MzYsNiArMTUzOSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHBhdHRlcm4tPm1fYWxsb2NhdG9yLT5z
dG9wQWxsb2NhdG9yKCk7CiAKICAgICAgICAgQVNTRVJUKChyZXN1bHQgPT0gSlNSZWdFeHBNYXRj
aCkgPT0gKG91dHB1dFswXSAhPSBvZmZzZXROb01hdGNoKSk7CisKKyAgICAgICAgaWYgKHBhdHRl
cm4tPm1fbG9jaykKKyAgICAgICAgICAgIHBhdHRlcm4tPm1fbG9jay0+dW5sb2NrKCk7CisgICAg
ICAgIAogICAgICAgICByZXR1cm4gb3V0cHV0WzBdOwogICAgIH0KIApAQCAtMTU3NiwxMyArMTU4
MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY3VycmVudEFsdGVybmF0aXZlSW5kZXggPSAwOwog
ICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZVBhdHRlcm4+IGNvbXBpbGUoQnVt
cFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVQYXR0ZXJuPiBjb21waWxlKEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1
cnJlbnRKSVRMb2NrKiBsb2NrKQogICAgIHsKICAgICAgICAgcmVnZXhCZWdpbihtX3BhdHRlcm4u
bV9udW1TdWJwYXR0ZXJucywgbV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplLCBtX3Bh
dHRlcm4ubV9ib2R5LT5tX2FsdGVybmF0aXZlc1swXS0+b25jZVRocm91Z2goKSk7CiAgICAgICAg
IGVtaXREaXNqdW5jdGlvbihtX3BhdHRlcm4ubV9ib2R5KTsKICAgICAgICAgcmVnZXhFbmQoKTsK
IAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1v
dmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBh
bGxvY2F0b3IpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRl
cm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9w
YXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOwogICAgIH0KIAogICAgIHZvaWQgY2hlY2tJbnB1dCh1
bnNpZ25lZCBjb3VudCkKQEAgLTIwMjcsOSArMjAzNCw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiBtX2FsbFBhcmVudGhlc2VzSW5mbzsK
IH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQ
YXR0ZXJuJiBwYXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yKQorc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mIHBhdHRl
cm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKSVRMb2NrKiBs
b2NrKQogewotICAgIHJldHVybiBCeXRlQ29tcGlsZXIocGF0dGVybikuY29tcGlsZShhbGxvY2F0
b3IpOworICAgIHJldHVybiBCeXRlQ29tcGlsZXIocGF0dGVybikuY29tcGlsZShhbGxvY2F0b3Is
IGxvY2spOwogfQogCiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiBieXRlY29k
ZSwgY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVy
cHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgWWFycklu
dGVycHJldGVyX2gKICNkZWZpbmUgWWFyckludGVycHJldGVyX2gKIAorI2luY2x1ZGUgIkNvbmN1
cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIKIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC0zMzcsMTAgKzMzOCwxMSBAQCBwdWJsaWM6CiBzdHJ1Y3QgQnl0ZWNvZGVQYXR0ZXJu
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBCeXRlY29kZVBh
dHRlcm4oc3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4gYm9keSwgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiYgcGFyZW50aGVzZXNJbmZvVG9BZG9wdCwgWWFy
clBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IpCisgICAg
Qnl0ZWNvZGVQYXR0ZXJuKHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+IGJvZHksIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPj4mIHBhcmVudGhlc2VzSW5mb1Rv
QWRvcHQsIFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2Nh
dG9yLCBDb25jdXJyZW50SklUTG9jayogbG9jaykKICAgICAgICAgOiBtX2JvZHkoV1RGTW92ZShi
b2R5KSkKICAgICAgICAgLCBtX2ZsYWdzKHBhdHRlcm4ubV9mbGFncykKICAgICAgICAgLCBtX2Fs
bG9jYXRvcihhbGxvY2F0b3IpCisgICAgICAgICwgbV9sb2NrKGxvY2spCiAgICAgewogICAgICAg
ICBtX2JvZHktPnRlcm1zLnNocmlua1RvRml0KCk7CiAKQEAgLTM2Niw2ICszNjgsNyBAQCBwdWJs
aWM6CiAgICAgLy8gRWFjaCBCeXRlY29kZVBhdHRlcm4gaXMgYXNzb2NpYXRlZCB3aXRoIGEgUmVn
RXhwLCBlYWNoIFJlZ0V4cCBpcyBhc3NvY2lhdGVkCiAgICAgLy8gd2l0aCBhIFZNLiAgQ2FjaGUg
YSBwb2ludGVyIHRvIG91dCBWTSdzIG1fcmVnRXhwQWxsb2NhdG9yLgogICAgIEJ1bXBQb2ludGVy
QWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICBDb25jdXJyZW50SklUTG9jayogbV9sb2NrOwog
CiAgICAgQ2hhcmFjdGVyQ2xhc3MqIG5ld2xpbmVDaGFyYWN0ZXJDbGFzczsKICAgICBDaGFyYWN0
ZXJDbGFzcyogd29yZGNoYXJDaGFyYWN0ZXJDbGFzczsKQEAgLTM3NSw3ICszNzgsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+PiBtX3VzZXJD
aGFyYWN0ZXJDbGFzc2VzOwogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFs
bG9jYXRvciopOworSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0
dGVybj4gYnl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciosIENv
bmN1cnJlbnRKSVRMb2NrKiA9IG51bGxwdHIpOwogSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQg
aW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCogb3V0cHV0KTsKIHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBh
dHRlcm4qLCBjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkKiBvdXRwdXQpOwogdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVy
biosIGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQqIG91dHB1dCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wMy0xMCAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBhbmQgRlRMIHNo
b3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgZXhlY3V0ZUluc2VydGlvbnMoKSByZXR1cm4gdGhl
IGFtb3VudCBieSB3aGljaCB0aGUgdmVjdG9yIGluY3JlYXNlZCBpbiBzaXplLiBUaGlzIGlzIGEK
KyAgICAgICAgY29udmVuaWVudCBmZWF0dXJlIHRoYXQgSSB1c2UgaW4gREZHOjpJbnNlcnRpb25T
ZXQuCisKKyAgICAgICAgKiB3dGYvSW5zZXJ0aW9uLmg6CisgICAgICAgIChXVEY6OmV4ZWN1dGVJ
bnNlcnRpb25zKToKKwogMjAxNi0wMy0xMCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIFdPRkYyCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9JbnNlcnRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9JbnNlcnRp
b24uaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsMTQgKzU1LDE1IEBAIHByaXZhdGU6CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXRWZWN0b3JUeXBlLCB0eXBlbmFtZSBJbnNlcnRpb25WZWN0
b3JUeXBlPgotdm9pZCBleGVjdXRlSW5zZXJ0aW9ucyhUYXJnZXRWZWN0b3JUeXBlJiB0YXJnZXQs
IEluc2VydGlvblZlY3RvclR5cGUmIGluc2VydGlvbnMpCitzaXplX3QgZXhlY3V0ZUluc2VydGlv
bnMoVGFyZ2V0VmVjdG9yVHlwZSYgdGFyZ2V0LCBJbnNlcnRpb25WZWN0b3JUeXBlJiBpbnNlcnRp
b25zKQogewotICAgIGlmICghaW5zZXJ0aW9ucy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICB0YXJnZXQuZ3Jvdyh0YXJnZXQuc2l6ZSgpICsgaW5zZXJ0aW9ucy5zaXplKCkpOworICAgIHNp
emVfdCBudW1JbnNlcnRpb25zID0gaW5zZXJ0aW9ucy5zaXplKCk7CisgICAgaWYgKCFudW1JbnNl
cnRpb25zKQorICAgICAgICByZXR1cm4gMDsKKyAgICB0YXJnZXQuZ3Jvdyh0YXJnZXQuc2l6ZSgp
ICsgbnVtSW5zZXJ0aW9ucyk7CiAgICAgc2l6ZV90IGxhc3RJbmRleCA9IHRhcmdldC5zaXplKCk7
CiAgICAgc2l6ZV90IG9yaWdpbmFsVGFyZ2V0U2l6ZSA9IHRhcmdldC5zaXplKCk7Ci0gICAgZm9y
IChzaXplX3QgaW5kZXhJbkluc2VydGlvbnMgPSBpbnNlcnRpb25zLnNpemUoKTsgaW5kZXhJbklu
c2VydGlvbnMtLTspIHsKKyAgICBmb3IgKHNpemVfdCBpbmRleEluSW5zZXJ0aW9ucyA9IG51bUlu
c2VydGlvbnM7IGluZGV4SW5JbnNlcnRpb25zLS07KSB7CiAgICAgICAgIEFTU0VSVCghaW5kZXhJ
bkluc2VydGlvbnMgfHwgaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSA+PSBp
bnNlcnRpb25zW2luZGV4SW5JbnNlcnRpb25zIC0gMV0uaW5kZXgoKSk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQob3JpZ2luYWxUYXJnZXRTaXplLCBpbnNlcnRpb25zW2luZGV4SW5JbnNlcnRpb25z
XS5pbmRleCgpIDwgb3JpZ2luYWxUYXJnZXRTaXplKTsKICAgICAgICAgc2l6ZV90IGZpcnN0SW5k
ZXggPSBpbnNlcnRpb25zW2luZGV4SW5JbnNlcnRpb25zXS5pbmRleCgpICsgaW5kZXhJbkluc2Vy
dGlvbnM7CkBAIC03Myw2ICs3NCw3IEBAIHZvaWQgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVj
dG9yVHlwZSYKICAgICAgICAgbGFzdEluZGV4ID0gZmlyc3RJbmRleDsKICAgICB9CiAgICAgaW5z
ZXJ0aW9ucy5yZXNpemUoMCk7CisgICAgcmV0dXJuIG51bUluc2VydGlvbnM7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTgxKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYtMDMtMTAgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBERkcgYW5kIEZUTCBzaG91
bGQgY29uc3RhbnQtZm9sZCBSZWdFeHBFeGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdl
eHAtZXhlYy1mb2xkaW5nLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWls
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVn
ZXhwLXRlc3QtZm9sZGluZy5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUt
cmVnZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xk
aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBs
ZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbDogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5odG1sOiBB
ZGRlZC4KKwogMjAxNi0wMy0xMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtDb2NvYV0gVGVzdCBnYXJkZW5pbmcgYWZ0ZXIgcjE5NzkzMwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVn
ZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVj
LWZvbGRpbmcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0
aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZv
bGRpbmctZmFpbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRp
bmctZmFpbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNS
ZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFp
bC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVn
ZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxl
LXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhw
LWV4ZWMtZm9sZGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2lt
cGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5v
IGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAg
QEAKK0pTUmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nLWZhaWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2lt
cGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3Qt
Zm9sZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxl
LXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
aW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsg
KytpKQorICAgICAgICAvZm9vLy5leGVjKCJiYXIiKTsKK30pKCk7CisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1IEBACisoZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgICAgIC9mb28vLmV4ZWMoImZvbyIpOworfSkoKTsK
KwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4
cC10ZXN0LWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJl
Z2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAK
KyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAg
ICAgICAgL2Zvby8udGVzdCgiYmFyIik7Cit9KSgpOworCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhw
LXRlc3QtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKQorICAgICAgICAvZm9vLy50ZXN0KCJmb28iKTsKK30pKCk7CisK
</data>
<flag name="commit-queue"
          id="298255"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>273699</attachid>
            <date>2016-03-11 01:09:04 -0800</date>
            <delta_ts>2016-03-11 10:49:05 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews114 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>1158322</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
U0kZITDHLmyTGTMNGU4oMmAjbg4NOEwIUDYUVOGuqVUs5IBjEJQykXkLccxuQalIDNpv3iSPmrMM
69+VA0hLq6MJouCYhZ9SxP2KK3I3LVbu8AY2cchKgLZCeyKZo6PmEGnUCjqBnKFPaqVSiA50xQqv
/zS3KvmUmPqxWQQ1BJcXTsLqjAhDIAp+ACGuCRK46TuDU2OgpmrtL75cv9Xu15v+cNR+bDedkV89
rfXabW90bTadpcicsu06Gf5GTt/NPvbzj0XLLiXXGeSPjuckvWFetgaBNxkMPM/tqLNpu6jFrfM8
ac1O8Voqktbkmjz1yqd53O+NgrJ39c89L8P/djn9/qzv+eWPZ0snqd3zes9plvmLniO1mm/71ls7
Ur2Bj8zGTs3R2q5XOryg62yR/sCbz8SLPU0SYTfiiWl3r8vJ0h3uP47nxrs3eh8/aXY0nklOoIpu
o3a4LDaj7WTQ3JeDzmWw7r46w6hhfUzGk/nlLSizTr+Mveft47K970xnobTbJ51OM9CiUzyykvfa
ZvmWbZtZmOudlrecr5+n61n24K3Oz6+FdN27rcO4SMX48GoMpqeP8e58ySfZQxQsZw+RnJyC2m7b
eYni0WzWEFHrOt4+hZNGT5munME8EcNeYGJp59wOPKU30a3xqNH3Erkbjdbt8nKdemXtEg+zhRKt
9/alfTClUSPab87iVZxPb2E0e35Ozkqw76qnXbKLXjtBZzTplFa/V65lefaUPn/UuhvH6VppoKS9
QaYF3e5Va+W9xXo3mYiFelq/XsTHxOi9O1nPdZzWMpt9lNksKD0HnRtKo5rrjNED321cncTN+pOn
geY/ZoPx3L5unDyfHMy13jOaD7rfFa54nkYdvxwOKuOl62ll7bXt/GZxa94OB2nPlc6tqzPjAK7T
6/mbZBUs5DJqPUq12dq+RG+yNHvvS7FWwfj5WyYWkNJrOtmg9Msq4sp1yrKZBe1uGbjuYPyEzMua
Nwg63e2sPT/FfWfgP7sDxwOoXKdduIW3uTSW8mlhNkZPXrG0B9bL+/NxvUrDl/dUNYuhktf08dl8
fDe6k/1609tsA203Dhq+GT4mu7Y+BhKXxiHohME6WD1/LGbpdHw6J/OJNBBqHo7tWW01Ob2dpu+b
94dcDfOjddCWR/+S7DtyZtjXx3N31pf6W2txUB8eT65ox7Z5ejl5V9vrxkc/PdRmQ7u1NaNBEIzE
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
ZIt52W6Hz6qE0Y16SVUjAts4sLSDTI5RFFVYKOheBNNrMNsiAbwHmzMc5mCE7Xax/CHeP1BLAwQK
AAAAAAB4AGtIAAAAAAAAAAAAAAAADQAcAGRpc3BsYXlsaXN0cy9VVAkAA+N74laDhOJWdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIACIEa0ijV/3oUAAAAI4AAAAyABwAZGlzcGxheWxpc3RzL2V4dGVu
dC1pbmNsdWRlcy10cmFuc2Zvcm1zLXN0ZGVyci50eHRVVAkAA7+C4lbje+JWdXgLAAEE9QEAAAQU
AAAAcy9KLMjITC52zs8rSa0osbJKTy1xDvHV0FTILFbIyy9RqEwtUUjOzy1ILMlMyklVKM8syVAo
Sk3OL0rJzEsHyoC1FetxuaMbVIxmEDGGAABQSwMEFAACAAgAIgRrSPKWldVHAAAASQAAACkAHABk
aXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3Qtc3RkZXJyLnR4dFVUCQADv4LiVuN74lZ1eAsA
AQT1AQAABBQAAABzL0osyMhMLnbOzytJrSixskpPLXEO8dXQVMgsVsjLL1GoTC1RSM7PLUgsyUzK
SVUozyzJUChKTc4vSsnMSwfKgLUV63EBAFBLAwQKAAAAAACDBGtIAAAAAAAAAAAAAAAACAAcAGVk
aXRpbmcvVVQJAAN1g+JWg4TiVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACaAGtIAAAAAAAAAAAA
AAAAEwAcAGVkaXRpbmcvcGFzdGVib2FyZC9VVAkAAyN84laDhOJWdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIADQEa0iROYSC7gAAAIYBAAAwABwAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcmVzb2x2
ZXMtdXJscy1zdGRlcnIudHh0VVQJAAPkguJWBnziVnV4CwABBPUBAAAEFAAAAHWPwWrDQAxE7/kK
nYJdQkQPuSzBUNr40tAGO8RneVd2FxzL7MqF/H2dOqWlkKM080ajXVG8FwZy8h07UAEK9sN/MsSx
DhxlDJahkQDNZDCIeJJuPHPEF1LCXVVixfWrV9zTRUY9ctSI7Lz6vsWBonItFBz+ZEWkmtdD3y7u
JpXfxuv0LIGxE3Ic8NYLbYN7bsleJv1p3q3tMCSbzWMKBqKSegsHirHg5qBhe8sx5j+WwV3JGBuY
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
Wtd69vjrR5ArPn5dtt9P+0oOvcnh4xz+XHffT8nhw8dunYpKbp7nE58bnvz/hod/HKwK3kCaD+NW
l6uuNJ+Qltt/b87JLzdTLNp9+H7fQa83q89/TBGrB1vuF9NdDsL30/f369nnHwRXV+Rm+tA9Lttu
tf6BM2AUNy+0/K/vpo+/YfmS9uP90/oj0Pa0SsWJYMb2B0rsFb15waDb5O8gWczuPncwCBKwGxrk
5pfT36Bx3a1+oAz7Uxh1NxWVMHN6dDDRD+TVCwKPsslgoBfWwlTTybvm5fWbn6bv//ttMz3y88v1
u/cf3OvJD/ufY103zRP/corIvrjXHteYwl/qTI1Wr7DrMuUgn/rZdX1MJbL6//F4pC92DZtgarhO
VrDln9JRGf4HYN3kZvK32+nfrt9PP3WrFKPYwn9ph9RQdqLrix6ioGu/w67Gpg2w+dk2TWE/zdoW
/vk4BcowPPrgi3w3eZXSzacOn0zfgGx/5EWYV5Mb9/r1G3/ydU0ZVVf8Ztv1xaz9slx9d7Q3Z68m
t++dfzV9+cG9C8eHlbi0ye0aPu30zA+IsuoGTtHHRIJ735zoqmErT/7e3aFcdZNeyrGugmqg9ePH
4N67cwTYK3kDXa9v3MvmTF/JDI76+vqnV02AD3zyvTIc9X3zj/fnPoG9Mtj1w0/X/k04TYKUsKwv
6dBOEWP0eE9DkIDNMfi/5QJ75kWVeMw18SYl14b4hzj6KBCMWT1Ld4hSHQVgsiotRknkkMQNV2rg
DixjuABQSwMEFAACAAgAqARrSLM7W6GAAwAA8goAAD8AHABlZGl0aW5nL3NlbGVjdGlvbi9tb3Zl
LWJ5LXdvcmQtdmlzdWFsbHktY3Jhc2gtdGVzdC0yLXN0ZGVyci50eHRVVAkAA7yD4la8g+JWdXgL
AAEE9QEAAAQUAAAA1Vbva9s6FP2ev0KfSlrKYsc/EpttUNL0ka5dSh3aD+MxZPkm0ZsjGVnu2v9+
V7biJF1qxhjv8SikSPeeo6NrnStdJMn0fjGbfyZXF7Ob6WVMCllyzaUgHz6QskoLqjUocQ9llevy
i/N3b/Ag82oD5eCSajqYPiaDR0g/cT1IZKUYDK7pE02Y4oWeSAUDVQnNNzC4h9X0ubilmq2hvFCK
vrxb94PolMTkOpnE8XVST5KzesQUUA0/Y/p19OGWnJxvYX/lMqX5PP0HmCZn7XSiFRcrM8GkKDV5
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
2nTIOBXoxWdtrT6jBqB1reZwwS2Quh7u18OEJZVrwLN3lUk4WLccHyaenB9F6rZ0F9ADmlvI930a
nu6aTEJ6wHxOzCpvIfXluOCLJ5CrXHzHkFfldXusXrUDTvDbqpHJ7pgM03eNHdPl4vYx46n4HkVp
Vhb6SnzV5KHCdWednjm0mDXIfCNo04Ux4twWFySJbaR7OMHwucTVDtbQHIC9Huw7LhwDZ9siz1im
prkoQUP8FsJ8N0j3TFSf7ppcbzN8fbBveqfPX8ODHdxLYBAuEIv3Qaph4Q7mY8nHYTn+Xwqu17Fb
RxhO4NmI7gFTiuQpPlfqV+NPyDfycFcmQuTI2xrAQqexZE9IXCXyFSkXKlu9tIJ+AFBLAwQUAAIA
CADkBGtIiNHyCpEAAAD+AAAAQgAcAGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1
YWxseS1jcmFzaC10ZXN0LTQtY3Jhc2gtbG9nLnR4dFVUCQADLITiViyE4lZ1eAsAAQT1AQAABBQA
AAC1zrEOgjAQgOHdp7iNCUsBTWQWJ6JJo5MxpLQnNEGO3JUY3l5ewu3PP321MTdTwcWGET1EAkbr
IVEPQRbVLWH0HUXVhI4tr6qhXtQ52H4iicEZnInjdpbPbHDyyHdGbPNMH9OsSHWW5kV5OmzV4le0
LveOrQxJBc+aeSLIX3AlkMUN8N4EQAw+MLpIvFZ/Z+x+UEsDBBQAAgAIAOQEa0hOAeP7gQMAAPIK
AAA/ABwAZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRlc3Qt
NC1zdGRlcnIudHh0VVQJAAMshOJWLITiVnV4CwABBPUBAAAEFAAAANVW227bOBB991fwKXCCYK27
LaFdIHCchdOkDiIjeSgWC4oc29wqpEBRafL3O9TFl9QRiqLYxb7YIGfO4eGIZ8iLNJ3dL+eLz+Tq
Yn4zu0xIoUphhJLk40dSVllBjQEt76GsclN+cf4cjB5UXj1BObqkho5mj+noEbJPwoxSVWkGo2v6
TFOmRWGmSsNIV9KIJxjdw3r2UtxSwzZQXmhNX3/bDMP4lCTkOp0myXVaT5KzesQ0UAPfY4Z19OGW
nJx3sD9yldF8kf0NzJCz7XRqtJBrO8GULA15XF4lSTvZgRt+m1PJUqwlcCKkOSf1is2WycnpwCWE
OC+u6/q+z5hjqaaalpuB1wVcNw5XjPyQ9OPK3wrH8b7ieg+HsvtUo2h/p43FQbiPbFZMEngBNpe5
kNBom+E4NSj+7Mckng6C3SI8Qh3vLPKz9OGOHnwaN3Fd099pZdRVJdnsCP/pIKqRYcCcIPYc1/Em
g3FL5qwid4IFyXHj5i+QRr8OJj2xuCfmOj0xtyfm9cT8LhZSCIE8P83s/FLtjDVwgzaHj2Me07Zw
8+VUcWhKXhnoDlxX2LpkU5rnV5o+2SK5YcfiesHEbbLmEv1eaMDfLZMFvfsND7+eTV2+FrA3tH3i
8ABfpw80r7qcC72+EejQJgVlRa2syM3iMbSu6pOwz/YrBIz3BID/bwtonf+ZfgV+Z/SHdlEGhe3L
v1uBk53AjGcNSaHVSuTAez7WXZ2C3roHWir5n8mPG/kRB4+6GcH7w14VlvaWCrncYAflW/H/p515
bT+IVnEU4dHd29nsGe1tyUBaZ22o5DnUk8NtVuPuWW06ZJwq9OKLtdY2owagdb22uURRxCM8r4cJ
S6rXgL13JTQcrFsODxNPzo8ibVm6C+gBza30h20adndLpoEfMJ8Tt8pbSH05LuTiGfQqV98wFFV5
XR5vq5pBMPlp1cjUNskojONx6OyYLhe3j0Jy9S1JuCgLeyW+KXLfxm1lg46Zuh7zeplvFG2qMERc
20yjIPR9h+/hFMPnkjQ7WENzAI46cLAKQjgGFk9FLpgw01yVYCFtk4omDp/wPRPV3d2S22OGrw/2
1Z70+Vv4ZAePMuiFK8TifcAtLN7Bxrjl47Ac/y+VtOv4nSMcvMIRvQVMKZJzfK7Ur8bvkO/k4anM
lMqRtzXAGJ3Gsj0haZXpN6RSGbF6bQX9A1BLAwQUAAIACAAQBWtIT/UtDus+AABG2gAAQgAcAGVk
aXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1jcmFzaC10ZXN0LTUtY3Jhc2gt
bG9nLnR4dFVUCQADgITiVluE4lZ1eAsAAQT1AQAABBQAAADUW+tzm8iy/3z5K/hwKyUnwZ5hXqDy
zZaEIOtdv8qys1tna4viMbI5kUALkmP/97cHkAwSdkLi2rNHtetIzEz3r3v6NQ8u8yySRTHU25/J
erG8kmks8+tcSv0PkwnG/tQug9Xdblf4HH3K5uuFLI4+XZzenLlHb4/a47WTWKarZJbIfPg8F+2T
zIskS3cZIM3JYqlfPy5lu+l3ixuc6oPzYJXcywNAlwMb/XJHpMvH1V2WggyUCfKndiWLZZYWSThv
kSvulJTQflPIXD+Z7KJgCGvaJFjJo+tksQPERJgbiBgY6wgNiT1E9iEWtm4gCyHtYqp3SXYWRDo0
/a5jdAj/MX2AqYcZsg8A4jLLV3ujMNZGaZY+LrJ1od/cNDByx7LckTcxbNNlhnDZxBjZ2DRcx/Mw
QqbpEq5pmkKuj74En6U+TdJI6uMsWw11iyKE9EJGWRoXmubkQXEnY/36LpdBvOWBYL6SYhmsojv9
r7Vcgw6ibHEYLJdzebgIktRYlQM0zX2I5HIFyNtz5v7u+OPRxB85jjud6oPpycep+/HTQaO/mujt
xP3qXp37J+efRqcnMGgyuVKjgpWOHlD9CcMgDqWcadqnM/1K3gKJQj+XQQ59Nm1DzTA+6Joi6PvX
7u/Xe9ZbE8NIIBzAF6PxIFJf9D9Aw5z++qeeGw9H+ZcHfXr2f87Fbx2Gr2kj0EcSBaU406WMwOoj
/SSdZfmifDjUnKvR9OeT84/6tTu9HuoyTlZJentUyLmMVI+jRXYvjfDR+JLlsXGfFOtgPn80IjUt
xkoWK4Md3q0Wc5jPUuEwM/WUDYffOEUwl42WX4L7YBrlyXLlZLmslPI/Wy1jZFHGokjov117JSP9
nU5sDfejYZKQzSL9l6kzHEYAYiVhwtyH5ZlCK4tRngePg7L109mb91W/X6Yf51kYzC/Cf4Nq3m6f
Tlc5aAx+A6LhsPoFWNJitRlZ0YYea/D02xSsOUlX7/WSGQSA9Xz15gDEwJalmX3lkDZlTS4VuuFQ
PsjoJJ0nqazkcOH3dAWCvv02cRQgiFEa6QtoxkG+ZwB9PxRAQnsioYgEdkUqL5FAKF5l3jqN3A4o
pbwQVRnQ+emnn/TnPzUXMossiQJgZVpg9O90cFiCbZgOmxFuabwfXGQRsGx9DjO28iFx5I8KEGdC
aOLVKFmvRsl+NUoYvRol/GqUzH6URCSZ1O8XrqJynT0NUMGJUA2TPvSEtMPYDmovOLlWeajyn/VK
bqLSxktKo3YgJnt5sKjNGFsapv04EkotXFE8SVcyX+YS/m65KgbPOm/bbVVXlWkbP6FQCdoR8Zfp
p2C+3vQZ5benSbGqu5ShULkiZr1kECS2haxj+kt4m6xfB62NNMx7g5Xk7wZb56hzqLniy1V+XDOt
C54PpTAW0bDoK0sYhxW/ZZ7NkrmMXzCYy7ILBPYrGRRZ+p+TFKu6wWqK+psMn2TU90WNZwgFONTr
fgrCGRQyVeWzFfS/Tgv6oFOOw7uhYAcatvuoSKKQcnDDhorce4iuCpVMVUi5C9J4LsuHg22vysDc
MtoANCeDIPSgYsq2RzngbRUcuKkgt+geRsvlEBN0oJmo15QKK+Rg8G0+10F+K6FomSW5bLEpBu2O
b953jlTTtKkIP0FwzPLjbTe1NABiuYxblN/reD2vh5SF7UV6cS/z2Tz7Ak18Pa+ni3KiDxqsSsFN
Bgs1E/cUPJDU+m7BFRgCiXIfC8aAxeyFhYdCMPSEZXJx9luSxtmX4TCu1xA7BvOS9quKEWQbbOlU
5mGbBKCRntBmZmS+CO00C6q5HJTpl+0ztizFmPZizASYc9xgnEWwuktXT3wrDm3umGLgXnctmVPM
KDBn/ZjzmDLZxTxZqCVlsnLmWSFLlqwUuMnSFCpwmLwXS9sMrbgRW8uCRgmnggasyqLPKgCe7LHH
jOmDRucSgcU4ABB9AfBQvgggA+5QGMXVRAvUwRipmbb6MhYwP92M5/DvJEsrWcHF9zgKonTdK0jH
mEQEhmw5OgHIF8NaNFvn0T7rZ/pBhAuzbF7FZEDWRaWEaAvzQCO94vIM8kgUNpQyXYf5Dr40WyWz
xyfl2BAZ97pVPiAgJhHcF4AVBy8CiJPYS9KkKCMA5PJBnK3DuVRguGU+B4bYYJukV4CUMZY4aGjj
6mtI9nr+XKZdmLInjAz01TFbnEK8IL2i5IwSGpuBbvxR92xzHRUTOZe3UFOowiStdpYmO5CHf5Z7
IFwffIXG4WIBCc8CjK2A6njncvUlyz/vYxSz2cya2TG3cKz7PmfGH+fTm6tTZwumXPSkwVz3vySr
u6fnozTesB1m6fxxFKnd3eGffjjPos9+kt5nn6WablsjrC8agKP/MBJl+MTUCO/LnVnia9wrHt0Y
FGNqaUT05CsYpTAH/r/OTdFi7cwTyB++Mw+KIolM7sc1K3/XuN0bTCr9L7NEAfbu793dGcGIasTq
BS6wQhqQbwCHrVI9G12Misc0ci9/jfZxXWLuO16L1OWvhOw8qqg761wdGfifzoKHtji+CQLZII/d
T9mmLWWkX63TeZYtx4pgXVgPhxvKJZvBfZbE1ZoBAoT6UZZQwtRoK2grr/SydRpXO8r7HCGVcU51
xyt3UNXu86PacCt7q5ioUdxXgjiIuyVYQnGc5YuqBiBEo2Zf0qFt6Wfr+SqBAQ8yn5bRpk3YtEAH
pC9hOwy6CPsbyi0N034ajniAMNio413dnJ9eXFz6J1PfGZ2enpx/9C9urv3rC3/kTy9urhwX+Zfu
lXdxdeZ7N+fO9cnFue8rbQmNsn5cQwuKs4rrOj2FuZhklVQFKnfNbI3yvhRxOGtShH+UlZsATvQk
JcLY0puEtmcdqirgGiwFdg8Ruzd164MWEkgc6fk6vZbFalCsYpg7Hw+HYQDO7xfltvRxdBfAou2p
Uf32V3mQrIqy7UOzESrXLArUOrBs0j80to+4ycAM7J4QbTqLNxABzlTmsFpU4pd2S8AhGOpJ0gqg
aIlbIwblSYXCXIeHejceaQz3pB4KSL7tEWrToZsDNpnGzH4cwHSgqlInS0oBVIPyRp8nYfw4jw/h
TxI+t5VfmhFHZMYiG+YsyNW+Ld6eaOEXT7IUh7rRWARpcCvz8kQLnhePsHZe+J8ho8p5G0KTc8Rw
BClc/yzVKg7Cp0pe5YlWg3aHBE0asZCQMqXub/r7i1uwxkoAqPTMrTTmsD+80KYBuKqKen+V/XO5
WudpC2hNbVnxbJFrULNRhAiJ40rN/pe/thAx2UIk/3yI9J8PkQ23X/mwabE7JV9V+fcXh9NYgrcp
UytuVeBbdknyDYQYp7MtoXI/YecY9FuSiQxpM5mocJhEEGCiu8us9GcTmzuHmd9ClohwP0dhIvDO
ceQrJCmm9yszcERNSL67Ffygms8D3W8uPRXLqmSHwNg+mtyFvctJzEgobRPUcD6t7Mn3VZCtSglC
WXlA2ct2OWLgCXVHP8zix5IULg8oe1Fis1g8UdrGbsHLE8qeDiVjfZfQkzuJ7/F4aimPL+TiC5QF
vjr8h6VV00uid+8OcXd2atKyQpvEptUoKFZ3SVHH9+GwmEu59KG0HDTLkTxLs+EwXufl5B7Ps/RW
V3+adUnZdozn7wHT5jNvlyeC9b2VQOMAQTlYLiq+hvhbYClAPyjZjkxYWGbfqw005rFF9HBR1nK1
CA1Y6zSB4sBXa5TjbSd1kJJEZ2tYsnx4064Wv0+I6ryx920IAB+Q+Am8ssebdJXMvWBeyL9dimrj
sKp+8U7k+xZZbNt+kuVnGSxhOqIAyqdb+R+ZEUH63vcAIQQ49I4QYKFRtQsw3YhzUO9liL70Qzs0
n+iXexTXQdHQhGJZrfb1wQ6OtweDgw/KZZW31hmrQmLaVt9rJACFcvYqUMoLFpdqc2XwI+TqaxJ9
b7HQOOYzs9ofaZiEX0c1f5lnD4/HjYi3BrLHFQzg+2OI3/+QAt+qELrddqDqhgh6raSt7t28UtJW
F29eM2lbaunmfdR/g0Jqrs7F1ReZ17dJvyOhY8IhoS/VBNz50b0Ko9+XzxmNbNaMPlmqrl5mqX8f
5Emg7gOXQfqZcPb0dFFFsnJaRe9MbdtMnbuqQ+fLIP+cpLenmdpbg+/OBpG68NneIXziPqt3945V
PNfB0DobK7tsN27C7SpZyGq/9Hi/EeYliB/9SMn8o7G6Udx8qIMq6lkDiAhLzkWZvOqT+o2SxkEh
G2n1uGw9BdgfBtuvb/5R8lPWt4oA8QWsH6ow85z43ZJX91tRz1QPDFkU1ne6wI+Hw40jg3Dr+r7K
4Km1elBevtjcy+J9GVITJOxiWEWZzXb2UzAlvHdujlAs7UqD1e3jWpJtqqiI11vxrd2xg+Hwf300
HGZLmav9xAFE96qpvHrQOzcDlDDeLdX9zemAeu5X2xT+F1jhA9PSmT+oPure2vEPCPGmNpDvHP3m
TX0x2O4vMota0m4C1eb7j0jVvev7AwQ/bPK6KoNa064uufS8PytiTiwzeClIP2dbvO8FWxrOAnWf
Qom+V75t3Qczq+99WxphwnBF+Mtqdv0sbdOyy7u3r1Tn0Nerc9jr1jlIj+r3ZNS5pHoXqS5x9PIm
nz7g1AiT1cFQ0/U8eBh2vLYCDeG2QbFlVigJDcG88ui5EXGrAT6zgENWVS1JowVjDn8jpGgVzQYE
fGYx/K+4L3e5YxmXIzob1Es0udWkVTIxYfKgwX4aYhNGRdkBnmO0Axg+VtmAd0dQJEpJsLk/BGHV
QFoizgIkI3XSlGOqGpRozSGqgXU0mIpJsmzS2r7kouez+Q53jEykjtpys2tOgJZ2mt0mEJt15/Km
ensJU83N8ywv32iqX2jaDuXatdq6PV8vws0LcdBf08ZJGuSP+skiuJXFUNu8nvSwfTNJN/TWw1DJ
pb/bObEZoAP9GNER98jYNvBkzA2CJ8Swx97EoNwllo0cSgT68PUX95rssB3uY4CHs5nQ34Eb1XdI
1OnY9C5Z1L5VovGQY3secQxi8rFBRlQY1og5hiOc0WQ8ZhRjqwvNc1TbuAJzH5dpiS5c66V6s64J
jRNnRJGNDO7AH8IJMUaIuoZwXcFAb5xbzjdAaxJuoSNyX2uWFQWlBz4bgQccme9gEPwDixvTfAdI
2cgcT+yJabge9kCJjBk2mggDJpObJsHYtM0upG3ShzN1mU1tcx/V7xcWR6OdPk0BAhbRPQFCasrZ
LNy5r/QrrMy6gJvCoWhiU2Mi2MgglmcaY1gKGK5pOaY3ZvbEGncBr0h2A67amkAjGYldoMpz2Y6m
NxerupB6zELUc8aGxZFtEGRaYKeCG+7EYhR5QgiHPYP0ed3WjQ2smAm058+YBZapbHZPqafyNoge
OwHj8WTiCRMbDgcPJxNBDdseecYYSmoiuLA95D6v2orwSwquemgVRJULuMks8gR9+zC0LQugq5Nf
fUAYOTQPCeCb2DYXHPBxIiyYejw2wPnHBkMWc10q+Jgrm10XuXKoIzW8wcwybRvtMoOHQenbKp2f
JqkM8tH8VoZ5sHFr8AQLeLvCcpzxaGSMbBsmc8yZYbmObSA+GWPmcuEQAbynZUVwdJoAhfzxyNso
A5QQRXKu6rJnJrbR9V5GQKC7WzfMlpgBIvtiwsMd020AqhiCqg+xGlf/VL9A8rFtWpY1QWC3BCIF
JciwPDIyuMu4N8HcYR7+OySv2nYkpR2Sgt2raAJqCfLoLrmXYD71ZBJ0yNAhBqkcDPUBB4FUqWAQ
8E5jTFwI3AyPKUQRgtxJw5b2ibWBkA7LCuiuB5bJ2AmWsB6DkGEfqhHwF+AIDyxqMqEG42NmEOZQ
iBqmY4iROXHB7vEEey8q2QnyMEu/quAmgu7OzR5tGWmHWUWmtfGeJFpHKmyNNsqGhAfaVroejcTI
AeVShE3INZiAcHRimGOQlo4hv3o7ut6h1cIh7Y5Jn7GtF9+fJUW0xYC5yhmY2qBJiL8TCMfEHVvG
eDJyDJs4NoH11BiNRn+T8zbQtaSaWdaeVASJcCPVL5dbI8YmVRbskgmyXIwM24UKgzjYVolQGCaB
bM7F2EQT60Whypk+ueiGurm8Wxw1mWttdFEHZMsu4wx0fgjy7V7qwGRMmbkz4TaUaIYtxip5M5US
rbFheoR4UHK43BVtS2gQaTO3gn3mBNk7HqdyZfnOFcRxDL2ZyctUAuWPcEFBBnNVFUHYGNzf44bJ
EXbE2Bbce9kiNoS7tbdp1droOiHvFm+Nd/7rWxCFPoB1iaFTlYjY2BM2RmPDIWDQZOyBLY+oZzgu
A38SFPzsK+F4n363EB0d2/LEvEOeGd+ZgvIi5SpbR3ebunbLDcyC00MOJMp/VQnCiA0FKYcUT6hB
hAcrDYeZBjJdzxt71CJssi/dZZ7cg282hHyBaVPEvW4tASnqELAsVisDvzq5fIp2wrIOoVAp1ycu
rPepKqOQpdYntjHyXGxglwkC6dKxLfurtvURFnV3SVR8g3c2YLThm7N9+P9P3LVsR44c1z2/wsvZ
gM73Y5nP1lgz0tit184HLKJneMQmWyRbR62v9w3UC4nKIssaHns2xSmgMyMSkRH3RkSizCeIL9db
ZHYF2CMMKqg5OobiBNY9eJ3JyBCOJHnNAqTlAQRFiq+q8J9fx6eXf56HsStt5/nPb6X58lWrRle3
T3t3eT9+fTg03X2ntb9W27ivquMpAL5kkeA1AZWG4DyoLFxQDhluydWFB9pmeP59NWIjyi430Ypi
T+DWP75srg9dTdRmSKetsOQzCCDJsNSB60TLDYgrNaJkqNjdPNsMXx9r4OLVNT8Zvb+gJ7ettFEd
bdS00uY33x99E9GH2bWSYy1YRyDCOrikgasKPFMsRg7WBiyUMvhPvo97WvybozT9W4/XW11Vx4ic
knsjqo8PLz+NT8/T0yH0SrUFxSZVJVUQg4c1ARRbC0RRxIDYDDZScmA9P/Ur1Qx/+HiBO1hL3ajs
xp7KE1v5bHorwbR5mW7T/ePX248vj09b/3AwVp8RIQUgXRIO+ueY6B1BdSjOEllQJlZ2iZ/uTtRX
sntrq9zEe8rxle2SRzlaryHbNeS3k/E5gKEPUUuDZxordAJD4IlbVgRIsXZv+u3XH+byjpXo4lT0
kbBB81wIFH+9Q9i8JjADEDQHTV9Y8cmAkrkK8qASHwK3gLdGCJMBurO6KGiSdH/8/rzkf/z+qhWv
Y0sjN/vtA7G/3AE1//cxRyYJBAKy1MSlHAqhV3hdM/jogWMFk74IZ+wZF3wyYCPObYefKCbGVWqp
eUhb1rTN4HBOy0n2zXfr6ryW2rEyWKctQGJEPAxGDd4JbwBBswy/1iBOGNz5kHm8vlRbbXPzK7U5
v10Z/cO2G/X6mdqnnl8aZDG78N3GNjxKDrY52MqJiEZwNZYpERRdLJ6FlP0ltrTrfv3YmW6p1Mlt
rW5GdXSD295Z2M3z52t2sC0CLojsomiTwC0NxLcJu1kh2gdevTCFBxZjSzAWY7Rz+6kz93hCMKhu
s33F2vS0A5EzkJozKUbOuQalhPbgmyzwhJiYNOXV0qBcilowBEZ/2f7szHXGVjp3ttqNp1xECeVW
VvPj9DLebukTu7bbfAW315J2B2NJQf48FCvkIA2ovVNE8qVn3kkvUs7vtzv2kpzB8burV606vqOj
ZnvrSR/Sjx97AB6hzYqcAHfJfqS1IIc5qiFXkUO12tbyrgC+EaRVwfYe08Z2IPyP0+3d+P3vKbG7
DdPKmrlaIqVzUYBMKQ82UjwfHIL0YFNyFvQzlCTeVGY3+PnQsLuhEV4beyq8Npt9du6X6e7z7Xg/
jM8PhzSB9G6P1G0WEbi3DIZVPIVgCsKxKAOwVak+g2DZ0m7l0wFbeazuyOPX8OADvS5j3DZOHZCP
mJdU0KsYZ/gDYJ4z54PQNYJFKDsEEPPBKxBY6aMsJV2yoztz9de4c2Ormz/FD8pw2UmH/PHl7n5G
7Xwb6+bFlo7BGcEx8VxBPhwYiAuhDNomxDlVNVfxYghBE7yCIujyVSun6glv9jz7byCT48PL3cN0
2KvmWuysJFTscpBtYQ3M2wKNeqFB75zkhjsjjRJdMLEedCVRx3SNVHvTpaMZ93+/9geCaSnLaKJ0
xUAUT5g4Iew4ASwmIzizC1kX4VuDbYdpJXC9NXF677x2rQfz8d/nvRiG4JU3XGfOwlATsKyMRQG1
8DDwyEHmQ0IQ5N0V6Qy5EqmDNMytXe2f8evt3eNsaYH++rfvFNzq7JDok2BVMaFIAdRXJSg4dwLu
1Zeh5qoRRTgvorzpkeaxzxvZfLmR3vrTBKuy4yFbufn85ZAvmBMFpiTpvR0yHh92BDZDxH9DYFIH
rUKWibVP8zhCM7G/6TxJv5kOqYp/fh6v9cGyKQmWmQSR0kOwie0Kh1wBOSRhq0VQYnZlSMsx2sk3
pxhdjRs+BxBKr36+F8fyiDBz/Ctceo6IN2TuDaUjgM0JTtUQQ1XGu2T1Kku7GOaqnarjl26YW1Ls
7QuVnr41JJtgU1E8uwTrKCUjfOk0xKQqBWSdEjPJWPH/yLFbsZdaa+FOM+Pa2s0JukLQ/MPj4/3N
4z8O5FobrKSaa0LalFypJkW7Qyrsk1AU/a/ADrJMiTcKb8vxz+Gm4x1XrbC3pxpQpbQlUx+mx2Ue
aFaAWQDFa065ahHB9aICcsqKGLUERExOQQMTArx2ElJeFiYfX3+AixsaNUZ3mpvTk7s9VHzDTyH9
dlXqBVNgPBQwBybhvQ02QkzVDd7y4r0q1Sb+f1XqXch31eow9RSbTlIdm0eAd3NN5QMxV41CYiVw
KhgZQXvbAVUhfOrsIi/MaSCbN5wvhjzneHGpEfOTPsWv+pMf9+v/4Ydt5vfwAK75zLyzyTkxrgaR
LCFXsFBvEdKEqYgPtVpTXi+H/v7L9PDhh76Y29vvtju5kaCVfdmhdPhyWoc7SsnMXaJ0APM7rpy5
5pb2AcIwNjLFOydAo4sYCtMgSoVx7GNYlvVSgSwZkZl5M979sJvifMjb39EqMbmeEmuet80tQHyt
Zh9EUchHoD642IEDiwyyAokHxGfACnBZ4Qw2gvuXS9LbaytRT+kauIzpZO/+dHc7PZLDIbPmSs/h
grscmYW7jF5Y6g1jQxASzkbCaLxDLOP2zWWeRz6/xvPlq0ZAselILTZnmy1m5E3/YPEV3yaVK4/e
BCyxLQqsAiF4CHNlMljq0uIwevWrHM/x+kqH244O8mZFHh6xp36+3+/SmTzstqsH7C5G6UEiNA3g
P4JKFwZYyWoZq4iIav/ydt1eawWWvUWXh+rP4pURi/ahVGMsGgE0a4Z9GCrwhM701n9VeTFw7T52
gfFxuFYKxztSuANt2eFpyrgdEDo38lqyGWVlViiLCFNNWCopZB6iBaU0uZpqDCtastdw+mLclVi2
I9aNPIg1PtwSIDhybu2ITRF3AHmNPqlA/YuIDkYj6unohyxZTFxq680qfbYarZWkg3wN38hV9uJ2
ev7ry+OX5wWQ8NeS7Is+aV+UwgEKxaCB/wD/QGscN5AqKBcLtxD5opxk3k60Rwp0Q9/kOjdetTr0
FJv83v5+evh53ayhhFLFzMkMCmiWOlA4FfeyFrhYavbv1KxxmLwVeTqNxEZqvgJ0W/L2ssOMM4ta
AFQ+Z4nxQaZCafrk1aC0AdutusJPedBMVqIpyghwp9ed1WLwM+5qccdVK7foKDOusx2E/6c/hXrM
c2sgUzn3gcx/UNSwSWotKR8m4HOtBOvigBvFKWfBO5gx7hLb2s11vpMCF1sdRtXT4ZAd2zx++UYv
IT5iI0eNmpR4TcZlGeBeUwYvKtQj4UHwU3IiSRGik+ZM/WQ5ZCPNppMrtYqkOckf7RObZBCGsRn0
H3OnTGj6lRALVAnosKXNksvBVM+Fj5ptueOvyZ0u71gqYW2n8dHaUUzi1Cz+46fyYVnQNEbYnLMf
gqsUwoyjttcwRBOEDwGE2IeL7YAGf8US6HIr+NgR3DGxBhEFUN7xa02VBXzOSadYpVdaD3w2Bi/S
4AQcOHafSCbyGrV9vyx8KGfUKo0+TpzSLnujD4X1z9NmXLTYGmNmXVjJsBddBhuAeqQiExelDCKC
UhdERF5EG32aga7a2VRHBCp0N8H50CjImVKUeSYbNp5rVyql76g3lAUO18bEoKpVQSnvuLKvReZO
f5/dmM4j3hi1T8RsH9B1PMYNLmdQa0zS3A9JV2rJZh4MmluyUli7AeYSvF2SdqCVDLcdGSxbmdkv
0/0X2hpyDsLKzB2cSiuOyJUKVZi1hpXRuYESjM6JR6z1u7Sn/gZTn2nhwJVWGct7yoz7B/yh/uXj
L+PTdHtCLlMUCsAPDjNyKiywOIDVgwIH7XLISdaY34lctjKs5D+ll3YSNytwdGykOhAHafCHJ1zk
uI6G6tO6SGI8cojFy0HYACNFMKhvNCy81aV1vH7VSrnpiK7cKje9fY3BsRuYgC+52pyD88JFBCwG
lyXgvGKmjHktgXmH3e5fBb7LcVu5Nroj161a2fcP48PP4WG8//Z8NwexbV1z/iTpeNECBAw7zlAb
lqCqjrYABEkzIQVYe3r3rONSpDN2tbijVfrT6aZ2QqwzQYu3RH1nrv3M3jRlJ5QvoG4wf18pO6Ez
HwCr+QBIWoR14HL6ddJ5HLkneVpcv2pF/NSRW24Otf1/0sGUY3V/7uPO1WF3pkEn6qz0JLWCQ0rC
GS2t51HXVXV/OUo7v+ytm12nG8Ld00/347dDZX9XCOR6m+EM1pJfB2gkDClZoVQ9gpeFnWibrUru
ImrSTnMmyDb3tMpY21PGr5T5OG3oCOGftyfBqTIzKyNn/rdtgUpcmMoGQy2fsgjgIR/tYGPILnMA
YlUvUaed6Fwf4vKelTpjR52b9eGrj98+3zwefh8NO5mSV9owpecUInYtj3xQyknyLVRlMoRLuaSK
MvCRvUiV5SRnNFne0ipyYzqKnJTMDqNusSmQH+fbbtw5oQ6/aXehC1jEAotiAzhCSFAvUmrdQVsV
APVyYRej1HmaV2DqfL1RR/LOnpHOn1WHQseffwi/m5kXPRzwBam3REEab7nyO+AqKvijNoq67YAx
ii86yTeBK419niTQ1Vb+Ds528tOhFPeH72tdEXdVQw5FOZhRIOTDKScn64ClCV6D0+vwXsT9OHsr
dKfV2Sk1dbJzm3tyUGpu5po/KfMQpdEFdMZ76ojSHqBasTAgzkkrqsT+lm+infRKbi41uTlI1hPX
uDWTrPRv893T/Osq344tU9zZORXqmA6sDlmnBKkD5JcwFqZEBkrjgA/sTakPo7/de1cvuH91U6u1
8R2tb/UKzf34Y/o4Q2uCccLOObeaPECPonOhhk6iqTz4MudVZJW6VJ/sRRkIGvtMlQ9XGmm17Lgl
BNA9dr4H2LhbAGd6IlGD+4TAAAwIJxiL2MsQe0OtlvPESvSrdpzlKKvpXWd6KkqfJBtWLl7OTSva
sl28qjlU56oZLDXjSAtoEK3GZo1O6gpygsB1advKBY7+5LZGLdvJSuFLt6KcL0/j5tjIIvaNLE5h
NSWDQ9d0IolZWDyLfqil1mwSoAQPr6HixbCtVGPnWdvNukCRfvn6ML8+artG+xZjylfPyMtnlaLX
A6UqqcUYMWfbuBFNtTHyYi/COatpzixze1OrzqYTgtynte38MJ/WWHR5g91rqlls/yCNWAiQmw4B
gl7Lgm0Hjq8GzSPLWdeUZXy/xEkrzzmIv7znqlWwY1r+JPAeOvE63QQpYatoRqe5AVLhWsB6c/GD
iBHOSzFZcr2sD/CNLsCrVsaxJ/jNukYybe4e7g5t4jO01o6DjUNgEw2VaxCD8Qek5jYAvvkQw6sb
ohmzFcp3tsR4e2gFev7b/d3LJI81Gzc7m5gir9aWQSgqiJakhsCzHnigvmjFbBByVRxZDtSIcKM6
Znwz8kM30uI9dIAibD6d7+Ef6GeZQcoGya0aZvuNOXHtNeOWrxuSjoO0k48da/rE1i3jc7HzfHtK
LDEX+NnBcAeX4GKB7w120IV5E5Vw+Y0jlMvx+za1vOOqFXbqaCDWIOO309PN9PT4TIFjn+i11rDC
khiCEAIhg3nsiGBgW15kBPFU4uvdHftB+yLvr7biipueuNM+158+/IV+J7DXi1yCKk5JM9RaFCUA
NVY5g5Epbr2zBSRHvW8vciPKSo0OtCP03K76zbj569cv7fECMyet50+KdUZiCxJhloVinaJeQMsG
5mWQoDLMZnVJNImrmZZaba+18n86TUvjiZtV3mp8vj82xG3BqJYhgdUzrWAy2pTBueQGhBAjEnVi
FfGaJzoMeNVMfNuT5nZdcnkVJgvQJkVv7GAy79+IEbAlRcQSApIma+2vhclnQa/nnS5Z+nK/nghn
h4X025IhwAKeeOIZHkN4BCMsPx3FlEwIsut+4u8w0HL6kXfcGL48bRj5/Pnx4afxYdq2PYu5d8Gb
udOrpOQCWIZP8ylwBjgbCQNw4kXW+aDfI629FOFc9Dze0Sjp2KnrwJdrX33/+PPdw/Ph+MnB2+UQ
Mv2wNSKVz9sD9xGAfcgFwbUaoKHeafHTnTaP/6aeSynO9LQt7mj1VK6jp9rsA+LcffPj9oeWDl7S
z8hZMF6qgUVpRs1iKVpQdMrdepeq1wjLRr1PPv9UiEYHbzrPamRrbLqh84t/BTKZDzLO7zkSDjDb
zvmr/Z+z7zdFRZGgTgj0NilEKZ/kUA3Pks7DO/EGRN1NcMbmdlcbHcabTUeHzaFu9mX8vOgXJhxQ
wNSx1MAlgXpGeHWDo4yoAy5xLmYXzYoYLsZo5r7RpyUdfCmOXfefH/8+LYvi83lCqZyOuqrBJEK2
1NcI7JEHZ6UBpy7gm/2G9/V4K2FkRxizPin78cs0bX75r2nz+PPD3fanb5/m8yJ8l4XZ1uy15lKI
IuD6KIzT+4uC4G6o0gjvdJFFXnRgpDvdmaxk79ZWRT92VOwW/fNX+lHciXwU/WD5hl4WfPQyqfgK
MkXJO3pdQAU+9TG6QaekWZIF+vFLafjpTK+8YuPk3la/8baj341d6fe76SV8ffmFcpTzOfb5gYEW
gXL7MLiCxyQ1tHGUBgyeSWUTB52yF56DpMHPnn6ki63QN1NH6M26t2WmWtTP9/x8d3MHmvFt/0AM
nw/nBVlYNIOlg4YSQBEolxrIQ64xawvgYN7uHW/Gf6WDvLmv0WaSp3mxcdJr4vr9pnnZiZ1zD/Qx
+xeZawHxM1pRjgdeEPwiDsJkWBuDy6gXGddyjjOvPtr033QCgTsbZToBvunx/vHp47eHDVVW/O7M
y/b9Tp5jIwDhDIKawAA0PJQAErIRu0X7ypQv715VPMhzbgftLre6dkDy+Gl+0WfPKSzdgDQh+ApG
LIzTiAQqD1Ea6h0OyjiXnYn5f+MGXt/4jdSfeE/q/+HtSnrkuJX0vX+FjwM8sB/3xTeutgB7JLst
Y25GrXKNpW5NL7L8fv1EMGtjJmuZNw3rIJUqE8xgJcnYvvjCyhG87Wm1eHmENbpusqE1M6EY11WZ
oElUFHJVaSJ8DmAwpUhAtWSlpE7ClQssHMMjzqdFfee+4wnNaSejN6d2zCryVA/526e/7p9/XzXJ
YzzOxO1AelQ/oDVYoikJ3k1hgWIIIRKLPCNwHChDY7AluFdfhYMeuptKOFVW+5van6JTCjc/wtnG
X3+8e/fxBQzLESPnHvFRwFAqNoJ+4khsmH0iPqdMlAC/jlp4ydK/koXYl6WZj2BTN3qOtYVtTOzT
gbQOawowApQZ90EqLAjSWJiCCHeuSeEyuRJockmfBU70hFG0I4wZY7/TppJMw8/S8L6ghcMHK1zz
DJoeHFCFRGsCyYMcLYVEnh38idxz/3rx1Kk8J5C8k/va2XcozOZytuopW2xc+vjw8a7y2U6AANYa
rrnSxBssrhHeYrUEmO7Bc2qdYtHxq7I4k0ed0bvNfc3EFJtqrLnaMie0UJiX2YfVjw/L1cfN/YeG
jygi+0mGNUYRXSRExrIVODEyOOpZoeV6FRZg/IzT+Jbju9rZdCq35xaxXqIlJdpHK9HuxqPPKFuh
hWCAcuc1svQUh5MBdyU6JK1R0Raai2HxVQBsb84GNPeXm+mt2XQVLpgbk7/8PPszwpiPs9v5C3bU
rqpLDtN0uAbhb+u5KoR7DZNksBAddxiWpYlpaUB1dRzh4333z/Ez/lnb9d4/w8KcLd7eHa7ftLJO
Hd8FZ3K92jHBPK4Wj399fn7Ye45iDwdTxrhSPCVwiIGX65MEgQvHsDLnSPeaoj0BZ25HvWmfrnoi
zfv68/HgJbUalFaoVP0XQ96Bg+0sCqGeoinqChzASGQYpZI5xcAYe41VNHHdrvTwRr9AZ1VxJUdq
ZkcMs30xktWMpKhUMFRFhhVUBiPlkXriZQStCWpIY5E2OEHn1E0zciua6r0cPZvi93H5zTb3XbAS
957nIh3WkVsMPGhiAwU/LUYTuS7KFHElGGb/mJNwmP0d7UTcujORmekVItz9/G4Hg6n6Eo6dCGuf
5KrMJfJYG1hVMQsKu0ObK0mbdmOfAfLA1UZq0Yk8w5d8FAfH/bUrytktD9wFkgUDklsEzIJiYBG9
Yg2a3oDLKWigTtiz8OjJuI10ssOlu5BmH6WfvRyOEWbRvPNcU0QqEvjJcCFoT5x0lMBiN9oE6weG
4mMu35fuoSHXnXUpD/ig3cJ+eN6sj8rVBSqbumGYNJZSUgSvxFYezGsaSQCnWwirVGkIIKYb5mjc
kVydZaboGNiaNk9/+Mf55vlx69oMoW5ebWCaSoETFvxmH+GtBUzeqwhuGi0yl5B4umD7j0Y/ZW81
N920And+XcX56EBq2nj9BzeW7zibWc6WIXC7gP+CnPUCLBKYUXQYZmTGeJfO/b7HI7eScdGTTI2L
BR7u15sP25ZN++IF53Z1A0oXJxOckCmAcyE0UwQ2OQbbNQcV7IoN+fzGmIw/EnOat14449aL5rT5
smXztPWssTX+IETIJmDRMbxnsH/AKw/CZCSR5V5wI21Ur1bTfobN88uEyhMmMOvMyu6XxY+1ffaB
SLjykzqGCNsEM4m1ysgSF1IizBYRuMx6gPAf7fhmlPb5VvSeP4YofP44e14/PO69Ml1VpMxCUuNI
MshsnbQGszJzIuFg4tKrSOVZKHs7aCvWoveyMe8jxrC/p9prYWu+65pFYJimr1x7xnFqYI8YLPeX
OsGSLHg4wTqN0WWX+WtYLOgg3+3EOJ1H3N/STnXVOfHdukdeFD6+rJ4fHjBae/BULNK2OrDDEOuI
0Ck4/xlzhAaRnBE8OnUZSrof+XTUaX9LI/2Md461mdjTjP3x9VCMfHyaFXgbXsOW5NW/Cl4QixSa
BXwSZl1Mxve1xWHAVg7BenLsGYO+ezPGtlov0GT1RMWADSrAdgJfjxE4p5CIRxVp5SthW/cPH4ms
eyLbE7HGtJq/fPjh4cOHkacKjl1WhlGSPfZm0BpcniIpge9Vxuok7f9v6Yej51xIPhzdOZrZNO69
2KWy2pn9svr6DNatkkOwbviA3lwG3YgwA6uRfTJoMCSER/bJYJwXVLJ8OaCCg5+eAl5txJ53MpiL
+XJ5EuD95u2QvwQHqdYGg4rfmefURQoLOWJfmUJEAavD6YSmbhKqGB7tBQ6POvaJSP3bUd5ysehQ
AizAbNyXg/0wiQoKG0Qp4HMqjcBbamHFpGAJiz7TbGEDCvdaJCOdxb/SU/jCYoVFDkO20/9aBpKr
owLgClyUkiXkeE0WueeSBwcoJQNHngTzWzJh7QVapF8vxaabrdvK0U6hU96wWHMzWuW9qLH/5Q6L
emo9m1E13e1ZyJVoxxZY9UKqRIJjoNSTBz9J+KK8+Pv4nuBCM9e1mEahl3SxN1PCD/5uRCQkwTZj
yADnnQV7kFtGQoY3lV00iinFi/67iIQO0h1Pask7wLQl14vDrnk/2TYyRDiQwPbyGIAWHhStRZLc
zF3x2WuYq3mtbfO+J3OninXJl+NUD9KBLlfPFbb0tBh6NFWNIZzeJuUTld5imidwj6ak59iNAkkP
HRaAezu0NbvMKwGPSrtHnU7IT25rpqUW0wNsqdm+qHLx8vnpgLyQdMCkZusTGL2O6IorgPVGggXV
B86h1DZypZQegUKPxrlpn+U6AnA5bU9xN3B+dEIyIRdfg3cBLBiCLHJgl/MEDlsROfNgTNBXBjW2
DzkZ1theb6fQMcXgy32mKG1mH+4fkGf4x9XTEzbGawFFYEDhAQtuZkbIpYopItYd6XqVIyogZCMp
asqIBOX8uCMRO6tXi7Gt+1/v4vYI22Uaakjeg08hnCCsIM5CakW8ZIaALSCDUwkU7lVJhsPo/Z/3
cL2RvSZLxrIbsNTHbLSIZRsgFdsVMuTAPdiTOWsCgyCgOyAPlizEeyVFCKEoUa4z03bjn8PSjYEV
S7OaKqulZXs7fbl5+lydxN0Wk3tT3cPuMlREYqxEIJazJNS8qUqJce+TTv1IaDvmTftk1hNnH+b6
NFv8vtf9thLUM66j5zmRhCy+YLAUOHlRqbjkcxRRi9DP/x2NNZLB9GQYd6R58/bu5XE9w7XoBpCa
GwBqPjMWsR5XVn4/WrAAPcN/o2XgjeAxyi6YeNuRT5l528sjqec9qZf7tiyz5WZ2f6ix2VXygZKy
3nBSFKaAGJjSoWhBuA2+wPpjxeZX8nZaCVrh3TTasHQTqo+7FbYbq7Y1u5XbAnU50KdSa0VIjER0
eeHIl8SDC0mkqeGnZJ13r5do3QtyCsWwvXzTzqc3Sbbnbf/XIZxT20JZG000KcNBFmoAFxZ2MBIJ
blwRKTPvRwHcf/VCOUu37Kznacyk+QHKXf6CCa5KuVGdl1r3tPtcK7MKmDsiE1OZYCOcv0gnS5AO
S3rsW6Xy6/3gO3lO3Li92k67Ez9ZztZml377ku7etQ3RUskpwBSJdAnpnuE8xtQhiRo7vHqpokh/
V0O0vXA3rfjTqOByzvbRjPhzuXvZPK8a9v+kQcPwgG8q1WIJcD7hC/AgOOXFRO7VaB21wzQSzDvY
gOXc7Q9o8J1X909HkWA1IAfhKKEM8eTMYT5T+wgajoMQMijNwT1TcsSeOxqplaLTsAW/3EeXVn99
+rDvT1PdDgNaSuG0U0b6mhiRXwMzSyIxybmJOal+YOlorFaIeWeBzecTTOLs/sPjw5emUYxGIkYu
E1asIzQU7CgHlilsbc8yZSEaehXwdTf2CTTE9upI6o7HtliNDdr3b465MQ6SS61DKt4SGhx2yA0U
K6/AlnUG9j3njuurakuPx+9Lf3zHTSus6s3gwFkNen11SESg0Co7MBEMWKxIladDZU8W2NYXdLVm
EtyFfjL9MNRIhM4+XNL1oS9h/m6kaL1GgjYHblWMeEpmZMfwBYvnAxXIAWbNqzUm3D29EXrZQQMu
l3ZcHjZIEI+zLpVkRw4hdPiA2zmVkkxB5Ai2uSgyorp1JEpPk3MFfOHzUYnOU07RSExubGdlOw7a
0s12FFJH6dXnj08HiPyuoQJTKnnqHeFYcCUExzCpFyQZZ8CvYMUIdilvux+4layD/1iu6Ngx+H7o
z9B6BTYxrU0sJEmFVZVIHafACc8gLhK6eNfTrtNtth38FHtUvdgIve6QdC/XbpwF36IYJqc9wyKN
ASgRQOAgaCBWGIzUUk+sh00nCzYgYsklma8ASpxTA+uO2bhidin1cBI8zP97cSgf1NJU/nCHP2JC
1nRMTslMrHaBIDIiSWOYMbFVRMejHD9+1SP+gC/HOLnPj5vjrnO37/D/tWatvu/ankAgh3s2BXwp
jw3ilCEWN5UCG9bkksTFzpvXZaTetbK0ncQ2bde7VQ+SuRJ8XLmzgw//vtl170UgSw3KBhdpiIGY
ZOG3dlhfCocDGCL4Djj2wtGvggzaSvD9m/Oo4u+bVl2rpZyu9dVqNo7rz74cA6OHuIO17pZXeuLM
Ci0cTEWdvUbWWg8rS0dSkEeEG5H0pRzyxcDz8R3NBNadxMRqbcZu03+unsvdLtA3uEuRaxFtsaRw
rNpmyL4dsRLCGQ/+L9P0QkPCOubJ+o1y18pppvt0Tedjir2JhsMK5W2N8qBEYS3Bj6s9UbS2efWK
gONnwOnLBq4Ir1X495Xo9uJNKyXriL6eVANh1Vh6WOwJ/2GbDPTV3nLOuENQMlLlGERbBq4JGKDG
R2aTTFeZevsnnClbw8ut9B0atDWjY4jork4ovKzXCCpjFcFsb7ddcCR3OVCsRqZYpYGcts4HUgy3
xsF5KZy9tqvh4Smn2xke7rlpxZ4u9rVc8erPtW6sfx9ho9bY/ABHrp+GWJEEd8ORTJH2x4JG9dha
nILLyiVVxsZ8bU4UHnKm08r72AivFtNCTvhyNmZ82IZ3pxzUAtmfEGQJrgHWE2KfbiR2oaqoyJzS
VpyFHTYjN6JpOY0AwpfzQ73yn5v7I+LwQbmDVlIMVFXAeh3hwUhxEbw7l5B4xsJGPAG6Px5tJMai
I8bEmxqxaG3KZkdjAEdMDb8xcEFcZInkAC9aYGzSiiIIEtkiSNslf3W9DY5/hkkLrjZzcKxzzs35
BLJRtg3+kOkGXu8tdkbYfsITQ5oEwnKiHEaEXaLEJm6I8ibzxBj8xhfIDXbjn2Js2l6+acWUHdmV
7ESJ/K/x+4SoTVP5CxCHfjs0pwHDhcGhEAmsVSysthqbI2PuUluDD7BGX72/8ClndhhebmawlFO/
EL/c7bEGaoP9tg5G6wALStrDWa0T8Qk8RFG4hE+CkqITSM5dmcQoTgw5Emuyv8BjWa46OJ4uHaUY
SimQ3NHxYInTGOaWrBDHDXhcXngjk3Le04vxtkuWRnvPTSPxSk6nwehidIJt7tf7+Lw8NJjmmemI
DUsQVgdrGuxbcMUZYVIgKMk4z846A4dhb9rnLztCzcbN6zb3fzTEGwN+feAStpmCVw5vGX5pioWU
8NIleIJMCCVA4YGSfhW2gzf3J7YjXGjmNF/a6ZwWlO0QEF+fPj4fseCImnGAY0GCcghWYjdDI4hl
ORHDhNKFq0LriXHcmupokJv2Qbz39Anu7/n3R7CUDynCvT/tY3bUgZWTIybCucJ8Vg5EapZF1JLJ
cpYmuhm5Fc12VuCSj5ktjsBw2FtNb3us6XVtxI3EzNqBt29qOxQsdrFSkGgpyO2RUeyCAfn2AiTu
6IabVlDTkV6PbfWfEpa2DX2Mhy6pifsEeiBYgWEjLDfwBfSu9NQidDZd4DL5d+AfP504d39K7ZSm
AQ5HV8yd6Sx9+/bumH6M1phS/bcaFTYVIx2xEnM4FHlWM6s0mMI5OOasl6+XUjhIcgKZedcpjoP5
yd6kzZih+ru7u1Ge1xTu0WuRMhbs72fhlWpBioTdAa5xSBf4tWHEE22+7u5aCachevjSjr2tX2Js
2AqilzxnhMNS2LdSgkUnUX/XKh5Nk5NXsQ/BsH0x4UIr5rRRDH65VyiLmrCOTYEUaFLNdiVS2Vhn
pMXYs6/9Ygo2VTAVWSckNu5y6lTH7NHIjWC11Hss2HpSJDW0r3h33EgDk5Fqm5RUNeYrOQs0EA1e
HpzLGpN3mpGUApWwc0Hk64lp4VHn+mi88+0kWGcRrA/Iv8U//jGbbw4x6iHhCPYP0ouCBYeJa3A0
QoGd6CMtHPzsYIObcKntR2kfLzuKGdtZtb/hz6tPD8+rXzerPw+nwhBgca4C2r3maO5gFS8S+xps
BhSRihupTVJU6qpapuljTkXRx/e1k7IdS249o6Ot/36++Z+XLfVEpTStOhrbeCL1Jjj+yHUQYKdZ
DQ6UYYUaxg2Yx1fFAXajn0iabK+2cs+mO41RPn4Z71aPiLrHFP0xEfw+85OdgLOKIn8JrI4ELp8t
HtsPYZsr7UARqavCANPHnIgFTG+8aWege9PS3c6rL/eb56ehdc/7+wFAcNy3Jysw96TjxGRsdMLA
qQUXlxPpXcxZ26QuwCD2I59p2oOX2xlMi7oc4xOurl2AFdzFIbxqqGBobw1c61FaLOA3FW2SFB7Z
WP6eNYuWK82Sv4qa4Xzo9KYV0XTkXstrAt/bpg0Di7dUQ41Yys5xaSQBQxUz79hbRBYNRmPSSmTQ
QEm9upWzF+dMPHwESAQH33RemZjNRjjLCoEfSHFxEzE1+HKY+i1UGHgpxGArZAGGJ7HYUdN7FpkH
nWCovq5t1+EJp/p1He5o5zCbmjBszRfT+swKtdl6oqBSbyvncZZWwTJDhYbNjPBUdi5URhCwHxI1
oVx8WSegM3F77aaVbNkRV/UImXbv/s398+rxHpNq4NDfmi0lQ/2EdqYTmOlR4H2C/T8A1wRC8qOi
2sA1peLV/MijJ56hSB7d2c5R9eZox6kW7JtSyzwEt0NDzeEDngPYSVtibyYswBbgxyDhWCCeRwfe
dSz5OkKg7SNOnAbDxVZ0y3uij0Oby/unp+WhM7hGFCG+DJej8gVO3kQTtl5NWJ4fNEngitMkrFbx
bN3s0bgjsXqL/NDw7+vnQxOWQ5wCHsYdB8PHaezZaMAKBlODEoqixGhtbjzpgzT74VohpmALx8UE
bPFlUxOcZbZYDcej2PaSFLvmPFiZinR3cLJjiT0c9+AARhIVqCeH57y86uXunnDibNxePZ4Cl3Q2
nYJc7zuSbBYP91+OINhDDTrVifKKVwOdZMHutVjPjd1RVZAUE2StIdmMcnOTv273748Py816R3R+
9/LpE8zrW5Avzj7Cwfpptlx9M//rG/C1V4/ffH58QMItsCGfZ48fVrX07/l3MGK2F76t83qePf3x
G9gVv33eLL/9ZujkMIQcflvA38+rb7+hx18+rZ5rU8nt9+2DLw1P/3/Dw3+OZvW/lV3fi6MwEH7P
XzEvBxYOMbZWPfAhVBFXU4827d4+SRfdo9BaWC3L/vc3k/647VKV5k3z5ZvJzCRNMZmgBbQ82re6
rat78iZT7juPyWRrCXRp91f7LhCV17tPoFw9VHN4g+sZhF+gDu1mF0zGU9OS8F4127Kq24Ay99vS
cJ0fI2g+6PqSsjgc2wJ1O9b6ciKUWAbc8kxPGjbC2DOuLDavuwpJSIErNa6bY/jAyraqA26brjQ4
sl5FcYco+K2gwEoNC1/dCEMiw/dRFLBFFCf5HNTL7wg6yjpZqJXIWPC/dEHP1WwWA2X2pVhrWjrC
fw/MPXeaEnSrzyD3lSu00VdknVo0HViChufN1Did1BjyRz1UvjfAn25LsqclPCUK/la13qNYYpPy
uzbc7oEapxQFVTkiqOfrADiXSxVgPG3KEh8bQM1oe/QXj4xYqo+bg6A3kOPavsMQXsqkyLJ81msu
sPnUHMsL1NiU+2096kSP7ZQtlZilEK/EIuymdahrbNmia2Gg0MfFC/TWQHdobSt91GBrWejOCRX1
KOGSEs/VK63YpG7dBZ1wb5KyogiFEkNd801HIjSRIo4GsI7tEWuWzNMoxNDp9ZhNrCr6o4ac6+NA
R+hqnszysF8Fx0Hn7vV0AJS9tBvp+qYv2XmA7fE///tnDy8a64H5QOVKZDAYM6Yfn6A/AQP22NxE
wykKrlArxtmL/QNQSwMEFAACAAgA/ARrSBXbfzCBAwAA8goAAD8AHABlZGl0aW5nL3NlbGVjdGlv
bi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktY3Jhc2gtdGVzdC01LXN0ZGVyci50eHRVVAkAA1uE4lZb
hOJWdXgLAAEE9QEAAAQUAAAA1Vbbbts4EH33V/ApcIJgrfsN7QKB4yycJnUQGclDsVhQ5MjmViEF
ikqTv19SN9upIxRFsYt9sSHOnMPDIc+QF2m6uF8vV5/R1cXyZnGZoFJUTDHB0cePqKqzEisFkt9D
VReq+mL9OZk9iKJ+gmp2iRWeLR7T2SNkn5iapaKWBGbX+BmnRLJSzYWEmay5Yk8wu4fN4qW8xYps
obqQEr/+tp368SlK0HU6T5LrtBlEZ80XkYAVfI+ZNtGHW3Ry3sP+KESGi1X2NxCFzobhVEnGN2aA
CF4p9Li+SpJusAe3/Can5hXbcKCIcXWOmhnbJaOT04mNELJebCvyfJ8Qy1DNJa62E6cPOG7m5wT9
kPTjyt8K19/7ips1HMoeU61FuzttEHv+PrKdMUngBciSF4xDq22hv1OlxZ/9mMTTibebJA+0jncm
+Vl6f6D3LBfHbVw29HdSKHFVc7I4wn86CRqkm5MILGzZlhNNwp7Mily9k6jQC1d/AVfydRKNxOKR
mG2NxOyRmDMSc/tYSMAH9Py0MONrsTPWxPbanBDijMa4K9xyPRcU2pLXCvoD1xe2KdkcF8WVxE+m
SLbfs7ieF9lt1pJrv5cS9O/AZEDv7uHh7pnU9WsJe5+mTxwe4Ov0ARd1n3MhNzdMO7RN0bKCTlbo
0jiEzlVjEvbZfoWAcE8AuP+2gM75n/FXoHdKfugmJVCavvy7ERjtBGY0a0lKKXJWAB3ZrLsmRXvr
HnAl+H8mP27l09yysJ0hfX+Yq8LQ3mLG11vdQekg/v+0MqfrB2BlXqCP7t7KFs/a3oYMuHHWFnNa
QDM4HbJady8a02nGudBefDHWGjIagLau0zUXGkZZoM/rYcIayw3o3pszCQfzVtPDxJPzo0hTlv4C
etDmFvLDkKa7uyGTQA+Yz5FdFx2kuRxXfPUMMi/ENx0K6qIpjzOoxuBFP61aM3VNkgZZGPrWjuly
dfvIOBXfkoSyqjRX4psijy3cVNYbmHOHOKPMNwK3VZhqXNdMqR/arkX3cILo5xJXO1hLcwAOenBA
PR+OgdlTWTDC1LwQFRhI16Ro7GQR3TNR090NuTlm+vVBvpqTvnwLj3bwIINRuNBYfR9QA4t3sFAv
+Tis0P+Xgpt53M4R1HaJq9EDYI41OdXPlebV+B3ynTx9KjMhCs3bGSDXTiPZnpC0zuQbUi4Uy187
Qf8AUEsDBBQAAgAIAA8Fa0h7vIPkRA0AAIBzAAANABwAZXJyb3JfbG9nLnR4dFVUCQADfYTiVsZ7
4lZ1eAsAAQT1AQAABBQAAADtXG1v20YS/n6/YhFcGxsoyX3lkgSCIue4ja9pYsROc0AQBDS5ktjw
rSRlxz3cf79ZUrYkmytb8pvsCAFkyyFnd55nZndmlsNPv1QJ+j2sECEI4wCzgHg25dLFDFFM3M/o
U12nwUlY5fBrmcSICN+Xn9HL15j42A8QodLG8I8EnLMAo1pVx6pCkaqaZJBEYaNQXKgavX13iJI8
SsexQmGO9l6hk1ESjVAWNtEI/r8ZqbN78zBT//jUNzPGOHXFgpl53cw8yQK0lydNgA5UXSdFjnZC
GAYlNcqLBkVFPkiG40rF6NMoyfVlB28mV7YXfjaOz1129fgPgYwQ3vnMsjL7UlZqUFRfA9A3idSl
OcKFgNHLUmvrUJvbxEVbH/Lk2zbaf73vCFvY1EfvSpUDNA62fdv7ezgLnGWhStXjLMmHgGmVhSkq
SlWFDWBYGyfpEnk2yaiolHF22OcB2imyLMxjlCa5CtBzZ1xXTn2U5M6oaUqYwQA5fxTpOFO18yps
Qmf344HzUR39ljSTH/8aJ2nsvFJH46GThqfFuLEaVTeWnnja1J0cWyuFrB30qohAVt68L8BEnhlF
v2kFHYKcToCjRdbPkBWhl2kS1sj5sz4fphhXEXB4PWnn188Ky1SchEuLau9qxRyelqreaXlbRikN
ipMlmbIbLaAVtTOumyJ7UywSdD3gwwhUqb+kxdBuvjXPwK6yDJwUxtitqqK6jSGUFjQdAUTvJ/Ev
SaqQ02TlmazOArTxgQF8ADdDz4604KNC37OD3iR1o/IZX/bANmf+41MQkM8X/zh7tdd3tWe4GhaK
y1e3f4z0CrUzXTo6RZZj80QdfU0aa6Kyyp5f8lI3oJ4tGRXsfCkJWhxnHNTXrpsm4CczMxc+lrAr
1FGVlA146nK+40T1jPE7sQI+VbyTVFGq7HJUPm8X7UExhrWgqNA4D49A+6ZAdRM2P8EyNFCVqgKk
JQaOM09WK7w4+lNFjTUA9SfSrSQbWvXx0B41WdoDBGO2y6Vg5Hy5GibzWLiEks9oS8IY3vZ+CNTA
EjixPhRWCh2HKVx3NG5QWRXa3vVSCTsQLPZFVqaqgUWtH0rWbSOUiqBzCJAbxvr2Sv01BsgQ3JM0
pygGfPsmz23mc39mrb08eYJNRNLJ6ARGB5dAxQAgT2A3BQWTv2HpB8XGsJfmgH+lJ6X+QmGDlia9
3XripP5qdb9OLWCocr2TKO3MJWwnygYF2m0AMWwHdz7U1TZ1QUrdnKaqHiml3StLtdH+3H59UY/A
FLS92mCHJqoEFu4dU1WGTaOqvIsq0FbmONv3SJr/5EgTkkjmbvzroanKi9y6Hl2e62187NERB5sw
FnzjZ4+HLohaNn72yIiTNiWUC3pGXK6GkJi3ufwFAqmO8/sIBG671N31ZIDezghAoHdUHCtdNRhA
3rJVb3fUzQS0y0OagdAZAMIoiZlTj8uyqBortEuQvfW2AMKiYpxCGK7QmVIq3ravBLgV3wo1Zgie
7bpCTHeVC0gxbkiViAc+sP96H30MKzDwYYDA0MG2vm45x2HlDIo0VlXtyNypXRpRMhK8FNxPozIX
x+AgWQQTxMPcOXSsPDxOhi3MVgmiLPCMKoGUQ1lhHo2KyoqK4mui7M4o4AqdDW8DP5A8jcF5NB86
p4qTChKkojrV/rUsFdNJzGdxkOG0s9LWiCC9b/2HXwn9jLh5nZzLOvXwwrHNJBXSxAv2hYEXn98j
L1VR11ZRJcMktwZVkbV5eb3GRNXzTHHOrsHUAi37qeM+E9Rfb5eaUeqJOdZFzfo5cgmX0zL8WnJU
h5l6khRdVKyPIdf2PCmFNDBEsLGGJ+6CoSQLh8pKizC2YBUo4csoiZU1CvM4VdVjpecaWvVxI20h
IEYWa8kNSNS/PSlmenTq4UVg2/el769SIqCEXy91+efu2z/+++z14eH+l3fv937de/vsfxq5qMh1
ST9vZ4+27G2N7SQlXSGtqVU0rpLm1OlWidcqBMuYwbgEwc3ZEnKe1ngrZDXLjnQlif0CJ+HDqP1m
DWARHKrGSKSwuSchOrkmkUGgKWSYLE3hwe7hl513737b270TGrsgd/ZcpFbNTvfHKW2ErJKNXiH6
+jyBzqBxczD5vl+kSXQKctskbC74y4tJ2F5bJyMFC2aVHOus96gqTvTBiKXaU51Yu30/rR4nhC3y
T3qJVkpgNd3Vp0aDs7MpwKMcN5AOgh0p1NlUHaDuQNLS+lRFah2FdRJpM7MGYZJabQ6d6DOba8Hz
LUv1f0xSW+ekqL7qtfnaY5hM27Ux5pguqDqDyv1rFNP7ypIG/p8vh7sHh19e7758tfue3ImRX0RK
HVlhWdYO6Nme5k4Nna9g59eRvjSZM0L6iZIBJjbkn4QuMFYq6aU1iLM1MNabGSno7tsu9ZlnCnCE
TrL7LNQlNzhAvqDEdGGrVBek3PwY+cIQc4vb2SjnNbwP798sAkhIV7INQGaAIHmZFiM3AM0DRCDE
0VV2d1mApF5hbh2gSQxw6/josB3ug0BCHYN8S+9VJkioLhyBU5kKR8bY3dNXz6dVXdSJsvD07FnB
JoSd7+2HN+joFLBYJdkxgndhuQ3TtDix0gTumct/3MvgpUUUpqOibnrBm44wMTD1LQTrOiu7W8mg
CjO1AE7BGOVkA+etwMlszIQvTHBSnX3MBwMeu4GrnofnM6dMlYKgOxlYrd6guJWcF/quctx+jSBc
8acHsxcNRJoMhPEb6HU8nFEJMoevalLBWFUHgQk3RSrUM+X7rr+6DtP5c8xXnzsH/LF7z4/p3YNd
ab0oAGzgxKWuya7cu9EL8tYz1VZUSHLf5XLNXH8wTlNrXKUr6SRt4nLfX/BopMDeRbUknS2xfExi
haJRWMEyCruDPtTXxaIb1bu+1fXLcZw0xWwNSkWjAkIHGKQJh1asoiJWFnGPksaC9Fd/s8u02xWk
e5Ma2OqjX7/cMjNGZyCWFnuSNKN5ocy0EzHITH0PT5OPvuqY4XjUE3KGwJ32VF0bDiSHCHbJ6jS4
vX28hI3Y0uCtksLWKo8BiVgNgNXYCuFbDua+ABNGYDGmG0ymmLg2ldjzmXFvlKYA0LuFxctUVjyD
Ii9ypU8ibp5zLOG+4Kk/63m+6L0JfrXKqmggh2tPJcOqrWpOikQ/6j6XwekrmPcL8mP7YPiknv2C
//jXix/YTofZD2w3TGG0rYO2pGbrI/MdWCV3wKm38Dfh/QQfrP3Y3oa7nPPb4EsJP/YGP1AM4MJn
rRR8NqOkhh/AQg2xBvwG1MNnXsDHv8Pj8KATAH9vx91ub1F590N/gsbwY//lwcHuK1sPqYfpMRnB
bUFdyRfsCtTrTUxdjOmsG20Rtr2vqizpOrdilScqDpD6piJdG7u9zDUvdjpDe6PyYTPSfvUc6TqX
Hu4uR1nWe+e/drX0VqSVtjKtIt+vCtjo69rk0R09nsCr0nOtyuQa6EqkbjXzpKQUL9cP5wcoCsfD
UYMO9n493H3/+0+oHo2bRte24+IkvzgSowETtucJKjxDTyDlgj1At2Q3Mwg7fcYXzOzOuiXPxheE
sqvHfwhkXOLRK61jOsf77ZY8nyQlvrlbcmZ2m27JTbfkplvynrslmdCn0lIKUyWeclfI/h3V9Z5Q
tyRzA4xtxjCRxhNPwIJyExZk06hxT71r51Qxxu+Yqk2Txu2SJqjvC77xr7Xvp5nQxSAqoxsfe3TE
Qbor/c0+9ojo8jnb+NkjI47oRxklF2biJJd38HYNF7cPwaz+dg09eWkzlzGfG6J+r/8hTBj6XhvM
vq/Gv44XDwtBzdmYkRe5afx7uMa/jjpfSOy66+1S32/jn+bIswnHTK43R99t41/HEHeZNz2NMLXx
A1meMJDlfU9t/AAacW2fubBvmMwam5DS9r7plryzbknNjbSFR4nhMbeH5uY77ZYEXvQDrUK6ZEF9
QxLTbsDopltyLbolNZG+zbE3c359mcj2yco+Ij39jO+mpeweWsqAKAY3Yx8uWFDpYGL+mUv9phP6
VPofNQbEJhBkskXGit1LGLhy09q7tq29rHs7H6QV0l1g2i6+RCunj71bEnTn1JaeL7A0liz6AxxC
9H889V63DiAPe8z3NwCZAaI+ExuATABJmwrf9U0u5nEDQOwmrUq98XrddqMVba3Z6iTfHKeZkebk
6xyraw1o/zwdrg8jz2YEC0yWNSJGn2RHKUAimM1cz/exARJf+v2QYL5pgeyFk2N/5qmTDZw3gtO1
JRauXHTw6csLMROhGstNC9YDtmAxGUCOhwmTZFEmJ0i/M3C9Vz21dqMJJlR4BG8wmWIitJ0wc+3T
GLdIsmnB+v5asMBkCLEhLyaeKWaBPMrgQ7pc/oAd7d3cCeOuNIWgklysbsGs1/cdCZ1G+jER5pmC
ahebEg+xFu9I0DpQm3vU48bskmGTRflrzY3WixNpOPQTBBt2G4Hx+r1noFNIv/XQ8NKkh3Ofld8z
wNr3DEjMsVwQFRg3QTH3toFNR+ltd1me00Ona8Oy9DyWjlKO9TkZZoKKJXsGr+wo/T9QSwMECgAA
AAAAhwRrSAAAAAAAAAAAAAAAAAUAHABmYXN0L1VUCQADfoPiVoOE4lZ1eAsAAQT1AQAABBQAAABQ
SwMECgAAAAAApwBrSAAAAAAAAAAAAAAAAAwAHABmYXN0L2NhbnZhcy9VVAkAAzp84laDhOJWdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAFEEa0hzXMYwhAAAABoBAAAmABwAZmFzdC9jYW52YXMvY2Fu
dmFzLWxpbmVEYXNoLXN0ZGVyci50eHRVVAkAAxqD4lY6fOJWdXgLAAEE9QEAAAQUAAAAzY49CsJA
FAZ7T/FdwJCNEWQRm0RsTKN2YvE0HxjYvJWXjX+nN8cQppmpphGDc8hzvygnwNfgXJmFeJOAeuwf
B2pLOxl5LsrlqrhgvTWLtvGodlXUxHc6Mu07ZS3D3aPTp4SuRTsZxEw+HpIQKENCVIKBPTWhH6dw
JTTq/EuL2az5p5kfUEsDBAoAAAAAAPsAa0gAAAAAAAAAAAAAAAAJABwAZmFzdC9jc3MvVVQJAAPZ
fOJWg4TiVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACjBGtIRcz9V7IAAADOAQAANgAcAGZhc3Qv
Y3NzL3BlcnNwZWN0aXZlLW9yaWdpbi1pbml0aWFsLWluaGVyaXQtc3RkZXJyLnR4dFVUCQADsoPi
Vtl84lZ1eAsAAQT1AQAABBQAAADNjzELwjAUhPf+irfZDhodBOnadhAHpUGda/osgSQvJK/F/nsV
peLu4HjH3cddVdf7OoczXnaaoSWM4IhhRAZtvUGLjqFDLsj6nrGVPBqEKwWYeQzRo2I94JyC7rSb
32aLRJzI9BajKBtuRHWW4gUXkvqg8KkKCihUjKKQ8gtcojJNaFiTWyjv09Vmuc4gh4F0C+9inhvq
jm5ah+0h0GMLj9synTIP8sfOkuqnN8d/vXkHUEsDBAoAAAAAAKEAa0gAAAAAAAAAAAAAAAAJABwA
ZmFzdC9kb20vVVQJAAMtfOJWg4TiVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAChAGtIAAAAAAAA
AAAAAAAAGgAcAGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvVVQJAAMtfOJWg4TiVnV4CwABBPUB
AAAEFAAAAFBLAwQUAAIACABLBGtIl1ZHlrAAAADuAAAAPwAcAGZhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZlcnktc3RkZXJyLnR4dFVUCQADDYPiVi184lZ1
eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKWnnd1DGGdkXG36N+nUadu83jf
g0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23
XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe
/Otkeg3mY3M9aZ17aekO83j2BlBLAwQKAAAAAADkBGtIAAAAAAAAAAAAAAAACwAcAGZhc3QvZm9y
bXMvVVQJAAMshOJWg4TiVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAC5AGtISiNCuZoAAADRAAAA
MwAcAGZhc3QvZm9ybXMvZm9ybS1hc3NvY2lhdGVkLWVsZW1lbnQtY3Jhc2gtc3RkZXJyLnR4dFVU
CQADXXziVl184lZ1eAsAAQT1AQAABBQAAAB9jTELwjAQRnd/xc2FljTWYrIVdBCciuhQOoTmbAOa
6N0V8d8r0tn14733aVXWuVrnZQlKWbWxlSkqo2E33x8tRo90IsSurFWtrNZbY7TpIcsyyLvm3DCj
tMhppgGPyfkQxxafM7LANcTA0zJegkx7okS2h5djYIwCksBFCJHFxQEhXeF/USYnP9vdCJ1/Lxfo
CziMMdEXLVYfUEsDBBQAAgAIAOQEa0ijGCeDkQAAAPoAAAA3ABwAZmFzdC9mb3Jtcy9zdWJtaXQt
dG8tYmxhbmstbXVsdGlwbGUtdGltZXMtY3Jhc2gtbG9nLnR4dFVUCQADLITiViyE4lZ1eAsAAQT1
AQAABBQAAAC1zrEOgjAQgOHdp7iNCUsBTWQWJ6JJo5MxpLQnNEGO3JUY3l5ewvVfvr825mYquNgw
oodIwGg9JOohyKK6JYy+o6ia0LHlVTXUizoH208kMTiDM3HcyvKZDU4e+c6IbZ7pY5oVqc7SvChP
h6LFr2hd7h1bGZIKnjXzRJC/4EogixvgvflADD4wuki8Vn+e2P0AUEsDBBQAAgAIAOQEa0jbw5ed
CwQAACwMAAA0ABwAZmFzdC9mb3Jtcy9zdWJtaXQtdG8tYmxhbmstbXVsdGlwbGUtdGltZXMtc3Rk
ZXJyLnR4dFVUCQADLITiViyE4lZ1eAsAAQT1AQAABBQAAADFVl1v8jYUvudX+KqiVTXyHUB7K/Wl
sNGVFhFULqZpcpyTkjXYkeN0Zb9+J9+UAivTpN1Ein3O82EfH/vW88aL5fTpkUxupw/juyFJRBqp
SHDy7RtJMz+hSoHkC0izWKW/ar91es8izjaQ9u6oor3xyuutwP8lUj1PZJJB756+UY/JKFEjIaEn
M66iDfQW8DJ+T2ZUsTWkt1LS7Q/rrj24JENy742Gw3uvGCRXxR+TQBV8zukWs88zcnFdp/0UC5/G
T/4fwBS5aoY9JSP+kg8wwVNFVsvJcFgN1sklfh6T8TR64RCQiKtrUjCWlsnFZUcnhGjvusZMajCm
5VAjSdN1x6gn9H7fDhn5kvTDyveF4/+u4sLDR9mnVKNos9XmDyx7N7NkHA7hHdiUxxGHUtsY/z2F
4q++JvGyY7UkzEEdR0j+LbzdwgcmHZTzsoCfS6HEJONsfAD/suMUmabtYBpoumb0O24F5oeB5jKf
xGhc/Q5cyW2n38yxAdhA3jbjfHwp2mLuDOqYAPrBgFZip8uRCKC0mSmoN7k2U8gc0TieSLrJhela
jdLXQHPKqCnHM5ZIwO8eEua/YOa4GKN+3KzdgcWslhE59IrDtVzN0cp5eKNxRtWxrS4Pb+7lY63d
e8+YB1U1PtJXCOZK/liBMEjyXnGTHxKjJdUHUGYnUoRRDMH4NPm8CMM9XwBNBf/PJJmFJN0INGpb
PsE+lbekHGFGI75c40kNGjH/u1qrUdvXmNOqrZspVqSI46JEKoFTvhIyDrp7oQekNBF3T7OVpEkC
skjdnWrU3IGiUZzmlWS3mgyDfUXTOWIOMTo1o+661N1nHMewwSPbnJJy9B85EddtcB0bC+MYLp7C
hMoGN9+zJbyreX0rfvKwl/8AL5Rtl9sEvCxJhFRI3S+pdRpqjrWziD8vZw9l+iLjPF9EvCz3HVXI
9X1wQAwyDFoGy6anGOruUoDNaZouIMzrcZ/v5hSfodV8Gjia9pHvTrAsR5hTmX7wlE6EnNMshWAp
Ab5nURyA7CKa3qK5fec0WpJtkqV4BR79BfJBiKR7MtzbcraWgossnWE5XBNfiHhn9+YI50Gaorvc
l9EoCfphcIaSs1QgkdkSWSGcQTQNcTfSCG+CcymthjK0qXmaMm8QPCiLpC6Q9jUy3STxzUW+XlV7
0C3TN41wp8sAQ9IgfyHuQ4dxlq5b7fX0SkZ4++WYVQPQbVcLfIscicRKRoEY7tbhhm+68Dn8QdCg
4I14lK4hyP/RQzcQGS4iAvRbAGwNxwG4UFG4nVQwrYMRxSdegO+uoulgCzPq06i5ruUb5EgkvhTX
wF4fC1h0Ymptms3042mlk9pH24jW2LeC71kYgkQVpt7AGT6jn+Don+ci/g1QSwMEFAACAAgAVARr
SC5f2O97AQAA+DkAADMAHABmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LXN0ZGVyci50eHRVVAkAAx+D4lY6fOJWdXgLAAEE9QEAAAQUAAAA7dhNSwMxEAbgu79iTraCuN6E
IILWClaKslssgiJjdtoGdpM1ma3tvzd+HApe9ObhvYR8zW7mOSQh47K8LQ2VsuwbjuNNFyUlF7yh
h/OyJBvazjVCC85lTW9OVzS49mtuXE3xK4hkJ6r3Latd5bkdR/G6kiRpsFfch6ZvJRWXrFyM51Ux
l5cbp0UV+milmPCaKxtdp6MQpdhyjMWPNR3ZrhueHB+QoaS1Mb13r708dxpPJ9XImIccZczFVsWG
Wu5YVaI/o52xn2mau+jWrGLMd6pDG3xSms+ujKk0Or+k/cOv5kw2OuIklfjk1K2dbg93vz7tG3WN
8zLNvz/YG4MWtKAFLWhBC1rQgha0oAUtaEELWtCCFrSg/QXtI7GS+JrCIuN+JgdYwAIWsIAF7P+G
bV2u5OXkrFrnWT/qT7QIkeyKI9vcT7bhhLsCuMENbnCDG9zgBje4wQ1ucIMbr82gBS1o8X6Hgw3c
4MaODFrQghb3CBxs4Ab337nfAVBLAwQKAAAAAADiAGtIAAAAAAAAAAAAAAAADAAcAGZhc3QvZnJh
bWVzL1VUCQADp3ziVoOE4lZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAjwRrSJdWR5awAAAA7gAA
AC8AHABmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2Utc3RkZXJyLnR4dFVUCQAD
jYPiVqd84lZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKWnnd1DGGdkXG3
6N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0Ed
jTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZI
e6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQKAAAAAACuAGtIAAAAAAAAAAAAAAAADQAc
AGZhc3QvaGlzdG9yeS9VVAkAA0h84laDhOJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAFoEa0iX
VkeWsAAAAO4AAABAABwAZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtd2ViZGF0YWJhc2Utbm8tdHJh
bnNhY3Rpb24tZGItc3RkZXJyLnR4dFVUCQADK4PiVkh84lZ1eAsAAQT1AQAABBQAAABlzkELgkAQ
BeB7v2JOoVBtEEHsLcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQ
vHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnw
M5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBL
AwQUAAIACABaBGtIV9vRyLYAAADcAQAAQgAcAGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdlYmRh
dGFiYXNlLXBlbmRpbmctdHJhbnNhY3Rpb24tc3RkZXJyLnR4dFVUCQADK4PiVkh84lZ1eAsAAQT1
AQAABBQAAADlz88KwjAMBvC7T5GTbKBWEEF6E50XEWHzz7ndMil0ychaxbd3Ez35CN7ykd8HSZbn
x1zDmYz1CIEhRCFgAkelYIMUjAcTA0/vpoyxgWQOxAEMAYqwpCN1YR8b7NTWBKOya6GuaPcuqIKj
lDikDQuqA1fR9+yBtuqlNR2+K8MwK9s2WSxXKWiwzB4+Ja2/QusWpWZpji3SmqoLiqufyYAnvzob
ToNxvznttC6COLrBOB1lf/XtC1BLAwQKAAAAAACxAGtIAAAAAAAAAAAAAAAADAAcAGZhc3QvaW1h
Z2VzL1VUCQADTnziVoOE4lZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAXQRrSCGPvTgyAAAAMwAA
ACwAHABmYXN0L2ltYWdlcy9wZGYtYXMtaW1hZ2UtY3JvcC1ib3gtc3RkZXJyLnR4dFVUCQADMYPi
Vk584lZ1eAsAAQT1AQAABBQAAABzy0ksSXVJTc5PSbVSSAHRmXnpCqlFRflFVgqZecn5RUWpySUK
KYkliQrJGanJ2XpcAFBLAwQKAAAAAAD8BGtIAAAAAAAAAAAAAAAACwAcAGZhc3QvcmVnZXgvVVQJ
AANbhOJWg4TiVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAQBWtI6UR/bpJUAAASxQEAIgAcAGZh
c3QvcmVnZXgvYXNzZXJ0aW9uLWNyYXNoLWxvZy50eHRVVAkAA4CE4lZ+g+JWdXgLAAEE9QEAAAQU
AAAA7F1tc9u2sv58+Svw4U6OnEQOAfBV45uMLEupW7/VspPO7WQ4IAnaPKFIlaIc+/76uyApiaIl
W3Tkps6Bp5PaArn7LLBYPLugwLM08fhk0kHLPwfT0ficxz5PL1LO0Z9E0w31i3LGsuv6pfDz7lMS
TUd88u7T6dHlcf/d63fL9yuHPo+zMAh52lmvRfnE00mYxHUFHz58UHqJz9HF3ZgvN/5hGW1DQ60T
loU3fAfwpaAIndWMOrvLrpM4t0K3vyjnfDJO4knoRkviJtdwhU6/KJcTnqLDgzoOXcWKcsAy/u4i
HNWAEBUbbZW2MUaq2qF6R9V2bWygtmqpqnI6RKtsO2YegqY/EFZ34T8dtbA2wLpq7wDEcZJm9+7C
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
h+9/yidQSwMEFAACAAgAhARrSOiwDlk9AQAAsAcAAD0AHABodHRwL3Rlc3RzL21lZGlhL2hscy92
aWRlby1jb250cm9sbGVyLWdldFN0YXJ0RGF0ZS1zdGRlcnIudHh0VVQJAAN3g+JWkHziVnV4CwAB
BPUBAAAEFAAAAO2TUUvDMBSFn+2vuI/uZbSzzhploJ2oYKUwhsLwIUvvsrAsKcmtw39vuikIvqjb
wIc9Jpx85yY5p+AOkgTimJ30WdwHXPkkSbvaCq7BkXBYW0fKyEkvPc3SF7gc4rSRAwYeTVWg91zi
k6J5zgmldW8Mjk2jdScq/kxWRlGLHAW6subezCyD5zIHYY1BQWEvaF65VlU0+eR3kywLjNHNbTku
ygFcEeGypkeklXWLwgamdSOkpmZgLIXxqTWHpgaz0cByI7oAXlUueIPysB734PJrl2KLXNFHrB6s
lEFxHQ4tGISDGr9+eNZL/uP4xB3l1syUbBxvs7puh13WGtvVHTeVRscg52KOFcSAhk/DzWDKxSJ0
ym/3dmOPrm3MUAli39ihndFRZyuHfbV+n+SfJuo8PiTqkKhdk892SH4HUEsDBBQAAgAIAIEEa0h+
yFL/zwAAAJECAAAyABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1kb2N1bWVudC1yZWZlcmVyLXN0
ZGVyci50eHRVVAkAA3KD4laKfOJWdXgLAAEE9QEAAAQUAAAA1ZC9TgMxEIRr8hRbkuZ0DuFHFqLg
UiQSVyIKRLFnbxwrZh2t9xTx9viACqooFeWONN/sTI8CxkDb2qsb2xqgYzFm2aTsMIGoEzpk0cjh
dbG8vr17g/sNb/ODhZRDqDIURdHSNM2sPxm1omEMlVVIeyoFAz19Ux+raW+hGhP5c8DTc13mbQyj
oMbML1F3XX4/JJquNbJPJBY6dDvy0AIxDjUTBnR7Yl/Oa/VcSKa9VtGp/cO2cDm7mP9KWJyUwP5n
uK9eqBSyfFQujyn9T/InUEsDBBQAAgAIAIIEa0jJt9qC4gAAAAYDAAAqABwAaHR0cC90ZXN0cy9t
ZWRpYS9tZWRpYS1kb2N1bWVudC1zdGRlcnIudHh0VVQJAANzg+JWi3ziVnV4CwABBPUBAAAEFAAA
ANWRT0sDQQzFz/ZT5GgvstvWPwziwe1BwQVBREE8ZGfT6dAxKTNZxW9vVrx50j31mJD3e8lLixnq
GqrKLc9ctQD6KHW9OkniMUFWn2kvWSOHl8Xq9PziFS7X1A3hykEh7lsqBQM9Rd02qBQkfzo45iGl
+az9Nzly1BH5YPQofMsbcfB834AXZvJqPZt5xxT7CS6F9Gf9OwnBJq5NtHNgwkSTwIpZG+FNDEPG
cdvvfORtn2isbpD7RNlBg35LPVRAjJ15Qod+Z6mWaVc9FspjZuvo1f1i239mR/NJDn/5+/IgyF9Q
SwMEFAACAAgAgwRrSHRVWWzpAAAAxgMAADkAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXBsYXkt
c3RyZWFtLWNodW5rZWQtaWN5LXN0ZGVyci50eHRVVAkAA3WD4laNfOJWdXgLAAEE9QEAAAQUAAAA
3ZNNSwNBDIbP9lfk2F7Kbr+UoXhwe1BwQRBRkB6ys+l06Jgpmaziv3dWvHmqi5ceE5LnTd6QGgXK
EorCzFemmAN9pLJcTEO0GEDUCh2jqGf3OlssL6+2sN5Q07lrA4m4rSkldPTsdV+hkovyaWDMXQiT
Uf1nsmevPfIx033kO95FAy8PFdjITFZzLte8Y/DtAJVE+jP+fXQuV9zkpoOB3BhoEFhRtIq8864T
7Kf99ie+HQP10S1yG0gMVGj31EIBxNhkTWjQHrKradhWT4mk92zjrZpf7Hyf0cVkkMJ/3f008vLM
yad8wRdQSwMECgAAAAAA5gBrSAAAAAAAAAAAAAAAAB4AHABodHRwL3Rlc3RzL21lZGlhL21lZGlh
LXNvdXJjZS9VVAkAA7B84laDhOJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAIgEa0joJo7+VwEA
AJ0EAABCABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYXBwZW5k
LWJ1ZmZlci1zdGRlcnIudHh0VVQJAAN/g+JWmXziVnV4CwABBPUBAAAEFAAAAM3QTW8aMRAG4Ht/
xdwSDrD2fjiAlEOBokYqUlSSXiKEBnsWrHrt1djbdvvru5HycUqODbfRyBo/7/sgxLxQcykn5bTa
Qc143KC3dXBmf9vF06JPFCHao0fnyAAxX4+lEqWCy59r+/L4C3Pg/b2nPy3pRObG27TChCO43JIO
3sBFnfr2AjCFBsjr0PlETGY0bCDbho41LVGfKFsGpg0Zi6/TWFYqn+SlyG45pDAcopitAzeYvqI3
jjhmm/DLUvZIehzWQ5CGfHr2TTQ46wmkKsSnXEg1FsVYSniKX07ULIdV17TfyRviOyZ6yMuqUvO8
KKtczHZwc/SBrT/CECdxcHe2oQNGgkgJDj1oZ4cP4UAau2H7+ccWm9bRoqtr4pWNrcP+G/bE8Bsj
oDFDnSkAQuy9PnHw9i/xG7byjG3qLVtVTYvyY22zs+3tSsiz7e1KVO/Z1P+y/QNQSwMEFAACAAgA
iQRrSBfN+QA9AQAAewMAAFAAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUCQADgYPiVpx84lZ1
eAsAAQT1AQAABBQAAADlkM1OwzAQhO88xd4KhzTOb0slDtBSgUSlihYuVVVt7U1q4djR2gHC0xMk
fh6C22g02p1vdkLMsnKWFONJOt1DxViv0OrKGXVYd/500wfy4HVt0RhSQMxXUVKKvITzl6X+Dd8y
Oz48WXpvSQZS91aHBQa8gPMNSWcVjKrQtyPA4BogK11nAzGpi8GBeOM6ljRHeaJ47phWpDT+qSgp
ynSc5iJeswtuOEQ+XjpuMNyhVYbYxyv3qin+qvQllgNIQzb89BtLMNoSJGUmznZ/0HnxD6FL8V+g
U5GUkciiJIFv/Ml4mhSw6Jr2kawi3jLRLs2LopylWV6k4nIP97V1rG0NA05gZ7a6oSN6Ak8Bjj1I
o4eHcCSJ3eBeP2+waQ3ddFVFvNC+Ndg/YE8Mb+gBlRrmDA4QfG/liZ3VH8Rnn1BLAwQUAAIACACK
BGtIhRDztT0BAAB7AwAAUgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LXYtZnJhbWVyYXRlLXN0ZGVyci50eHRVVAkAA4SD4laffOJW
dXgLAAEE9QEAAAQUAAAA5ZDBTsJAEIbvPsXchAN029IGSTwISCSRxAh6IYQMu1PYuN1tZrdqfXqX
GPUhuP3zz2Tm/2YrxCQvJ+l4mImbHVSMxxVaXTmj9k+tP027QB68Plo0hhQQ8+0gLcWohN7bQv8N
3zM73r9Y+mxIBlJLq8McA/ahtybprILrKnTNNWBwNZCVrrWBmFQ/OpCsXcuSZihPlMwc04qUxn81
SIsyG2YjkTyxCy4uIp8sHNcYHtAqQ+yTlXvXlJwjncUigtRkw2++oQSjLUFa5uJq+w+dFRcIPRKX
Ap2JtByIfJCm8IOfiWEei3lbN89kFfGGibbZqChiLy+KcV7uYHm0jrU9QsQJ7MxG13RAT+ApwKED
aXQ8CAeS2Eb37nWNdWNo2lYV8Vz7xmD3iB0xfKAHVCq+MzhA8J2VJ3ZWfxFffQNQSwMEFAACAAgA
jwRrSE5oFwmMAAAAnAAAADkAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1wbGF5LXN0ZGVyci50eHRVVAkAA42D4laofOJWdXgLAAEE9QEAAAQUAAAADcmxDoIwEIDh
3ae4F8AUSomwaVhMnJS4GIejPbBJacm1xNSnl+3P91eibAohi7IEITrZdFV7rGUL/basd/KGeGCi
V1UrtT+p1EnWb7jOPrD1M+jgEwc32IVGjASREowZtLPk9yKN267n5wOX1dFlmybi3sbVYb5hJoYv
RkBjyEAKgBCz1x8O3v6ID39QSwMEFAACAAgAkQRrSHZ6LuSpAAAADAMAADsAHABodHRwL3Rlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1yZW1vdmUtc3RkZXJyLnR4dFVUCQADkYPi
Vqt84lZ1eAsAAQT1AQAABBQAAADNzjEOgjAUgOHdU7wLYEofbYBNw2LipMTFOBR4YJPSkhZi8PRy
AHWF7c8/fZzFMmIYxTEwlqPMEfcMYyimfriQbciXnujOEyFkzlGIFMUDTp11XtsOamdH70ype6pU
IAg0QjVDbTTZpahW03IPt6vqB0PHqW3JFzoMRs1nNZOHlwqgmoYaGB0oCLOtn95Z/Sa/419t+M+W
rGuTG7Zlv2wSs1Suakv4JmwfUEsDBBQAAgAIAJMEa0iF4d9NoQAAANQBAABGABwAaHR0cC90ZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291cmNlYnVmZmVyLW1vZGUtc3RkZXJy
LnR4dFVUCQADlYPiVrB84lZ1eAsAAQT1AQAABBQAAADN0L0OgjAYheHdq/huANMfWoFNw2LipMTF
OJTygU1KS1qIqVcvF2BcdTt5pyeHESozwjNKgZCKy4rvtrSQUC/jdEbXYWgC4o3lQsiKcSEKLu9w
HJwPxg2gvZuDt40ZsVURIeIMbQJtDbp1oVbLWvfXixoni4el7zHUJk5WpZNKGOCpIqiuww5mDwpi
cvoRvDMvDBv20VZ+s+U/tZXiL357A1BLAwQUAAIACACBBGtIdCCGz4MAAADAAAAARgAcAGh0dHAv
dGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL1NvdXJjZUJ1ZmZlci1hYm9ydC1yZWFkeVN0YXRlLXN0
ZGVyci50eHRVVAkAA3KD4laLfOJWdXgLAAEE9QEAAAQUAAAAncyxCsIwEIDhvU9xoy6S1LZDEJe6
OAQEBwVxiOkZD8JFkqvi2xtfwfXn57Mug9aglFkPRrWA76J1t4rJuwhZfMZnykIcLm3X98MVNju8
zWFroCBPFktxAU8kj9EJhpQ/BhY8x7hs7N8yMcmPPFadEu/5ngycDyP4xIxeaqvPy0Wami9QSwME
FAACAAgAgwRrSM/lfhvtAAAAXwEAAC0AHABodHRwL3Rlc3RzL21lZGlhL3BkZi1zZXJ2ZWQtYXMt
cGRmLXN0ZGVyci50eHRVVAkAA3WD4laPfOJWdXgLAAEE9QEAAAQUAAAAhY8/bwIxDMV3PoUntrsE
KOWIdKoQbdWhQ3WiE2IIF3MXKf+aOJX49s2phbX28p5+z5Z95FysHgVf1816dYK3w+Gjw6+MieCi
h8k+ZxtetZPms3vfOdWh9YQ7pSKmJED+ClgsNzUvvShjJQs5GhiJgmDsjkTDOWcWlZbsWyv0FY3R
ExlUlfFS1f2gn5y02JaVPsceE6NySR3UZX6Lttup5nQN2MoQjO4lae9YycyO/z7zZ/cRJeFLjD7u
vbXoSAC63mdHGFGBdIATFHC+EkKUbkAw6AYawepkJfUjVJBGn42C850tQaeb3mybh9kPUEsDBBQA
AgAIAIQEa0iyMJvmuwAAAJIBAAAvABwAaHR0cC90ZXN0cy9tZWRpYS9yZWxvYWQtYWZ0ZXItZGlh
bG9nLXN0ZGVyci50eHRVVAkAA3eD4laRfOJWdXgLAAEE9QEAAAQUAAAApZAxbwIxDIVn7ld4hKW6
o7SgCDFwDCD1xooBMfgSEyJSBzk+Vfx70oqtWxmf5Pd98utQoGmgrs3ru6nnQN+5aWYvMVmMIGqF
rkk0sD9MZ2/zxRGWG+oHvzKQSTvKGT19JO/LxbqULgZKMZKruv+DFUXbxKfgB0ENifdBz236ukb6
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
5gqsry22xnqpm804u5rmW7gucdc1NwwcarFE53iDT9IfCu6xMfaDwVB3So0Gy39Pzv4EWWrpz8iH
QJdG3+m9YfC8KqA2WmPtwyx4TlxJMdhc+DGdzLawWK9XFb526DzsZbPwvv2SpRQV1ihPWKFrjXZY
cKV2vH5hYPuFgEPwB9XvISMZDNFaYyGi41maj2Af+rOJJQkdT2MSirKcEJIIgy7Sxkf4Lp2Pjy02
P4ULsuyO7a3UXD1W93MdEh6Nx7kQIYNjwPsGvl+Fs+CFzqpfpPgEUEsDBBQAAgAIAIcEa0hT+Vz2
wwAAACQDAAAsABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1sb2FkLXR3aWNlLXN0ZGVyci50eHRV
VAkAA36D4laafOJWdXgLAAEE9QEAAAQUAAAA7ZE9TwMxDIZn+is8lgVd2uNDUcXAdQCpNyIGxOBL
fGnU1Kkcn1D/PQGxsXFiY7Tk93lkvz0KGANNY9c31rRA78WY9iplhwlEndApi0YOr6v2+vbuDTZb
GqZwb6GQ9lQKBtrlEOrGQw0dLNRgIr/ofw9WFO0yjzFMghozv0Tdd/l4SvQ5PSL7RGKhQ7cnDw0Q
41CdMKA7EPsyR076XEieeMzb6NT+YFtYLi4uZxnYfz/u6y5UClnOlctTSvPI/438RSMfUEsDBBQA
AgAIAIgEa0i488nl4gAAAMYDAAAvABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXByb2dy
ZXNzLXN0ZGVyci50eHRVVAkAA3+D4labfOJWdXgLAAEE9QEAAAQUAAAA1ZFBSwNBDIXP9lfkaC+y
o63KUDy4PSh0QRBRkB6ys+l06JgpM9mK/96sePPmHrTHhLwvLy8NZjAGqspeXFozB3ovxszOYnIY
IYvLtE9ZAvvX89n86noNiyW1vb+xUIi7hkpBT89BtjUK+ZQ/LJxyH+N00vyaHDjIgHxUekh8z5tk
4eWhBpeYyYn2dOaAMXQjthy/f/m2v0re68StinYWVBhpFFgwS514E3yfcXD7lU9620caqjvkLlK2
UKPbUgcVEGOrO6FFt9NUy7irngrlIbNlcGJ/sPU/k5Ppv/z735E/AVBLAwQUAAIACACJBGtIJqra
MIMAAADAAAAAPQAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1zdGFsbC1iZWZvcmUtbWV0
YS1kYXRhLXN0ZGVyci50eHRVVAkAA4KD4laffOJWdXgLAAEE9QEAAAQUAAAAncyxCsIwEIDhvU9x
oy7SaKsSxKUuDgHBQUEcYnrGg3AnyVXx7a2v4Prz8zmfwRioa7tYWtMCvosxzSxJ8AmyhoxPyUoc
L/OmXa2vsNnhbYhbCwW5d1iKj3gifXReMUr+WJjwkNK0cn/LxKQ/8jjqJLznu1g4HzoIwoxBxzY+
L5+or75QSwMEFAACAAgAigRrSPdZ2tW8AAAAkgEAACsAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVv
LXF1ZXJ5LXVybC1zdGRlcnIudHh0VVQJAAODg+JWn3ziVnV4CwABBPUBAAAEFAAAAKWQMW8CMQyF
596v8AgLulAKJao69BhaqTeiDojBl5gQkTrI8anqv29asXWD8Ul+3ye/HgWMgba190tr1kBfxZjF
LGWHCUSd0DmLRg67+eJh9biHpw0NY3i2UEh7KgUDvecQ6sVLLZ0s1GIi3/TXgxVFu8yHGEZBjZk/
oh67/HlO9JtekX0isdChO5KHFohxqE4Y0J2IfblFTrotJG98yJvo1P5jW5g0d9ObDOwvw/39hUoh
y3fl8pjStPkBUEsDBBQAAgAIAIoEa0h1z2mhWAEAACoGAAAqABwAaHR0cC90ZXN0cy9tZWRpYS92
aWRlby1yZWRpcmVjdC1zdGRlcnIudHh0VVQJAAOEg+JWoHziVnV4CwABBPUBAAAEFAAAALWTzWrD
MBCEz81T7LE5tNiOE8eiBBrn0EIDIaG0EHKQ7bUtokpBkvv39F2HlkIvwXGtm4T0jXZ2dskN+D54
HhtNmB8DvlnfD6+lzrgE4zKDB22cUOU2CMfRdAc3C0zrcsbAosqXaC0v8Um4KuEOS20+GFyqWsrh
YHk2WSjhGuSG6EKre1VoBs+rBDKtFGaOzujOK5ciH2x/+NeTcEQMWpCsb+cbmNGCQta2WtFPSWeN
ErnFDToGW+89KngYBP40j6beDub0rz14UHELSqurTzQaDBakWSsHkw7lWHTfPj3osqQbRy0G9FBi
3gXsuHGJVoUoa8MbW46N0C8Hic3ujqtcomGQ8KzCnKpDxVPShJRnezLFdqvq0aJpmrMQGVn6l01B
GFwMOyn0FbBT5N9QxZ7fPlRRPB7Had+hamFO4PU0feertBmKduB/Hoq2VbUfipYKffX9FPkLUEsD
BBQAAgAIAIoEa0gRxn0M2wAAAAYDAAArABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby11c2VyYWdl
bnQtc3RkZXJyLnR4dFVUCQADhIPiVqF84lZ1eAsAAQT1AQAABBQAAADlkU9LA0EMxc/2U+RoL7Jb
6x8G6aHbgwUXBBEF8ZCdTadDx0zJZBW/vVnx5nHx5DEh75eXlxYF6hqqyp1fukUF9FHqenmWsscE
ol7omEUjh5fF8uLq+hVuNtQNYeWgEPctlYKBnqLuG1QKWT4dnPKQ0nzW/ity5Kgj8sHoMfOWd9nB
830DPjOTV+vZzDum2E/yrz/273IINrE20cGBCRNNAiuKNpl3MQyCo9vvfPLbMdFY3SL3icRBg35P
PRibsbOd0KE/WKpl2lWPhWTMbBO9ul9s+8/s5C///gVQSwMECgAAAAAA+gBrSAAAAAAAAAAAAAAA
ABAAHABodHRwL3Rlc3RzL21pc2MvVVQJAAPXfOJWg4TiVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CACMBGtIbU5UYOoAAABmAQAALQAcAGh0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29sdmVzLXVybHMt
c3RkZXJyLnR4dFVUCQADh4PiVpt84lZ1eAsAAQT1AQAABBQAAAB1jU1Lw0AQhu/9FXMqiZRMIhRl
KQHR5qJoSaQ5bzaTdCXJhN2J4L83NRVFkDm9H8+8+zx/yRVk2nZUgzBoZ072ncBPlSPPkzMEDTs4
iYwKMbm+ieL5EnUbxzH21hv87nk03I/a++htbFd45G7qZ/NBi8Z9WWBJ1aMVLL7KZ3XPjrBjXZPD
yy6aBp+o1eZjzu8WLzLjGGy3SQgKvGixBg7zSk7NQdzu8kepv1gK/0ZKGUdaKDA8eIHyNVOqEGeH
FtabHyxzuie42sBSO5IR/jX4zPWcpmfES61UMw1GLA+7irmDYKHXYRquPgFQSwMEFAACAAgAjARr
SBUoGYnEAAAA/wAAAFsAHABodHRwL3Rlc3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFk
eXN0YXRlY2hhbmdlLXdpdGgtZ2MtYWZ0ZXItdmlkZW8tcmVtb3ZhbC1zdGRlcnIudHh0VVQJAAOI
g+JWnHziVnV4CwABBPUBAAAEFAAAAE2OT2vCQBTE736KObZQyybZpBDEi6mnINI/JxFZkqc+muyG
lxel/fRdoQUH5jDMwPxSkxRzk82TBMaUWVGm9jm3FtXUD2/kW5IPIdqlNn+JXZbarCj22EoYSPQb
HY8K9hfXcYtjkJt7pyUSY/Aw3M9GNM77oGiCV8cem8+6fpzt7m7zPRZRWFer7aHmnpVaLKOw5tNf
rnj8WrnmTJHhwpHv8E76z1PiVSRSXIWV/Qlhine3MY7c0RNUJt84JWjAD0mY/QJQSwMEFAACAAgA
qwRrSBU1NZJ6AAAAvAAAACoAHABodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVy
ci50eHRVVAkAA8KD4lbXfOJWdXgLAAEE9QEAAAQUAAAAjY5BDsMgDATveYU/QCDtoRW/IcRVLBmM
jJH6/BLlA9VeVjuH2SylEScjqYCqohE+xAinWYveb4/XGma2+A4h+EI9e8UuQzN2/+1sbk+Ho9JE
zQ2ldW7AVBGegIwFq8FNl0niXSHCqGmfGhNgScd/uip95PO6lywxLz9QSwMECgAAAAAAhARrSAAA
AAAAAAAAAAAAABUAHABodHRwL3Rlc3RzL211bHRpcGFydC9VVAkAA3eD4laDhOJWdXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIAIQEa0jVmr6sigAAAIABAAA9ABwAaHR0cC90ZXN0cy9tdWx0aXBhcnQv
aW52YWxpZC1pbWFnZS1kYXRhLXN0YW5kYWxvbmUtc3RkZXJyLnR4dFVUCQADd4PiVneD4lZ1eAsA
AQT1AQAABBQAAADNzr0KAjEQBODep9hSG7lo/CGIzdlYBAQLBbGIuTUuhF1Jcopvb3wFbWyH4Zux
LoFS0DRmOjfNAvCZldLjKN5FSMUnvEsqxOE00bOlPsNqg5c+rA1k5M5izi7ggcqtdQWDpJeBIfcx
jgb2a5mYyofcV52Et3wVA8ddC16Y0Zea1c7DRep+WPmP/29QSwMECgAAAAAAiwRrSAAAAAAAAAAA
AAAAABQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L1VUCQADhYPiVoOE4lZ1eAsAAQT1AQAABBQAAABQ
SwMECgAAAAAA1QBrSAAAAAAAAAAAAAAAAB8AHABodHRwL3Rlc3RzL3NlY3VyaXR5LzQwMS1sb2dv
dXQvVVQJAAORfOJWg4TiVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADVAGtIJmkQwYwAAACAAQAA
NAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvNDAxLWxvZ291dC80MDEtbG9nb3V0LXN0ZGVyci50eHRV
VAkAA5F84laRfOJWdXgLAAEE9QEAAAQUAAAAtY6xCgIxEAV7v2JLbSSrxxVBbM7GIiBYKIhFzK25
QNiVJKf498bWUrj28ZgZYxMgglJatbpRQK+M2CyjOBshFZfoIakE9hds1Xp1hc2ObqPfasjEvaGc
radTKENnC3lJbw1zHmNczMzf5MChfJHHSg/Ce76LhvOhAyfM5Erd6udpY+h/LDhZP07U/wFQSwME
CgAAAAAA5wBrSAAAAAAAAAAAAAAAACoAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9VVAkAA7J84laDhOJWdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAANgAa0gAAAAA
AAAAAAAAAAA9ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNl
ckFnZW50U2hhZG93RE9NL1VUCQADmHziVoOE4lZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAiARr
SGzc073XAAAA+AEAAFMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8tc3RkZXJyLnR4dFVUCQADf4PiVpV84lZ1
eAsAAQT1AQAABBQAAAClkMFKBDEQRM/OV/RxvchEZ0WCeHD2oOCAIKIgHnqS3mzYbPeS9Cj+vRnx
5s05FlS9omrADMZA29qLS2vWQJ/FmO4sicMEWV2mo2SNHN7Ou/VV9w7XGxqncGOhkA5UCgZ6kBCq
47aG9hZqMJFvhv+DFbP2wtsYpowahV+i7no5HBPN6g7ZJ8oWenQ78tACMY61E0Z0e2JflpSTPhfK
97yVTXRq/7AtrJqT00UN7H+P+9mFSkHyV+XylNIScuSoM/Kp0utP8wYLr489OGEmN39XPR+Yom++
AVBLAwQUAAIACACJBGtI63xmTrsAAACSAQAAUwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy12aWRlby1zdGRlcnIudHh0
VVQJAAOCg+JWl3ziVnV4CwABBPUBAAAEFAAAAKWQMW8CMQyF596v8AgLusC1QlHVgWOgUm+sOlQd
fIkJEcFBjk9V/33Tio0Nxif5fZ/8BhQwBtrWrp6sWQN9F2O6RcoOE4g6oXMWjRw+l93juvuC5y2N
U3ixUEgHKgUDveUQ6sWmlo4WajGRb4bbwYqifeZ9DJOgxswfUQ99Pp0T/aUdsk8kFnp0B/LQAjGO
1QkjuiOxL/fISd8LySvv8zY6tVdsC7PmYX6Xgf1luP+/UClk+alcnlKaN79QSwMEFAACAAgAigRr
SFdzR3CDAAAAwAAAAGsAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS91c2VyQWdlbnRTaGFkb3dET00vZGVmYXVsdC1zcmMtb2JqZWN0LWRhdGEtdXJsLWFsbG93ZWQt
c3RkZXJyLnR4dFVUCQADg4PiVph84lZ1eAsAAQT1AQAABBQAAACdzLEKwjAQgOG9T3GjLtJolBLE
pS4OAcFBQRxieo0H4U6SVPHtja/g+vPzWZdAKWhbs9oY1QG+s1J6EcW7CKn4hE9JhThcl3rd6Rts
93ifws5ARh4s5uwCnqk8elcwSPoYmPEU47yxf8vEVH7kqeokfOBRDFyOPXhhRl9qq8/LRRqaL1BL
AwQUAAIACACZBGtImPlGtMoAAADdAQAAZgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3ZpZGVvLXdpdGgtaHR0cC11cmwtYWxsb3dlZC1ieS1jc3AtbWVkaWEtc3Jj
LXN0YXItc3RkZXJyLnR4dFVUCQADooPiVq584lZ1eAsAAQT1AQAABBQAAAClkDFPwzAQhWfyK26k
S5S0KRIWYiAdqNSMiAExXOyra9Wcq/NFFf8eB9iYUMZ70vvevTegQNtC05jNnenuga65bbs6JosR
RK3QJYkG9m/rbrtdv8PDno/p0UBM3hcZsqJoruu6Gv6N2tE4+cLKpAPljJ4OP9SnYjobKMZIbgl4
fq5PfAx+EtSQ+DXoqU8fl0jz9YzsIomBHu2JHDRAjGPJhBHtmdjlZa1eMsm81y5YNX/YBm6rm9Wi
BHa/w333QiWf5LNweYpxVX0BUEsDBBQAAgAIAJkEa0g+jqIdgwAAAMAAAABZABwAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3Nw
LWJsb2Nrcy1ldmFsLXN0ZGVyci50eHRVVAkAA6KD4laufOJWdXgLAAEE9QEAAAQUAAAAncyxCsIw
EIDhvU9xoy7S1MYhiEtdHAKCg4I4xPRMD8KdJKni2xtfwfXn57MugVLQtma9MboFfGel+lUU7yKk
4hM+JRXicO16rbsbbPd4n8POQEYeLebsAp6pTIMrGCR9DCx4jnHZ2L9lYio/8lR1Ej7wQwxcjgN4
YUZfaqvPy0Uamy9QSwMEFAACAAgAnARrSGOqrGyCAAAAqAAAAEAAHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAOng+JW
snziVnV4CwABBPUBAAAEFAAAAC2NQQrDMAwE73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXtahtnN
crbCmxepBFXRRHth0OHeUgjLbZ3jyJLuMcZgyJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xcKmgl
MM4h0A/YAfg0aHpDbVwnksqdljnSjs2vMUSbguxqTdTxmr5QSwMEFAACAAgAnARrSGOqrGyCAAAA
qAAAAFIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtdW5h
ZmZlY3RlZC1ieS1zdHlsZS1zcmMtMi1zdGRlcnIudHh0VVQJAAOng+JWsnziVnV4CwABBPUBAAAE
FAAAAC2NQQrDMAwE73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXtahtnNcrbCmxepBFXRRHth0OHe
UgjLbZ3jyJLuMcZgyJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xcKmglMM4h0A/YAfg0aHpDbVwn
ksqdljnSjs2vMUSbguxqTdTxmr5QSwMEFAACAAgAjwRrSFfb0ci2AAAA3AEAADoAHABodHRwL3Rl
c3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13ZWJzcWwtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAON
g+JWpHziVnV4CwABBPUBAAAEFAAAAOXPzwrCMAwG8LtPkZNsoFYQQXoTnRcRYfPPud0yKXTJyFrF
t3cTPfkI3vKR3wdJlufHXMOZjPUIgSFEIWACR6VggxSMBxMDT++mjLGBZA7EAQwBirCkI3VhHxvs
1NYEo7Jroa5o9y6ogqOUOKQNC6oDV9H37IG26qU1Hb4rwzAr2zZZLFcpaLDMHj4lrb9C6xalZmmO
LdKaqguKq5/JgCe/OhtOg3G/Oe20LoI4usE4HWV/9e0LUEsDBAoAAAAAAIsEa0gAAAAAAAAAAAAA
AAAdABwAaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci9VVAkAA4WD4laDhOJWdXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIAIsEa0iB8TczhAAAAMAAAABRABwAaHR0cC90ZXN0cy9zZWN1cml0eS9s
aXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci1zdGRlcnIu
dHh0VVQJAAOFg+JWhYPiVnV4CwABBPUBAAAEFAAAAJ3MPQoCMRBA4X5PMaU2kqzrD0Fs1sYiIFgo
iEXMjnEgTCSZVby98Qq2j8dnXQatQSkzX5pWAb6L1t0sJu8iZPEZnykLcbi03WK1vsJmh7cxbA0U
5MFiKS7gieTRO8GQ8sfAhMcYp439WyYm+ZHHqlPiPd+TgfOhB5+Y0Utt9Xm5SEPzBVBLAwQUAAIA
CACSBGtIYaNXpM0AAADdAQAAPQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291
cmNlLWZyb20tcmVtb3RlLXN0ZGVyci50eHRVVAkAA5OD4laqfOJWdXgLAAEE9QEAAAQUAAAApZAx
T8MwEIVn8itubJcoadMKWRUD6QASGREDYrjYV9eqOVfnixD/HgeYYKo63pPe9+69AQXaFprGrLdm
3QF95Lbt6pgsRhC1QuckGti/rrrN9vYNdo98SHcGYvK+yJAVRXNd19VwMWpP4+QLK5MOlDN6evqh
3hfTyUAxRnLXgOfn+sSH4CdBDYlfgh779H6ONF8PyC6SGOjRHslBA8Q4lkwY0Z6IXb6u1XMmmffa
B6vmH9vAorpZ/knYXJTA7ne4716o5JN8Fi5PMS6rL1BLAwQUAAIACACSBGtITgmCIIQAAADAAAAA
OgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc3JjLWZyb20tcmVtb3RlLXN0ZGVy
ci50eHRVVAkAA5OD4laqfOJWdXgLAAEE9QEAAAQUAAAAncw9CgIxEEDhfk8xpTaycX+QIDZrYxEQ
LBTEImZn40CYkSSreHvjFWwfj8/YCEpBXeum100H+E5KtasgzgaI2UV8SszE/rpuu35zg+0e77Pf
aUjIo8GUrMcz5cdgM3qJHw0LnkNYVuZvmZjyjzwVnYQPPImGy3EAJ8zocmnledlAY/UFUEsDBAoA
AAAAANoAa0gAAAAAAAAAAAAAAAAhABwAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQv
VVQJAAOcfOJWg4TiVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACMBGtI2pynAegAAAA+BAAATgAc
AGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWlu
LW1haW4tZnJhbWUtc3RkZXJyLnR4dFVUCQADiIPiVpx84lZ1eAsAAQT1AQAABBQAAADdkkFLA0EM
hc/ur8jRXmS3XUUG8eD2oOCCIKIgHrIz6XTomJSZrOK/d1a8edIilB4DL99LXtJjgqaBujaLMzNf
AL3npmlPoliMkNQm2krSwP553p6ety9wsaRh9JcGMmlPOaOnW/G+KK5K08ZAaYzkqv7vYMWknfAq
+DGhBuHHoOtOXreRpuoa2UVKBjq0a3JQAzEOxRMGtBtil3cxJ33IlG54Jctg1fxgGziujma7ORxk
buy+1/pyRSUv6aOkxWOMsz2/yP/N/htyuxfkwEEn5H2hl6+ZcjfwdNeBFWay0ycVzRvG4KpPUEsD
BBQAAgAIAIwEa0hZq7GmgwAAAMAAAABCABwAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRl
bnQvaW5zZWN1cmUtY3NzLWluLWlmcmFtZS1zdGRlcnIudHh0VVQJAAOIg+JWnHziVnV4CwABBPUB
AAAEFAAAAJ3MsQrCMBCA4b1PcaMu0tQoEsSlLg4BwUFBHGJ6jQfhIslV8e2Nr+D68/NZl0EpaFuz
XJtOA76LUnoRk3cRsviMz5SFOFw7vdroG2z3eJ/CzkBBHiyW4gKeSR69EwwpfwzMeIpx3ti/ZWKS
H3mqOiU+8JgMXI49+MSMXmqrz8tFGpovUEsDBBQAAgAIAJsEa0iBkaWstQAAACcBAAA/ABwAaHR0
cC90ZXN0cy9zZWN1cml0eS92aWRlby1wb3N0ZXItY3Jvc3Mtb3JpZ2luLWNyYXNoMi1zdGRlcnIu
dHh0VVQJAAOmg+JWvnziVnV4CwABBPUBAAAEFAAAAJWOvQ6CQBCEe59iSy2EA07F64zGUFgYghWx
QFjkIhx4Pya+vWswliZmm5nMTPbLGRPRUiy4FzJ+hiTLjineHRoLtbwm1g4fu5NViiXKB6Zohl4Z
3BZteynKmwA9BhU01Cc35sAZhylq3WuYB+E6imdQk36XhO8H4cpjdIGIGWO+wdJpaZ++6hUaVzZe
N/BJ/huP7M51w16qoj2lh40ixq63uKkqojACilHA9xnNqAtOt39xvABQSwMEFAACAAgAogRrSGBL
ZhCRAAAA+wEAAEUAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50
LXNlY3VyaXR5T3JpZ2luLXN0ZGVyci50eHRVVAkAA7CD4lbKfOJWdXgLAAEE9QEAAAQUAAAA7Y4x
DoMwDEV3TuELhASWVplh6NKeAQVTIpkksp0Kbl869AYdq7++r/dC3kqkSWNOgMyZPSyREFbV4q3t
+kvrznX+6pyzgqFy1MPuImYY77dxMLuQmXOoGyY1X+DB8RlTu28EFBNCD0j4IUD0IJQVUZvz6V/I
cro95EQHdK2DBSetjAITI0gtJbPi3IR/6I9D31BLAwQKAAAAAADbAGtIAAAAAAAAAAAAAAAAEwAc
AGh0dHAvdGVzdHMvc3RvcmFnZS9VVAkAA5184laDhOJWdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
AI0Ea0iXVkeWsAAAAO4AAABFABwAaHR0cC90ZXN0cy9zdG9yYWdlL2NhbGxiYWNrcy1hcmUtY2Fs
bGVkLWluLWNvcnJlY3QtY29udGV4dC1zdGRlcnIudHh0VVQJAAOKg+JWnXziVnV4CwABBPUBAAAE
FAAAAGXOQQuCQBAF4Hu/Yk6hUG0QQewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH
4Bl8EAImaKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBd
uA5uZE+09SitGfAzmY5V1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1p
nXtp6Q7zePYGUEsDBAoAAAAAALcEa0gAAAAAAAAAAAAAAAAVABwAaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvVVQJAAPag+JWg4TiVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAC3BGtIAAAAAAAAAAAAAAAA
GwAcAGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL1VUCQAD2oPiVoOE4lZ1eAsAAQT1AQAABBQA
AABQSwMECgAAAAAAtwRrSAAAAAAAAAAAAAAAACAAHABodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL1VUCQAD2oPiVoOE4lZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAtwRrSAAAAAAAAAAA
AAAAACgAHABodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvVVQJAAPag+JW
g4TiVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAQBWtIQKKuCQpVAABwuQEAQwAcAGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy93b3JrZXItcmVsb2FkLWNyYXNoLWxvZy50
eHRVVAkAA4CE4lbag+JWdXgLAAEE9QEAAAQUAAAA7F3vc5s4t/58+Sv4cKev09YpkkCApzcdx7F3
s5tfb5y0O3enwwgQCbcYvIDT5P3r7xFgGxM7Camz3e3K00ltC53zHOno6DkSRmdp4vEs66mrr4PZ
ZHrOY5+nFynn6u9YNyz6WTlj+XXzUni9+5hEswnP3n08Pbo8Hr57/W61vnLo8zgPg5Cnvc1alI88
zcIkbir48OGDMkh8rl7cTflq4W8W7VJd7ZywPLzhO4AvBUXqWcOos7v8OolLK4zPyjnPpkmchW60
Ii67hisM8lm5zHiqHh40cRgaUpQDlvN3F+GkAQRriHY10kVI1bQeoT2Cdw0dqV3N0jTldKyus+2Y
eSoU/aYibRf+GWoH6SNkaPYOQJwmaX6vFkJKP07iu0kyy9TLyxpGOrCsYX900LXx0OiaQ+Og27cR
7g4HoxHSNIyHhCqKIpCr/a/sC1fHYexxdT9J8p5q6ZqmqRn3ktjPFGWQsuya++rFdcqZv9ChQY+F
2ZTl3rX6x4zPoA28ZLLLptOI705YGHfzooKiDG89Ps0B+WqfDX8bOPv9A6c/GAzHY7UzPvxpPPzp
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
ZXJyLnR4dFVUCQADK4TiVlB94lZ1eAsAAQT1AQAABBQAAABdjrEKwjAURfd+xRvbxYCoSDZtO4iK
2IAdJU3eEEj7QvpS/Hxr6eR44ZzDrZvm0Ug4MWMfGJhA20kPBkGDoT54ZLRgUhwpZuJFPvU4ikqz
FnWrRIvd1bFQlKLB3yoporiTTX7G3GDxg9Z2YsQ4YRTqeXOMl+pcLsGNCSHfHvcFSOiIPKwBKWdE
LYqUf46U68E8uYEPuzcX2RdQSwMEFAACAAgA4wRrSLfgyOeZAAAAxQAAADcAHABpbXBvcnRlZC93
M2MvaW5kZXhlZGRiL2lkYm9iamVjdHN0b3JlX2NvdW50Mi1zdGRlcnIudHh0VVQJAAMqhOJWTn3i
VnV4CwABBPUBAAAEFAAAAF2OsQrCMBRF937FG9vFgKhINm07iIrYgB0lTd4QSPtC+lL8fGvp5Hjh
nMOtm+bRSDgxYx8YmEDbSQ8GQYOhPnhktGBSHClm4kU+9TiKSrMWdatEi93VsVCUosHfKimiuJNN
fsbcYPGD1nZixDhhFOp5c4yX6lwuwY0JId8e9wVI6Ig8rAEpZ0QtipR/jpTrwTy5gQ+7NxfZF1BL
AwQUAAIACADjBGtImbd13p8AAACKAQAANwAcAGltcG9ydGVkL3czYy9pbmRleGVkZGIvaWRib2Jq
ZWN0c3RvcmVfY291bnQzLXN0ZGVyci50eHRVVAkAAyqE4lZOfeJWdXgLAAEE9QEAAAQUAAAA3Y+x
CsIwFEX3fsUb28WAqEg2tR1ERWzAjpImbwikfSF9KX6+tXTyExwvnHu4t6rrey3hwIxdYGACbUfd
GwQNhrrgkdGCSXGgmIkn+dThIErNWlSNEg22F8dCUYoGv+lEEcWNbPIT5nqLb7S2FQPGEaNQj6tj
PJfH0yxcmRDy9X5bgISWyMMikHJC1FyR8qcj5TIwT67n3ebFRVb9w4kPUEsDBBQAAgAIAOgEa0i3
4MjnmQAAAMUAAAA4ABwAaW1wb3J0ZWQvdzNjL2luZGV4ZWRkYi9pZGJvYmplY3RzdG9yZV9kZWxl
dGU1LXN0ZGVyci50eHRVVAkAAzOE4lZcfeJWdXgLAAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28WA
qEg2bTuIitiAHSVN3hBI+0L6Uvx8a+nkeOGcw62b5tFIODFjHxiYQNtJDwZBg6E+eGS0YFIcKWbi
RT71OIpKsxZ1q0SL3dWxUJSiwd8qKaK4k01+xtxg8YPWdmLEOGEU6nlzjJfqXC7BjQkh3x73BUjo
iDysASlnRC2KlH+OlOvBPLmBD7s3F9kXUEsDBBQAAgAIAO8Ea0i34MjnmQAAAMUAAAA7ABwAaW1w
b3J0ZWQvdzNjL2luZGV4ZWRkYi9pZGJ0cmFuc2FjdGlvbi1vbmNvbXBsZXRlLXN0ZGVyci50eHRV
VAkAA0KE4lZ1feJWdXgLAAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28WAqEg2bTuIitiAHSVN3hBI
+0L6Uvx8a+nkeOGcw62b5tFIODFjHxiYQNtJDwZBg6E+eGS0YFIcKWbiRT71OIpKsxZ1q0SL3dWx
UJSiwd8qKaK4k01+xtxg8YPWdmLEOGEU6nlzjJfqXC7BjQkh3x73BUjoiDysASlnRC2KlH+OlOvB
PLmBD7s3F9kXUEsDBBQAAgAIAPYEa0iZt3XenwAAAIoBAABFABwAaW1wb3J0ZWQvdzNjL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1jcmVhdGVfaW5fdmVyc2lvbmNoYW5nZS1zdGRlcnIudHh0VVQJAANP
hOJWin3iVnV4CwABBPUBAAAEFAAAAN2PsQrCMBRF937FG9vFgKhINrUdREVswI6SJm8IpH0hfSl+
vrV08hMcL5x7uLeq63st4cCMXWBgAm1H3RsEDYa64JHRgklxoJiJJ/nU4SBKzVpUjRINthfHQlGK
Br/pRBHFjWzyE+Z6i2+0thUDxhGjUI+rYzyXx9MsXJkQ8vV+W4CElsjDIpByQtRckfKnI+UyME+u
593mxUVW/cOJD1BLAwQUAAIACAD4BGtIt+DI55kAAADFAAAAMwAcAGltcG9ydGVkL3czYy9pbmRl
eGVkZGIvd3JpdGVyLXN0YXJ2YXRpb24tc3RkZXJyLnR4dFVUCQADVITiVpJ94lZ1eAsAAQT1AQAA
BBQAAABdjrEKwjAURfd+xRvbxYCoSDZtO4iK2IAdJU3eEEj7QvpS/Hxr6eR44ZzDrZvm0Ug4MWMf
GJhA20kPBkGDoT54ZLRgUhwpZuJFPvU4ikqzFnWrRIvd1bFQlKLB3yoporiTTX7G3GDxg9Z2YsQ4
YRTqeXOMl+pcLsGNCSHfHvcFSOiIPKwBKWdELYqUf46U68E8uYEPuzcX2RdQSwMECgAAAAAAEQFr
SAAAAAAAAAAAAAAAACAAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1VUCQADAX3i
VoOE4lZ1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA+wBrSAAAAAAAAAAAAAAAACUAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvVVQJAAPafOJWg4TiVnV4CwABBPUBAAAEFAAA
AFBLAwQKAAAAAAD7AGtIAAAAAAAAAAAAAAAALwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvVVQJAAPafOJWg4TiVnV4CwABBPUBAAAEFAAAAFBLAwQKAAAA
AAC6BGtIAAAAAAAAAAAAAAAAQAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9VVAkAA+CD4laDhOJWdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAAAAABoBa0gAAAAAAAAAAAAAAABPABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL1VUCQAD
E33iVoOE4lZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAuARrSLrON5PjAAAATAUAAGcAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheS1zdGRlcnIudHh0VVQJAAPcg+JW2nziVnV4
CwABBPUBAAAEFAAAAO2TQUvEQAyFz/ZX5KgXabXqMogHuwcFC4KIguwhncnODjsmy0yq+O+dijdv
u3jrMfDe98gj6TFB00Bdm/Mr0y6APnPTtKdRLEZIahPtJGlg/3bWXlwuVnC9pGH0NwYyaU85o6cH
8b4obotpa6AYI7mq3x+smLQTXgc/JtQg/BJ008n7LtI03SG7SMlAh3ZDDmogxqFkwoB2S+zyIeGk
z5nSPa9lGayaP2wDx9XRyWEJc297JbD7Le5nL1Tykr4Kl8cYZ/JM/g9y4KAT8qnQyw9N923g9bED
K8xkp78qmg+MwVXfUEsDBBQAAgAIALkEa0irvrfQ7wAAAKQEAAByABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPeg+JW23ziVnV4
CwABBPUBAAAEFAAAAO2TTUsDQQyGz/ZX5Ggvslu3Wgfpwe1BwQVBRKF4yM6m06FjpmSyiv/eWfGk
p/oBPXhMSJ7kzUsaFChLKApzfGqqGdBLKsvqKESLAUSt0DaKenbLSTU9mT3C+YLa3s0NJOKuoZTQ
0b3XdY1KLsqrgUPuQxiPmm+TPXsdkLeZ7iNf8SoaeLipwUZmsppzueYZg+8+TTnbaX/9WP86Opcr
LnLTxkBuDLSfYEXROvLKu15wOMP74ePTNtAQXSJ3gcRAjXZNHRRAjG2eCS3aTbYr/UzVXSIZzFh4
q+YLOxs/Ohj/y/udf/kz8rTYC/IuP/4GUEsDBBQAAgAIALoEa0h/5FvM7gAAAAwGAABuABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA9+D
4lbdfOJWdXgLAAEE9QEAAAQUAAAA7ZSxTgMxDIZn+hQe6YIu0AKKEAPXASROQkIIJNTBl3PTqMGp
Eh+It8eHmGAqdGC40ZH92f5/xQ1mMAaqyp6c2XkF9FaMmR3F5DBCFpdpm7IE9s/Hs/np+RIuFtT2
/tJCIe4aKgU9PQZZ1yjkU363cMh9jNNJ82ty4CAD8l7pIfENr5KFp7saXGImJ/qmOa8YQ/eti9lp
fvka/zZ5rxlXWrSxoIWR/idYMEudeBV8n3GQ4VP49LKNNETXyF2kbKFGt6YOVHPGVntCi26jdpW/
bfVQKA9mLIIT+4Otxk8OpuN6+/kvI3kk74O8yy39AFBLAwQUAAIACAC7BGtINK2ATe0AAACkBAAA
eQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaF9ub2F1dG9wbGF5
LXN0ZGVyci50eHRVVAkAA+GD4lbefOJWdXgLAAEE9QEAAAQUAAAA7ZNNSwNBDIbP9lfkaC+y0w+V
QTy4PSi4IIgoSA/Z2XQ6dMyUTFbx3zsrnvRUP6AHjwnJk7x5SYMCxkBV2emJnRugl2zM7CgmhxFE
ndA2iQb2j5PZ/Ph0CWcLant/biETdw3ljJ7ug65rVPJJXi0cch/jeNR8mxw46IC8LfSQ+IpXycLD
TQ0uMZPTkis1zxhD92nKZKf99WP96+R9qbgoTRsLpTHSfoIVRevEq+B7weEM74dPT9tIQ3SJ3EUS
CzW6NXVQATG2ZSa06DbFrvwzVXeZZDBjEZzaL+xi/Ohg/C/vd/7l78jTvSDv8uNvUEsDBBQAAgAI
ALwEa0jME7N+6gAAAKQEAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRh
dGFfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPjg+JW4HziVnV4CwABBPUBAAAEFAAAAO2TwUoD
QQyGz/YpcrQX2bVblUE8uD200AVBREF6yM6m06HTTJnJKr69WfGkp6oHEY8JyZf8+UmDCcoSisJM
zs10AvScy7I6CdFigCQ20T4m8eweT6vp2cUKLmfU9u7KQCbuGsoZHd172dQo5GJ6MXDMfQjjUfNl
smcvA/JW6T7ygtfRwMNNDTYykxXNac0TBt99mFIdtL+8r7+MzmnFtTZtDWhjoN8JFkxSR1571ycc
zvB2+LjbBxqiOXIXKBmo0W6ogwKIsdWZ0KLdql35e6ruMqXBjJm3Yj6x1fjR0fhf3s/8y18nH/Lj
r1BLAwQUAAIACAC8BGtIfUBT1uoAAACkBAAAbgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVu
dF9sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0VVQJAAPkg+JW4XziVnV4CwABBPUBAAAEFAAAAO2T
wUoDQQyGz/YpcrQX2dVulUE8uD0ouCBIUZAesrPpdOiYlJms4ts7WzzpqeqhFI8JyZf8+UmDEcoS
isKcnZuqAnpLZTk5CWIxQFQbaSNRPbvn00k1vVjA5Yza3l0ZSMRdQymho0evqxqVnMR3A8fchzAe
NT8me/Y6IB8y3Qvf8lIMPN3XYIWZrOZcrnnF4LsvU6Y77a+f69+Jc7niOjetDeTGQPsJVoxaCy+9
6yMOZ9geXl42gYboBrkLFA3UaFfUQQHE2OaZ0KJdZ7vS71TNE8XBjJm3ar6xs/Gjo/G/vL/5l0Mn
7/LjH1BLAwQUAAIACAC9BGtIuL3GTewAAACkBAAAeQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF9sb2FkZWRtZXRhZGF0YV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA+aD4lbjfOJWdXgL
AAEE9QEAAAQUAAAA1ZNNSwNBDIbP9lfk2F5kt/ZDBvHg9qDgglBEQTxkZ9Pp0DFTMlnFf+9s6c2T
lkJ7TEievHlDahQoSygKczU30znQVyrLyWWIFgOIWqFtFPXs3saT6ez6HW4W1HTu1kAibmtKCR29
eF1XqOSifBsYchfCaFD/m+zZa49cZrqP/MCraOD1qQIbmclqzuWaTwy+PWBKIt3Lf4zO5Yq73LQx
kBsDHQRWFK0ir7zrBHu1O3/ixzZQH90jt4HEQIV2TS0UQIxNngkN2k12NZ3kVqTPiaQ/xsJbNb9E
58MPLkZn7Nux1zvav5wj+S8//gNQSwMEFAACAAgAwARrSAhtDHPrAAAApAQAAGkAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAkAA+eD4lblfOJWdXgL
AAEE9QEAAAQUAAAA7ZPBSgNBDIbP9ilybC+yW1ttB+mh24OCC4KIgnjIzqbToWOmZLKKb++seNJT
1YMUjwnJl/z5SY0CZQlFYU7OzHQG9JLKcnIcosUAolZoF0U9u4fxZHo6e4TzFTWdWxhIxG1NKaGj
O6+bCpVclFcDQ+5CGA3qb5M9e+2RN5nuI1/yOhq4v67ARmaymnO55hmDbz9Nme+1v36sfxWdyxXL
3LQ1kBsD/U2womgVee1dJ9if4f3w8WkXqI8ukNtAYqBCu6EWCiDGJs+EBu0225V+puo2kfRmrLxV
84WdjR8cjf7l/c6/HDp5nx9/A1BLAwQUAAIACADBBGtIKFC8NeoAAACkBAAAdAAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnRfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPp
g+JW53ziVnV4CwABBPUBAAAEFAAAAO2TwUoDQQyGz/YpcrQX2bFVyiAe3B4sdEEQURAP2dl0OnTM
lJlsxbc3K570VPVQxGNC8iX5f9JgBmOgquxkZqsK6KUYMz2JyWGELC7TNmUJ7B9Pp2fnsye4mFPb
+0sLhbhrqBT0dB9kXaOQT/nVwjH3MY5HzbfJgYMMyFulh8QLXiULDzc1uMRMTjSnNTuMofs0xey1
v3ysv0zea8WVNm0saGOkwwQLZqkTr4LvMw4yvAufnreRhugauYuULdTo1tSBas7Y6kxo0W3UrvKz
q+4K5cGMeXBiv7DV+NHR+P+83/mXv07e58ffAFBLAwQUAAIACADCBGtISGzfDPAAAABmBgAAfAAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X2NhbnBsYXl0aHJvdWdo
LXN0ZGVyci50eHRVVAkAA+uD4lbpfOJWdXgLAAEE9QEAAAQUAAAA7ZRNSwNBDIbP9lfkaC+y21Yp
g3hwe7DQhYKIgnjIzqbToWOmzGQr/nuz4s1bW0FojwnJk4+XpMYEZQlFYcZTU4yAPnJZTq5CtBgg
iU20jUk8u9fR5Ppm+ga3M2o6d2cgE7c15YyOnr2sKxRyMX0auOQuhOGg3pvs2UuPfFS6jzznVTTw
sqzARmayoj6N2WHw7QFVMslP+4vonEbca9LGgCYG+p9gwSRV5JV3XcJ+Dd+Lj+/bQL31gNwGSgYq
tGtqoQBibLQmNGg3Klc+bKqnTKkXY+atmF9sFX5wMTyt8cZ/di9n8pl8DPL+v/SY/X8BUEsDBBQA
AgAIAMMEa0jpaLC47gAAAAwGAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVy
X2NhbnBsYXlfcGxheWluZy1zdGRlcnIudHh0VVQJAAPtg+JW6nziVnV4CwABBPUBAAAEFAAAAO2U
TUsDQQyGz/ZX5NheZNeuUgbx4Pag4IIgoiAesrPpdOg0UzJZxX/vrHjSU7WHHvaYkDz5eEkaFChL
KAozX5hiDvSeyrI6DdFiAFErtIuint3LWXV+sXiFyyW1vbsykIi7hlJCR09e1zUquSgfBqbchzCb
NH8me/Y6IB8y3Ue+5VU08Hxfg43MZDX7cswbBt/9qFLt1b9+t38XncsR1zlpYyAnBjpOsKJoHXnl
XS84rOFr8XG7CzRYN8hdIDFQo11TBwUQY5trQot2k+VK/5vqMZEMYiy9VfOLnYWfnMzG8Q5zLyN5
JB+CvM8v/QRQSwMEFAACAAgAwwRrSBf9QHfxAAAAZgYAAH8AHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfb3JkZXJfbG9hZGVkbWV0YWRhdGFfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQJAAPu
g+JW7HziVnV4CwABBPUBAAAEFAAAAO2UwUoDQQyGz/YpcmwvslvbUgbx4Pag4IIgoiAesrPpdOiY
KTNZxbc3K54UBG0RD3vMkHz5k59JjQnKEorCnCxNMQd6yWU5Ow7RYoAkNtEuJvHsHqaz+WL5CKcr
ajp3ZiATtzXljI7uvGwqFHIxvRoYcxfCZFT/muzZS4+8UbqPfMnraOD+ugIbmcmKvmnOMwbffuqy
+JF++ZB/FZ3TjHMt2hrQwkD/EyyYpIq89q5L2K/hffHxaReojy6Q20DJQIV2Qy0UQIyN9oQG7Vbt
yvtNdZsp9WasvBXzha3Gj44mw3iH+S8DeSAfgvxXt/R7/W9QSwMEFAACAAgAxARrSD9oleDxAAAA
DAYAAHgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfbG9hZHN0YXJ0X3Byb2dy
ZXNzLXN0ZGVyci50eHRVVAkAA/CD4lbufOJWdXgLAAEE9QEAAAQUAAAA7ZTBSgNBDIbP9ilybC+y
W6sug3hwe1BwQRBRkB6ys+l06JiUmazi2zsr3jzpYg/F44Tky58/YRqMUJZQFOakMsU50Fsqy8Vx
EIsBotpIO4nq2T3PF6dn1QoultT27tJAIu4aSgkdPXrd1KjkJL4bmHIfwmzS/Jrs2euAvM90L3zD
azHwdFeDFWaymmM55xWD70Z0SaRf8m/FuZxxlYu2BnJhoFFgxai18Nq7PuKg9tMfedkFGl7XyF2g
aKBGu6EOCiDGNveEFu02u5rGTfWQKA6eLb1V842d9zM5mv37trdr3sdG/k77oZOrAyf/5C/9AFBL
AwQUAAIACADFBGtIcSZu1PUAAABmBgAAZQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9w
YXVzZS1zdGRlcnIudHh0VVQJAAPyg+JW8HziVnV4CwABBPUBAAAEFAAAAO2UwUoDMRCGz/Yp5mgv
ktQqaxAP3R4UXBBEFMTDbHaahsZJSWYV396seNJTW0GFHhNmvvnzhaTBBFqDUua4MqoCes1aT49C
tBggiU20jkk8u8fJ9OS0eoLzObW9uzCQibuGckZH916WNQq5mN4MHHIfwnjUbE327GVA3ha6j3zF
i2jg4aYGG5nJStkrNS8YfPdlytlG+eUz/nV0rlTMStPKQGkMtBNYMEkdeeFdn3BI++EnPq8DDatL
5C5QMlCjXVIHCoixLTOhRbsqVvNup7rLlAZnc2/FfGOX+xkdjPfefsHbJu9lT/7nZK3+BHnrv/RH
878DUEsDBBQAAgAIAMYEa0gSY/Nu7QAAAKQEAABwABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2
ZW50X3BhdXNlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQAD9IPiVvJ84lZ1eAsAAQT1AQAABBQA
AADtkzFLBDEQhWvvV0zpNbLRU44gFu4VCi4IIgpiMZudy4WLkyOZVfz3zoqVVuticWCZMPO9l/dI
gxmMgaqyJ0trKqC3YsziKCaHEbK4TLuUJbB/Ol6cni2f4XxFbe8vLBTirqFS0NNDkE2NQj7ldwuH
3Mc4nzW/JgcOMiDvlB4SX/M6WXi8rcElZnKidzrzijF031TMKP/yZf8mea8Tl7q0taCLkSaBBbPU
idfB9xkHt5/5pJddpOF0hdxFyhZqdBvqQKNhbFUTWnRbTbVMe9V9oTxktgpO7A+29jM7mE9SGNP7
fyP73chfkcf88Q9QSwMEFAACAAgAxwRrSGSMfinzAAAADAYAAGQAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvZXZlbnRfcGxheS1zdGRlcnIudHh0VVQJAAP1g+JW9HziVnV4CwABBPUBAAAEFAAAAO2U
wUoDQQyGz/YpcmwvstNWKYN4cHtooQuCiIJ4yM6m06HTTJnJVnx7Z8WTnlYtKPSYIfny5w+TCiMo
BUWhJzOtxkAvSanpuQ8GPUQxkfYhimP7NJ5eXM6e4WpOdWuvNSTipqKU0NKDk02JQjbEVw1Dbr0f
Dapvkx076ZB3me4CL3kdNDzelmACMxnJbznngN41n7pMeumXD/mrYG3OuMlFWw250NOPwIJRysBr
Z9uIndp3f8Ju76mLFsiNp6ihRLOhBgogxjr3hBrNNrua/uRUJPeJYreMuTOiv4jOix+cjf6xb8ce
r9d/OZFP5N8g97mlb1BLAwQUAAIACADIBGtIFoZbd+4AAACkBAAAbwAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9ldmVudF9wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQAD94PiVvV84lZ1eAsA
AQT1AQAABBQAAADVk8FKA0EMhs/2KXK0F9nRrZRBPLg9KLggiCiIh+xsOh06ZspMVvHtzYo3T7UU
2mNC8uXPH9JiBmOgquzF3Joa6LMYU5/F5DBCFpdpk7IE9q/n9exy/gZXC+oGf22hEPctlYKenoOs
GhTyKX9ZOOUhxumk/Tc5cJAR+aj0kPiOl8nCy0MDLjGTE81pzQfG0O8wpZD8yr9P3mvFjTatLWhj
pJ3AglmaxMvgh4yj2h9/0vsm0hjdIveRsoUG3Yp6qIAYO50JHbq1uloOciuSp0J5PMYiOLF/ROvh
JyfTI/Zt3+vt7V+2I88OgrzNj38DUEsDBBQAAgAIAMgEa0iba6e99wAAAGYGAABnABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlpbmctc3RkZXJyLnR4dFVUCQAD+IPiVvd84lZ1eAsA
AQT1AQAABBQAAADtlE1LA0EMhs/2V+RoL7JjPyiD9NDtwUIXBBEF8ZCdTadDx0yZyVb8986KJwWh
WkWhxwzJkzdvmFQYQSkoCj2YaDUCekpKDc98MOghiom0DVEc2/vz4Wg8eYCLOdWtnWpIxE1FKaGl
WyfrEoVsiM8aTrn1vt+rvkx27KRDXme6C7zgVdBwd1WCCcxkJL/lnB1617zrMt5Lv7zJXwZrc8Ys
F2005EJP3wILRikDr5xtI3ZqX/0Jj1tPXXSJ3HiKGko0a2qgAGKsc0+o0Wyyq+lPTkVykyh2y5g7
I/qD6Lz43kn/H/v20+Pt9V+O5CP5EOTfuqWf638BUEsDBBQAAgAIAMkEa0j7M1DH9wAAAGYGAABy
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlpbmdfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQJAAP6g+JW+XziVnV4CwABBPUBAAAEFAAAAO2UQUsDMRCFz/ZXzNFeykbbugTx4Pag0AVB
REE8zGanaWiclGRW8d+bFU8KQl2UHnpMmPney3uQGiMoBUWhT0utzoBek1LTiQ8GPUQxkbYhimP7
eDKdzcsnOF9Q09kLDYm4rSkltHTvZF2hkA3xTcMxd96PR/WvyY6d9MjbTHeBr3kVNDzcVGACMxnJ
d3nmBb1rv6iUO/mXT/vLYG2euMxLGw150dMgsGCUKvDK2S5i7/Yjn/C89dSfrpBbT1FDhWZNLRRA
jE3WhAbNJqeahr3qLlHsM1s4I/obO/czOhoPUtil9/1o5O8sH7o+kPeZ/F9/6c/+3wFQSwMEFAAC
AAgAygRrSBr6OgrtAAAADAYAAGgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jl
c3Mtc3RkZXJyLnR4dFVUCQAD/IPiVvt84lZ1eAsAAQT1AQAABBQAAADtlE1LA0EMhs/2V+TYXmSn
VqmDeOj2oOCCIKIgHrKz6XTomCkzWcV/b1a8ebIFEekxIXny8ZI0mMEYqCp7MrfmHOitGDM7jslh
hCwu0zZlCeyfprPTs/kzXCyp7f2lhULcNVQKenoIsq5RyKf8bmHMfYyTUbMzOXCQAXmn9JD4mlfJ
wuNtDS4xkxP1acwrxtDtUaWQfLV/k7zXiIUmbSxoYqS/CRbMUideBd9nHNbwufj0so00WFfIXaRs
oUa3pg4qIMZWa0KLbqNylf2mui+UBzGWwYn9xlbhR0eTw3i/fy//njytDuQdyT/5pR9QSwMEFAAC
AAgAywRrSF8wkGHqAAAA/gQAAHMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jl
c3Nfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAP9g+JW/XziVnV4CwABBPUBAAAEFAAAAO2TwUoD
QQyGz/YpcrQX2WmrlEE8uD1Y6IIgoiAesrPpdOiYKTPZim9vVjzpqeihiMeE5Evy/6TBDMZAVdnp
3E4qoNdizOwsJocRsrhMu5QlsH+azM4v5s9wuaC291cWCnHXUCno6SHIpkYhn/KbhVPuYxyPmiMk
Bw4yIO+UHhIveZ0sPN7W4BIzOdGc1uwxhu7LFHPQ/vK5/ip5rxXX2rS1oI2RjhMsmKVOvA6+zzjI
8CF8etlFGqIb5C5StlCj21AHqjljqzOhRbdVu8rPrrovlAczFsGJ/cZW40cn4//zfudf/jr5kB9/
B1BLAwQUAAIACADMBGtIJrQih/EAAACmBQAAagAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVu
dF90aW1ldXBkYXRlLXN0ZGVyci50eHRVVAkAA/+D4lb+fOJWdXgLAAEE9QEAAAQUAAAA7ZPBSgNB
DIbP9ilybC+ys61SBvHQ7cFCFwoiCuIhO5tOh46ZMpOt+PbOiic9VS1Y8JiQfPnzh9QYQSkoCj2e
6lIBvSSlJuc+GPQQxUTahSiO7WM5ubicPsHVnJrOXmtIxG1NKaGleyebCoVsiK8ahtx5PxrU3yY7
dtIjbzPdBV7wOmh4WFVgAjMZyblcs0fv2k9TyoP0y4f8ZbA2V8xy01ZDbvT0I7BglCrw2tkuYq/2
3Z/wvPPURzfIraeooUKzoRYKIMYmz4QGzTa7mv7kViR3iWJ/jLkzor+IzocfnI1O2Ldjr3fQv/yT
T508/kXyG1BLAwQUAAIACADMBGtI+VOaK/IAAABmBgAAdQAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF90aW1ldXBkYXRlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADAITiVgB94lZ1eAsA
AQT1AQAABBQAAADtk8FKA0EMhs/2KXK0F9ltVymDeHB7qOCCIKIgHrKz6XToNCkzWcW3d1YED55q
ESr0mJB8+fOHNBihLKEozHRmJlOgt1SW1VkQiwGi2khbierZPU+q84vZC1zOqe3dlYFE3DWUEjp6
9LqqUclJfDdwyn0I41Hza7JnrwPyPtO98A0vxcDTXQ1WmMlqzuWaVwy+22PKIeqvdtKvX/Jvxblc
cZ2b1gZyY6C9wIpRa+Gld33EQe2nP7LZBhqiBXIXKBqo0a6ogwKIsc0zoUW7zq6mg9yK9CFRHI4x
91bND9H58KOT8T/27a/X2+lfjuQj+Zv8AVBLAwQUAAIACADNBGtINCEYQI0AAACAAQAAbAAcAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF92b2x1bWVjaGFuZ2Utc3RkZXJyLnR4dFVUCQADAYTi
VgF94lZ1eAsAAQT1AQAABBQAAAC1jrEKwjAURXe/4o26SFMTKUFc6uIQEBwUxCGmrzEQ3pMkVfx7
6+oodL1czjnGJhACqkqvGl1LwFcWQi4jOxshFZfwwakE8pdaqnVzhc0Ob4PfashIncGcrcdTKPfW
FvSc3hrmNMS4mJm/yYFC+SKPIz0w7alnDedDC46J0JVxGz9PG0P3Y1GT9auJ+j9QSwMECgAAAAAA
+wBrSAAAAAAAAAAAAAAAAFoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9VVAkA
A9p84laDhOJWdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAPsAa0gAAAAAAAAAAAAAAABkABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL1VUCQAD2nziVoOE4lZ1eAsA
AQT1AQAABBQAAABQSwMEFAACAAgAuARrSLVoIrzKAAAA3QEAAHkAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svYWN0aXZlQ3Vlcy1zdGRlcnIudHh0VVQJAAPcg+JW
2nziVnV4CwABBPUBAAAEFAAAAKWQMU/DMBCFZ/IrbmyXKIFQwEIMTQeQyFgxIIaLfXWtmnN1vgjx
73GAjQllvCe97917Awq0LTSNubox3S3QR27bro7JYgRRK3ROooH962V3fbd5g/snPqQHAzF5X2TI
iqK5rutq+DdqR+PkCyuTDpQzenr+oW6L6WSgGCO5JeD5uT7xIfhJUEPil6DHPr2fI83XI7KLJAZ6
tEdy0AAxjiUTRrQnYpeXtdpnknmvXbBq/rANrKqL9aIEdr/DffdCJZ/ks3B5inFdfQFQSwMEFAAC
AAgAuQRrSJpmnAOEAAAAwAAAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9U
ZXh0VHJhY2svYWRkQ3VlLXN0ZGVyci50eHRVVAkAA92D4lbafOJWdXgLAAEE9QEAAAQUAAAAncw9
CgIxEEDhfk8xpTay0fgXxGZtLAKChYJYxOwYB8JEklnF2xuvYPt4fNZlUAra1syWRq8A30UpPYnJ
uwhZfMZnykIcLlM9Xy+usNnhbQhbAwW5t1iKC3gieXROMKT8MTDiIcZxY/+WiUl+5LHqlHjP92Tg
fOjAJ2b0Ult9Xi5S33wBUEsDBBQAAgAIAM4Ea0ivw3fn3wAAAOQDAAB3ABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL25ldHdvcmtTdGF0ZV9kdXJpbmdfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAkAAwOE
4lYEfeJWdXgLAAEE9QEAAAQUAAAA7ZExSwNBEIVr71dMqU24i0kMi1h4KRRyIIgoiMXc7mSzZJ0N
s3OK/949sbNLSlMOvPc95r0OBZoG6tpcLs30CugzN81sEpPFCKJWaJ9EA/vX6Wy+WL7B9Yr6wd8Y
yKQd5Yye1sn7orgtpp2BYozkqu5wsKJom3gT/CCoIfFz0G2b3veRxusO2UUSAy3aLTmogRj7kgk9
2h2xy8eEkz5lknvepFWwav6wDZxXZxfHJZx6OyiB3W9xP3+hkk/yVbg8xPjfyIGDjsjHQi/bjr0b
eHlowSZmsuPeRfOBMbjqG1BLAwQUAAIACADOBGtI0PrUxYQAAADAAAAAbgAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9uZXR3b3JrU3RhdGVfaW5pdGlhbC1zdGRlcnIudHh0VVQJAAMEhOJWBH3iVnV4
CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMu0tSqJYhLXRwCgoOCOMT0Gg/CRZKr4tsbX8H15+cz
NoFSUNd62elmA/jOSrWLEJ0NkMQlfMYkxP7atKt1d4PtHu+T32nIyIPBnK3HM8mjt4I+po+GGU8h
zCvzt0xM8iNPRafIBx6jhsuxBxeZ0Ulp5XnZQEP1BVBLAwQUAAIACADPBGtI85BmpeEAAABMBQAA
cgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfZmFsc2VfZHVyaW5nX3BsYXktc3RkZXJy
LnR4dFVUCQADBYTiVgZ94lZ1eAsAAQT1AQAABBQAAADtkzFLxEAQhWvzK6bURpLzlLCIhbniBAOC
iIJYTHbn9pbbmz1mJ4r/3o3YiZUIFikH3nyPB+/1KNA0UNfmrDWLFugtN83yNCaLEUSt0CGJBvbP
i+X5RfsClysaRn9lIJP2lDN6uk3eF8V1edoZKI+RXNX/Q7CiaJd4E/woqCHxY9Btl/aHSNO1RnaR
xECHdksOaiDGoXjCgHZH7PLvUj1kkhvepFWwar6xDRxXRydzvJ8d2H314jMXKvkk74XLY4wzeSb/
BTlw0Al5X+hlQ1O/DTzddWATM9lpV0XzijG46gNQSwMEFAACAAgAzwRrSDKKmoDqAAAApAQAAHIA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1c2VkX3RydWVfZHVyaW5nX3BhdXNlLXN0ZGVyci50
eHRVVAkAAwaE4lYHfeJWdXgLAAEE9QEAAAQUAAAA7ZPBSgNBDEDP9itybC+y21apg3hwe1BwoSBi
QTxkZ9Pp0DEpM1mLf++sePOkixTBY0LyknlDaoxQllAUZrYw0wugQyrL+WkQiwGi2kh7ierZPU3n
Z+eLZ7hcUtO5KwOJuK0pJXT06HVboZKT+GZgzF0Ik1H9Y7Jnrz3yPtO98C1vxMB6VYEVZrKac7nm
FYNvB0xJpJ/r34lzueI6N+0M5MZAg8CKUSvhjXddxH7bDz/ysg/URzfIbaBooEK7pRYKIMYmz4QG
7S5bTcNe9ZAo9s6W3qr5ws7/MzqZ/Hs7grffupe/SP7Ojb8DUEsDBAoAAAAAAP0Aa0gAAAAAAAAA
AAAAAABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNl
L1VUCQAD3nziVoOE4lZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAugRrSDbUGX0QAQAAoAIAAJEA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2Ut
bW92ZS10by1vdGhlci1kb2N1bWVudC1zdGRlcnIudHh0VVQJAAPfg+JW3XziVnV4CwABBPUBAAAE
FAAAALWRT0vDQBDFz/ZTzFEPhmySkrBIwaYHBQvSIh5CD5tksgldZ8vuBv98eidVLx4Nzm0G5vfe
vKniWKa5XIooLdID3HBBubtd72HFBZ0Zff+I1A6kd2hQedxjkFDFb3lXp6LIkyIT8QHWxjZHiKFX
HsjS9Qc6Cw47aOxIAdLFVjkQAn7kAF+9EFnEa8qAC43Dk3WBZapkmWcJW7mnzq4kGKs1j8EH5YKP
ougPqA3Wo2aWx7BF75XGhy/q2bYEXjTYzgFP5kpL3aBHp8Jg6XkIfWlfTgan7k5Ra9BJKFXTY8tB
IamaNaFWzZHz9fOuevLoprw2Q8Pf+c2WcLm4uJqlQO13cOe7VEBt3TtzaTTmP8mfUEsDBBQAAgAI
ALoEa0iVnIUoKwEAAG8DAACPABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1l
ZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtd2l0aGluLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAA+CD
4lbdfOJWdXgLAAEE9QEAAAQUAAAAzZJNawIxEIbP9VfMsR4q+6GIoQh1PbRQQVxKC+Ihm53NBtOJ
JNl+/frOSnvxJvbQuc0wed7JO7OSHtIUkkTkUzFJAd9Dmo5H1ilpwUfl8eB8NKS32WQ6znZwu8Sq
03MBAaleYQhS47OJbSEjauc/BVxTZ+1wsPqHZEMm9siS6cbRAzVOwMu6AOWIUEWucc+btKYebH/5
o9ksZwYHFJu7RQlzDmhsF9o1T8o6G7QoA5YYBWyTj2lT5WmdZ5VKkh0seK49JNDKAOTo5gu9A48N
a3YUYXyRUfHHp0enNXcctQTwQ4v1CTg7Bxylj4WjxujOy96W4yLc68Fin91Lqi16AYVULdb8OyRZ
sSZUUu3ZlHCJOMangL5fztIotvSUzYcwuBpepHDOgf0l+RtQSwMEFAACAAgAugRrSJ2w1skkAQAA
bwMAAI8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2Uv
cGF1c2UtcmVtb3ZlLWZyb20tZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQAD4IPiVt584lZ1eAsAAQT1
AQAABBQAAADNkk1rwzAMhs/Lr9BxO6zETUqHGYU1PWywQmkZK5QdHEdxTD252M6+fv2Usl122aGX
6mYjPa/0SksVQAjIc1lM5WQM+B6FKEfOa+UgJB3w4EOyZHbjybQcv8DtAuvezCREpGaJMSqDzzZ1
lUpofPiUcEm9c1fZ8gzJlmwakBumW08P1HoJ21UF2hOhTvzHOW/K2Sbb/fJHxU3ODA6o1nfzDcw4
oHV97FbcKeus0aGKuMEkYZd/TNu6EI0QxSTnwjn3tYccOhWBPF1/YfAQsGXNnhKUJxmVfnx69MZw
xlFLAhc6bE4BJxVS5am1pg9qsOW4CP96cDi87hU1DoOESukOG54OSdWsCbXSezYlnjbVU8QwLGdh
NVv6l82HkF2c54H9R/4GUEsDBBQAAgAIALoEa0h4aEHkgwAAABoBAACBABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BsYXliYWNrUmF0ZS1zdGRlcnIu
dHh0VVQJAAPgg+JW3nziVnV4CwABBPUBAAAEFAAAAM3MsQrCMBCA4b1PcaMu0sSWQhCXujgEBAcF
cYjpGQ/CRZKr4tsb38L15+ezLoNS0LZmPZheA76LUt0qJu8iZPEZnykLcbjofuj0FTY7vM1ha6Ag
TxZLcQFPJI/RCYaUPwYWPMe4bOwfysQkP/JYdUq853sycD6M4BMzeqmtPi8XaWq+UEsDBBQAAgAI
AM8Ea0jSzNrngwAAAMAAAAB4ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ByZWxvYWRfcmVmbGVj
dHNfbm9uZV9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAMGhOJWCH3iVnV4CwABBPUBAAAEFAAAAJ3M
sQrCMBCA4b1PcaMuktgqJYhLXRwCgoOCOMT0jAfhIslV8e2Nr+D68/NZl0FrUMq0vWkV4Lto3S1i
8i5CFp/xmbIQh8uyW637K2x2eJvC1kBBHi2W4gKeSB6DEwwpfwzMeIpx3ti/ZWKSH3msOiXe8z0Z
OB8G8IkZvdRWn5eLNDZfUEsDBBQAAgAIANAEa0iwcJYj5wAAAEwFAABzABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXktc3RkZXJyLnR4dFVUCQADB4TiVgp9
4lZ1eAsAAQT1AQAABBQAAADtk01LAzEQhs/ur5hjvcimrVJC6aHbg4UuCCIK4mE2maahcVKSWcV/
b1a8eVP2IPQ4MPO8885HiwmUgrrWs4WeKaD3rNT8KkSDAZKYRKeYxLN7ns6vbxYvsNxQ17uVhkzS
Us7oaBedKxnrUnTUUAoD2ar9PVgwSRN5712fUHzkRy+HJr6eAg3RLbINlDQ0aA5koQZi7IomdGiO
xDb/RXw0VyQPmdKW93HjjegfTWuYVBeX/3huY9srlO/VfPlCIRfTR+FyH8KZfCaPQfbsZUDeF3r5
oeG+NTzdNWAiM5nhr0rOGwZvq09QSwMEFAACAAgA0ARrSLUSUuvtAAAADAYAAHoAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4
dFVUCQADCITiVgx94lZ1eAsAAQT1AQAABBQAAADtlE1LA0EMhs/2V+RoL7LTVimDeHB7UHBBEFEQ
D9nZdDp0zJSZrOK/Nyue9FTtwcMeE5InHy9JgxmMgaqy86WdG6C3YsziJCaHEbK4TLuUJbB/mi1O
z5bPcL6itvcXFgpx11Ap6OkhyKZGIZ/yu4Vj7mOcTppfkwMHGZB3Sg+Jr3mdLDze1uASMzlRn8a8
YgzdtyqzvfqXr/ZvkvcacalJWwuaGOl/ggWz1InXwfcZhzV8Lj697CIN1hVyFylbqNFtqIMKiLHV
mtCi26pc5W9T3RfKgxir4MT+YKvwk6PpON5h7mUkj+RDkPf5pR9QSwMEFAACAAgA0QRrSAWWmgbu
AAAAZgYAAHYAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfbG9hZGVk
ZGF0YS1zdGRlcnIudHh0VVQJAAMJhOJWDX3iVnV4CwABBPUBAAAEFAAAAO2UTUsDQQyGz/ZX5Ggv
stutUgbx4PZQwQVBREE8ZGfT6dBpUmayiv/eWfGkp2IPPewxIXny8ZI0GKEsoShMtTDVDOgjleX8
IojFAFFtpL1E9exeZ/PLq8UbXC+p7d2NgUTcNZQSOnr2uqlRyUn8NHDOfQjTSXOCZM9eB+Rjpnvh
O16LgZeHGqwwk9XsyzHvGHz3q0p1UP/60/69OJcjbnPS1kBODHSaYMWotfDauz7isIbvxctuH2iw
VshdoGigRruhDgogxjbXhBbtNsuV/jfVU6I4iLH0Vs0fdhZ+cjYdxzvOvYzkkXwM8iG/9AtQSwME
FAACAAgA0QRrSAq4wc3sAAAApAQAAHoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0
ZV9kdXJpbmdfbG9hZGVkbWV0YWRhdGEtc3RkZXJyLnR4dFVUCQADCoTiVg994lZ1eAsAAQT1AQAA
BBQAAADtk8FKxDAQhs/uU8zRvSytrbIE8WD3oGBBEFEQD9N0Nhs2TpbJVPHtTRdPeqp7EMRjwsw3
f74wLQqUJRSFqZamqoDeUlnWixAtBhC1Qrso6tk9ndSnZ8tnOF9RN7gLA4m4bykldPTgddOgkovy
buCYhxDms/bHZM9eR+RdpvvI17yOBh5vG7CRmazmu1zzisH3X6bUk/LrZ/yb6FyuuMxNWwO5MdBB
YEXRJvLau0FwTLv3E192gcbTFXIfSAw0aDfUQwHE2OWZ0KHdZqvpsFfdJ5LR2cpbNd/Y+X9mR/N/
b7/gbcq+/HXylB3/AFBLAwQUAAIACADSBGtI+2livPAAAAAMBgAAcwAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19wbGF5aW5nLXN0ZGVyci50eHRVVAkAAwuE4lYRfeJW
dXgLAAEE9QEAAAQUAAAA7ZTBSsQwEIbP7lPM0b1I63ZlCeLB7kHBgiCiIB6m6Ww2bJwsk6ni25uK
Jz3VFbz0mDDzzZ8vJA0KlCUUhVmszKICektlWZ2EaDGAqBXaR1HP7um0Wp6tnuF8TW3vLgwk4q6h
lNDRg9dtjUouyruBY+5DmM+aX5M9ex2Qd5nuI1/zJhp4vK3BRmaymvdyzSsG332bshyVX7/i30Tn
csVlbtoZyI2BDgIritaRN971gkPaTz/xZR9oWF0hd4HEQI12Sx0UQIxtngkt2l22mg471X0iGZyt
vVXzg53vZ3Y0n7z9g7cx72UiT+S/II/5Sz8AUEsDBBQAAgAIANIEa0giz504hAAAAMAAAABsABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfaW5pdGlhbC1zdGRlcnIudHh0VVQJAAMM
hOJWEn3iVnV4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMu0thaShCXujgEBAcFcYjpNQbCnSRX
xbc3voLrz89nbAKloK510+umA3xnpdpVZGcjJHEJn5wkkL+u203X32C7x/vsdxoy0mgwZ+vxHOQx
WEHP6aNhQXOMy8r8LQcK8iNPRQ9MB5pYw+U4gGMidFJaeV42hrH6AlBLAwQUAAIACADSBGtIFAhO
/tMAAADCAgAAhAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9zcmNfcmVmbGVjdHNfYXR0cmlidXRl
X25vdF9zb3VyY2VfZWxlbWVudHMtc3RkZXJyLnR4dFVUCQADDITiVhN94lZ1eAsAAQT1AQAABBQA
AADtkD9PwzAQxXc+xY10SO00VTHeKqqqAwOKylQxuPaFWPhPsC98fg6FmQWJCd3ynt476Xd3kVJ3
Sne79U51L3A6n596fJ+xEgz+9UQ0fduDdz1a9B/YY51yqvhgQrga+6ahLIGDkfvslhy2cgu3WEou
0LSb+06tYGD9VdJChGxNGHMlrZSUYqQYRMVoEnlbBcYrOoeusTkRJhIRnTcNBozsqhhyvrn8zM72
MMfp6JMJz/3jPvEBMRPunWPEqsEsAtrN3VrytLzGXZhL+DPI/wf/FvITUEsDBAoAAAAAAP0Aa0gA
AAAAAAAAAAAAAABVABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL1VUCQAD3XziVoOE4lZ1
eAsAAQT1AQAABBQAAABQSwMECgAAAAAA/QBrSAAAAAAAAAAAAAAAAGMAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvdHJhY2svdHJhY2stZWxlbWVudC9VVAkAA9184laDhOJWdXgLAAEE9QEAAAQUAAAA
UEsDBBQAAgAIALoEa0hqX+ATygAAAN0BAACCABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNr
L3RyYWNrLWVsZW1lbnQvdHJhY2stYXBpLXRleHR0cmFja3Mtc3RkZXJyLnR4dFVUCQAD4IPiVt18
4lZ1eAsAAQT1AQAABBQAAAClkDFPwzAQhWfyK26kS5S0KUgWYiAdqNSMiAExXOyra9Wcq/NFFf8e
B9iYUMZ70vvevTegQNtC05jNvdmuga65bbs6JosRRK3QJYkG9m/rbnvXvcPDno/p0UBM3hcZsqJo
ruu6Gv6N2tE4+cLKpAPljJ4OP9SnYjobKMZIbgl4fq5PfAx+EtSQ+DXoqU8fl0jz9YzsIomBHu2J
HDRAjGPJhBHtmdjlZa1eMsm81y5YNX/YBm6rm9WiBHa/w333QiWf5LNweYpxVX0BUEsDBAoAAAAA
AP0Aa0gAAAAAAAAAAAAAAABSABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1hdWRpby1lbGVtZW50L1VUCQAD3nziVoOE
4lZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAuwRrSBCkYmjeAAAA0AIAAG4AHABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhl
LWF1ZGlvLWVsZW1lbnQvYXVkaW9fY29uc3RydWN0b3Itc3RkZXJyLnR4dFVUCQAD4oPiVt584lZ1
eAsAAQT1AQAABBQAAADVkDFPwzAQhXd+xY0wpHbSlAZvFRXqwICiMlUMrn0lFmc72Bd+P47CDBMS
6Jb37t5J391JSrXeqk27ut00L3A4Hp96fJ8wM1zc64F5/LJ7Z3s06D6wxzzGkPFeE521eVOQloGF
oeSLW+bQyhauMaWYoKqbu3V3A5ei55ASgqLRNMTMquukFAN7Ehm9DuxMFujPaC3aysTAGFjwgJWe
rIsVEvq5Eyaiq9P3/MXuJz8+uKDpuX/chXKEj4w7awtmVqAXAXWzXclSdVkrWZgS/R5o+78enZP5
Cf9P/Hnm/ARQSwMECgAAAAAAugRrSAAAAAAAAAAAAAAAAFMAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWNhbnZhcy1l
bGVtZW50L1VUCQAD4IPiVoOE4lZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAugRrSLyof/yDAAAA
wAAAAHAAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvdGhlLWNhbnZhcy1lbGVtZW50LzJkLmNhbnZhcy5yZWFkb25seS1zdGRl
cnIudHh0VVQJAAPgg+JW4IPiVnV4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMu0tRUIYhLXRwC
goOCOMT0jAfhTpJU8e2Nr+D68/NZl0ApaFuzXJu+A3xnpfQiincRUvEJn5IKcbh0ul/pK2x2eJvC
1kBGHi3m7AKeqDwGVzBI+hiY8RTjvLF/y8RUfuSx6iS857sYOB8G8MKMvtRWn5eLNDZfUEsDBAoA
AAAAAP0Aa0gAAAAAAAAAAAAAAABSABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1lbWJlZC1lbGVtZW50L1VUCQAD3nzi
VoOE4lZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA/QBrSBTEDXKDAAAAGgEAAGwAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
dGhlLWVtYmVkLWVsZW1lbnQvZW1iZWQtZGltZW5zaW9uLXN0ZGVyci50eHRVVAkAA9584lbefOJW
dXgLAAEE9QEAAAQUAAAAzcyxCsIwEIDhvU9xoy6SgNUSxKUuDgHBQUEcYnrGg3AnyVXx7a1v4frz
8/lQwFowxpm1azvAd7V2ucgSQ4aiseBTihKni12ZtrvCZoe3MW0dVOTBY60h4Yn00QfFJOXjYMZj
zvPG/6FMTPojj5NOwnu+i4PzoYcozBh1atPzCpmG5gtQSwMECgAAAAAAEQFrSAAAAAAAAAAAAAAA
AC8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1hNTEh0dHBSZXF1ZXN0L1VUCQAD
An3iVoOE4lZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAygRrSIhbA8hgAAAAZQAAAFAAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1hNTEh0dHBSZXF1ZXN0L3NlbmQtcmVkaXJlY3Qt
aW5maW5pdGUtYWN0dWFsLnR4dFVUCQAD+4PiVgF94lZ1eAsAAQT1AQAABBQAAAANyzEOgzAUBNHe
p9gSilyALk0EEjRUdBGJl8gSso3/WsrxcT1v3Os5zdiWeZTyyqvSNMAYfdfjgZU+FH5l6EI8Qgwi
zpRyj92MRe927KcN4D83Rg+VSnyq8EvC0RqduwFQSwMEFAACAAgAygRrSHzkByHcAAAA3AEAAE4A
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1hNTEh0dHBSZXF1ZXN0L3NlbmQtcmVk
aXJlY3QtaW5maW5pdGUtZGlmZi50eHRVVAkAA/uD4lb7g+JWdXgLAAEE9QEAAAQUAAAAzZBBSwNB
DIXv+ytybBljkN562koVxQrSBetNZneyZWB2Z51kaP33Tkt78OrJS8Lj5X08gohA7zHkgYXWVi09
7Bracfvi9bLusw+O1tzmPQX7HbOisigmlhxUyA9TTMqODouODtziFKz2MQ3nM6GP182T6rTlr1w0
CY+uZJ1P3Cn6sfejV0Y+TkWzu9WjVsaY/9HKdpptOHeqa8C7mwWY06jrCip8WzUN/AYt4USazQFh
e6EJzK48CDFOc6jM4+p585ekFeGknyVhgyzh+jTQlBnarLCPCn3xuPT7AVBLAwQKAAIAAADKBGtI
ntDO2TsAAAA7AAAAUgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvWE1MSHR0cFJl
cXVlc3Qvc2VuZC1yZWRpcmVjdC1pbmZpbml0ZS1leHBlY3RlZC50eHRVVAkAA/uD4lYBfeJWdXgL
AAEE9QEAAAQUAAAAClBBU1MgWE1MSHR0cFJlcXVlc3Q6IHNlbmQoKSAtIFJlZGlyZWN0cyAoaW5m
aW5pdGUgbG9vcCkgCgpQSwMEFAACAAgAygRrSCJj6TDWBwAAmhkAAFYAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL1hNTEh0dHBSZXF1ZXN0L3NlbmQtcmVkaXJlY3QtaW5maW5pdGUt
cHJldHR5LWRpZmYuaHRtbFVUCQAD+4PiVgJ94lZ1eAsAAQT1AQAABBQAAAC9WWtz47YV/e5fgbEn
dZIxScmytpbsVWfXj0knm04mziT9lgFJUMQaJBgAtORt+99z8aJIipTcTtv1rPnABXAf595zQd/m
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
AAAAABEAHAByZXRyaWVzL2ltcG9ydGVkL1VUCQADE3/iVoOE4lZ1eAsAAQT1AQAABBQAAABQSwME
CgAAAAAALAJrSAAAAAAAAAAAAAAAABUAHAByZXRyaWVzL2ltcG9ydGVkL3czYy9VVAkAAxN/4laD
hOJWdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAACwCa0gAAAAAAAAAAAAAAAAoABwAcmV0cmllcy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1VUCQADE3/iVoOE4lZ1eAsAAQT1AQAABBQA
AABQSwMECgAAAAAALAJrSAAAAAAAAAAAAAAAADcAHAByZXRyaWVzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvWE1MSHR0cFJlcXVlc3QvVVQJAAMTf+JWg4TiVnV4CwABBPUBAAAEFAAA
AFBLAwQUAAIACAAsAmtIiFsDyGAAAABlAAAAWAAcAHJldHJpZXMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9YTUxIdHRwUmVxdWVzdC9zZW5kLXJlZGlyZWN0LWluZmluaXRlLWFjdHVh
bC50eHRVVAkAAxN/4lYTf+JWdXgLAAEE9QEAAAQUAAAADcsxDoMwFATR3qfYEopcgC5NBBI0VHQR
iZfIErKN/1rK8XE9b9zrOc3YlnmU8sqr0jTAGH3X44GVPhR+ZehCPEIMIs6Uco/djEXvduynDeA/
N0YPlUp8qvBLwtEanbsBUEsDBBQAAgAIACwCa0iAkQQR4AAAAOwBAABWABwAcmV0cmllcy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1hNTEh0dHBSZXF1ZXN0L3NlbmQtcmVkaXJlY3Qt
aW5maW5pdGUtZGlmZi50eHRVVAkAAxN/4lYTf+JWdXgLAAEE9QEAAAQUAAAAzZBBSwNBDIXv+yty
bBljkN562koVxQrSBetNZneyZWB2Z51kaP33Tkt78OrJS8Lj5X08gohA7zHkgYXWVi097Bracfvi
9bLusw+O1tzmPQX7HbOisigmlhxUKLEmX9J+mGJSdnRYdHTgFqdgtY9pOJ8LfbxunlSnLX/lokl4
dIXhfOJO0Y+9H70y8nEqmt2tHrUyxvyvdrbTbMO5W10D3t0swJxGXVdQ4duqaeA3aAkn0mwOCNsL
TWB25UGIcZpDZR5Xz5u/JK0IJ/0sCRtkCdfngabM0GaFfVToi8el3w9QSwMECgACAAAALAJrSJ7Q
ztk7AAAAOwAAAFoAHAByZXRyaWVzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvWE1M
SHR0cFJlcXVlc3Qvc2VuZC1yZWRpcmVjdC1pbmZpbml0ZS1leHBlY3RlZC50eHRVVAkAAxN/4lYT
f+JWdXgLAAEE9QEAAAQUAAAAClBBU1MgWE1MSHR0cFJlcXVlc3Q6IHNlbmQoKSAtIFJlZGlyZWN0
cyAoaW5maW5pdGUgbG9vcCkgCgpQSwMEFAACAAgALAJrSM+cjP7aBwAAohkAAF4AHAByZXRyaWVz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvWE1MSHR0cFJlcXVlc3Qvc2VuZC1yZWRp
cmVjdC1pbmZpbml0ZS1wcmV0dHktZGlmZi5odG1sVVQJAAMTf+JWE3/iVnV4CwABBPUBAAAEFAAA
AL1Za3PjthX97l+BsSd1kjFJybK2luxVZ9ePSSebTibOJP2WAUlQxBokGAC05G3733PxokiKlNxO
2/Ws+cAFcB/n3nNB3+aqYKuT25zgFC4FURglORaSqPfntcqC63N4LdUrI6uTJaPl8wVavlBJFUnR
P04Q/FNkq4KUJFxgRXm5RCUvyY0ZirlIiQhirhQvlmhabVEK9yS9OfnXiV3OLZJwxsUSnU1mCzMW
PlJG7mmWufEYJ89rwesyDbxodq1/2hvZHSRnNEVnaZrasYyXKshwQdnrEhW85LLCiVOwwGJNQeUp
KdDEvqo4GGfsEISBRS/EKJRPe5rOZrOB9SUuZSCJoFlrUNIvxOzR3jRgJFNLNAnn/n1KZcUwLEJL
8IzTcENTlcPkyeQrpx9OU1qum5lWNxcafdeNjlOXljkopRrxnL8Q0bNoPp/fjDmbEOuGUMfkE+wl
3eSMcQxmCLrOVTdyWuoOzMdgi9+Kg+upAhMnPZMVjhkJEsJYx8rArNvx0iYH6wITQw21jcDVTrMn
kujYjYLGTO5Cpg8Xh1nvdwDUpNraHR62FYQX1gfTyAUK9aVv4ah6kqYkftW/kVH1I+PJ849YqBBM
XWZUSBUkOWXpqGP1dk8w/+LQYoIUENqLI/u5Pbz7LeCCWIt0YDf3qAO0KJpgFmBG15Abig+YJYhG
+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
EOnXC9lGAjXvUnZx3F9x811az+bi1T/HUopo+4hopADlUcbYOCgxjD7p6toNuQvx4hcZaknZiFSD
qkaSllTDJpkIG9LzhWweNRvsegbEFKVdlfbJGTNZlLfFOnFTRTEeRPMyWwvMOta9I71dnc42KtHX
vEjb5gRtKZkp/do272KzGMRfz9Ox+0Y2zPMuzTNK2gjLGyQThZGXxJdvN1T2UIGV+PRNOvpciQd4
ts2j42YkcYmaiiVQE4OXlATOU9Iii/U/iT7dBmlZynG0fkPYvC2VfBmoCrbToxBKsnPQP1nXVbS0
X/wembYX9i8bCUWVNnMK8fLbLe68En7GhJcNAgqFu6Kqa9L2pSgzMBghmRiVLHGyNv3bSiggz9Zn
b2PjoURd06U33ypFQSVUc7GVHulu6JRCPkyayIlq+fawGE0yz4+54lm068xFHxspJ8mcPuJZcEXq
6+V8370O+/vjNuym4X4fz2/Tzv7b/WHY3YbzcbiZfxldugtZjYY8z4z+zPJo92V/G/cvp2F3HF7H
83gfL2dxmWxehlGrysLe72k8D7uX27D/hT8K/3V3ulymYfe+P73uftmf4zwTZhQz6zWcMW2cyHla
63oz2/w2TNJSLt/KS9Xs6dauNgyWOl9uH/vT7nqZ7vpifVgs401m7klhsel+Gw/33XR5nI+7j/3t
F3G5LixnzCr7txb2lrwzZ1H7XlX+K+0tedAOHiDLrZfcCou9f7++D2d5qSocsus58dnX0r4Sj+kK
pmitsqFCBvO3idPFeB9ueyJe/QmcWcAHtTltn9SGFfeP+yV9Z004aEV5v6qohGNu3JszOhy18Xz5
pozuLc1Q+bxU1zPlSTywhWxz2FdmiyLa6L4Ow9kcdTiK2wq3X5OArqtOYs0UZWRAGRVTRtUIa20l
jQ6P2TMP5NFjjudpuO5vJDVl6ghyiCdBlLVEuFsWAzlkLTpv0j0tl3wCIDLbHFYUgqhNMHoD92VT
r3nfSRyw4ZBdDTdGGsv8lZRAUnADydqCAJ9LfCaP1I21FbIl00WbCedMrdWBdspKOxE0i4ufBAM0
cFst/xEIYgODO5PZndCWzInSPyV6OlisshZDFZewG/myCQtWJLGrZ4HtGX0DlbUt3Bu3AbV5L+lg
nQHaBtQ5+0wZ9XvRWl/G4ev1cjMabrgRTezfht1pOL/d3ydeKPa/fxlu9/FgfnZ/Gt/iNhhVfjsS
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
ABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTEtc3RkZXJyLnR4dFVUCQAD
mX3iVpl94lZ1eAsAAQT1AQAABBQAAABdjrEKwjAURfd+xRvbxYCoSDZtO4iK2IAdJU3eEEj7QvpS
/Hxr6eR44ZzDrZvm0Ug4MWMfGJhA20kPBkGDoT54ZLRgUhwpZuJFPvU4ikqzFnWrRIvd1bFQlKLB
3yoporiTTX7G3GDxg9Z2YsQ4YRTqeXOMl+pcLsGNCSHfHvcFSOiIPKwBKWdELYqUf46U68E8uYEP
uzcX2RdQSwMEFAACAAgAYwFrSJm3dd6fAAAAigEAADEAHABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vZGVsZXRlaW5kZXgtMi1zdGRlcnIudHh0VVQJAAOafeJWmn3iVnV4CwABBPUBAAAEFAAAAN2P
sQrCMBRF937FG9vFgKhINrUdREVswI6SJm8IpH0hfSl+vrV08hMcL5x7uLeq63st4cCMXWBgAm1H
3RsEDYa64JHRgklxoJiJJ/nU4SBKzVpUjRINthfHQlGKBr/pRBHFjWzyE+Z6i2+0thUDxhGjUI+r
YzyXx9MsXJkQ8vV+W4CElsjDIpByQtRckfKnI+UyME+u593mxUVW/cOJD1BLAwQUAAIACABoAWtI
xhf6QNYAAAB6JgAAOgAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1j
b3VudC0xLXN0ZGVyci50eHRVVAkAA6N94lajfeJWdXgLAAEE9QEAAAQUAAAA7c+xasMwFIXhPU+h
MVkqKEkp2trEQ2lKiA3NWGTpDgbbMvJVyOMnDZn6AJ3+8cI5h/tVdX2onXlTlWFSo8n4ePZjEONN
SMPUi0o0oeQ55YX9Tn0ZZLY7r95Wp8aepP3s1Dap5CC/1zZlsV8plv4W68YoF4mxtbPks2TbHPed
ysfufXsffArTtHx+3ayMM21KvXkMOHeLNPeKc386zj0eXJZu1Jf1j64WFQgQIECAAAECBAgQIECA
AAECBAgQIECAAAECBAgQIECAAAECBAgQIECA+D/EFVBLAwQUAAIACABpAWtIWJuBr6sAAACyBwAA
OwAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1kZWxldGUtMS1zdGRl
cnIudHh0VVQJAAOlfeJWpX3iVnV4CwABBPUBAAAEFAAAAO3PsQrCMBAG4L1PcWO7GBAVyaa2g6iI
DdhR0uSGQtsL6aX4+NbSyUeQjAf//3NfUZb3UsKBGTvHwATajro3CBoMda5FRgsm+IF8Ip7Uhg4H
kWvWoqiUqLC+NCwUBW/we53Io7iRDe0Ua3qLb7S2FgP6Eb1Qj2vDeM6Pp3lwZZxL1/ttBhJqohaW
ASmniJorUv50pFweTEPT827z4iwpIiIiIiIiIiIi/h3xAVBLAwQUAAIACABqAWtIsygaeKQAAAAU
AwAAKwAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0xLXN0ZGVyci50eHRVVAkAA6h9
4laofeJWdXgLAAEE9QEAAAQUAAAA7Y+xCsIwFEX3fsUb28WAqEg2bTuIitiCHSVN3hBI+0L6Uvx8
a+nk7Oh44d7DPWVV3SoJB2bsPAMTKDOqXiMo0NR5h4wGdAwDhUQ8yMUOB1EoVqJsatFge7YsaopB
4yflFFBcyUQ31Wxv8IXGtGLAMGIQ9f1iGU/FMZ+BK+19ut5vM5DQEjlYAFJOlXqeSPm1kXI5mEbb
827z5Cwp/xJ/id9JvAFQSwMEFAACAAgAawFrSLqAI1OuAAAAPAkAACsAHABzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vaW5kZXgtMi1zdGRlcnIudHh0VVQJAAOqfeJWqn3iVnV4CwABBPUBAAAEFAAA
AO3PsQrCMBAG4L1PcWO7GBAVyaa2g6iIDdhR0uSGQtsL6aX4+NbSyQdwynjw/z/3FWV5LyUcmLFz
DEyg7ah7g6DBUOdaZLRggh/IJ+JJbehwELlmLYpKiQrrS8NCUfAGv9eJPIob2dBOsaa3+EZrazGg
H9EL9bg2jOf8eJoHV8a5dL3fZiChJmphGZByiqi5IuVPR8rlwTQ0Pe82L86SIiIiIiIiIiIiIiIi
4j+ID1BLAwQUAAIACABsAWtIBtVbD6YAAACeBAAAKwAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pbmRleC0zLXN0ZGVyci50eHRVVAkAA6t94larfeJWdXgLAAEE9QEAAAQUAAAA7Y+xCsIwFEX3
fsUb28WAqEg2tR1ERWzBjpImbwikfSF9KX6+tXTyE6TjhXsP9xRleS8lHJix9QxMoMygOo2gQFPr
HTIa0DH0FBLxJBdb7EWuWImirkSNzcWyqCgGjd90ooDiRia6sWY7g280phE9hgGDqB5Xy3jOj6cJ
uNLep+v9NgMJDZGDGSDlWKmmiZQ/Gynng2m0He82L86SYpFYJBaJ/5P4AFBLAwQUAAIACABsAWtI
t+DI55kAAADFAAAAKwAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC00LXN0ZGVyci50
eHRVVAkAA6t94larfeJWdXgLAAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28WAqEg2bTuIitiAHSVN
3hBI+0L6Uvx8a+nkeOGcw62b5tFIODFjHxiYQNtJDwZBg6E+eGS0YFIcKWbiRT71OIpKsxZ1q0SL
3dWxUJSiwd8qKaK4k01+xtxg8YPWdmLEOGEU6nlzjJfqXC7BjQkh3x73BUjoiDysASlnRC2KlH+O
lOvBPLmBD7s3F9kXUEsDBBQAAgAIAG0Ba0iZt3XenwAAAIoBAAAyABwAc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLXN0ZGVyci50eHRVVAkAA6194latfeJWdXgLAAEE9QEA
AAQUAAAA3Y+xCsIwFEX3fsUb28WAqEg2tR1ERWzAjpImbwikfSF9KX6+tXTyExwvnHu4t6rrey3h
wIxdYGACbUfdGwQNhrrgkdGCSXGgmIkn+dThIErNWlSNEg22F8dCUYoGv+lEEcWNbPIT5nqLb7S2
FQPGEaNQj6tjPJfH0yxcmRDy9X5bgISWyMMikHJC1FyR8qcj5TIwT67n3ebFRVb9w4kPUEsDBBQA
AgAIAG4Ba0i34MjnmQAAAMUAAAAyABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1
cnNvci0yLXN0ZGVyci50eHRVVAkAA6994lavfeJWdXgLAAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb
28WAqEg2bTuIitiAHSVN3hBI+0L6Uvx8a+nkeOGcw62b5tFIODFjHxiYQNtJDwZBg6E+eGS0YFIc
KWbiRT71OIpKsxZ1q0SL3dWxUJSiwd8qKaK4k01+xtxg8YPWdmLEOGEU6nlzjJfqXC7BjQkh3x73
BUjoiDysASlnRC2KlH+OlOvBPLmBD7s3F9kXUEsDBBQAAgAIAG8Ba0izKBp4pAAAABQDAAAyABwA
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0zLXN0ZGVyci50eHRVVAkAA7F9
4laxfeJWdXgLAAEE9QEAAAQUAAAA7Y+xCsIwFEX3fsUb28WAqEg2bTuIitiCHSVN3hBI+0L6Uvx8
a+nk7Oh44d7DPWVV3SoJB2bsPAMTKDOqXiMo0NR5h4wGdAwDhUQ8yMUOB1EoVqJsatFge7YsaopB
4yflFFBcyUQ31Wxv8IXGtGLAMGIQ9f1iGU/FMZ+BK+19ut5vM5DQEjlYAFJOlXqeSPm1kXI5mEbb
827z5Cwp/xJ/id9JvAFQSwMEFAACAAgAbwFrSLfgyOeZAAAAxQAAADkAHABzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWJhc2ljLXN0ZGVyci50eHRVVAkAA7F94laxfeJW
dXgLAAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28WAqEg2bTuIitiAHSVN3hBI+0L6Uvx8a+nkeOGc
w62b5tFIODFjHxiYQNtJDwZBg6E+eGS0YFIcKWbiRT71OIpKsxZ1q0SL3dWxUJSiwd8qKaK4k01+
xtxg8YPWdmLEOGEU6nlzjJfqXC7BjQkh3x73BUjoiDysASlnRC2KlH+OlOvBPLmBD7s3F9kXUEsD
BBQAAgAIAG8Ba0i34MjnmQAAAMUAAAA8ABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4
LWdldC1jb3VudC1mYWlsdXJlcy1zdGRlcnIudHh0VVQJAAOyfeJWsn3iVnV4CwABBPUBAAAEFAAA
AF2OsQrCMBRF937FG9vFgKhINm07iIrYgB0lTd4QSPtC+lL8fGvp5HjhnMOtm+bRSDgxYx8YmEDb
SQ8GQYOhPnhktGBSHClm4kU+9TiKSrMWdatEi93VsVCUosHfKimiuJNNfsbcYPGD1nZixDhhFOp5
c4yX6lwuwY0JId8e9wVI6Ig8rAEpZ0QtipR/jpTrwTy5gQ+7NxfZF1BLAwQUAAIACACUAWtI06Ct
w68AAAABCgAALgAcAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LXN0ZGVyci50
eHRVVAkAA/h94lb4feJWdXgLAAEE9QEAAAQUAAAA7c/BCoJAEAbgu08xR720EBWxt0oPUREp5DHW
3TkI6sg6Kz1+Jp469QBzHPj/n/myPL/nGg7M2PYMTGDcaDqLYMBS2zfI6MAGP5CP1JOa0OKgUsNG
ZWWhSqwuNauCgrf4vU7kUd3IhWaK1Z3DNzpXqQH9iF4Vj2vNeE6Pp3lwZfs+Xu+3CWioiBpYBrSe
IsVc0fqno/XyYBzqjnebFydRJghBCEIQghCEIAQhiL8RH1BLAwQUAAIACACdAWtIBtVbD6YAAACe
BAAALwAcAHN0b3JhZ2UvaW5kZXhlZGRiL29wdGlvbmFsLWFyZ3VtZW50cy1zdGRlcnIudHh0VVQJ
AAMJfuJWCX7iVnV4CwABBPUBAAAEFAAAAO2PsQrCMBRF937FG9vFgKhINrUdREVswY6SJm8IpH0h
fSl+vrV08hOk44V7D/cUZXkvJRyYsfUMTKDMoDqNoEBT6x0yGtAx9BQS8SQXW+xFrliJoq5Ejc3F
sqgoBo3fdKKA4kYmurFmO4NvNKYRPYYBg6geV8t4zo+nCbjS3qfr/TYDCQ2Rgxkg5VippomUPxsp
54NptB3vNi/OkmKRWCQWif+T+ABQSwMEFAACAAgAqAFrSLqAI1OuAAAAPAkAADQAHABzdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy1zdGRlcnIudHh0VVQJAAMbfuJWG37i
VnV4CwABBPUBAAAEFAAAAO3PsQrCMBAG4L1PcWO7GBAVyaa2g6iIDdhR0uSGQtsL6aX4+NbSyQdw
ynjw/z/3FWV5LyUcmLFzDEyg7ah7g6DBUOdaZLRggh/IJ+JJbehwELlmLYpKiQrrS8NCUfAGv9eJ
PIob2dBOsaa3+EZrazGgH9EL9bg2jOf8eJoHV8a5dL3fZiChJmphGZByiqi5IuVPR8rlwTQ0Pe82
L86SIiIiIiIiIiIiIiIi4j+ID1BLAwQKAAAAAABiAWtIAAAAAAAAAAAAAAAADwAcAHN0b3JhZ2Uv
d2Vic3FsL1VUCQADl33iVoOE4lZ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAWwFrSJdWR5awAAAA
7gAAAC0AHABzdG9yYWdlL3dlYnNxbC9hbHRlci10by1pbmZvLXRhYmxlLXN0ZGVyci50eHRVVAkA
A4194laNfeJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbRBB7C3KLhGClp53dQxhnZFx
t+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNUIXQQrYHYgyFAEZZ4pgp2ocNB
HY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tBg2V28B1p/RNa9ygNS5f2
SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgAWwFrSJdWR5awAAAA7gAAADUA
HABzdG9yYWdlL3dlYnNxbC9jaGFuZ2UtdmVyc2lvbi1oYW5kbGUtcmV1c2Utc3RkZXJyLnR4dFVU
CQADjn3iVo594lZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKWnnd1DGGd
kXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnah
w0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1L
l/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACABbAWtIl1ZHlrAAAADuAAAA
RgAcAHN0b3JhZ2Uvd2Vic3FsL2NoYW5nZS12ZXJzaW9uLW5vLWNyYXNoLW9uLXByZWZsaWdodC1m
YWlsdXJlLXN0ZGVyci50eHRVVAkAA4594laOfeJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79i
TqFQbRBB7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn
5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV
99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAAC
AAgAWwFrSFfb0ci2AAAA3AEAACgAHABzdG9yYWdlL3dlYnNxbC9jaGFuZ2UtdmVyc2lvbi1zdGRl
cnIudHh0VVQJAAOOfeJWjn3iVnV4CwABBPUBAAAEFAAAAOXPzwrCMAwG8LtPkZNsoFYQQXoTnRcR
YfPPud0yKXTJyFrFt3cTPfkI3vKR3wdJlufHXMOZjPUIgSFEIWACR6VggxSMBxMDT++mjLGBZA7E
AQwBirCkI3VhHxvs1NYEo7Jroa5o9y6ogqOUOKQNC6oDV9H37IG26qU1Hb4rwzAr2zZZLFcpaLDM
Hj4lrb9C6xalZmmOLdKaqguKq5/JgCe/OhtOg3G/Oe20LoI4usE4HWV/9e0LUEsDBBQAAgAIAFwB
a0iXVkeWsAAAAO4AAAAyABwAc3RvcmFnZS93ZWJzcWwvY2xvc2UtZHVyaW5nLXN0cmVzcy10ZXN0
LXN0ZGVyci50eHRVVAkAA4994laPfeJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbRBB
7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNUIXQQ
rYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tB
g2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgAXAFr
SJdWR5awAAAA7gAAADQAHABzdG9yYWdlL3dlYnNxbC9kYXRhYmFzZS1sb2NrLWFmdGVyLXJlbG9h
ZC1zdGRlcnIudHh0VVQJAAOPfeJWj33iVnV4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG0Q
Qewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8EAImaKkS7JC8cWCC5+XDVCF0
EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5uZE+09SitGfAzmY5V1ffRZruL
QYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp6Q7zePYGUEsDBBQAAgAIAFwB
a0iXVkeWsAAAAO4AAAApABwAc3RvcmFnZS93ZWJzcWwvZW1wdHktc3RhdGVtZW50LXN0ZGVyci50
eHRVVAkAA4994laPfeJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbRBB7C3KLhGClp53
dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNUIXQQrYHYgyFAEZZ4
pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tBg2V28B1p/RNa
9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgAXAFrSJdWR5awAAAA
7gAAACoAHABzdG9yYWdlL3dlYnNxbC9leGVjdXRlLXNxbC1hcmdzLXN0ZGVyci50eHRVVAkAA499
4laPfeJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbRBB7C3KLhGClp53dQxhnZFxt+jf
p1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03
KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuq
C5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgAXAFrSJdWR5awAAAA7gAAADIAHABz
dG9yYWdlL3dlYnNxbC9leGVjdXRlLXNxbC1yb3dzQWZmZWN0ZWQtc3RkZXJyLnR4dFVUCQADj33i
Vo994lZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKWnnd1DGGdkXG36N+n
Uadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcq
KXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oL
lLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACABcAWtIl1ZHlrAAAADuAAAAPwAcAHN0
b3JhZ2Uvd2Vic3FsL2V4ZWN1dGVzcWwtYWNjZXB0cy1vbmx5LW9uZS1zdGF0ZW1lbnQtc3RkZXJy
LnR4dFVUCQADj33iVo994lZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKW
nnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUAR
lnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9
E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACABdAWtIl1ZHlrAA
AADuAAAALgAcAHN0b3JhZ2Uvd2Vic3FsL2hhc2gtY2hhbmdlLXdpdGgteGhyLXN0ZGVyci50eHRV
VAkAA5F94laRfeJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbRBB7C3KLhGClp53dQxh
nZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNUIXQQrYHYgyFAEZZ4pgp2
ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tBg2V28B1p/RNa9ygN
S5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgAXQFrSFfb0ci2AAAA3AEA
AD8AHABzdG9yYWdlL3dlYnNxbC9tdWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFnZS1jb2xsZWN0aW9u
LXN0ZGVyci50eHRVVAkAA5F94laRfeJWdXgLAAEE9QEAAAQUAAAA5c/PCsIwDAbwu0+Rk2ygVhBB
ehOdFxFh88+53TIpdMnIWsW3dxM9+Qje8pHfB0mW58dcw5mM9QiBIUQhYAJHpWCDFIwHEwNP76aM
sYFkDsQBDAGKsKQjdWEfG+zU1gSjsmuhrmj3LqiCo5Q4pA0LqgNX0ffsgbbqpTUdvivDMCvbNlks
VylosMwePiWtv0LrFqVmaY4t0pqqC4qrn8mAJ786G06Dcb857bQugji6wTgdZX/17QtQSwMEFAAC
AAgAXQFrSJdWR5awAAAA7gAAAEQAHABzdG9yYWdlL3dlYnNxbC9tdWx0aXBsZS10cmFuc2FjdGlv
bnMtb24tZGlmZmVyZW50LWhhbmRsZXMtc3RkZXJyLnR4dFVUCQADkn3iVpJ94lZ1eAsAAQT1AQAA
BBQAAABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhY
h+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQ
XbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9
aZ17aekO83j2BlBLAwQUAAIACABdAWtIl1ZHlrAAAADuAAAALwAcAHN0b3JhZ2Uvd2Vic3FsL211
bHRpcGxlLXRyYW5zYWN0aW9ucy1zdGRlcnIudHh0VVQJAAOSfeJWkn3iVnV4CwABBPUBAAAEFAAA
AGXOQQuCQBAF4Hu/Yk6hUG0QQewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8
EAImaKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5u
ZE+09SitGfAzmY5V1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp
6Q7zePYGUEsDBBQAAgAIAF0Ba0iXVkeWsAAAAO4AAAAoABwAc3RvcmFnZS93ZWJzcWwvbnVsbC1j
YWxsYmFja3Mtc3RkZXJyLnR4dFVUCQADkn3iVpJ94lZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7
v2JOoVBtEEHsLcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFg
guflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mO
VdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQU
AAIACABdAWtIV9vRyLYAAADcAQAASAAcAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtY3Jl
YXRpb24tY2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUCQADkn3iVpJ94lZ1eAsA
AQT1AQAABBQAAADlz88KwjAMBvC7T5GTbKBWEEF6E50XEWHzz7ndMil0ychaxbd3Ez35CN7ykd8H
SZbnx1zDmYz1CIEhRCFgAkelYIMUjAcTA0/vpoyxgWQOxAEMAYqwpCN1YR8b7NTWBKOya6GuaPcu
qIKjlDikDQuqA1fR9+yBtuqlNR2+K8MwK9s2WSxXKWiwzB4+Ja2/QusWpWZpji3SmqoLiqufyYAn
vzobToNxvznttC6COLrBOB1lf/XtC1BLAwQUAAIACABdAWtIV9vRyLYAAADcAQAAOQAcAHN0b3Jh
Z2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2stc3RkZXJyLnR4dFVUCQAD
kn3iVpJ94lZ1eAsAAQT1AQAABBQAAADlz88KwjAMBvC7T5GTbKBWEEF6E50XEWHzz7ndMil0ycha
xbd3Ez35CN7ykd8HSZbnx1zDmYz1CIEhRCFgAkelYIMUjAcTA0/vpoyxgWQOxAEMAYqwpCN1YR8b
7NTWBKOya6GuaPcuqIKjlDikDQuqA1fR9+yBtuqlNR2+K8MwK9s2WSxXKWiwzB4+Ja2/QusWpWZp
ji3SmqoLiqufyYAnvzobToNxvznttC6COLrBOB1lf/XtC1BLAwQUAAIACABdAWtIl1ZHlrAAAADu
AAAANQAcAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZW1wdHktdmVyc2lvbi1zdGRlcnIu
dHh0VVQJAAOSfeJWkn3iVnV4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG0QQewtyi4Rgpae
d3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8EAImaKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGW
eKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5uZE+09SitGfAzmY5V1ffRZruLQYNldvAdaf0T
WvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp6Q7zePYGUEsDBBQAAgAIAF0Ba0iXVkeWsAAA
AO4AAAA0ABwAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1leHBhbmQtcXVvdGEtc3RkZXJy
LnR4dFVUCQADkn3iVpJ94lZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKW
nnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUAR
lnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9
E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACABgAWtIl1ZHlrAA
AADuAAAAOQAcAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utc2V0LWVtcHR5LXZlcnNpb24t
c3RkZXJyLnR4dFVUCQADk33iVpN94lZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEEHs
LcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCt
gdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GD
ZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACABgAWtI
BKEByMUAAADiAQAARQAcAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNh
Y3Rpb24taW4tcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADk33iVpN94lZ1eAsAAQT1AQAABBQAAADV
j0FLw0AUhO/9FXMqCagrSEH2JjVeRAqJtufdzassbt4LL7uK/95E7MlTj73NMN/ATNO2u9bijZ1P
hCzIRRnCiByUBuLsElzJcv3pQikDqluwZDgGqYrWK7OXVAaazKPLzjSHzhzIP8dsOikaaHFbUTIv
0pc0Y1/k+5n0bqLfyiJuwjhWd5v7GhZeJOGvZO2JsHYkPYoOu5H4gfs9aTx+Vwt89Z9ulmlYz8nr
k7Vd1sjvWNer5uy3G5zGIk5IEj6ov6zPP1BLAwQUAAIACABgAWtIl1ZHlrAAAADuAAAAOQAcAHN0
b3JhZ2Uvd2Vic3FsL3ByaXZhdGUtYnJvd3Npbmctbm9yZWFkLW5vd3JpdGUtc3RkZXJyLnR4dFVU
CQADk33iVpN94lZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKWnnd1DGGd
kXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnah
w0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1L
l/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACABgAWtIl1ZHlrAAAADuAAAA
RwAcAHN0b3JhZ2Uvd2Vic3FsL3JlYWQtYW5kLXdyaXRlLXRyYW5zYWN0aW9ucy1kb250LXJ1bi10
b2dldGhlci1zdGRlcnIudHh0VVQJAAOTfeJWk33iVnV4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/
Yk6hUG0QQewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8EAImaKkS7JC8cWCC
5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5uZE+09SitGfAzmY5V
1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp6Q7zePYGUEsDBBQA
AgAIAGABa0iXVkeWsAAAAO4AAABAABwAc3RvcmFnZS93ZWJzcWwvcmVhZC10cmFuc2FjdGlvbnMt
cnVubmluZy1jb25jdXJyZW50bHktc3RkZXJyLnR4dFVUCQADlH3iVpR94lZ1eAsAAQT1AQAABBQA
AABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKWnnd1DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZ
fBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgO
bmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17
aekO83j2BlBLAwQUAAIACABgAWtIl1ZHlrAAAADuAAAAKAAcAHN0b3JhZ2Uvd2Vic3FsL3NxbC1k
YXRhLXR5cGVzLXN0ZGVyci50eHRVVAkAA5R94laUfeJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXg
e79iTqFQbRBB7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxx
YILn5cNUIXQQrYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZ
jlXV99Fmu4tBg2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwME
FAACAAgAYAFrSFfb0ci2AAAA3AEAAEEAHABzdG9yYWdlL3dlYnNxbC9zdGF0ZW1lbnQtZXJyb3It
Y2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUCQADlH3iVpR94lZ1eAsAAQT1AQAA
BBQAAADlz88KwjAMBvC7T5GTbKBWEEF6E50XEWHzz7ndMil0ychaxbd3Ez35CN7ykd8HSZbnx1zD
mYz1CIEhRCFgAkelYIMUjAcTA0/vpoyxgWQOxAEMAYqwpCN1YR8b7NTWBKOya6GuaPcuqIKjlDik
DQuqA1fR9+yBtuqlNR2+K8MwK9s2WSxXKWiwzB4+Ja2/QusWpWZpji3SmqoLiqufyYAnvzobToNx
vznttC6COLrBOB1lf/XtC1BLAwQUAAIACABgAWtIl1ZHlrAAAADuAAAAMgAcAHN0b3JhZ2Uvd2Vi
c3FsL3N0YXRlbWVudC1lcnJvci1jYWxsYmFjay1zdGRlcnIudHh0VVQJAAOUfeJWlH3iVnV4CwAB
BPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG0QQewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIs
zTTcyFiH4Bl8EAImaKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5Ryk
wikdWFBduA5uZE+09SitGfAzmY5V1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6
DeZjcz1pnXtp6Q7zePYGUEsDBBQAAgAIAGEBa0hX29HItgAAANwBAABDABwAc3RvcmFnZS93ZWJz
cWwvc3RhdGVtZW50LXN1Y2Nlc3MtY2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVU
CQADlX3iVpV94lZ1eAsAAQT1AQAABBQAAADlz88KwjAMBvC7T5GTbKBWEEF6E50XEWHzz7ndMil0
ychaxbd3Ez35CN7ykd8HSZbnx1zDmYz1CIEhRCFgAkelYIMUjAcTA0/vpoyxgWQOxAEMAYqwpCN1
YR8b7NTWBKOya6GuaPcuqIKjlDikDQuqA1fR9+yBtuqlNR2+K8MwK9s2WSxXKWiwzB4+Ja2/QusW
pWZpji3SmqoLiqufyYAnvzobToNxvznttC6COLrBOB1lf/XtC1BLAwQUAAIACABhAWtIl1ZHlrAA
AADuAAAAKgAcAHN0b3JhZ2Uvd2Vic3FsL3N1Y2Nlc3MtY2FsbGJhY2stc3RkZXJyLnR4dFVUCQAD
lX3iVpV94lZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKWnnd1DGGdkXG3
6N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnimCnahw0Ed
jTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3KA1Ll/ZI
e6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACABhAWtIl1ZHlrAAAADuAAAAQwAc
AHN0b3JhZ2Uvd2Vic3FsL3N1Y2Nlc3MtY2FsbGJhY2std2hlbi1wYWdlLWRlZmVycy1sb2FkaW5n
LXN0ZGVyci50eHRVVAkAA5V94laVfeJWdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbRBB
7C3KLhGClp53dQxhnZFxt+jfp1GnbvN434NJsizNNNzIWIfgGXwQAiZoqRLskLxxYILn5cNUIXQQ
rYHYgyFAEZZ4pgp2ocNBHY03KilzVaI9t17lHKTCKR1YUF24Dm5kT7T1KK0Z8DOZjlXV99Fmu4tB
g2V28B1p/RNa9ygNS5f2SHuqC5S2eUUTXvzrZHoN5mNzPWmde2npDvN49gZQSwMEFAACAAgAYQFr
SJdWR5awAAAA7gAAACkAHABzdG9yYWdlL3dlYnNxbC90ZXN0LWF1dGhvcml6ZXItc3RkZXJyLnR4
dFVUCQADln3iVpZ94lZ1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBtEEHsLcouEYKWnnd1
DGGdkXG36N+nUadu83jfg0myLM003MhYh+AZfBACJmipEuyQvHFgguflw1QhdBCtgdiDIUARlnim
Cnahw0EdjTcqKXNVoj23XuUcpMIpHVhQXbgObmRPtPUorRnwM5mOVdX30Wa7i0GDZXbwHWn9E1r3
KA1Ll/ZIe6oLlLZ5RRNe/Otkeg3mY3M9aZ17aekO83j2BlBLAwQUAAIACABhAWtIl1ZHlrAAAADu
AAAAPgAcAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLWNhbGxiYWNrLWV4Y2VwdGlvbi1jcmFz
aC1zdGRlcnIudHh0VVQJAAOWfeJWln3iVnV4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG0Q
Qewtyi4Rgpaed3UMYZ2Rcbfo36dRp27zeN+DSbIszTTcyFiH4Bl8EAImaKkS7JC8cWCC5+XDVCF0
EK2B2IMhQBGWeKYKdqHDQR2NNyopc1WiPbde5RykwikdWFBduA5uZE+09SitGfAzmY5V1ffRZruL
QYNldvAdaf0TWvcoDUuX9kh7qguUtnlFE17862R6DeZjcz1pnXtp6Q7zePYGUEsDBBQAAgAIAGEB
a0hX29HItgAAANwBAAA9ABwAc3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rpb24tY2FsbGJhY2staXNv
bGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUCQADln3iVpZ94lZ1eAsAAQT1AQAABBQAAADlz88KwjAM
BvC7T5GTbKBWEEF6E50XEWHzz7ndMil0ychaxbd3Ez35CN7ykd8HSZbnx1zDmYz1CIEhRCFgAkel
YIMUjAcTA0/vpoyxgWQOxAEMAYqwpCN1YR8b7NTWBKOya6GuaPcuqIKjlDikDQuqA1fR9+yBtuql
NR2+K8MwK9s2WSxXKWiwzB4+Ja2/QusWpWZpji3SmqoLiqufyYAnvzobToNxvznttC6COLrBOB1l
f/XtC1BLAwQUAAIACABiAWtIV9vRyLYAAADcAQAAQwAcAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0
aW9uLWVycm9yLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAkAA5d94laXfeJW
dXgLAAEE9QEAAAQUAAAA5c/PCsIwDAbwu0+Rk2ygVhBBehOdFxFh88+53TIpdMnIWsW3dxM9+Qje
8pHfB0mW58dcw5mM9QiBIUQhYAJHpWCDFIwHEwNP76aMsYFkDsQBDAGKsKQjdWEfG+zU1gSjsmuh
rmj3LqiCo5Q4pA0LqgNX0ffsgbbqpTUdvivDMCvbNlksVylosMwePiWtv0LrFqVmaY4t0pqqC4qr
n8mAJ786G06Dcb857bQugji6wTgdZX/17QtQSwMEFAACAAgAYgFrSJdWR5awAAAA7gAAADQAHABz
dG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1lcnJvci1jYWxsYmFjay1zdGRlcnIudHh0VVQJAAOX
feJWl33iVnV4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG0QQewtyi4Rgpaed3UMYZ2Rcbfo
36dRp27zeN+DSbIszTTcyFiH4Bl8EAImaKkS7JC8cWCC5+XDVCF0EK2B2IMhQBGWeKYKdqHDQR2N
Nyopc1WiPbde5RykwikdWFBduA5uZE+09SitGfAzmY5V1ffRZruLQYNldvAdaf0TWvcoDUuX9kh7
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
AAAADAAYAAAAAAAAABAA7UE34AIAY29tcG9zaXRpbmcvVVQFAAPle+JWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAcABrSAAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BfeACAGNvbXBvc2l0aW5n
L3JlZ2lvbnMvVVQFAAPUe+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAGQRrSJ+miTm/AAAA
8gYAAEUAGAAAAAAAAQAAAKSBy+ACAGNvbXBvc2l0aW5nL3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVu
ZGVyZXItbGF5ZXItY29tcG9zaXRpbmctc3RkZXJyLnR4dFVUBQADsoLiVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIACQEa0jJ0PFcwgAAAPIGAAA8ABgAAAAAAAEAAACkgQniAgBjb21wb3NpdGlu
Zy9zaG93LWNvbXBvc2l0ZWQtaWZyYW1lLW9uLWJhY2stYnV0dG9uLXN0ZGVyci50eHRVVAUAA8OC
4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABuAGtIAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA
7UFB4wIAY29tcG9zaXRpbmcvdmlkZW8vVVQFAAPQe+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAFwRrSKe9mou/AAAA8gYAADIAGAAAAAAAAQAAAKSBjeMCAGNvbXBvc2l0aW5nL3ZpZGVvL3Zp
ZGVvLWNsaXAtY2hhbmdlLXNyYy1zdGRlcnIudHh0VVQFAAOuguJWdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAARQRrSAAAAAAAAAAAAAAAAAYAGAAAAAAAAAAQAO1BuOQCAGNzc29tL1VUBQADAoPi
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABAFa0hx/A9LQ0YAADYvAQA/ABgAAAAAAAEAAACk
gfjkAgBjc3NvbS9jc3NzdHlsZWRlY2xhcmF0aW9uLWNzc3RleHQtZmluYWwtZGVsaW1pdGVyLWNy
YXNoLWxvZy50eHRVVAUAA4CE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABFBGtIRO/xw9oD
AADBCwAAPAAYAAAAAAABAAAApIG0KwMAY3Nzb20vY3Nzc3R5bGVkZWNsYXJhdGlvbi1jc3N0ZXh0
LWZpbmFsLWRlbGltaXRlci1zdGRlcnIudHh0VVQFAAMCg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAeABrSAAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BBDADAGRpc3BsYXlsaXN0cy9VVAUA
A+N74lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAiBGtIo1f96FAAAACOAAAAMgAYAAAAAAAB
AAAApIFLMAMAZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLXN0ZGVyci50
eHRVVAUAA7+C4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAiBGtI8paV1UcAAABJAAAAKQAY
AAAAAAABAAAApIEHMQMAZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LXN0ZGVyci50eHRV
VAUAA7+C4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACDBGtIAAAAAAAAAAAAAAAACAAYAAAA
AAAAABAA7UGxMQMAZWRpdGluZy9VVAUAA3WD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACa
AGtIAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UHzMQMAZWRpdGluZy9wYXN0ZWJvYXJkL1VUBQAD
I3ziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADQEa0iROYSC7gAAAIYBAAAwABgAAAAAAAEA
AACkgUAyAwBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1yZXNvbHZlcy11cmxzLXN0ZGVyci50eHRV
VAUAA+SC4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA7BGtIk9hPEuoAAACBAQAARAAYAAAA
AAABAAAApIGYMwMAZWRpdGluZy9wYXN0ZWJvYXJkL2ltZy1zcmNzZXQtY29weS1wYXN0ZS1jYW5v
bmljYWxpemF0aW9uLXN0ZGVyci50eHRVVAUAA/GC4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABFBGtIkAUEw+AAAABUAQAALAAYAAAAAAABAAAApIEANQMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLW5vcGx1Z2luLXN0ZGVyci50eHRVVAUAAwGD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABFBGtIh4BiSOkAAAB/AQAAMgAYAAAAAAABAAAApIFGNgMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLW5vc2NyaXB0LXhodG1sLXN0ZGVyci50eHRVVAUAAwGD4lZ1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAAD8BGtIAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UGbNwMAZWRpdGluZy9zZWxlY3Rp
b24vVVQFAANbhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEAVrSFxRuva2UQAAbFMBAEIA
GAAAAAAAAQAAAKSB5zcDAGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1j
cmFzaC10ZXN0LTEtY3Jhc2gtbG9nLnR4dFVUBQADgITiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAIMEa0jE+VNVfQMAAPIKAAA/ABgAAAAAAAEAAACkgRmKAwBlZGl0aW5nL3NlbGVjdGlvbi9t
b3ZlLWJ5LXdvcmQtdmlzdWFsbHktY3Jhc2gtdGVzdC0xLXN0ZGVyci50eHRVVAUAA3WD4lZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAQBWtIOUEMcbQ8AAD0zwAAQgAYAAAAAAABAAAApIEPjgMA
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRlc3QtMi1jcmFz
aC1sb2cudHh0VVQFAAOAhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqARrSLM7W6GAAwAA
8goAAD8AGAAAAAAAAQAAAKSBP8sDAGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1
YWxseS1jcmFzaC10ZXN0LTItc3RkZXJyLnR4dFVUBQADvIPiVnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIABAFa0j1qkOYqz0AAFrSAABCABgAAAAAAAEAAACkgTjPAwBlZGl0aW5nL3NlbGVjdGlv
bi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktY3Jhc2gtdGVzdC0zLWNyYXNoLWxvZy50eHRVVAUAA4CE
4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADOBGtIoLR0530DAADyCgAAPwAYAAAAAAABAAAA
pIFfDQQAZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRlc3Qt
My1zdGRlcnIudHh0VVQFAAMDhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA5ARrSIjR8gqR
AAAA/gAAAEIAGAAAAAAAAQAAAKSBVREEAGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12
aXN1YWxseS1jcmFzaC10ZXN0LTQtY3Jhc2gtbG9nLnR4dFVUBQADLITiVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAOQEa0hOAeP7gQMAAPIKAAA/ABgAAAAAAAEAAACkgWISBABlZGl0aW5nL3Nl
bGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktY3Jhc2gtdGVzdC00LXN0ZGVyci50eHRVVAUA
AyyE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQBWtIT/UtDus+AABG2gAAQgAYAAAAAAAB
AAAApIFcFgQAZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRl
c3QtNS1jcmFzaC1sb2cudHh0VVQFAAOAhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA/ARr
SBXbfzCBAwAA8goAAD8AGAAAAAAAAQAAAKSBw1UEAGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnkt
d29yZC12aXN1YWxseS1jcmFzaC10ZXN0LTUtc3RkZXJyLnR4dFVUBQADW4TiVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAA8Fa0h7vIPkRA0AAIBzAAANABgAAAAAAAEAAACkgb1ZBABlcnJvcl9s
b2cudHh0VVQFAAN9hOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAhwRrSAAAAAAAAAAAAAAA
AAUAGAAAAAAAAAAQAO1BSGcEAGZhc3QvVVQFAAN+g+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAApwBrSAAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1Bh2cEAGZhc3QvY2FudmFzL1VUBQADOnzi
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFEEa0hzXMYwhAAAABoBAAAmABgAAAAAAAEAAACk
gc1nBABmYXN0L2NhbnZhcy9jYW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVUBQADGoPiVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAPsAa0gAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQbFoBABm
YXN0L2Nzcy9VVAUAA9l84lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACjBGtIRcz9V7IAAADO
AQAANgAYAAAAAAABAAAApIH0aAQAZmFzdC9jc3MvcGVyc3BlY3RpdmUtb3JpZ2luLWluaXRpYWwt
aW5oZXJpdC1zdGRlcnIudHh0VVQFAAOyg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAoQBr
SAAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BFmoEAGZhc3QvZG9tL1VUBQADLXziVnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAKEAa0gAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQVlqBABmYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL1VUBQADLXziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AEsEa0iXVkeWsAAAAO4AAAA/ABgAAAAAAAEAAACkga1qBABmYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL2RhdGFiYXNlLWNhbGxiYWNrLWRlbGl2ZXJ5LXN0ZGVyci50eHRVVAUAAw2D4lZ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADkBGtIAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UHWawQAZmFz
dC9mb3Jtcy9VVAUAAyyE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC5AGtISiNCuZoAAADR
AAAAMwAYAAAAAAABAAAApIEbbAQAZmFzdC9mb3Jtcy9mb3JtLWFzc29jaWF0ZWQtZWxlbWVudC1j
cmFzaC1zdGRlcnIudHh0VVQFAANdfOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA5ARrSKMY
J4ORAAAA+gAAADcAGAAAAAAAAQAAAKSBIm0EAGZhc3QvZm9ybXMvc3VibWl0LXRvLWJsYW5rLW11
bHRpcGxlLXRpbWVzLWNyYXNoLWxvZy50eHRVVAUAAyyE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADkBGtI28OXnQsEAAAsDAAANAAYAAAAAAABAAAApIEkbgQAZmFzdC9mb3Jtcy9zdWJtaXQt
dG8tYmxhbmstbXVsdGlwbGUtdGltZXMtc3RkZXJyLnR4dFVUBQADLITiVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAFQEa0guX9jvewEAAPg5AAAzABgAAAAAAAEAAACkgZ1yBABmYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLXN0ZGVyci50eHRVVAUAAx+D4lZ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADiAGtIAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UGFdAQAZmFz
dC9mcmFtZXMvVVQFAAOnfOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAjwRrSJdWR5awAAAA
7gAAAC8AGAAAAAAAAQAAAKSBy3QEAGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFn
ZS1zdGRlcnIudHh0VVQFAAONg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAArgBrSAAAAAAA
AAAAAAAAAA0AGAAAAAAAAAAQAO1B5HUEAGZhc3QvaGlzdG9yeS9VVAUAA0h84lZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABaBGtIl1ZHlrAAAADuAAAAQAAYAAAAAAABAAAApIErdgQAZmFzdC9o
aXN0b3J5L3BhZ2UtY2FjaGUtd2ViZGF0YWJhc2Utbm8tdHJhbnNhY3Rpb24tZGItc3RkZXJyLnR4
dFVUBQADK4PiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFoEa0hX29HItgAAANwBAABCABgA
AAAAAAEAAACkgVV3BABmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13ZWJkYXRhYmFzZS1wZW5kaW5n
LXRyYW5zYWN0aW9uLXN0ZGVyci50eHRVVAUAAyuD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AACxAGtIAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UGHeAQAZmFzdC9pbWFnZXMvVVQFAANOfOJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXQRrSCGPvTgyAAAAMwAAACwAGAAAAAAAAQAAAKSB
zXgEAGZhc3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1jcm9wLWJveC1zdGRlcnIudHh0VVQFAAMxg+JW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA/ARrSAAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1B
ZXkEAGZhc3QvcmVnZXgvVVQFAANbhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEAVrSOlE
f26SVAAAEsUBACIAGAAAAAAAAQAAAKSBqnkEAGZhc3QvcmVnZXgvYXNzZXJ0aW9uLWNyYXNoLWxv
Zy50eHRVVAUAA4CE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACHBGtIya6Yp4QDAADCCgAA
HwAYAAAAAAABAAAApIGYzgQAZmFzdC9yZWdleC9hc3NlcnRpb24tc3RkZXJyLnR4dFVUBQADfoPi
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABAFa0jbFm+v3DwAAHrRAAAgABgAAAAAAAEAAACk
gXXSBABmYXN0L3JlZ2V4L2RvdHN0YXItY3Jhc2gtbG9nLnR4dFVUBQADgITiVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAK0Ea0iEKytlggMAAMIKAAAdABgAAAAAAAEAAACkgasPBQBmYXN0L3Jl
Z2V4L2RvdHN0YXItc3RkZXJyLnR4dFVUBQADxoPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ABAFa0hTPyC8FT8AABEKAQAkABgAAAAAAAEAAACkgYQTBQBmYXN0L3JlZ2V4L3BhcmVudGhlc2Vz
LWNyYXNoLWxvZy50eHRVVAUAA4CE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADSBGtItg+D
SYADAADCCgAAIQAYAAAAAAABAAAApIH3UgUAZmFzdC9yZWdleC9wYXJlbnRoZXNlcy1zdGRlcnIu
dHh0VVQFAAMLhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEAVrSDYDDRDOPAAAhNAAACQA
GAAAAAAAAQAAAKSB0lYFAGZhc3QvcmVnZXgvcGNyZS10ZXN0LTEtY3Jhc2gtbG9nLnR4dFVUBQAD
gITiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOQEa0hm+zDekgMAAOQKAAAhABgAAAAAAAEA
AACkgf6TBQBmYXN0L3JlZ2V4L3BjcmUtdGVzdC0xLXN0ZGVyci50eHRVVAUAAyyE4lZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAQBWtIsR/udtU8AACO0AAAJAAYAAAAAAABAAAApIHrlwUAZmFz
dC9yZWdleC9wY3JlLXRlc3QtNC1jcmFzaC1sb2cudHh0VVQFAAOAhOJWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA/ARrSMX7mbmZAwAA9QoAACEAGAAAAAAAAQAAAKSBHtUFAGZhc3QvcmVnZXgv
cGNyZS10ZXN0LTQtc3RkZXJyLnR4dFVUBQADW4TiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AMsAa0gAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQRLZBQBmYXN0L3hzbC9VVAUAA3184lZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAB2BGtIcv1l8oUAAADpAAAAJQAYAAAAAAABAAAApIFV2QUA
ZmFzdC94c2wvdHJhbnNmb3JtLXhoci1kb2Mtc3RkZXJyLnR4dFVUBQADYIPiVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAHYEa0jOCSgCjQAAAPAAAAAnABgAAAAAAAEAAACkgTnaBQBmYXN0L3hz
bC94c2x0LWJhZC1pbXBvcnQtdXJpLXN0ZGVyci50eHRVVAUAA2CD4lZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAB3BGtIz49mDlAAAACgAAAAJAAYAAAAAAABAAAApIEn2wUAZmFzdC94c2wveHNs
dC1jb250ZW50VHlwZS1zdGRlcnIudHh0VVQFAANhg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAeARrSIFKd61LAAAArAAAADQAGAAAAAAAAQAAAKSB1dsFAGZhc3QveHNsL3hzbHQtdHJhbnNm
b3JtLXRvLWZyYWdtZW50LWNyYXNoLXN0ZGVyci50eHRVVAUAA2OD4lZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAARBWtI6jjAkmQDAABHDwAAEQAYAAAAAAABAAAApIGO3AUAZnVsbF9yZXN1bHRz
Lmpzb25VVAUAA4GE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADLAGtIAAAAAAAAAAAAAAAA
BQAYAAAAAAAAABAA7UE94AUAaHR0cC9VVAUAA3584lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAC3BGtIAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UF84AUAaHR0cC90ZXN0cy9VVAUAA9qD4lZ1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADQAGtIAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UHB
4AUAaHR0cC90ZXN0cy9jYWNoZS9VVAUAA4d84lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB9
BGtIt4Yyw+4AAACJBAAAMAAYAAAAAAABAAAApIEM4QUAaHR0cC90ZXN0cy9jYWNoZS9tZW1vcnkt
Y2FjaGUtcHJ1bmluZy1zdGRlcnIudHh0VVQFAANtg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAfQRrSKEmTwqDAAAAwAAAAD0AGAAAAAAAAQAAAKSBZOIFAGh0dHAvdGVzdHMvY2FjaGUvbmV0
d29yay1lcnJvci1kdXJpbmctcmV2YWxpZGF0aW9uLXN0ZGVyci50eHRVVAUAA22D4lZ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADLAGtIAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UFe4wUAaHR0
cC90ZXN0cy9jYW52YXMvVVQFAAN+fOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAywBrSAAA
AAAAAAAAAAAAABgAGAAAAAAAAAAQAO1BquMFAGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL1VUBQAD
fnziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHkEa0g4Wk+KywAAAJECAAA7ABgAAAAAAAEA
AACkgfzjBQBodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbC9vcmlnaW4tY2xlYW4tY29uZm9ybWFuY2Ut
c3RkZXJyLnR4dFVUBQADZoPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAMwAa0gAAAAAAAAA
AAAAAAATABgAAAAAAAAAEADtQTzlBQBodHRwL3Rlc3RzL2Nvb2tpZXMvVVQFAAN/fOJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAeQRrSDC9pFaDAAAAGgEAAEEAGAAAAAAAAQAAAKSBieUFAGh0
dHAvdGVzdHMvY29va2llcy9kb3VibGUtcXVvdGVkLXZhbHVlLXdpdGgtc2VtaS1jb2xvbi1zdGRl
cnIudHh0VVQFAANmg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAApARrSAAAAAAAAAAAAAAA
ABUAGAAAAAAAAAAQAO1Bh+YFAGh0dHAvdGVzdHMvaW5zcGVjdG9yL1VUBQADtIPiVnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAKQEa0gAAAAAAAAAAAAAAAAdABgAAAAAAAAAEADtQdbmBQBodHRw
L3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlL1VUBQADtIPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIABAFa0jQczThFEkAAI+EAQBNABgAAAAAAAEAAACkgS3nBQBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9jb25zb2xlL2Nyb3NzLWRvbWFpbi1pbnNwZWN0ZWQtbm9kZS1hY2Nlc3MtY3Jhc2gtbG9nLnR4
dFVUBQADgITiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKQEa0jq6aYZ8QMAAGsLAABKABgA
AAAAAAEAAACkgcgwBgBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlL2Nyb3NzLWRvbWFpbi1p
bnNwZWN0ZWQtbm9kZS1hY2Nlc3Mtc3RkZXJyLnR4dFVUBQADtIPiVnV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAKQEa0gAAAAAAAAAAAAAAAAZABgAAAAAAAAAEADtQT01BgBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9kb20vVVQFAAO0g+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEAVrSAblAkpC
SAAAjHYBAFYAGAAAAAAAAQAAAKSBkDUGAGh0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9kaXNjb25u
ZWN0LWRvbS10cmVlLWFmdGVyLW1haW4tZnJhbWUtbmF2aWdhdGlvbi1jcmFzaC1sb2cudHh0VVQF
AAOAhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgApARrSJSVMZzyAwAAawsAAFMAGAAAAAAA
AQAAAKSBYn4GAGh0dHAvdGVzdHMvaW5zcGVjdG9yL2RvbS9kaXNjb25uZWN0LWRvbS10cmVlLWFm
dGVyLW1haW4tZnJhbWUtbmF2aWdhdGlvbi1zdGRlcnIudHh0VVQFAAO0g+JWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAA3QBrSAAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1B4YIGAGh0dHAvdGVz
dHMvbWVkaWEvVVQFAAOhfOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA0QBrSAAAAAAAAAAA
AAAAABoAGAAAAAAAAAAQAO1BLIMGAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvVVQFAAOKfOJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgQRrSAxYDWJRAQAAfwMAADkAGAAAAAAAAQAAAKSB
gIMGAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIta2V5LWhscy1hZXMxMjgtc3RkZXJy
LnR4dFVUBQADcoPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANQAa0gAAAAAAAAAAAAAAAAV
ABgAAAAAAAAAEADtQUSFBgBodHRwL3Rlc3RzL21lZGlhL2hscy9VVAUAA5B84lZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACACBBGtInJ72SrgBAAAqBQAAQAAYAAAAAAABAAAApIGThQYAaHR0cC90
ZXN0cy9tZWRpYS9obHMvaGxzLWFjY2Vzc2libGl0eS1kZXNjcmliZXMtdmlkZW8tc3RkZXJyLnR4
dFVUBQADcoPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIIEa0ii8TNCxAEAAEUFAAA6ABgA
AAAAAAEAAACkgcWHBgBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtYXVkaW8tdHJhY2tzLWhhcy1h
dWRpby1zdGRlcnIudHh0VVQFAANzg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAggRrSDvs
PUPEAQAAnwUAAEEAGAAAAAAAAQAAAKSB/YkGAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hdWRp
by10cmFja3MtbG9jYWxlLXNlbGVjdGlvbi1zdGRlcnIudHh0VVQFAANzg+JWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAggRrSECT4VbFAQAARQUAADAAGAAAAAAAAQAAAKSBPIwGAGh0dHAvdGVz
dHMvbWVkaWEvaGxzL2hscy1hdWRpby10cmFja3Mtc3RkZXJyLnR4dFVUBQADdIPiVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAIIEa0hwpDvMIQEAAN4DAAAsABgAAAAAAAEAAACkgWuOBgBodHRw
L3Rlc3RzL21lZGlhL2hscy9obHMtcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADdIPiVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAIMEa0hVsV/fKQEAAIQDAAAwABgAAAAAAAEAAACkgfKPBgBodHRw
L3Rlc3RzL21lZGlhL2hscy9obHMtdmlkZW8tcmVzaXplLXN0ZGVyci50eHRVVAUAA3WD4lZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACEBGtI6LAOWT0BAACwBwAAPQAYAAAAAAABAAAApIGFkQYA
aHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbGxlci1nZXRTdGFydERhdGUtc3RkZXJy
LnR4dFVUBQADd4PiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIEEa0h+yFL/zwAAAJECAAAy
ABgAAAAAAAEAAACkgTmTBgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLWRvY3VtZW50LXJlZmVyZXIt
c3RkZXJyLnR4dFVUBQADcoPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIIEa0jJt9qC4gAA
AAYDAAAqABgAAAAAAAEAAACkgXSUBgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLWRvY3VtZW50LXN0
ZGVyci50eHRVVAUAA3OD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACDBGtIdFVZbOkAAADG
AwAAOQAYAAAAAAABAAAApIG6lQYAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1wbGF5LXN0cmVhbS1j
aHVua2VkLWljeS1zdGRlcnIudHh0VVQFAAN1g+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
5gBrSAAAAAAAAAAAAAAAAB4AGAAAAAAAAAAQAO1BFpcGAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEt
c291cmNlL1VUBQADsHziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIgEa0joJo7+VwEAAJ0E
AABCABgAAAAAAAEAAACkgW6XBgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1hcHBlbmQtYnVmZmVyLXN0ZGVyci50eHRVVAUAA3+D4lZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACJBGtIF835AD0BAAB7AwAAUAAYAAAAAAABAAAApIFBmQYAaHR0cC90ZXN0cy9tZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtdi1iaXRyYXRlLXN0
ZGVyci50eHRVVAUAA4GD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACKBGtIhRDztT0BAAB7
AwAAUgAYAAAAAAABAAAApIEImwYAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFz
b3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtdi1mcmFtZXJhdGUtc3RkZXJyLnR4dFVUBQADhIPiVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAI8Ea0hOaBcJjAAAAJwAAAA5ABgAAAAAAAEAAACkgdGc
BgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1wbGF5LXN0ZGVyci50
eHRVVAUAA42D4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACRBGtIdnou5KkAAAAMAwAAOwAY
AAAAAAABAAAApIHQnQYAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Ut
cmVtb3ZlLXN0ZGVyci50eHRVVAUAA5GD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACTBGtI
heHfTaEAAADUAQAARgAYAAAAAAABAAAApIHungYAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2Utc291cmNlYnVmZmVyLW1vZGUtc3RkZXJyLnR4dFVUBQADlYPiVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAIEEa0h0IIbPgwAAAMAAAABGABgAAAAAAAEAAACkgQ+gBgBo
dHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9Tb3VyY2VCdWZmZXItYWJvcnQtcmVhZHlTdGF0
ZS1zdGRlcnIudHh0VVQFAANyg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgwRrSM/lfhvt
AAAAXwEAAC0AGAAAAAAAAQAAAKSBEqEGAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNlcnZlZC1hcy1w
ZGYtc3RkZXJyLnR4dFVUBQADdYPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIQEa0iyMJvm
uwAAAJIBAAAvABgAAAAAAAEAAACkgWaiBgBodHRwL3Rlc3RzL21lZGlhL3JlbG9hZC1hZnRlci1k
aWFsb2ctc3RkZXJyLnR4dFVUBQADd4PiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIQEa0jm
JNuKSwEAAHQCAAAvABgAAAAAAAEAAACkgYqjBgBodHRwL3Rlc3RzL21lZGlhL3RleHQtc2VydmVk
LWFzLXRleHQtc3RkZXJyLnR4dFVUBQADeIPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIYE
a0heHsP6CQEAAHgDAAA2ABgAAAAAAAEAAACkgT6lBgBodHRwL3Rlc3RzL21lZGlhL3RyYWNrLWlu
LWJhbmQtaGxzLW1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA3uD4lZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACGBGtIgUAq8VkBAAC4AwAAJgAYAAAAAAABAAAApIG3pgYAaHR0cC90ZXN0cy9tZWRp
YS92aWRlby1hdXRoLXN0ZGVyci50eHRVVAUAA3yD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACHBGtILQbEQuIAAACsAgAALQAYAAAAAAABAAAApIFwqAYAaHR0cC90ZXN0cy9tZWRpYS92aWRl
by1lcnJvci1hYm9ydC1zdGRlcnIudHh0VVQFAAN9g+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAhwRrSMthVUUZAQAA8QIAADYAGAAAAAAAAQAAAKSBuakGAGh0dHAvdGVzdHMvbWVkaWEvdmlk
ZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3Qtc3RkZXJyLnR4dFVUBQADfoPiVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAIcEa0hT+Vz2wwAAACQDAAAsABgAAAAAAAEAAACkgUKrBgBodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUBQADfoPiVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAIgEa0i488nl4gAAAMYDAAAvABgAAAAAAAEAAACkgWusBgBodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADf4PiVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAIkEa0gmqtowgwAAAMAAAAA9ABgAAAAAAAEAAACkgbatBgBodHRwL3Rl
c3RzL21lZGlhL3ZpZGVvLXBsYXktc3RhbGwtYmVmb3JlLW1ldGEtZGF0YS1zdGRlcnIudHh0VVQF
AAOCg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAigRrSPdZ2tW8AAAAkgEAACsAGAAAAAAA
AQAAAKSBsK4GAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcXVlcnktdXJsLXN0ZGVyci50eHRVVAUA
A4OD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACKBGtIdc9poVgBAAAqBgAAKgAYAAAAAAAB
AAAApIHRrwYAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1yZWRpcmVjdC1zdGRlcnIudHh0VVQFAAOE
g+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAigRrSBHGfQzbAAAABgMAACsAGAAAAAAAAQAA
AKSBjbEGAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tdXNlcmFnZW50LXN0ZGVyci50eHRVVAUAA4SD
4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAD6AGtIAAAAAAAAAAAAAAAAEAAYAAAAAAAAABAA
7UHNsgYAaHR0cC90ZXN0cy9taXNjL1VUBQAD13ziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AIwEa0htTlRg6gAAAGYBAAAtABgAAAAAAAEAAACkgRezBgBodHRwL3Rlc3RzL21pc2MvY29weS1y
ZXNvbHZlcy11cmxzLXN0ZGVyci50eHRVVAUAA4eD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACMBGtIFSgZicQAAAD/AAAAWwAYAAAAAAABAAAApIFotAYAaHR0cC90ZXN0cy9taXNjL2RlbGV0
ZS1mcmFtZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS13aXRoLWdjLWFmdGVyLXZpZGVvLXJlbW92
YWwtc3RkZXJyLnR4dFVUBQADiIPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsEa0gVNTWS
egAAALwAAAAqABgAAAAAAAEAAACkgcG1BgBodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0
LXN0ZGVyci50eHRVVAUAA8KD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACEBGtIAAAAAAAA
AAAAAAAAFQAYAAAAAAAAABAA7UGftgYAaHR0cC90ZXN0cy9tdWx0aXBhcnQvVVQFAAN3g+JWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAhARrSNWavqyKAAAAgAEAAD0AGAAAAAAAAQAAAKSB7rYG
AGh0dHAvdGVzdHMvbXVsdGlwYXJ0L2ludmFsaWQtaW1hZ2UtZGF0YS1zdGFuZGFsb25lLXN0ZGVy
ci50eHRVVAUAA3eD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACLBGtIAAAAAAAAAAAAAAAA
FAAYAAAAAAAAABAA7UHvtwYAaHR0cC90ZXN0cy9zZWN1cml0eS9VVAUAA4WD4lZ1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAADVAGtIAAAAAAAAAAAAAAAAHwAYAAAAAAAAABAA7UE9uAYAaHR0cC90
ZXN0cy9zZWN1cml0eS80MDEtbG9nb3V0L1VUBQADkXziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIANUAa0gmaRDBjAAAAIABAAA0ABgAAAAAAAEAAACkgZa4BgBodHRwL3Rlc3RzL3NlY3VyaXR5
LzQwMS1sb2dvdXQvNDAxLWxvZ291dC1zdGRlcnIudHh0VVQFAAORfOJWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAA5wBrSAAAAAAAAAAAAAAAACoAGAAAAAAAAAAQAO1BkLkGAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUBQADsnziVnV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAANgAa0gAAAAAAAAAAAAAAAA9ABgAAAAAAAAAEADtQfS5BgBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vVVQFAAOYfOJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAiARrSGzc073XAAAA+AEAAFMAGAAAAAAAAQAAAKSB
a7oGAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNo
YWRvd0RPTS9hbGxvdy1hdWRpby1zdGRlcnIudHh0VVQFAAN/g+JWdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAiQRrSOt8Zk67AAAAkgEAAFMAGAAAAAAAAQAAAKSBz7sGAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy12aWRl
by1zdGRlcnIudHh0VVQFAAOCg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAigRrSFdzR3CD
AAAAwAAAAGsAGAAAAAAAAQAAAKSBF70GAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9kZWZhdWx0LXNyYy1vYmplY3QtZGF0YS11cmwt
YWxsb3dlZC1zdGRlcnIudHh0VVQFAAODg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAmQRr
SJj5RrTKAAAA3QEAAGYAGAAAAAAAAQAAAKSBP74GAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3ZpZGVvLXdpdGgtaHR0cC11cmwtYWxsb3dlZC1ieS1jc3AtbWVkaWEt
c3JjLXN0YXItc3RkZXJyLnR4dFVUBQADooPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJkE
a0g+jqIdgwAAAMAAAABZABgAAAAAAAEAAACkgam/BgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtYmxvY2tzLWV2YWwtc3Rk
ZXJyLnR4dFVUBQADooPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJwEa0hjqqxsggAAAKgA
AABAABgAAAAAAAEAAACkgb/ABgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAOng+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAnARrSGOqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSBu8EGAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0
ZGVyci50eHRVVAUAA6eD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACPBGtIV9vRyLYAAADc
AQAAOgAYAAAAAAABAAAApIHJwgYAaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td2Vi
c3FsLWFsbG93ZWQtc3RkZXJyLnR4dFVUBQADjYPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AIsEa0gAAAAAAAAAAAAAAAAdABgAAAAAAAAAEADtQfPDBgBodHRwL3Rlc3RzL3NlY3VyaXR5L2xp
c3RlbmVyL1VUBQADhYPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIsEa0iB8TczhAAAAMAA
AABRABgAAAAAAAEAAACkgUrEBgBodHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1Rh
cmdldE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVyLXN0ZGVyci50eHRVVAUAA4WD4lZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACSBGtIYaNXpM0AAADdAQAAPQAYAAAAAAABAAAApIFZxQYA
aHR0cC90ZXN0cy9zZWN1cml0eS9sb2NhbC12aWRlby1zb3VyY2UtZnJvbS1yZW1vdGUtc3RkZXJy
LnR4dFVUBQADk4PiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJIEa0hOCYIghAAAAMAAAAA6
ABgAAAAAAAEAAACkgZ3GBgBodHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2FsLXZpZGVvLXNyYy1mcm9t
LXJlbW90ZS1zdGRlcnIudHh0VVQFAAOTg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA2gBr
SAAAAAAAAAAAAAAAACEAGAAAAAAAAAAQAO1BlccGAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRD
b250ZW50L1VUBQADnHziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIwEa0janKcB6AAAAD4E
AABOABgAAAAAAAEAAACkgfDHBgBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNl
Y3VyZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLXN0ZGVyci50eHRVVAUAA4iD4lZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACMBGtIWauxpoMAAADAAAAAQgAYAAAAAAABAAAApIFgyQYAaHR0
cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtY3NzLWluLWlmcmFtZS1zdGRl
cnIudHh0VVQFAAOIg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAmwRrSIGRpay1AAAAJwEA
AD8AGAAAAAAAAQAAAKSBX8oGAGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tcG9zdGVyLWNyb3Nz
LW9yaWdpbi1jcmFzaDItc3RkZXJyLnR4dFVUBQADpoPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAKIEa0hgS2YQkQAAAPsBAABFABgAAAAAAAEAAACkgY3LBgBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXNlY3VyaXR5T3JpZ2luLXN0ZGVyci50eHRVVAUAA7CD
4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADbAGtIAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA
7UGdzAYAaHR0cC90ZXN0cy9zdG9yYWdlL1VUBQADnXziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAI0Ea0iXVkeWsAAAAO4AAABFABgAAAAAAAEAAACkgerMBgBodHRwL3Rlc3RzL3N0b3JhZ2Uv
Y2FsbGJhY2tzLWFyZS1jYWxsZWQtaW4tY29ycmVjdC1jb250ZXh0LXN0ZGVyci50eHRVVAUAA4qD
4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAC3BGtIAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA
7UEZzgYAaHR0cC90ZXN0cy93ZWJzb2NrZXQvVVQFAAPag+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAtwRrSAAAAAAAAAAAAAAAABsAGAAAAAAAAAAQAO1BaM4GAGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL1VUBQAD2oPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALcEa0gAAAAAAAAA
AAAAAAAgABgAAAAAAAAAEADtQb3OBgBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL1VU
BQAD2oPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALcEa0gAAAAAAAAAAAAAAAAoABgAAAAA
AAAAEADtQRfPBgBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvVVQFAAPa
g+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEAVrSECirgkKVQAAcLkBAEMAGAAAAAAAAQAA
AKSBec8GAGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy93b3JrZXItcmVs
b2FkLWNyYXNoLWxvZy50eHRVVAUAA4CE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC3BGtI
HOmstgwEAAAsDAAAQAAYAAAAAAABAAAApIEAJQcAaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS93b3JrZXJzL3dvcmtlci1yZWxvYWQtc3RkZXJyLnR4dFVUBQAD2oPiVnV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAOwAa0gAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQYYpBwBodHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L1VUBQADu3ziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJwE
a0h+f+0XsQAAAAEBAABBABgAAAAAAAEAAACkgdopBwBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Bvc3QtYmxvYi1jb250ZW50LXR5cGUtYXN5bmMtc3RkZXJyLnR4dFVUBQADqIPiVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAJwEa0h+f+0XsQAAAAEBAABAABgAAAAAAAEAAACkgQYrBwBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Bvc3QtYmxvYi1jb250ZW50LXR5cGUtc3luYy1zdGRlcnIu
dHh0VVQFAAOog+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA3QBrSAAAAAAAAAAAAAAAABUA
GAAAAAAAAAAQAO1BMSwHAGh0dHAvdGVzdHMveG1sdmlld2VyL1VUBQADoXziVnV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAN0Aa0gAAAAAAAAAAAAAAAAgABgAAAAAAAAAEADtQYAsBwBodHRwL3Rl
c3RzL3htbHZpZXdlci9kdW1wQXNUZXh0L1VUBQADoXziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAN0Aa0gSBpWAgwAAAMAAAAA5ABgAAAAAAAEAAACkgdosBwBodHRwL3Rlc3RzL3htbHZpZXdl
ci9kdW1wQXNUZXh0L2Nzcy1zdHlsZXNoZWV0LXN0ZGVyci50eHRVVAUAA6F84lZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAASBGtINRPGmpkFAAAREAAACgAYAAAAAAABAAAApIHQLQcAaHR0cGQu
Y29uZlVUBQADo4LiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPsAa0gAAAAAAAAAAAAAAAAJ
ABgAAAAAAAAAEADtQa0zBwBpbXBvcnRlZC9VVAUAA9p84lZ1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAAkAWtIAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UHwMwcAaW1wb3J0ZWQvdzNjL1VUBQAD
JH3iVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAF0Ba0gAAAAAAAAAAAAAAAAXABgAAAAAAAAA
EADtQTc0BwBpbXBvcnRlZC93M2MvaW5kZXhlZGRiL1VUBQADkn3iVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIANUEa0g38DqWowAAAE8CAAAzABgAAAAAAAEAAACkgYg0BwBpbXBvcnRlZC93M2Mv
aW5kZXhlZGRiL2lkYmZhY3Rvcnlfb3BlbjExLXN0ZGVyci50eHRVVAUAAxGE4lZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADYBGtIt+DI55kAAADFAAAAMAAYAAAAAAABAAAApIGYNQcAaW1wb3J0
ZWQvdzNjL2luZGV4ZWRkYi9pZGJpbmRleF9jb3VudC1zdGRlcnIudHh0VVQFAAMYhOJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA2ARrSLfgyOeZAAAAxQAAADEAGAAAAAAAAQAAAKSBmzYHAGlt
cG9ydGVkL3czYy9pbmRleGVkZGIvaWRiaW5kZXhfY291bnQyLXN0ZGVyci50eHRVVAUAAxeE4lZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADYBGtIt+DI55kAAADFAAAAMQAYAAAAAAABAAAApIGf
NwcAaW1wb3J0ZWQvdzNjL2luZGV4ZWRkYi9pZGJpbmRleF9jb3VudDMtc3RkZXJyLnR4dFVUBQAD
F4TiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOQEa0i34MjnmQAAAMUAAAA2ABgAAAAAAAEA
AACkgaM4BwBpbXBvcnRlZC93M2MvaW5kZXhlZGRiL2lkYm9iamVjdHN0b3JlX2NvdW50LXN0ZGVy
ci50eHRVVAUAAyuE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADjBGtIt+DI55kAAADFAAAA
NwAYAAAAAAABAAAApIGsOQcAaW1wb3J0ZWQvdzNjL2luZGV4ZWRkYi9pZGJvYmplY3RzdG9yZV9j
b3VudDItc3RkZXJyLnR4dFVUBQADKoTiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOMEa0iZ
t3XenwAAAIoBAAA3ABgAAAAAAAEAAACkgbY6BwBpbXBvcnRlZC93M2MvaW5kZXhlZGRiL2lkYm9i
amVjdHN0b3JlX2NvdW50My1zdGRlcnIudHh0VVQFAAMqhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA6ARrSLfgyOeZAAAAxQAAADgAGAAAAAAAAQAAAKSBxjsHAGltcG9ydGVkL3czYy9pbmRl
eGVkZGIvaWRib2JqZWN0c3RvcmVfZGVsZXRlNS1zdGRlcnIudHh0VVQFAAMzhOJWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA7wRrSLfgyOeZAAAAxQAAADsAGAAAAAAAAQAAAKSB0TwHAGltcG9y
dGVkL3czYy9pbmRleGVkZGIvaWRidHJhbnNhY3Rpb24tb25jb21wbGV0ZS1zdGRlcnIudHh0VVQF
AANChOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9gRrSJm3dd6fAAAAigEAAEUAGAAAAAAA
AQAAAKSB3z0HAGltcG9ydGVkL3czYy9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3JlYXRlX2luX3Zl
cnNpb25jaGFuZ2Utc3RkZXJyLnR4dFVUBQADT4TiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
APgEa0i34MjnmQAAAMUAAAAzABgAAAAAAAEAAACkgf0+BwBpbXBvcnRlZC93M2MvaW5kZXhlZGRi
L3dyaXRlci1zdGFydmF0aW9uLXN0ZGVyci50eHRVVAUAA1SE4lZ1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAAARAWtIAAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UEDQAcAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9VVAUAAwF94lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAD7AGtI
AAAAAAAAAAAAAAAAJQAYAAAAAAAAABAA7UFdQAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL1VUBQAD2nziVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPsAa0gAAAAAAAAA
AAAAAAAvABgAAAAAAAAAEADtQbxABwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL1VUBQAD2nziVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALoEa0gAAAAA
AAAAAAAAAABAABgAAAAAAAAAEADtQSVBBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvVVQFAAPgg+JWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAGgFrSAAAAAAAAAAAAAAAAE8AGAAAAAAAAAAQAO1Bn0EHAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9VVAUAAxN94lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC4BGtIus43k+MA
AABMBQAAZwAYAAAAAAABAAAApIEoQgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBs
YXktc3RkZXJyLnR4dFVUBQAD3IPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALkEa0irvrfQ
7wAAAKQEAAByABgAAAAAAAEAAACkgaxDBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2Fu
cGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA96D4lZ1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAC6BGtIf+RbzO4AAAAMBgAAbgAYAAAAAAABAAAApIFHRQcAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2V2ZW50X2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAUAA9+D4lZ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAC7BGtINK2ATe0AAACkBAAAeQAYAAAAAAABAAAApIHdRgcAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXl0aHJvdWdoX25vYXV0b3BsYXktc3RkZXJyLnR4dFVU
BQAD4YPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALwEa0jME7N+6gAAAKQEAAB1ABgAAAAA
AAEAAACkgX1IBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkZGF0YV9ub2F1dG9w
bGF5LXN0ZGVyci50eHRVVAUAA+OD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC8BGtIfUBT
1uoAAACkBAAAbgAYAAAAAAABAAAApIEWSgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xv
YWRlZG1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA+SD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAC9BGtIuL3GTewAAACkBAAAeQAYAAAAAAABAAAApIGoSwcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X2xvYWRlZG1ldGFkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQAD5oPiVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAMAEa0gIbQxz6wAAAKQEAABpABgAAAAAAAEAAACkgUdNBwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAUAA+eD4lZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADBBGtIKFC8NeoAAACkBAAAdAAYAAAAAAABAAAApIHV
TgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5LXN0ZGVy
ci50eHRVVAUAA+mD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADCBGtISGzfDPAAAABmBgAA
fAAYAAAAAAABAAAApIFtUAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2NhbnBs
YXlfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4dFVUBQAD64PiVnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAMMEa0jpaLC47gAAAAwGAAB1ABgAAAAAAAEAAACkgRNSBwBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvZXZlbnRfb3JkZXJfY2FucGxheV9wbGF5aW5nLXN0ZGVyci50eHRVVAUAA+2D4lZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADDBGtIF/1Ad/EAAABmBgAAfwAYAAAAAAABAAAApIGwUwcA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRlZG1ldGFkYXRhX2xvYWRlZGRh
dGEtc3RkZXJyLnR4dFVUBQAD7oPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMQEa0g/aJXg
8QAAAAwGAAB4ABgAAAAAAAEAAACkgVpVBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3Jk
ZXJfbG9hZHN0YXJ0X3Byb2dyZXNzLXN0ZGVyci50eHRVVAUAA/CD4lZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADFBGtIcSZu1PUAAABmBgAAZQAYAAAAAAABAAAApIH9VgcAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X3BhdXNlLXN0ZGVyci50eHRVVAUAA/KD4lZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADGBGtIEmPzbu0AAACkBAAAcAAYAAAAAAABAAAApIGRWAcAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X3BhdXNlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQAD9IPiVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAMcEa0hkjH4p8wAAAAwGAABkABgAAAAAAAEAAACkgShaBwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheS1zdGRlcnIudHh0VVQFAAP1g+JWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAyARrSBaGW3fuAAAApAQAAG8AGAAAAAAAAQAAAKSBuVsHAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQAD
94PiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMgEa0iba6e99wAAAGYGAABnABgAAAAAAAEA
AACkgVBdBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRlcnIudHh0VVQF
AAP4g+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyQRrSPszUMf3AAAAZgYAAHIAGAAAAAAA
AQAAAKSB6F4HAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nX25vYXV0b3BsYXkt
c3RkZXJyLnR4dFVUBQAD+oPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMoEa0ga+joK7QAA
AAwGAABoABgAAAAAAAEAAACkgYtgBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jl
c3Mtc3RkZXJyLnR4dFVUBQAD/IPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMsEa0hfMJBh
6gAAAP4EAABzABgAAAAAAAEAAACkgRpiBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJv
Z3Jlc3Nfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAP9g+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAzARrSCa0IofxAAAApgUAAGoAGAAAAAAAAQAAAKSBsWMHAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF90aW1ldXBkYXRlLXN0ZGVyci50eHRVVAUAA/+D4lZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADMBGtI+VOaK/IAAABmBgAAdQAYAAAAAAABAAAApIFGZQcAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAMAhOJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAzQRrSDQhGECNAAAAgAEAAGwAGAAAAAAAAQAAAKSB
52YHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF92b2x1bWVjaGFuZ2Utc3RkZXJyLnR4dFVU
BQADAYTiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPsAa0gAAAAAAAAAAAAAAABaABgAAAAA
AAAAEADtQRpoBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9VVAUAA9p84lZ1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAAD7AGtIAAAAAAAAAAAAAAAAZAAYAAAAAAAAABAA7UGuaAcA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL1VUBQAD2nziVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIALgEa0i1aCK8ygAAAN0BAAB5ABgAAAAAAAEAAACkgUxpBwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svYWN0aXZlQ3Vlcy1zdGRl
cnIudHh0VVQFAAPcg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAuQRrSJpmnAOEAAAAwAAA
AHUAGAAAAAAAAQAAAKSByWoHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRU
cmFjay9hZGRDdWUtc3RkZXJyLnR4dFVUBQAD3YPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AM4Ea0ivw3fn3wAAAOQDAAB3ABgAAAAAAAEAAACkgfxrBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
bmV0d29ya1N0YXRlX2R1cmluZ19sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUBQADA4TiVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAM4Ea0jQ+tTFhAAAAMAAAABuABgAAAAAAAEAAACkgYxtBwBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvbmV0d29ya1N0YXRlX2luaXRpYWwtc3RkZXJyLnR4dFVUBQADBITi
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAM8Ea0jzkGal4QAAAEwFAAByABgAAAAAAAEAAACk
gbhuBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1c2VkX2ZhbHNlX2R1cmluZ19wbGF5LXN0ZGVy
ci50eHRVVAUAAwWE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADPBGtIMoqagOoAAACkBAAA
cgAYAAAAAAABAAAApIFFcAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNlZF90cnVlX2R1cmlu
Z19wYXVzZS1zdGRlcnIudHh0VVQFAAMGhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA/QBr
SAAAAAAAAAAAAAAAAGoAGAAAAAAAAAAQAO1B23EHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5
aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9VVAUAA9584lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAC6BGtINtQZfRABAACgAgAAkQAYAAAAAAABAAAApIF/cgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtdG8tb3RoZXItZG9jdW1lbnQt
c3RkZXJyLnR4dFVUBQAD34PiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALoEa0iVnIUoKwEA
AG8DAACPABgAAAAAAAEAAACkgVp0BwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUt
bWVkaWEtcmVzb3VyY2UvcGF1c2UtbW92ZS13aXRoaW4tZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQAD
4IPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALoEa0idsNbJJAEAAG8DAACPABgAAAAAAAEA
AACkgU52BwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2Uv
cGF1c2UtcmVtb3ZlLWZyb20tZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQAD4IPiVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIALoEa0h4aEHkgwAAABoBAACBABgAAAAAAAEAAACkgTt4BwBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGxheWJhY2tSYXRlLXN0
ZGVyci50eHRVVAUAA+CD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADPBGtI0sza54MAAADA
AAAAeAAYAAAAAAABAAAApIF5eQcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ByZWxvYWRfcmVmbGVj
dHNfbm9uZV9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAMGhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA0ARrSLBwliPnAAAATAUAAHMAGAAAAAAAAQAAAKSBrnoHAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5LXN0ZGVyci50eHRVVAUAAweE4lZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADQBGtItRJS6+0AAAAMBgAAegAYAAAAAAABAAAApIFCfAcAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXl0aHJvdWdoLXN0ZGVy
ci50eHRVVAUAAwiE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADRBGtIBZaaBu4AAABmBgAA
dgAYAAAAAAABAAAApIHjfQcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5n
X2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUBQADCYTiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ANEEa0gKuMHN7AAAAKQEAAB6ABgAAAAAAAEAAACkgYF/BwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
cmVhZHlTdGF0ZV9kdXJpbmdfbG9hZGVkbWV0YWRhdGEtc3RkZXJyLnR4dFVUBQADCoTiVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIANIEa0j7aWK88AAAAAwGAABzABgAAAAAAAEAAACkgSGBBwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfcGxheWluZy1zdGRlcnIudHh0
VVQFAAMLhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA0gRrSCLPnTiEAAAAwAAAAGwAGAAA
AAAAAQAAAKSBvoIHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2luaXRpYWwtc3Rk
ZXJyLnR4dFVUBQADDITiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANIEa0gUCE7+0wAAAMIC
AACEABgAAAAAAAEAAACkgeiDBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvc3JjX3JlZmxlY3RzX2F0
dHJpYnV0ZV9ub3Rfc291cmNlX2VsZW1lbnRzLXN0ZGVyci50eHRVVAUAAwyE4lZ1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAD9AGtIAAAAAAAAAAAAAAAAVQAYAAAAAAAAABAA7UF5hQcAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3RyYWNrL1VUBQAD3XziVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AP0Aa0gAAAAAAAAAAAAAAABjABgAAAAAAAAAEADtQQiGBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
dHJhY2svdHJhY2stZWxlbWVudC9VVAUAA9184lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC6
BGtIal/gE8oAAADdAQAAggAYAAAAAAABAAAApIGlhgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3Ry
YWNrL3RyYWNrLWVsZW1lbnQvdHJhY2stYXBpLXRleHR0cmFja3Mtc3RkZXJyLnR4dFVUBQAD4IPi
VnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAP0Aa0gAAAAAAAAAAAAAAABSABgAAAAAAAAAEADt
QSuIBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1lbnQvVVQFAAPefOJWdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAuwRrSBCkYmjeAAAA0AIAAG4AGAAAAAAAAQAAAKSBt4gHAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVk
aW8tZWxlbWVudC9hdWRpb19jb25zdHJ1Y3Rvci1zdGRlcnIudHh0VVQFAAPig+JWdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAugRrSAAAAAAAAAAAAAAAAFMAGAAAAAAAAAAQAO1BPYoHAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC90aGUtY2FudmFzLWVsZW1lbnQvVVQFAAPgg+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
ugRrSLyof/yDAAAAwAAAAHAAGAAAAAAAAQAAAKSByooHAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtY2FudmFzLWVsZW1l
bnQvMmQuY2FudmFzLnJlYWRvbmx5LXN0ZGVyci50eHRVVAUAA+CD4lZ1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAD9AGtIAAAAAAAAAAAAAAAAUgAYAAAAAAAAABAA7UH3iwcAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1l
bWJlZC1lbGVtZW50L1VUBQAD3nziVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAP0Aa0gUxA1y
gwAAABoBAABsABgAAAAAAAEAAACkgYOMBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWVtYmVkLWVsZW1lbnQvZW1iZWQt
ZGltZW5zaW9uLXN0ZGVyci50eHRVVAUAA9584lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAR
AWtIAAAAAAAAAAAAAAAALwAYAAAAAAAAABAA7UGsjQcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9YTUxIdHRwUmVxdWVzdC9VVAUAAwJ94lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADKBGtIiFsDyGAAAABlAAAAUAAYAAAAAAABAAAApIEVjgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9YTUxIdHRwUmVxdWVzdC9zZW5kLXJlZGlyZWN0LWluZmluaXRlLWFjdHVhbC50
eHRVVAUAA/uD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADKBGtIfOQHIdwAAADcAQAATgAY
AAAAAAABAAAApIH/jgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9YTUxIdHRwUmVx
dWVzdC9zZW5kLXJlZGlyZWN0LWluZmluaXRlLWRpZmYudHh0VVQFAAP7g+JWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgACAAAAygRrSJ7Qztk7AAAAOwAAAFIAGAAAAAAAAQAAAKSBY5AHAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvWE1MSHR0cFJlcXVlc3Qvc2VuZC1yZWRpcmVjdC1pbmZp
bml0ZS1leHBlY3RlZC50eHRVVAUAA/uD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADKBGtI
ImPpMNYHAACaGQAAVgAYAAAAAAABAAAApIEqkQcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9YTUxIdHRwUmVxdWVzdC9zZW5kLXJlZGlyZWN0LWluZmluaXRlLXByZXR0eS1kaWZmLmh0
bWxVVAUAA/uD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAOBWtIAAAAAAAAAAAAAAAACgAY
AAAAAAAAABAA7UGQmQcAaW5zcGVjdG9yL1VUBQADfITiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAPwEa0gAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQdSZBwBpbnNwZWN0b3IvY29kZW1pcnJv
ci9VVAUAA1yE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQBWtIGwIRzt5MAAA4XgEANQAY
AAAAAAABAAAApIEjmgcAaW5zcGVjdG9yL2NvZGVtaXJyb3IvcHJldHR5cHJpbnRpbmctY3NzLWNy
YXNoLWxvZy50eHRVVAUAA4CE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADkBGtInZyXS/AD
AABrCwAAMgAYAAAAAAABAAAApIFw5wcAaW5zcGVjdG9yL2NvZGVtaXJyb3IvcHJldHR5cHJpbnRp
bmctY3NzLXN0ZGVyci50eHRVVAUAAyyE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQBWtI
9deSGME8AABGzwAAPAAYAAAAAAABAAAApIHM6wcAaW5zcGVjdG9yL2NvZGVtaXJyb3IvcHJldHR5
cHJpbnRpbmctamF2YXNjcmlwdC1jcmFzaC1sb2cudHh0VVQFAAOAhOJWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA/ARrSI+GlKLwAwAAawsAADkAGAAAAAAAAQAAAKSBAykIAGluc3BlY3Rvci9j
b2RlbWlycm9yL3ByZXR0eXByaW50aW5nLWphdmFzY3JpcHQtc3RkZXJyLnR4dFVUBQADXITiVnV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOQEa0gAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQWYt
CABpbnNwZWN0b3IvY29uc29sZS9VVAUAAyyE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQ
BWtIH7yvuyJSAAB/fgEAMAAYAAAAAAABAAAApIGyLQgAaW5zcGVjdG9yL2NvbnNvbGUvYWRkSW5z
cGVjdGVkTm9kZS1jcmFzaC1sb2cudHh0VVQFAAOAhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA5ARrSFXiPj/yAwAAawsAAC0AGAAAAAAAAQAAAKSBPoAIAGluc3BlY3Rvci9jb25zb2xlL2Fk
ZEluc3BlY3RlZE5vZGUtc3RkZXJyLnR4dFVUBQADLITiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAOMEa0gAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQZeECABpbnNwZWN0b3IvY29udHJvbGxl
ci9VVAUAAyqE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQBWtIYh7udX5DAACLLQEANQAY
AAAAAAABAAAApIHmhAgAaW5zcGVjdG9yL2NvbnRyb2xsZXIvcnVudGltZS1jb250cm9sbGVyLWNy
YXNoLWxvZy50eHRVVAUAA4CE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADjBGtI7PHjN/ID
AABrCwAAMgAYAAAAAAABAAAApIHTyAgAaW5zcGVjdG9yL2NvbnRyb2xsZXIvcnVudGltZS1jb250
cm9sbGVyLXN0ZGVyci50eHRVVAUAAyqE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAGBWtI
AAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UExzQgAaW5zcGVjdG9yL2Nzcy9VVAUAA2yE4lZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAGBWtI43hIWx4EAACrCwAANAAYAAAAAAABAAAApIF5zQgA
aW5zcGVjdG9yL2Nzcy9nZW5lcmF0ZS1jc3MtcnVsZS1zdHJpbmctY3Jhc2gtbG9nLnR4dFVUBQAD
bITiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAYFa0jzsFNy8wMAAGsLAAAxABgAAAAAAAEA
AACkgQXSCABpbnNwZWN0b3IvY3NzL2dlbmVyYXRlLWNzcy1ydWxlLXN0cmluZy1zdGRlcnIudHh0
VVQFAANshOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA5ARrSAAAAAAAAAAAAAAAABMAGAAA
AAAAAAAQAO1BY9YIAGluc3BlY3Rvci9kZWJ1Z2dlci9VVAUAAyyE4lZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADkBGtIoxgng5EAAAD6AAAAOQAYAAAAAAABAAAApIGw1ggAaW5zcGVjdG9yL2Rl
YnVnZ2VyL2JyZWFrLW9uLWV4Y2VwdGlvbi1jYXRjaC1jcmFzaC1sb2cudHh0VVQFAAMshOJWdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA5ARrSMmGNQ3wAwAAawsAADYAGAAAAAAAAQAAAKSBtNcI
AGluc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi1leGNlcHRpb24tY2F0Y2gtc3RkZXJyLnR4dFVU
BQADLITiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAoFa0gAAAAAAAAAAAAAAAAOABgAAAAA
AAAAEADtQRTcCABpbnNwZWN0b3IvZG9tL1VUBQADc4TiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAAoFa0hXbgDcGwQAAKsLAAAoABgAAAAAAAEAAACkgVzcCABpbnNwZWN0b3IvZG9tL2dldE91
dGVySFRNTC1jcmFzaC1sb2cudHh0VVQFAANzhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
CgVrSPytasHvAwAAawsAACUAGAAAAAAAAQAAAKSB2eAIAGluc3BlY3Rvci9kb20vZ2V0T3V0ZXJI
VE1MLXN0ZGVyci50eHRVVAUAA3OE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAIBWtIAAAA
AAAAAAAAAAAADwAYAAAAAAAAABAA7UEn5QgAaW5zcGVjdG9yL2hlYXAvVVQFAANwhOJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgACAVrSPNBNZkdBAAAqwsAAB8AGAAAAAAAAQAAAKSBcOUIAGlu
c3BlY3Rvci9oZWFwL2djLWNyYXNoLWxvZy50eHRVVAUAA3CE4lZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAIBWtI9kiTXvIDAABrCwAAHAAYAAAAAAABAAAApIHm6QgAaW5zcGVjdG9yL2hlYXAv
Z2Mtc3RkZXJyLnR4dFVUBQADcITiVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAsFa0gAAAAA
AAAAAAAAAAAQABgAAAAAAAAAEADtQS7uCABpbnNwZWN0b3IvbW9kZWwvVVQFAAN2hOJWdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgACwVrSJTca40dBAAAqwsAACMAGAAAAAAAAQAAAKSBeO4IAGlu
c3BlY3Rvci9tb2RlbC9jb2xvci1jcmFzaC1sb2cudHh0VVQFAAN2hOJWdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgACwVrSPsXeUzxAwAAawsAACAAGAAAAAAAAQAAAKSB8vIIAGluc3BlY3Rvci9t
b2RlbC9jb2xvci1zdGRlcnIudHh0VVQFAAN2hOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
DgVrSAAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1BPfcIAGluc3BlY3Rvci9uZXR3b3JrL1VUBQAD
e4TiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA4Fa0jWVk1hHQQAAKsLAAAzABgAAAAAAAEA
AACkgYn3CABpbnNwZWN0b3IvbmV0d29yay9jbGllbnQtYmxvY2tlZC1sb2FkLWNyYXNoLWxvZy50
eHRVVAUAA3uE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAOBWtImIGAcPEDAABrCwAAMAAY
AAAAAAABAAAApIET/AgAaW5zcGVjdG9yL25ldHdvcmsvY2xpZW50LWJsb2NrZWQtbG9hZC1zdGRl
cnIudHh0VVQFAAN7hOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA6gRrSAAAAAAAAAAAAAAA
AA8AGAAAAAAAAAAQAO1BbgAJAGluc3BlY3Rvci9wYWdlL1VUBQADN4TiVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIABAFa0jDZ9/VtUgAAJx/AQA2ABgAAAAAAAEAAACkgbcACQBpbnNwZWN0b3Iv
cGFnZS9maWx0ZXItY29va2llcy1mb3ItZG9tYWluLWNyYXNoLWxvZy50eHRVVAUAA4CE4lZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADqBGtIYFk+VvMDAABrCwAAMwAYAAAAAAABAAAApIHcSQkA
aW5zcGVjdG9yL3BhZ2UvZmlsdGVyLWNvb2tpZXMtZm9yLWRvbWFpbi1zdGRlcnIudHh0VVQFAAM3
hOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAADgVrSAAAAAAAAAAAAAAAABIAGAAAAAAAAAAQ
AO1BPE4JAGluc3BlY3Rvci9ydW50aW1lL1VUBQADfITiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAA4Fa0hvSxcQHQQAAKsLAAAlABgAAAAAAAEAAACkgYhOCQBpbnNwZWN0b3IvcnVudGltZS9w
YXJzZS1jcmFzaC1sb2cudHh0VVQFAAN8hOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADgVr
SJ+e0pLyAwAAawsAACIAGAAAAAAAAQAAAKSBBFMJAGluc3BlY3Rvci9ydW50aW1lL3BhcnNlLXN0
ZGVyci50eHRVVAUAA3yE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADkBGtIAAAAAAAAAAAA
AAAAEwAYAAAAAAAAABAA7UFSVwkAaW5zcGVjdG9yL3RpbWVsaW5lL1VUBQADLITiVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAOQEa0ijGCeDkQAAAPoAAABAABgAAAAAAAEAAACkgZ9XCQBpbnNw
ZWN0b3IvdGltZWxpbmUvcmVjb3JkaW5nLXN0YXJ0LXN0b3AtdGltZXN0YW1wcy1jcmFzaC1sb2cu
dHh0VVQFAAMshOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA5ARrSD9j8b3wAwAAawsAAD0A
GAAAAAAAAQAAAKSBqlgJAGluc3BlY3Rvci90aW1lbGluZS9yZWNvcmRpbmctc3RhcnQtc3RvcC10
aW1lc3RhbXBzLXN0ZGVyci50eHRVVAUAAyyE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADk
BGtIAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UERXQkAanF1ZXJ5L1VUBQADLITiVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAOQEa0ijGCeDkQAAAPoAAAAfABgAAAAAAAEAAACkgVJdCQBqcXVl
cnkvYXR0cmlidXRlcy1jcmFzaC1sb2cudHh0VVQFAAMshOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA5ARrSEFrWAVuAwAAjAsAABwAGAAAAAAAAQAAAKSBPF4JAGpxdWVyeS9hdHRyaWJ1dGVz
LXN0ZGVyci50eHRVVAUAAyyE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAbAWtIAAAAAAAA
AAAAAAAAAwAYAAAAAAAAABAA7UEAYgkAanMvVVQFAAMVfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAOwFrSAAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1BPWIJAGpzL2RvbS9VVAUAA1J94lZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADpBGtIl1ZHlrAAAADuAAAANQAYAAAAAAABAAAApIF+
YgkAanMvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLXdpdGgtaGFuZGxlLWV2ZW50LXN0ZGVyci50eHRV
VAUAAzaE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD7BGtIl1ZHlrAAAADuAAAAMAAYAAAA
AAABAAAApIGdYwkAanMvZG9tL2V4Y2VwdGlvbnMtdGhyb3duLWluLWNhbGxiYWNrcy1zdGRlcnIu
dHh0VVQFAANZhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAowFrSAAAAAAAAAAAAAAAAAYA
GAAAAAAAAAAQAO1Bt2QJAG1lZGlhL1VUBQADEn7iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AAIFa0jNVsZz5wAAAJ0CAAAfABgAAAAAAAEAAACkgfdkCQBtZWRpYS9hdWRpby1kYXRhLXVybC1z
dGRlcnIudHh0VVQFAANjhOJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAKwFrSAAAAAAAAAAA
AAAAABMAGAAAAAAAAAAQAO1BN2YJAG1lZGlhL21lZGlhLXNvdXJjZS9VVAUAAzF94lZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAArAWtI8EnGYIsAAACcAAAASAAYAAAAAAABAAAApIGEZgkAbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zdGFsbGVkLWhvbGRzLXNsZWVwLWFzc2VydGlv
bi1zdGRlcnIudHh0VVQFAAMxfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQwFrSHIEsNLA
AAAAJAMAACgAGAAAAAAAAQAAAKSBkWcJAG1lZGlhL3NvdXJjZXMtZmFsbGJhY2stY29kZWNzLXN0
ZGVyci50eHRVVAUAA1594lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABEAWtIWYjE8IgAAACA
AQAAMAAYAAAAAAABAAAApIGzaAkAbWVkaWEvc3ZnLWFzLWltYWdlLXdpdGgtbWVkaWEtYmxvY2tl
ZC1zdGRlcnIudHh0VVQFAANffeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAWwFrSAAAAAAA
AAAAAAAAAAwAGAAAAAAAAAAQAO1BpWkJAG1lZGlhL3RyYWNrL1VUBQADjn3iVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAFsBa0hplNGN8AAAAHcBAAAqABgAAAAAAAEAAACkgetpCQBtZWRpYS90
cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLWFjdHVhbC50eHRVVAUAA4594lZ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABbAWtIcUO/SJsBAAD6AgAAKAAYAAAAAAABAAAApIE/awkAbWVkaWEvdHJh
Y2svdHJhY2staW4tYmFuZC1zdHlsZS1kaWZmLnR4dFVUBQADjn3iVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAFsBa0gM+uTqNgEAADMCAAAsABgAAAAAAAEAAACkgTxtCQBtZWRpYS90cmFjay90
cmFjay1pbi1iYW5kLXN0eWxlLWV4cGVjdGVkLnR4dFVUBQADjn3iVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAFsBa0jefbRo0AgAANUiAAAwABgAAAAAAAEAAACkgdhuCQBtZWRpYS90cmFjay90
cmFjay1pbi1iYW5kLXN0eWxlLXByZXR0eS1kaWZmLmh0bWxVVAUAA4594lZ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABFAWtIz04p0pAAAAC9AAAAIQAYAAAAAAABAAAApIESeAkAbWVkaWEvdW5z
dXBwb3J0ZWQtcnRzcC1zdGRlcnIudHh0VVQFAANhfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAowFrSCokSXy5AAAAkgEAAB8AGAAAAAAAAQAAAKSB/XgJAG1lZGlhL3ZpZGVvLXNyYy1ibG9i
LXN0ZGVyci50eHRVVAUAAxF+4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACjAWtIpJli6YIA
AADAAAAAIQAYAAAAAAABAAAApIEPegkAbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS1zdGRlcnIudHh0
VVQFAAMSfuJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAALgFrSAAAAAAAAAAAAAAAAAgAGAAA
AAAAAAAQAO1B7HoJAHBsdWdpbnMvVVQFAAM3feJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
LgFrSMR55XSuAAAA8QAAAC8AGAAAAAAAAQAAAKSBLnsJAHBsdWdpbnMvbW91c2UtY2xpY2staWZy
YW1lLXRvLXBsdWdpbi1zdGRlcnIudHh0VVQFAAM3feJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAmwRrSGN9Sn9cAgAAlRAAACsAGAAAAAAAAQAAAKSBRXwJAHB5d2Vic29ja2V0LndzLmxvZy0x
MU1hcjIwMTYtMDAzMjM2LWVyci50eHRVVAUAA6aD4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACbBGtIAoTDfAkBAACPAgAAKwAYAAAAAAABAAAApIEGfwkAcHl3ZWJzb2NrZXQud3MubG9nLTEx
TWFyMjAxNi0wMDMyMzYtb3V0LnR4dFVUBQADpoPiVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ABEFa0i+eo+yTicAAMepAAAMABgAAAAAAAEAAACkgXSACQByZXN1bHRzLmh0bWxVVAUAA4GE4lZ1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAsAmtIAAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UEI
qAkAcmV0cmllcy9VVAUAAxN/4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAsAmtIAAAAAAAA
AAAAAAAAEQAYAAAAAAAAABAA7UFKqAkAcmV0cmllcy9pbXBvcnRlZC9VVAUAAxN/4lZ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAAsAmtIAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UGVqAkAcmV0
cmllcy9pbXBvcnRlZC93M2MvVVQFAAMTf+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAALAJr
SAAAAAAAAAAAAAAAACgAGAAAAAAAAAAQAO1B5KgJAHJldHJpZXMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9VVAUAAxN/4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAsAmtIAAAA
AAAAAAAAAAAANwAYAAAAAAAAABAA7UFGqQkAcmV0cmllcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1hNTEh0dHBSZXF1ZXN0L1VUBQADE3/iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIACwCa0iIWwPIYAAAAGUAAABYABgAAAAAAAEAAACkgbepCQByZXRyaWVzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvWE1MSHR0cFJlcXVlc3Qvc2VuZC1yZWRpcmVjdC1pbmZpbml0
ZS1hY3R1YWwudHh0VVQFAAMTf+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALAJrSICRBBHg
AAAA7AEAAFYAGAAAAAAAAQAAAKSBqaoJAHJldHJpZXMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9YTUxIdHRwUmVxdWVzdC9zZW5kLXJlZGlyZWN0LWluZmluaXRlLWRpZmYudHh0VVQF
AAMTf+JWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAALAJrSJ7Qztk7AAAAOwAAAFoAGAAAAAAA
AQAAAKSBGawJAHJldHJpZXMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9YTUxIdHRw
UmVxdWVzdC9zZW5kLXJlZGlyZWN0LWluZmluaXRlLWV4cGVjdGVkLnR4dFVUBQADE3/iVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIACwCa0jPnIz+2gcAAKIZAABeABgAAAAAAAEAAACkgeisCQBy
ZXRyaWVzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvWE1MSHR0cFJlcXVlc3Qvc2Vu
ZC1yZWRpcmVjdC1pbmZpbml0ZS1wcmV0dHktZGlmZi5odG1sVVQFAAMTf+JWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAEQVrSPeKssWeKAYAmWMgAAoAGAAAAAAAAQAAAKSBWrUJAHN0YXRzLmpz
b25VVAUAA4GE4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABjAWtIAAAAAAAAAAAAAAAACAAY
AAAAAAAAABAA7UE83g8Ac3RvcmFnZS9VVAUAA5l94lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AACoAWtIAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UF+3g8Ac3RvcmFnZS9pbmRleGVkZGIvVVQF
AAMbfuJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAeAFrSDfwOpajAAAATwIAACkAGAAAAAAA
AQAAAKSByt4PAHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1zdGRlcnIudHh0VVQFAAPE
feJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAeQFrSNOgrcOvAAAAAQoAACgAGAAAAAAAAQAA
AKSB0N8PAHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50LXN0ZGVyci50eHRVVAUAA8Z94lZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB9AWtIsygaeKQAAAAUAwAALQAYAAAAAAABAAAApIHh
4A8Ac3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS1zdGRlcnIudHh0VVQFAAPNfeJW
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfQFrSLfgyOeZAAAAxQAAAC0AGAAAAAAAAQAAAKSB
7OEPAHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXBvcHVsYXRpb24tc3RkZXJyLnR4dFVUBQADzn3i
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAI8Ba0iZt3XenwAAAIoBAAAtABgAAAAAAAEAAACk
geziDwBzdG9yYWdlL2luZGV4ZWRkYi9sYXp5LWluZGV4LXR5cGVzLXN0ZGVyci50eHRVVAUAA+19
4lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABvAWtIAAAAAAAAAAAAAAAAGQAYAAAAAAAAABAA
7UHy4w8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL1VUBQADsn3iVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAGMBa0i34MjnmQAAAMUAAAAxABgAAAAAAAEAAACkgUXkDwBzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtMS1zdGRlcnIudHh0VVQFAAOZfeJWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAYwFrSJm3dd6fAAAAigEAADEAGAAAAAAAAQAAAKSBSeUPAHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9kZWxldGVpbmRleC0yLXN0ZGVyci50eHRVVAUAA5p94lZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABoAWtIxhf6QNYAAAB6JgAAOgAYAAAAAAABAAAApIFT5g8Ac3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEtc3RkZXJyLnR4dFVU
BQADo33iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGkBa0hYm4GvqwAAALIHAAA7ABgAAAAA
AAEAAACkgZ3nDwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRl
LTEtc3RkZXJyLnR4dFVUBQADpX3iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGoBa0izKBp4
pAAAABQDAAArABgAAAAAAAEAAACkgb3oDwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgt
MS1zdGRlcnIudHh0VVQFAAOofeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAawFrSLqAI1Ou
AAAAPAkAACsAGAAAAAAAAQAAAKSBxukPAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0y
LXN0ZGVyci50eHRVVAUAA6p94lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsAWtIBtVbD6YA
AACeBAAAKwAYAAAAAAABAAAApIHZ6g8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTMt
c3RkZXJyLnR4dFVUBQADq33iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGwBa0i34MjnmQAA
AMUAAAArABgAAAAAAAEAAACkgeTrDwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNC1z
dGRlcnIudHh0VVQFAAOrfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbQFrSJm3dd6fAAAA
igEAADIAGAAAAAAAAQAAAKSB4uwPAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJz
b3ItMS1zdGRlcnIudHh0VVQFAAOtfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbgFrSLfg
yOeZAAAAxQAAADIAGAAAAAAAAQAAAKSB7e0PAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRl
eC1jdXJzb3ItMi1zdGRlcnIudHh0VVQFAAOvfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
bwFrSLMoGnikAAAAFAMAADIAGAAAAAAAAQAAAKSB8u4PAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pbmRleC1jdXJzb3ItMy1zdGRlcnIudHh0VVQFAAOxfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAbwFrSLfgyOeZAAAAxQAAADkAGAAAAAAAAQAAAKSBAvAPAHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pbmRleC1nZXQtY291bnQtYmFzaWMtc3RkZXJyLnR4dFVUBQADsX3iVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAG8Ba0i34MjnmQAAAMUAAAA8ABgAAAAAAAEAAACkgQ7xDwBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWZhaWx1cmVzLXN0ZGVyci50eHRV
VAUAA7J94lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACUAWtI06Ctw68AAAABCgAALgAYAAAA
AAABAAAApIEd8g8Ac3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQtc3RkZXJyLnR4
dFVUBQAD+H3iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJ0Ba0gG1VsPpgAAAJ4EAAAvABgA
AAAAAAEAAACkgTTzDwBzdG9yYWdlL2luZGV4ZWRkYi9vcHRpb25hbC1hcmd1bWVudHMtc3RkZXJy
LnR4dFVUBQADCX7iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKgBa0i6gCNTrgAAADwJAAA0
ABgAAAAAAAEAAACkgUP0DwBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hY3RpdmUtZmxh
Zy1zdGRlcnIudHh0VVQFAAMbfuJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAYgFrSAAAAAAA
AAAAAAAAAA8AGAAAAAAAAAAQAO1BX/UPAHN0b3JhZ2Uvd2Vic3FsL1VUBQADl33iVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAFsBa0iXVkeWsAAAAO4AAAAtABgAAAAAAAEAAACkgaj1DwBzdG9y
YWdlL3dlYnNxbC9hbHRlci10by1pbmZvLXRhYmxlLXN0ZGVyci50eHRVVAUAA4194lZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABbAWtIl1ZHlrAAAADuAAAANQAYAAAAAAABAAAApIG/9g8Ac3Rv
cmFnZS93ZWJzcWwvY2hhbmdlLXZlcnNpb24taGFuZGxlLXJldXNlLXN0ZGVyci50eHRVVAUAA459
4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABbAWtIl1ZHlrAAAADuAAAARgAYAAAAAAABAAAA
pIHe9w8Ac3RvcmFnZS93ZWJzcWwvY2hhbmdlLXZlcnNpb24tbm8tY3Jhc2gtb24tcHJlZmxpZ2h0
LWZhaWx1cmUtc3RkZXJyLnR4dFVUBQADjn3iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFsB
a0hX29HItgAAANwBAAAoABgAAAAAAAEAAACkgQ75DwBzdG9yYWdlL3dlYnNxbC9jaGFuZ2UtdmVy
c2lvbi1zdGRlcnIudHh0VVQFAAOOfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXAFrSJdW
R5awAAAA7gAAADIAGAAAAAAAAQAAAKSBJvoPAHN0b3JhZ2Uvd2Vic3FsL2Nsb3NlLWR1cmluZy1z
dHJlc3MtdGVzdC1zdGRlcnIudHh0VVQFAAOPfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
XAFrSJdWR5awAAAA7gAAADQAGAAAAAAAAQAAAKSBQvsPAHN0b3JhZ2Uvd2Vic3FsL2RhdGFiYXNl
LWxvY2stYWZ0ZXItcmVsb2FkLXN0ZGVyci50eHRVVAUAA4994lZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABcAWtIl1ZHlrAAAADuAAAAKQAYAAAAAAABAAAApIFg/A8Ac3RvcmFnZS93ZWJzcWwv
ZW1wdHktc3RhdGVtZW50LXN0ZGVyci50eHRVVAUAA4994lZ1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABcAWtIl1ZHlrAAAADuAAAAKgAYAAAAAAABAAAApIFz/Q8Ac3RvcmFnZS93ZWJzcWwvZXhl
Y3V0ZS1zcWwtYXJncy1zdGRlcnIudHh0VVQFAAOPfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAXAFrSJdWR5awAAAA7gAAADIAGAAAAAAAAQAAAKSBh/4PAHN0b3JhZ2Uvd2Vic3FsL2V4ZWN1
dGUtc3FsLXJvd3NBZmZlY3RlZC1zdGRlcnIudHh0VVQFAAOPfeJWdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAXAFrSJdWR5awAAAA7gAAAD8AGAAAAAAAAQAAAKSBo/8PAHN0b3JhZ2Uvd2Vic3Fs
L2V4ZWN1dGVzcWwtYWNjZXB0cy1vbmx5LW9uZS1zdGF0ZW1lbnQtc3RkZXJyLnR4dFVUBQADj33i
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAF0Ba0iXVkeWsAAAAO4AAAAuABgAAAAAAAEAAACk
gcwAEABzdG9yYWdlL3dlYnNxbC9oYXNoLWNoYW5nZS13aXRoLXhoci1zdGRlcnIudHh0VVQFAAOR
feJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXQFrSFfb0ci2AAAA3AEAAD8AGAAAAAAAAQAA
AKSB5AEQAHN0b3JhZ2Uvd2Vic3FsL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rp
b24tc3RkZXJyLnR4dFVUBQADkX3iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAF0Ba0iXVkeW
sAAAAO4AAABEABgAAAAAAAEAAACkgRMDEABzdG9yYWdlL3dlYnNxbC9tdWx0aXBsZS10cmFuc2Fj
dGlvbnMtb24tZGlmZmVyZW50LWhhbmRsZXMtc3RkZXJyLnR4dFVUBQADkn3iVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAF0Ba0iXVkeWsAAAAO4AAAAvABgAAAAAAAEAAACkgUEEEABzdG9yYWdl
L3dlYnNxbC9tdWx0aXBsZS10cmFuc2FjdGlvbnMtc3RkZXJyLnR4dFVUBQADkn3iVnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAF0Ba0iXVkeWsAAAAO4AAAAoABgAAAAAAAEAAACkgVoFEABzdG9y
YWdlL3dlYnNxbC9udWxsLWNhbGxiYWNrcy1zdGRlcnIudHh0VVQFAAOSfeJWdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAXQFrSFfb0ci2AAAA3AEAAEgAGAAAAAAAAQAAAKSBbAYQAHN0b3JhZ2Uv
d2Vic3FsL29wZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3Rk
ZXJyLnR4dFVUBQADkn3iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAF0Ba0hX29HItgAAANwB
AAA5ABgAAAAAAAEAAACkgaQHEABzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWNyZWF0aW9u
LWNhbGxiYWNrLXN0ZGVyci50eHRVVAUAA5J94lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABd
AWtIl1ZHlrAAAADuAAAANQAYAAAAAAABAAAApIHNCBAAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRh
YmFzZS1lbXB0eS12ZXJzaW9uLXN0ZGVyci50eHRVVAUAA5J94lZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABdAWtIl1ZHlrAAAADuAAAANAAYAAAAAAABAAAApIHsCRAAc3RvcmFnZS93ZWJzcWwv
b3Blbi1kYXRhYmFzZS1leHBhbmQtcXVvdGEtc3RkZXJyLnR4dFVUBQADkn3iVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAGABa0iXVkeWsAAAAO4AAAA5ABgAAAAAAAEAAACkgQoLEABzdG9yYWdl
L3dlYnNxbC9vcGVuLWRhdGFiYXNlLXNldC1lbXB0eS12ZXJzaW9uLXN0ZGVyci50eHRVVAUAA5N9
4lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABgAWtIBKEByMUAAADiAQAARQAYAAAAAAABAAAA
pIEtDBAAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS13aGlsZS10cmFuc2FjdGlvbi1pbi1w
cm9ncmVzcy1zdGRlcnIudHh0VVQFAAOTfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYAFr
SJdWR5awAAAA7gAAADkAGAAAAAAAAQAAAKSBcQ0QAHN0b3JhZ2Uvd2Vic3FsL3ByaXZhdGUtYnJv
d3Npbmctbm9yZWFkLW5vd3JpdGUtc3RkZXJyLnR4dFVUBQADk33iVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAGABa0iXVkeWsAAAAO4AAABHABgAAAAAAAEAAACkgZQOEABzdG9yYWdlL3dlYnNx
bC9yZWFkLWFuZC13cml0ZS10cmFuc2FjdGlvbnMtZG9udC1ydW4tdG9nZXRoZXItc3RkZXJyLnR4
dFVUBQADk33iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGABa0iXVkeWsAAAAO4AAABAABgA
AAAAAAEAAACkgcUPEABzdG9yYWdlL3dlYnNxbC9yZWFkLXRyYW5zYWN0aW9ucy1ydW5uaW5nLWNv
bmN1cnJlbnRseS1zdGRlcnIudHh0VVQFAAOUfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
YAFrSJdWR5awAAAA7gAAACgAGAAAAAAAAQAAAKSB7xAQAHN0b3JhZ2Uvd2Vic3FsL3NxbC1kYXRh
LXR5cGVzLXN0ZGVyci50eHRVVAUAA5R94lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABgAWtI
V9vRyLYAAADcAQAAQQAYAAAAAAABAAAApIEBEhAAc3RvcmFnZS93ZWJzcWwvc3RhdGVtZW50LWVy
cm9yLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAUAA5R94lZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABgAWtIl1ZHlrAAAADuAAAAMgAYAAAAAAABAAAApIEyExAAc3RvcmFn
ZS93ZWJzcWwvc3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLXN0ZGVyci50eHRVVAUAA5R94lZ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABhAWtIV9vRyLYAAADcAQAAQwAYAAAAAAABAAAApIFOFBAA
c3RvcmFnZS93ZWJzcWwvc3RhdGVtZW50LXN1Y2Nlc3MtY2FsbGJhY2staXNvbGF0ZWQtd29ybGQt
c3RkZXJyLnR4dFVUBQADlX3iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGEBa0iXVkeWsAAA
AO4AAAAqABgAAAAAAAEAAACkgYEVEABzdG9yYWdlL3dlYnNxbC9zdWNjZXNzLWNhbGxiYWNrLXN0
ZGVyci50eHRVVAUAA5V94lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABhAWtIl1ZHlrAAAADu
AAAAQwAYAAAAAAABAAAApIGVFhAAc3RvcmFnZS93ZWJzcWwvc3VjY2Vzcy1jYWxsYmFjay13aGVu
LXBhZ2UtZGVmZXJzLWxvYWRpbmctc3RkZXJyLnR4dFVUBQADlX3iVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAGEBa0iXVkeWsAAAAO4AAAApABgAAAAAAAEAAACkgcIXEABzdG9yYWdlL3dlYnNx
bC90ZXN0LWF1dGhvcml6ZXItc3RkZXJyLnR4dFVUBQADln3iVnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAGEBa0iXVkeWsAAAAO4AAAA+ABgAAAAAAAEAAACkgdUYEABzdG9yYWdlL3dlYnNxbC90
cmFuc2FjdGlvbi1jYWxsYmFjay1leGNlcHRpb24tY3Jhc2gtc3RkZXJyLnR4dFVUBQADln3iVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGEBa0hX29HItgAAANwBAAA9ABgAAAAAAAEAAACkgf0Z
EABzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1zdGRl
cnIudHh0VVQFAAOWfeJWdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYgFrSFfb0ci2AAAA3AEA
AEMAGAAAAAAAAQAAAKSBKhsQAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLWVycm9yLWNhbGxi
YWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAUAA5d94lZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABiAWtIl1ZHlrAAAADuAAAANAAYAAAAAAABAAAApIFdHBAAc3RvcmFnZS93ZWJzcWwv
dHJhbnNhY3Rpb24tZXJyb3ItY2FsbGJhY2stc3RkZXJyLnR4dFVUBQADl33iVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAGIBa0hX29HItgAAANwBAABFABgAAAAAAAEAAACkgXsdEABzdG9yYWdl
L3dlYnNxbC90cmFuc2FjdGlvbi1zdWNjZXNzLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVy
ci50eHRVVAUAA5d94lZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqAWtIAAAAAAAAAAAAAAAA
BAAYAAAAAAAAABAA7UGwHhAAc3ZnL1VUBQADIH7iVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AKoBa0gAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQe4eEABzdmcvY3VzdG9tL1VUBQADIH7iVnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKoBa0itgXbhfgAAAI0AAAAkABgAAAAAAAEAAACkgTMf
EABzdmcvY3VzdG9tL3plcm8tZGFzaGFycmF5LXN0ZGVyci50eHRVVAUAAyB+4lZ1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAB0AWtIAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UEPIBAAc3ZnL3N0
cm9rZS9VVAUAA7x94lZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB0AWtIByGrJX0AAACNAAAA
JQAYAAAAAAABAAAApIFUIBAAc3ZnL3N0cm9rZS96ZXJvLXdpZHRoLWhhbmctc3RkZXJyLnR4dFVU
BQADvH3iVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABAFa0ghP7P7lMwAAOl7FAAZABgAAAAA
AAEAAACkgTAhEAB3cHR3a19wcm9jZXNzX2xvZy5vdXQudHh0VVQFAAOAhOJWdXgLAAEE9QEAAAQU
AAAAUEsFBgAAAACMAYwBhb4AABfuEAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273746</attachid>
            <date>2016-03-11 10:49:05 -0800</date>
            <delta_ts>2016-03-15 20:52:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>129154</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MSBA
QAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMsIFJlZ0V4cFRlc3Qs
IGFuZCBTdHJpbmdSZXBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGVuYWJsZXMgY29uc3RhbnQtZm9sZGluZyBvZiBSZWdFeHBFeGVjLCBS
ZWdFeHBUZXN0LCBhbmQgU3RyaW5nUmVwbGFjZS4KKworICAgICAgICBJdCdzIG5vdyBwb3NzaWJs
ZSB0byBydW4gWWFyciBvbiB0aGUgSklUIHRocmVhZHMuIFNpbmNlIHByZXZpb3VzIHdvcmsgb24g
Y29uc3RhbnQtZm9sZGluZworICAgICAgICBzdHJpbmdzIGdhdmUgdGhlIERGRyBhbiBBUEkgZm9y
IHJlYXNvbmluZyBhYm91dCBKU1N0cmluZyBjb25zdGFudHMgaW4gdGVybXMgb2YKKyAgICAgICAg
SklULXRocmVhZC1sb2NhbCBXVEY6OlN0cmluZ3MsIGl0J3Mgbm93IHN1cGVyIGVhc3kgdG8ganVz
dCBwYXNzIHN0cmluZ3MgdG8gWWFyciBhbmQgYnVpbGQgSVIKKyAgICAgICAgYmFzZWQgb24gdGhl
IHJlc3VsdHMuCisKKyAgICAgICAgQnV0IFJlZ0V4cEV4ZWMgaXMgaGFyZDogdGhlIGZvbGRlZCB2
ZXJzaW9uIHN0aWxsIG11c3QgYWxsb2NhdGUgYSBSZWdFeHBNYXRjaGVzQXJyYXkuIFdlIG11c3QK
KyAgICAgICAgdXNlIHRoZSBzYW1lIFN0cnVjdHVyZSB0aGF0IHRoZSBjb2RlIHdvdWxkIGhhdmUg
dXNlZCBvciBlbHNlIHdlJ2xsIHBvbGx1dGUgdGhlIHByb2dyYW0ncworICAgICAgICBpbmxpbmUg
Y2FjaGVzLiBBbHNvLCBSZWdFeHBNYXRjaGVzQXJyYXkuaHxjcHAgd2lsbCBhbGxvY2F0ZSB0aGUg
YXJyYXkgYW5kIGl0cyBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVzIGluIG9uZSBnbyAtIHdlIGRv
bid0IHdhbnQgdG8gbG9zZSB0aGF0IG9wdGltaXphdGlvbi4gU28sIHRoaXMgcGF0Y2ggZW5hYmxl
cworICAgICAgICBNYXRlcmlhbGl6ZU5ld09iamVjdCB0byBhbGxvY2F0ZSBvYmplY3RzIG9yIGFy
cmF5cyB3aXRoIGFueSBudW1iZXIgb2YgaW5kZXhlZCBvciBuYW1lZAorICAgICAgICBwcm9wZXJ0
aWVzLiBQcmV2aW91c2x5IGl0IGNvdWxkIG9ubHkgaGFuZGxlIG9iamVjdHMgKGJ1dCBub3QgYXJy
YXlzKSBhbmQgbmFlZCBwcm9wZXJ0aWVzCisgICAgICAgIChidXQgbm90IGluZGV4ZWQgb25lcyku
CisKKyAgICAgICAgVGhpcyBhbHNvIGFkZHMgYSBmZXcgbWlub3IgdGhpbmdzIGZvciBzZXR0aW5n
IHRoZSBSZWdFeHBDb25zdHJ1Y3RvciBjYWNoZWQgcmVzdWx0LgorCisgICAgICAgIFRoaXMgaXMg
YWJvdXQgYSAyeCBzcGVlZC11cCBvbiBtaWNyb2JlbmNobWFya3Mgd2hlbiB3ZSBmb2xkIGEgbWF0
Y2ggc3VjY2VzcyBhbmQgYWJvdXQgYQorICAgICAgICA4eCBzcGVlZC11cCB3aGVuIHdlIGZvbGQg
YSBtYXRjaCBmYWlsdXJlLiBJdCdzIGEgMTAlIHNwZWVkLXVwIG9uIE9jdGFuZS9yZWdleHAuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6
aW5zZXJ0U2xvdyk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjpleGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SW5z
ZXJ0aW9uU2V0OjppbnNlcnRDaGVjayk6CisgICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpMYXp5SlNWYWx1ZTo6dHJ5R2V0U3RyaW5nKToKKyAgICAg
ICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWF5RXhpdCk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdGFja0FjY2Vzc0Rh
dGE6OmZsdXNoZWRBdCk6CisgICAgICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YTo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFs
dWU6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE6Om9uZVdheVNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRGRzo6T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oOgorICAgICAg
ICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpQaGFudG9tUHJvcGVydHlWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbVByb3BlcnR5VmFsdWU6Om9wZXJh
dG9yPT0pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdPcEluZm8uaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkpOiBE
ZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVDb21tdXRhdGl2
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpleGVjdXRl
SW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRh
dGU6OnZhbGlkYXRlQ1BTKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAg
ICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6
ZUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmRpZE92ZXJmbG93U3RhY2spOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzdG9yYWdlRm9yVHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmluaXRpYWxpemVBcnJheUVs
ZW1lbnRzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpp
c05vdENlbGxPck1pc2MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1
bmJveERvdWJsZSk6CisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpG
VEw6Om9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkpOiBEZWxldGVkLgorICAgICAgICAq
IGZ0bC9GVExPcGVyYXRpb25zLmg6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlsaXRpZXMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdCk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmpl
Y3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlND
OjpSZWdFeHA6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Om1hdGNoKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlJlZ0V4
cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZGVsZXRlQ29kZSk6
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENh
Y2hlZFJlc3VsdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9m
TGFzdFJlZ0V4cCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZM
YXN0SW5wdXQpOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZpZWQp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KToKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpoYXNDb2RlRm9yKToK
KyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlND
OjpSZWdFeHA6Om1hdGNoSW5saW5lKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpoYXNNYXRjaE9u
bHlDb2RlRm9yKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlNYXRj
aE9ubHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpSZWdFeHBPYmplY3Q6OmV4ZWNJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2Vz
U2xvdyk6CisgICAgICAgIChKU0M6OnN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlc0lubGluZSk6Cisg
ICAgICAgIChKU0M6OnN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OlN0
cmluZ1JhbmdlOjpTdHJpbmdSYW5nZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3Np
bXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanM6IEFk
ZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4
cC10ZXN0LWZvbGRpbmctZmFpbC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qczogQWRkZWQuCisgICAg
ICAgIChmb28pOgorICAgICAgICAqIHlhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwOgorICAgICAg
ICAqIHlhcnIvWWFyci5oOgorICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmludGVycHJldCk6CisgICAgICAgIChKU0M6
OllhcnI6OkJ5dGVDb21waWxlcjo6Qnl0ZUNvbXBpbGVyKToKKyAgICAgICAgKEpTQzo6WWFycjo6
Qnl0ZUNvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVy
OjpjaGVja0lucHV0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Ynl0ZUNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpZYXJyOjppbnRlcnByZXQpOgorICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVy
Lmg6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVjb2RlUGF0dGVybjo6Qnl0ZWNvZGVQYXR0ZXJu
KToKKwogMjAxNi0wMy0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBBZGQgcmVnaXN0ZXIgcmV1c2UgZm9yIEFyaXRoQWRkIG9mIGFuIElu
dDMyIGFuZCBjb25zdGFudCBpbiBERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4
OCw3IEBACiAJCTBGN0MxMUFEMUJDMzg2MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMxQkMzODYy
QzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
N0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJCTBGN0Mz
OUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1MDA0ODAx
NTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBDNTVCMDA0
ODAxNTEgLyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi87IH07
CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMwMEEwQkE0
NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87
IH07CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVC
NTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2NDEsNyBA
QAogCQkwRjdDMTFBQzFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhw
T2JqZWN0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBP
YmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0MzOUZFMUM5
MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHT3BJbmZvLmg7IHBhdGggPSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjQ1LDYgKzYyNDcsNyBAQAogCQkJCTBGMkI5
Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggKi8s
CiAJCQkJODZFQzlEQkYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwICovLAog
CQkJCTg2RUM5REMwMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8sCisJCQkJ
MEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovLAogCQkJCUE3RDg5Q0VF
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCAq
LywKIAkJCQlBN0Q4OUNFRjE3QTBCOENDMDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5h
bHlzaXNQaGFzZS5oICovLAogCQkJCTBGRDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JF
bnRyeS5jcHAgKi8sCkBAIC03NDQ1LDYgKzc0NDgsNyBAQAogCQkJCTBGNjRFQUYzMUM0RUNEMDYw
MDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5
RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9v
YmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkw
RjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBl
X2NvbnZlcnNpb25zX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNE
NTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1Miw2ICsxOTUy
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2Fz
ZSBHZXRGcm9tQXJndW1lbnRzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjMsNiArOTIzLDEwIEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgd3JpdGUoUmVn
RXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oUmVnRXhwT2Jq
ZWN0TGFzdEluZGV4TG9jLCBSZWdFeHBPYmplY3RfbGFzdEluZGV4LCBub2RlLT5jaGlsZDEoKSks
IExhenlOb2RlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpOwogICAgICAgICByZXR1cm47CisKKyAg
ICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKKyAgICAgICAgd3JpdGUoUmVnRXhwU3Rh
dGUpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50
czogewogICAgICAgICBBYnN0cmFjdEhlYXAgaGVhcChEaXJlY3RBcmd1bWVudHNQcm9wZXJ0aWVz
LCBub2RlLT5jYXB0dXJlZEFyZ3VtZW50c09mZnNldCgpLm9mZnNldCgpKTsKQEAgLTEwODYsNyAr
MTA5MCw5IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAg
ICAgICAgICYmIG5vZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAg
ICAgICAgIHJlYWQoUmVnRXhwU3RhdGUpOworICAgICAgICAgICAgcmVhZChSZWdFeHBPYmplY3Rf
bGFzdEluZGV4KTsKICAgICAgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAg
IHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIHJlYWQoV29ybGQpOwpAQCAtMTA5OCw3ICsxMTA0LDkgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICAgICAgJiYgbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9k
ZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChS
ZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwog
ICAgICAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhw
T2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgcmVhZChXb3JsZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNh
c2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFz
dEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgIGNhc2UgR2V0
R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgIGNhc2Ug
UHV0R2xvYmFsVmFyaWFibGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDAsNiArMTMwMCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgICAgICBjYXNlIEdl
dFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0
SW5kZXg6CisgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICAg
ICAgLy8gVGhlc2UgYXJlIGp1c3Qgbm9kZXMgdGhhdCB3ZSBkb24ndCBjdXJyZW50bHkgZXhwZWN0
IHRvIHNlZSBkdXJpbmcgZml4dXAuCiAgICAgICAgICAgICAvLyBJZiB3ZSBldmVyIHdhbnRlZCB0
byBpbnNlcnQgdGhlbSBwcmlvciB0byBmaXh1cCwgdGhlbiB3ZSBqdXN0IGhhdmUgdG8gY3JlYXRl
CiAgICAgICAgICAgICAvLyBmaXh1cCBydWxlcyBmb3IgdGhlbS4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1LDYgKzMx
NSw4IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAg
ICAgIG91dC5wcmludChhbm90aGVyQ29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KGZyZWV6ZSht
X2NvZGVCbG9jay0+Y29uc3RhbnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKVtpXSksIGNv
bnRleHQpKTsKICAgICAgICAgb3V0LnByaW50KCJdIik7CiAgICAgfQorICAgIGlmIChub2RlLT5o
YXNMYXp5SlNWYWx1ZSgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5vZGUtPmxhenlKU1Zh
bHVlKCkpOwogICAgIGlmIChub2RlLT5oYXNJbmRleGluZ1R5cGUoKSkKICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCBJbmRleGluZ1R5cGVEdW1wKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAg
aWYgKG5vZGUtPmhhc1R5cGVkQXJyYXlUeXBlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDkgKzQ1LDkgQEAgdm9pZCBJbnNlcnRpb25TZXQ6Omluc2VydFNsb3coY29uc3QgSW5z
ZQogICAgIG1faW5zZXJ0aW9ucy5pbnNlcnQoMCwgaW5zZXJ0aW9uKTsKIH0KIAotdm9pZCBJbnNl
cnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCitzaXplX3QgSW5zZXJ0aW9uU2V0
OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQogewotICAgIGV4ZWN1dGVJbnNlcnRpb25zKCpi
bG9jaywgbV9pbnNlcnRpb25zKTsKKyAgICByZXR1cm4gZXhlY3V0ZUluc2VydGlvbnMoKmJsb2Nr
LCBtX2luc2VydGlvbnMpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDE5
Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICAKLSAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2sp
OworICAgIHNpemVfdCBleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGluc2VydFNsb3coY29uc3QgSW5zZXJ0aW9uJik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNiw4ICsxMTYsMTAgQEAgU3RyaW5nIExhenlKU1ZhbHVlOjp0cnlHZXRTdHJpbmco
R3JhcGgmIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGlmIChjb25zdCBTdHJpbmdJbXBsKiBzdHJp
bmcgPSB0cnlHZXRTdHJpbmdJbXBsKCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGdpbm9ybW91
c1N0cmluZ0xlbmd0aCA9IDEwMDAwOwotICAgICAgICAgICAgaWYgKHN0cmluZy0+bGVuZ3RoKCkg
PiBnaW5vcm1vdXNTdHJpbmdMZW5ndGgpCisgICAgICAgICAgICBpZiAoc3RyaW5nLT5sZW5ndGgo
KSA+IGdpbm9ybW91c1N0cmluZ0xlbmd0aCkgeworICAgICAgICAgICAgICAgIGRhdGFMb2coIkdp
dmluZyB1cCBiZWNhdXNlIG9mIHNpemUgbGltaXQuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGF1
dG8gcmVzdWx0ID0gZ3JhcGgubV9jb3BpZWRTdHJpbmdzLmFkZChzdHJpbmcsIFN0cmluZygpKTsK
ICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYg
KzEzMSw3IEBAIEV4aXRNb2RlIG1heUV4aXQoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2QKICAgICBj
YXNlIFN0b3JlQmFycmllcjoKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgIGNhc2UgUHV0Q2xv
c3VyZVZhcjoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFN0ckNhdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkRGR05vZGVP
cmlnaW4uaCIKICNpbmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdE1h
dGVyaWFsaXphdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKICNpbmNsdWRlICJE
RkdUcmFuc2l0aW9uLmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRGR1Zh
cmlhYmxlQWNjZXNzRGF0YS5oIgpAQCAtMjE5LDIwICsyMjAsNiBAQCBzdHJ1Y3QgU3RhY2tBY2Nl
c3NEYXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hlZEF0KGZv
cm1hdCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAotLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFzc2lu
ZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKLS8vIGRpc3Rpbmd1
aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVC
bG9jayBkYXRhIHN0cnVjdHVyZSAtIAotLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9y
IGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KLXN0cnVjdCBPcEluZm8gewotICAgIE9wSW5mbygp
IDogbV92YWx1ZSgwKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBt
X3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICBleHBsaWNpdCBP
cEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZh
bHVlKSkgeyB9Ci0jaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQotICAgIGV4cGxpY2l0
IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZh
bHVlKSkgeyB9Ci0jZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92
YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICB1aW50cHRy
X3QgbV92YWx1ZTsKLX07Ci0KIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50
cyBhIHNpbmdsZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjI0LDYgKzIyNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhWYXJJbmplY3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
R2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTZXRS
ZWdFeHBPYmplY3RMYXN0SW5kZXgsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhSZWNv
cmRSZWdFeHBDYWNoZWRSZXN1bHQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykg
XAogICAgIG1hY3JvKENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENo
ZWNrTm90RW1wdHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0JhZENlbGws
IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2
aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3NCw3ICsxOTc0LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6IHsK
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9PSBhbGxvY2F0aW9u
LmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFw
cGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRlc2NyaXB0b3IoKSk7
CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShibG9jaywgbG9jYXRp
b24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyh2
YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4u
YXBwZW5kKG1fYm90dG9tKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwotICAgICAg
ICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRvbVByb3BlcnR5VmFs
dWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0
aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAgICAgICAgICAgICBO
b2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2JvdHRvbSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDMyICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
LXZvaWQgUGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
LXsKLSAgICBvdXQucHJpbnQoImlkIiwgbV9pZGVudGlmaWVyTnVtYmVyKTsKLX0KLQogdm9pZCBP
YmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7
CiAgICAgb3V0LnByaW50KCJbIiwgbGlzdER1bXAobV9wcm9wZXJ0aWVzKSwgIl0iKTsKIH0KIAot
ZmxvYXQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6b25lV2F5U2ltaWxhcml0eVNjb3JlKAot
ICAgIGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBjb25zdAotewotICAg
IHVuc2lnbmVkIG51bUhpdHMgPSAwOwotICAgIGZvciAoUGhhbnRvbVByb3BlcnR5VmFsdWUgdmFs
dWUgOiBtX3Byb3BlcnRpZXMpIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcHJvcGVydGllcy5jb250
YWlucyh2YWx1ZSkpCi0gICAgICAgICAgICBudW1IaXRzKys7Ci0gICAgfQotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxmbG9hdD4obnVtSGl0cykgLyBzdGF0aWNfY2FzdDxmbG9hdD4obV9wcm9wZXJ0
aWVzLnNpemUoKSk7Ci19Ci0KLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OnNpbWls
YXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikgY29uc3QK
LXsKLSAgICByZXR1cm4gc3RkOjptaW4ob25lV2F5U2ltaWxhcml0eVNjb3JlKG90aGVyKSwgb3Ro
ZXIub25lV2F5U2ltaWxhcml0eVNjb3JlKCp0aGlzKSk7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1Byb21vdGVkSGVhcExvY2F0aW9u
LmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTM1LDM4ICszNiwxMSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0cnVjdCBQaGFudG9tUHJvcGVydHlWYWx1ZSB7
Ci0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUoKQotICAgICAgICA6IG1faWRlbnRpZmllck51bWJl
cihVSU5UX01BWCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVl
KHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVyTnVtYmVy
KGlkZW50aWZpZXJOdW1iZXIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBtX2lk
ZW50aWZpZXJOdW1iZXI7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBoYW50b21Q
cm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50
aWZpZXJOdW1iZXIgPT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAgIH0KLSAgICAKLSAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLX07Ci0KIHN0cnVjdCBPYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhIHsKICAgICAvLyBEZXRlcm1pbmVzIHRoZSBtZWFuaW5nIG9mIHRoZSBw
YXNzZWQgbm9kZXMuCi0gICAgVmVjdG9yPFBoYW50b21Qcm9wZXJ0eVZhbHVlPiBtX3Byb3BlcnRp
ZXM7CisgICAgVmVjdG9yPFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yPiBtX3Byb3BlcnRpZXM7
CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0gICAgLy8g
VGhlIGZyYWN0aW9uIG9mIG15IHByb3BlcnRpZXMgdGhhdCB0aGUgb3RoZXIgZGF0YSBoYXMuCi0g
ICAgZmxvYXQgb25lV2F5U2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEmKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgbWluaW11bSBvZiB0aGUgdHdvIHBvc3Np
YmxlIG9uZS13YXkgc2NvcmVzLgotICAgIGZsb2F0IHNpbWlsYXJpdHlTY29yZShjb25zdCBPYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhJikgY29uc3Q7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBERkdPcEluZm9faAorI2RlZmluZSBERkdPcEluZm9faAorCisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFz
c2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKKy8vIGRpc3Rp
bmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENv
ZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAorLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQs
IG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KK3N0cnVjdCBPcEluZm8geworICAgIE9wSW5m
bygpIDogbV92YWx1ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkg
OiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAgICBleHBsaWNp
dCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KHZhbHVlKSkgeyB9CisjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQorICAgIGV4cGxp
Y2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KHZhbHVlKSkgeyB9CisjZW5kaWYKKyAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDog
bV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAgICB1aW50
cHRyX3QgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT3BJbmZvX2gKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc5
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDAxLDYgKzE0MDEsNjAgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVmYXVsdEhhcwogICAgIHJldHVybiAwOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld1Jhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIEJ1dHRlcmZseSog
YnV0dGVyZmx5OworICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgaGFz
SW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKKyAgICAgICAg
SW5kZXhpbmdIZWFkZXIgaGVhZGVyOworICAgICAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxl
bmd0aCk7CisgICAgICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7CisgICAgICAgIAorICAg
ICAgICBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgICAgIHZtLCBudWxs
cHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksCisgICAgICAgICAgICBoYXNJ
bmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgaGVhZGVyLAorICAg
ICAgICAgICAgbGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgfSBlbHNlCisg
ICAgICAgIGJ1dHRlcmZseSA9IG51bGxwdHI7CisKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNP
YmplY3Q6OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAg
cmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0
by1zcGFjZS4KKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihyZXN1bHQpOworfQorCitK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAg
IAorICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAg
IHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJ
bmRleGluZ0hlYWRlcigpLCAwKTsKKyAgICAKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmpl
Y3Q6OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVz
dWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1z
cGFjZS4KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxl
bmd0aChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAg
aGVhZGVyLnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAgIGhlYWRlci5zZXRQdWJsaWNMZW5n
dGgoMCk7CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAg
ICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1
ZSwgaGVhZGVyLAorICAgICAgICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogbGVuZ3RoKTsKKwor
ICAgIC8vIFBhcmFkb3hpY2FsbHkgdGhpcyBtYXkgYWxsb2NhdGUgYSBKU0FycmF5LiBUaGF0J3Mg
dG90YWxseSBjb29sLgorICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3
T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZs
eSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlw
ZVByb2ZpbGVyTG9nREZHKEV4ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBl
UHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwg
Y2FsbGVkIGZyb20gaW5zaWRlIERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcs
MTAgQEAgaW50NjRfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnREbwogCiBzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiwgSlND
ZWxsKiB2YWx1ZSwgSlNDZWxsKiBwcm90byk7CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3UmF3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVy
Zmx5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVy
QW5kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCkg
V1RGX0lOVEVSTkFMOworCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQ
cm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJB
VElPTiBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZv
aWQqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjgsNiArNjY4LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgY2FzZSBHZXRSZWdFeHBP
YmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4Ogor
ICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgY2FzZSBMYXp5
SlNDb25zdGFudDogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2
aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAgICAgICAv
LyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsNiArNzQs
MTAgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFBybwogICAgIGNhc2Ug
TmFtZWRQcm9wZXJ0eVBMb2M6CiAgICAgICAgIG91dC5wcmludCgiTmFtZWRQcm9wZXJ0eVBMb2Mi
KTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJbmRleGVkUHJvcGVydHlQTG9jOgorICAg
ICAgICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eVBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKICAgICBjYXNlIEFyZ3VtZW50UExvYzoKICAgICAgICAgb3V0LnByaW50KCJBcmd1
bWVudFBMb2MiKTsKQEAgLTEwMiw2ICsxMDYsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIFBybwogICAgIGNhc2UgQ2xvc3VyZVZhclBMb2M6CiAgICAgICAgIG91dC5w
cmludCgiQ2xvc3VyZVZhclBMb2MiKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBQdWJs
aWNMZW5ndGhQTG9jOgorICAgICAgICBvdXQucHJpbnQoIlB1YmxpY0xlbmd0aFBMb2MiKTsKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICBvdXQu
cHJpbnQoIlZlY3Rvckxlbmd0aFBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAkocmV2aXNpb24g
MTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDI1ICsyOCw0MSBAQAogCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKLSNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiREZHRWRnZS5oIgor
I2luY2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaFRhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAorc3RydWN0IE5vZGU7CisKKy8vIFByb21v
dGVkIGxvY2F0aW9ucyBhcmUgbGlrZSBoZWFwIGxvY2F0aW9ucyBidXQgYXJlIG1lYW50IHRvIGJl
IG1vcmUgcHJlY2lzZS4gQSBoZWFwIGxvY2F0aW9uIGlzCisvLyBhcHBsaWNhYmxlIHRvIENTRSBz
Y2VuYXJpb3MsIHdoZXJlIGl0IG1ha2VzIHNlbnNlIHRvIHNwZWFrIG9mIGEgbG9jYXRpb24gdmVy
eSBhYnN0cmFjdGx5LiBBCisvLyBwcm9tb3RlZCBoZWFwIGxvY2F0aW9uIGlzIGZvciBjYXNlcyB3
aGVyZSB3ZSBzcGVhayBvZiBhIHNwZWNpZmljIG9iamVjdCBhbmQgdGhlIGNvbXBpbGVyIGtub3dz
CisvLyB0aGlzIG9iamVjdCdzIGlkZW50aXR5IC0gZm9yIGV4YW1wbGUsIHRoZSBvYmplY3QgYWxs
b2NhdGlvbiBoYXMgYmVlbiBlbGltaW5hdGVkIGFuZCB3ZSB0dXJuZWQgdGhlCisvLyBmaWVsZHMg
aW50byBsb2NhbCB2YXJpYWJsZXMuIEJlY2F1c2UgdGhlc2UgdHdvIGNhc2VzIGhhdmUgc3VidGx5
IGRpZmZlcmVudCBuZWVkcywgd2UgdXNlIHN1YnRseQorLy8gZGlmZmVyZW50IHN0cnVjdHVyZXMu
IE9uZSBvZiB0aGUgcmVhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2VzIGlzIHRoYXQgcHJvbW90
ZWQgbG9jYXRpb25zIGNhbiBiZQorLy8gc3Bva2VuIG9mIHVzaW5nIGVpdGhlciBhIGRlc2NyaXB0
b3Igd2hpY2ggZG9lcyBub3QgcmVmZXIgdG8gYW55IE5vZGUqJ3Mgb3Igd2l0aCBhIGhlYXAgbG9j
YXRpb24sCisvLyB3aGljaCBpcyBhIGRlc2NyaXB0b3Igd2l0aCBhIE5vZGUqIGJhc2UuCisKIGVu
dW0gUHJvbW90ZWRMb2NhdGlvbktpbmQgewogICAgIEludmFsaWRQcm9tb3RlZExvY2F0aW9uS2lu
ZCwKICAgICAKLSAgICBTdHJ1Y3R1cmVQTG9jLAorICAgIEFjdGl2YXRpb25TY29wZVBMb2MsCiAg
ICAgQWN0aXZhdGlvblN5bWJvbFRhYmxlUExvYywKLSAgICBOYW1lZFByb3BlcnR5UExvYywKLSAg
ICBBcmd1bWVudFBMb2MsCiAgICAgQXJndW1lbnRDb3VudFBMb2MsCisgICAgQXJndW1lbnRQTG9j
LAogICAgIEFyZ3VtZW50c0NhbGxlZVBMb2MsCi0KLSAgICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LAorICAgIENsb3N1cmVWYXJQTG9jLAogICAgIEZ1bmN0aW9uQWN0aXZhdGlvblBMb2MsCi0gICAg
QWN0aXZhdGlvblNjb3BlUExvYywKLSAgICBDbG9zdXJlVmFyUExvYworICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZVBMb2MsCisgICAgSW5kZXhlZFByb3BlcnR5UExvYywKKyAgICBOYW1lZFByb3BlcnR5
UExvYywKKyAgICBQdWJsaWNMZW5ndGhQTG9jLAorICAgIFN0cnVjdHVyZVBMb2MsCisgICAgVmVj
dG9yTGVuZ3RoUExvYwogfTsKIAogY2xhc3MgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJl
dmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICBj
YXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExh
c3RJbmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBjYXNlIEJvdHRvbVZhbHVlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lv
biAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQ3LDYgKzMwNDcsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgICAgIAorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNv
bXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUt
PmFycmF5TW9kZSgpLmlzSlNBcnJheSgpKTsKICAgICAgICAgCkBAIC0zNDkyLDcgKzM0OTcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5
KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAg
ICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VH
UFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IC8vIEF0IHRoaXMgcG9pbnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9y
YWdlR1BSIGhhdmUgcG9pbnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0
aGUgQnV0dGVyZmx5LCByZXNwZWN0aXZlbHkuCkBAIC0zNzI4LDcgKzM3MzMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBz
dG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQ
UiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24oaW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAg
ICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgc3Rv
cmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKG5vZGUtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkgewogICAg
ICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRC
dWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQ5NzgsNyArNDk4MywxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIAorICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTUwMDUsNyArNTAx
Myw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlSW1tZWRpYXRlOgotICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAg
ICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRTdGFjazoK
ICAgICBjYXNlIEtpbGxTdGFjazoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzE3MSw2ICszMTcxLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgY29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleChub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1
bHQ6IHsKKyAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5UHVzaDogewogICAg
ICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNKU0FycmF5KCkpOwpAQCAtMzU0Miw3ICsz
NTQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRl
SlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOwor
ICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBz
dG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBh
bmQgc3RvcmFnZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJh
eSBhbmQgdGhlIEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzc3OCw3ICszNzgzLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdl
R1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShy
ZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAg
ICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlw
ZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgaW5kZXhpbmdUeXBl
ICYgSXNBcnJheSk7CiAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2Nr
KCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTcxLDYgKzQ5
NzYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAg
ICBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAj
aWYgRU5BQkxFKEZUTF9KSVQpICAgICAgICAKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOiB7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hBZGQzMigK
QEAgLTUwNjEsNyArNTA3MCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIFB1dEhpbnQ6CiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKLSAgICBjYXNlIE1hdGVyaWFsaXplTmV3
T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2Ug
UHV0U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVy
LmgiCisjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1
bWVudHMuaCIKICNpbmNsdWRlICJTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJXcml0ZUJhcnJpZXJCdWZmZXIuaCIKQEAgLTc3LDI3ICs3OCw1NCBAQCBTcGVjdWxhdGl2ZUpJ
VDo6flNwZWN1bGF0aXZlSklUKCkKIHsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFs
bG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BS
UmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IHZlY3Rvckxlbmd0aCkKIHsKLSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhh
c0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNDb250aWd1b3VzKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0g
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0g
aGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKTsKKworICAgIHVuc2lnbmVkIGlubGlu
ZUNhcGFjaXR5ID0gc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpOworICAgIHVuc2lnbmVkIG91
dE9mTGluZUNhcGFjaXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIAog
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
Mih0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgR1BS
UmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgdmVj
dG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBudW1FbGVtZW50cyk7CisKKyAg
ICBBU1NFUlQodmVjdG9yTGVuZ3RoID49IG51bUVsZW1lbnRzKTsKKyAgICB2ZWN0b3JMZW5ndGgg
PSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIHZlY3Rvckxlbmd0aCk7CiAgICAgCiAgICAgSklU
Q29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICAKLSAgICBzbG93Q2FzZXMuYXBwZW5k
KAotICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3RlZEltbTMyKHZlY3Rvckxl
bmd0aCAqIHNpemVvZihKU1ZhbHVlKSArIHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBzdG9yYWdl
R1BSKSk7Ci0gICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXpl
b2YoSlNWYWx1ZSkpLCBzdG9yYWdlR1BSKTsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0Fy
cmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2Ny
YXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7Ci0gICAgCi0gICAgbV9qaXQuc3RvcmUz
MihUcnVzdGVkSW1tMzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9y
YWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKLSAgICBtX2ppdC5z
dG9yZTMyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGgpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKLSAgICAK
KworICAgIHNpemVfdCBzaXplID0gMDsKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAg
ICAgIHNpemUgKz0gdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpICsgc2l6ZW9mKEluZGV4
aW5nSGVhZGVyKTsKKyAgICBzaXplICs9IG91dE9mTGluZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFs
dWUpOworCisgICAgaWYgKHNpemUpIHsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCgKKyAgICAg
ICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShUcnVzdGVkSW1tMzIoc2l6ZSksIHN0b3Jh
Z2VHUFIpKTsKKyAgICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAgICAgICAgbV9q
aXQuc3ViUHRyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkpLCBz
dG9yYWdlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0
ZWRJbW0zMihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZUdQUik7CisgICAgfSBlbHNl
CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cigwKSwgc3RvcmFnZUdQUik7CisKKyAg
ICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShp
bmxpbmVDYXBhY2l0eSk7CisgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JQdHIgPSAmbV9q
aXQudm0oKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihhbGxvY2F0
aW9uU2l6ZSk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGFsbG9jYXRvclB0ciksIHNj
cmF0Y2hHUFIpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgc2NyYXRjaEdQ
UiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoMkdQUiwgc2xv
d0Nhc2VzKTsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgbV9qaXQuc3Rv
cmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CisKKyAgICAv
LyBJIHdhbnQgYSBzbG93IHBhdGggdGhhdCBhbHNvIGxvYWRzIG91dCB0aGUgc3RvcmFnZSBwb2lu
dGVyLCBhbmQgdGhhdCdzCisgICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0
b3JTbG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAorICAgIC8vIG9mIHdvcmsg
Zm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8KKyAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRo
R2VuZXJhdG9yPigKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdSYXdPYmpl
Y3QsIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwKKyAgICAgICAgc3RydWN0dXJlLCB2ZWN0b3JMZW5n
dGgpKTsKKwogICAgIGlmIChoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgJiYg
bnVtRWxlbWVudHMgPCB2ZWN0b3JMZW5ndGgpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLCBz
Y3JhdGNoR1BSKTsKQEAgLTExMywxMiArMTQxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEFsbG9jYXRlSlNBcnJheQogI2VuZGlmCiAgICAgfQogICAgIAotICAgIC8vIEkgd2FudCBhIHNs
b3cgcGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0aGF0
J3MKLSAgICAvLyB3aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90Ci0gICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5IHNt
YWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkuIDotLwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAot
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3Vs
dEdQUiwgc3RvcmFnZUdQUiwKLSAgICAgICAgc3RydWN0dXJlLCBudW1FbGVtZW50cykpOworICAg
IGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1t
MzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVn
IGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcykKQEAgLTc2NTUsNiArNzY3OSwxMjUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YQogICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRl
cmlhbGl6ZU5ld09iamVjdChOb2RlKiBub2RlKQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gbm9kZS0+c3RydWN0dXJlU2V0KClbMF07CisgICAgQVNTRVJUKG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSA9PSBz
dHJ1Y3R1cmUpOworCisgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUt
Pm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgCisgICAgSW5kZXhpbmdUeXBl
IGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBoYXNJ
bmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CisgICAg
aW50MzJfdCBwdWJsaWNMZW5ndGggPSAwOworICAgIGludDMyX3QgdmVjdG9yTGVuZ3RoID0gMDsK
KworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIEVkZ2UgZWRn
ZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpOworICAgICAgICAgICAg
c3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2Ug
UHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSBlZGdlLT5h
c0ludDMyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlY3Rv
ckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gZWRnZS0+YXNJbnQz
MigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhp
cyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc3Rv
cmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgCisgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0
KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCAwLCB2ZWN0b3JMZW5ndGgpOworICAg
IAorICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIo
cHVibGljTGVuZ3RoKSwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgRWRnZSBlZGdl
ID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgIFByb21v
dGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsK
KyAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICBjYXNlIEluZGV4
ZWRQcm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IGVkZ2UpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2
YWx1ZS5qc1ZhbHVlUmVncygpLAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KHN0b3JhZ2VHUFIsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBkZXNjcmlwdG9yLmluZm8oKSkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIE5hbWVkUHJv
cGVydHlQTG9jOiB7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiB1aWQgPSBtX2ppdC5ncmFwaCgp
LmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCldOworICAgICAgICAgICAgZm9yIChQcm9w
ZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVzQ29uY3VycmVudGx5
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodWlkICE9IGVudHJ5LmtleSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBlZGdlKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGlzSW5saW5l
T2Zmc2V0KGVudHJ5Lm9mZnNldCkgPyByZXN1bHRHUFIgOiBzdG9yYWdlR1BSOworICAgICAgICAg
ICAgICAgIG1faml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFs
dWVSZWdzKCksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VH
UFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGVudHJ5Lm9mZnNldCkpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgY2VsbFJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqIG5vZGUpCit7CisgICAgRWRnZSBjb25zdHJ1
Y3RvckVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAgIEVkZ2Ug
cmVnRXhwRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgRWRn
ZSBzdHJpbmdFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsKKyAgICBF
ZGdlIHN0YXJ0RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMyk7CisgICAg
RWRnZSBlbmRFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCA0KTsKKworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIGNvbnN0cnVjdG9yRWRnZSk7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmVnRXhwKHRoaXMsIHJlZ0V4cEVkZ2UpOworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0aGlzLCBzdHJpbmdFZGdlKTsKKyAgICBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQgc3RhcnQodGhpcywgc3RhcnRFZGdlKTsKKyAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgZW5kKHRoaXMsIGVuZEVkZ2UpOworCisgICAgR1BSUmVnIGNvbnN0cnVjdG9y
R1BSID0gY29uc3RydWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIHJlZ0V4cEdQUiA9IHJlZ0V4cC5n
cHIoKTsKKyAgICBHUFJSZWcgc3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOworICAgIEdQUlJlZyBz
dGFydEdQUiA9IHN0YXJ0LmdwcigpOworICAgIEdQUlJlZyBlbmRHUFIgPSBlbmQuZ3ByKCk7CisK
KyAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVk
UmVzdWx0KCk7CisKKyAgICBtX2ppdC5zdG9yZVB0cigKKyAgICAgICAgcmVnRXhwR1BSLAorICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsgUmVnRXhw
Q2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkpOworICAgIG1faml0LnN0b3JlUHRy
KAorICAgICAgICBzdHJpbmdHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0
cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0
KCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBzdGFydEdQUiwKKyAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICBjb25zdHJ1Y3RvckdQUiwKKyAgICAgICAg
ICAgIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVD
VF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSk7CisgICAgbV9qaXQuc3RvcmUzMigKKyAg
ICAgICAgZW5kR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcygKKyAgICAgICAgICAg
IGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0
OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSk7
CisgICAgbV9qaXQuc3RvcmU4KAorICAgICAgICBUcnVzdGVkSW1tMzIoMCksCisgICAgICAgIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRS
ZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE5Nzk4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQwMSw2ICsyNDAxLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldFJl
Z0V4cE9iamVjdExhc3RJbmRleChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0UmVnRXhwT2Jq
ZWN0TGFzdEluZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMYXp5SlNDb25zdGFudChOb2Rl
Kik7CisgICAgdm9pZCBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChOb2RlKik7CiAgICAgCiAgICAgdm9p
ZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhHUFJSZWcpOwpAQCAt
MjUxNiw3ICsyNTE4LDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogICAg
IH0KIAotICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1
Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOworICAgIHZv
aWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQ
UlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVu
Z3RoKTsKICAgICAKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiwgR1BS
UmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKICAgICB2b2lkIGVtaXRH
ZXRMZW5ndGgoQ29kZU9yaWdpbiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9
IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVy
SW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDExICsyNTMsMTkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAg
ICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1
cmU6IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
CisKKyAgICAgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAg
ICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNh
c2UgUHV0Q2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAg
ICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKQEAgLTI2NiwxMyArMjc0LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgICAgIGNhc2Ug
UHV0QnlJZEZsdXNoOgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7Ci0gICAgICAg
ICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0
OiB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQyKCksIG1f
bm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTEgKzM2LDE1
IEBACiAjaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKICNpbmNsdWRl
ICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSA8Y3N0ZGxpYj4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCiBjbGFzcyBTdHJlbmd0aFJlZHVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKKyAgICBz
dGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgCiBwdWJsaWM6CiAgICAgU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2UoZ3JhcGgs
ICJzdHJlbmd0aCByZWR1Y3Rpb24iKQpAQCAtMzMxLDExICszMzUsMzY4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgaWYgKCEhc3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc051bWJlcihzdHJpbmcubGVuZ3RoKCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDogeworICAg
ICAgICAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBtX25vZGUtPmNoaWxkMSgpLT5keW5hbWlj
Q2FzdENvbnN0YW50PEpTT2JqZWN0Kj4oKSkgeworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29u
dmVydFRvQ29uc3RhbnQobV9ub2RlLCBvYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAg
ICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFJl
Z0V4cEV4ZWM6CisgICAgICAgIGNhc2UgUmVnRXhwVGVzdDogeworICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29u
c3RhbnQ8SlNHbG9iYWxPYmplY3QqPigpOworICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3Qp
IHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiR2l2aW5nIHVwIGJlY2F1c2Ugbm8gZ2xvYmFsIG9iamVjdC5cbiIpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2Jq
ZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgYmFkIHRpbWUu
XG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgTm9kZSogcmVnRXhwT2JqZWN0Tm9kZSA9IG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpOworICAg
ICAgICAgICAgUmVnRXhwKiByZWdFeHA7CisgICAgICAgICAgICBpZiAoUmVnRXhwT2JqZWN0KiBy
ZWdFeHBPYmplY3QgPSByZWdFeHBPYmplY3ROb2RlLT5keW5hbWljQ2FzdENvbnN0YW50PFJlZ0V4
cE9iamVjdCo+KCkpCisgICAgICAgICAgICAgICAgcmVnRXhwID0gcmVnRXhwT2JqZWN0LT5yZWdF
eHAoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ0V4cE9iamVjdE5vZGUtPm9wKCkgPT0gTmV3
UmVnZXhwKQorICAgICAgICAgICAgICAgIHJlZ0V4cCA9IGNvZGVCbG9jaygpLT5yZWdleHAocmVn
RXhwT2JqZWN0Tm9kZS0+cmVnZXhwSW5kZXgoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2
aW5nIHVwIGJlY2F1c2UgdGhlIHJlZ2V4cCBpcyB1bmtub3duLlxuIik7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5vZGUqIHN0cmluZ05vZGUg
PSBtX25vZGUtPmNoaWxkMygpLm5vZGUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
Tk9URTogVGhpcyBtb3N0bHkgYWxyZWFkeSBwcm90ZWN0cyB1cyBmcm9tIGhhdmluZyB0aGUgY29t
cGlsZXIgZXhlY3V0ZSBhIHJlZ2V4cAorICAgICAgICAgICAgLy8gb3BlcmF0aW9uIG9uIGEgZ2lu
b3Jtb3VzIHN0cmluZyBieSBwcmV2ZW50aW5nIHVzIGZyb20gZ2V0dGluZyBvdXIgaGFuZHMgb24g
Z2lub3Jtb3VzCisgICAgICAgICAgICAvLyBzdHJpbmdzIGluIHRoZSBmaXJzdCBwbGFjZS4KKyAg
ICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBtX25vZGUtPmNoaWxkMygpLT50cnlHZXRTdHJpbmco
bV9ncmFwaCk7CisgICAgICAgICAgICBpZiAoIXN0cmluZykgeworICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVz
ZSB0aGUgc3RyaW5nIGlzIHVua25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgRnJvemVuVmFsdWUqIHJlZ0V4cEZyb3plblZhbHVl
ID0gbV9ncmFwaC5mcmVlemUocmVnRXhwKTsKKworICAgICAgICAgICAgLy8gUmVmdXNlIHRvIGRv
IHRoaW5ncyB3aXRoIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBoYXZlIGEgZ2lub3Jtb3VzIG51
bWJlciBvZgorICAgICAgICAgICAgLy8gc3VicGF0dGVybnMuCisgICAgICAgICAgICB1bnNpZ25l
ZCBnaW5vcm1vdXNOdW1iZXJPZlN1YlBhdHRlcm5zID0gMTAwMDsKKyAgICAgICAgICAgIGlmIChy
ZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgPiBnaW5vcm1vdXNOdW1iZXJPZlN1YlBhdHRlcm5zKSB7
CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkdpdmluZyB1cCBiZWNhdXNlIG9mIHBhdHRlcm4gbGltaXQuXG4iKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5zaWduZWQgbGFzdElu
ZGV4OworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsT3JTdGlja3koKSkgeworICAgICAg
ICAgICAgICAgIC8vIFRoaXMgd2lsbCBvbmx5IHdvcmsgaWYgd2UgY2FuIHByb3ZlIHdoYXQgdGhl
IHZhbHVlIG9mIGxhc3RJbmRleCBpcy4gVG8gZG8gdGhpcworICAgICAgICAgICAgICAgIC8vIHNh
ZmVseSwgd2UgbmVlZCB0byBleGVjdXRlIHRoZSBpbnNlcnRpb24gc2V0IHNvIHRoYXQgd2Ugc2Vl
IGFueSBwcmV2aW91cyBzdHJlbmd0aAorICAgICAgICAgICAgICAgIC8vIHJlZHVjdGlvbnMuIFRo
aXMgaXMgbmVlZGVkIGZvciBzb3VuZG5lc3Mgc2luY2Ugb3RoZXJ3aXNlIHRoZSBlZmZlY3RmdWxu
ZXNzIG9mIGFueQorICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHN0cmVuZ3RoIHJlZHVjdGlv
bnMgd291bGQgYmUgaW52aXNpYmxlIHRvIHVzLgorICAgICAgICAgICAgICAgIGV4ZWN1dGVJbnNl
cnRpb25TZXQoKTsKKyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBVSU5UX01BWDsKKyAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG90aGVyTm9kZUluZGV4ID0gbV9ub2RlSW5kZXg7IG90
aGVyTm9kZUluZGV4LS07KSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIG90aGVyTm9kZSA9
IG1fYmxvY2stPmF0KG90aGVyTm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG90
aGVyTm9kZSA9PSByZWdFeHBPYmplY3ROb2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBs
YXN0SW5kZXggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3AoKSA9PSBT
ZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIG90aGVy
Tm9kZS0+Y2hpbGQxKCkgPT0gcmVnRXhwT2JqZWN0Tm9kZQorICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgb3RoZXJOb2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNvbnN0YW50KCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSA+PSAwKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
b3RoZXJOb2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh3
cml0ZXNPdmVybGFwKG1fZ3JhcGgsIG90aGVyTm9kZSwgUmVnRXhwT2JqZWN0X2xhc3RJbmRleCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA9PSBVSU5UX01BWCkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmlu
ZyB1cCBiZWNhdXNlIHRoZSBsYXN0IGluZGV4IGlzIG5vdCBrbm93bi5cbiIpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSAwOworCisgICAgICAgICAgICBtX2dyYXBoLndh
dGNocG9pbnRzKCkuYWRkTGF6aWx5KGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBv
aW50KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCk7CisgICAgICAgICAg
ICBpZiAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSAhPSBBcnJheVdpdGhDb250aWd1b3VzKSB7
CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmdXJ0aGVyIHByb3RlY3Rpb24gYWdhaW5zdCBh
IHJhY2Ugd2l0aCBoYXZlQUJhZFRpbWUuCisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSBzdHJ1Y3R1
cmUgaGFzIHRoZSB3cm9uZyBpbmRleGluZyB0eXBlLlxuIik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHN0cnVjdHVyZSk7CisKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKTsKKyAgICAgICAgICAgIEZyb3pl
blZhbHVlKiBjb25zdHJ1Y3RvckZyb3plblZhbHVlID0gbV9ncmFwaC5mcmVlemUoY29uc3RydWN0
b3IpOworCisgICAgICAgICAgICBNYXRjaFJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBWZWN0
b3I8aW50LCAzMj4gb3ZlY3RvcjsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gY2FsbCB0aGUg
a2luZCBvZiBtYXRjaCBmdW5jdGlvbiB0aGF0IHRoZSBtYWluIHRocmVhZCB3b3VsZCBoYXZlIGNh
bGxlZC4KKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbWlnaHQgbm90IGhhdmUgdGhlIGRl
c2lyZWQgWWFyciBjb2RlIGNvbXBpbGVkLCBhbmQgdGhlIG1hdGNoIHdpbGwgZmFpbC4KKyAgICAg
ICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUmVnRXhwRXhlYykgeworICAgICAgICAgICAgICAg
IGludCBwb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBpZiAoIXJlZ0V4cC0+bWF0Y2hDb25jdXJy
ZW50bHkodm0oKSwgc3RyaW5nLCBsYXN0SW5kZXgsIHBvc2l0aW9uLCBvdmVjdG9yKSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIG1hdGNoIGZhaWxlZC5cbiIpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0
LnN0YXJ0ID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAgcmVzdWx0LmVuZCA9IG92ZWN0b3Jb
MV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5t
YXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJpbmcsIGxhc3RJbmRleCwgcmVzdWx0KSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIG1hdGNoIGZhaWxlZC5cbiIpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFdlJ3ZlIGNvbnN0YW50LWZvbGRlZCB0aGUgcmVnZXhwLiBOb3cgd2UncmUgY29t
bWl0dGVkIHRvIHJlcGxhY2luZyBSZWdFeHBFeGVjL1Rlc3QuCisKKyAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7CisKKyAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbV9ub2RlLT5v
cmlnaW47CisKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBtX25vZGUtPmNo
aWxkcmVuLmp1c3RDaGVja3MoKSk7CisKKyAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0g
UmVnRXhwRXhlYykgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgU3RydWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVy
ZVNldChzdHJ1Y3R1cmUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBhcnJh
eSBtb2RlbGluZyB0aGUgSlMgYXJyYXkgdGhhdCB3ZSB3aWxsIHRyeSB0byBhbGxvY2F0ZS4gVGhp
cyBpcworICAgICAgICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkgY3JlYXRlUmVnRXhwTWF0Y2hl
c0FycmF5IGJ1dCBvdmVyIEMrKyBzdHJpbmdzIGluc3RlYWQgb2YgSlNTdHJpbmdzLgorICAgICAg
ICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRBcnJheTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnN0YXJ0LCBy
ZXN1bHQuZW5kIC0gcmVzdWx0LnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPD0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzdGFydCA9IG92ZWN0b3JbMiAqIGldOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcoc3RhcnQsIG92ZWN0b3JbMiAq
IGkgKyAxXSAtIHN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKFN0cmluZygpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHB1YmxpY0xl
bmd0aCA9IHJlc3VsdEFycmF5LnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBwdWJsaWNMZW5ndGgpOwor
CisgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbmRleFVJRCA9IHZtKCku
cHJvcGVydHlOYW1lcy0+aW5kZXguaW1wbCgpOworICAgICAgICAgICAgICAgICAgICBVbmlxdWVk
U3RyaW5nSW1wbCogaW5wdXRVSUQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmlucHV0LmltcGwoKTsK
KyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXhJbmRleCA9IG1fZ3JhcGguaWRlbnRp
ZmllcnMoKS5lbnN1cmUoaW5kZXhVSUQpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnB1dEluZGV4ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpbnB1dFVJRCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdD
aGlsZHJlbi5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRl
eCwgb3JpZ2luLCBzdHJ1Y3R1cmUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAgICAg
ICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKiBkYXRhID0gbV9ncmFwaC5tX29iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEuYWRkKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHB1YmxpY0xlbmd0aCksIEtu
b3duSW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFw
cGVuZChQdWJsaWNMZW5ndGhQTG9jKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIodmVjdG9yTGVuZ3RoKSwg
S25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMu
YXBwZW5kKFZlY3Rvckxlbmd0aFBMb2MpOworCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQpLCBVbnR5cGVkVXNl
KSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3Bl
cnR5UExvYywgaW5kZXhJbmRleCkpOworCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShzdHJpbmdOb2RlLCBVbnR5cGVkVXNlKSk7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3BlcnR5UExvYywg
aW5wdXRJbmRleCkpOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0ZXJpYWxpemVTdHJp
bmcgPSBbJl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAtPiBOb2RlKiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bm9kZUluZGV4LCBvcmlnaW4sIHZtKCkuc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgTGF6eUpTVmFs
dWUgdmFsdWUgPSBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIHN0cmluZyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIExhenlKU0Nv
bnN0YW50LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3Jh
cGgubV9sYXp5SlNWYWx1ZXMuYWRkKHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAgICB9Owor
CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRBcnJh
eS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE5vZGUqIG5vZGUg
PSBtYXRlcmlhbGl6ZVN0cmluZyhyZXN1bHRBcnJheVtpXSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uobm9kZSwgVW50
eXBlZFVzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGll
cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRp
b25EZXNjcmlwdG9yKEluZGV4ZWRQcm9wZXJ0eVBMb2MsIGkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIHJlc3VsdE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNBcnJheSwgTm9kZTo6VmFy
QXJnLCBNYXRlcmlhbGl6ZU5ld09iamVjdCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKHN0cnVjdHVyZVNldCksIE9wSW5mbyhkYXRhKSwgZmlyc3RDaGlsZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBmaXJz
dENoaWxkKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5j
b252ZXJ0VG9JZGVudGl0eU9uKHJlc3VsdE5vZGUpOworICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNO
dWxsKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252
ZXJ0VG9Db25zdGFudChtX25vZGUsIGpzQm9vbGVhbighIXJlc3VsdCkpOworCisgICAgICAgICAg
ICAvLyBXaGV0aGVyIGl0J3MgRXhlYyBvciBUZXN0LCB3ZSBuZWVkIHRvIHRlbGwgdGhlIGNvbnN0
cnVjdG9yIGFuZCBSZWdFeHBPYmplY3Qgd2hhdCdzIHVwLgorICAgICAgICAgICAgLy8gQmVjYXVz
ZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXggbWF5IGV4aXQgYW5kIGl0IGNsb2JiZXJzIGV4aXQg
c3RhdGUsIHdlIGRvIHRoYXQKKyAgICAgICAgICAgIC8vIGZpcnN0LgorICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2Rl
SW5kZXgsIFNwZWNOb25lLCBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIG9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgRWRnZShyZWdFeHBPYmplY3ROb2RlLCBSZWdFeHBPYmplY3RVc2UpLAor
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHJl
c3VsdCA/IHJlc3VsdC5lbmQgOiAwKSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIG9yaWdpbiA9IG9yaWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOworICAg
ICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwgY29uc3RydWN0b3JGcm96ZW5WYWx1
ZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxk
cmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29u
c3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2lu
LCByZWdFeHBGcm96ZW5WYWx1ZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKHN0cmluZ05vZGUsIEtub3duQ2VsbFVz
ZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVz
dWx0LnN0YXJ0KSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5k
ZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0LmVuZCksIEtub3duSW50MzJVc2UpKTsKKyAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICBtX25vZGVJbmRleCwgU3BlY05vbmUsIE5vZGU6OlZhckFyZywgUmVjb3JkUmVnRXhwQ2FjaGVk
UmVzdWx0LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbygpLCBPcEluZm8oKSwg
Zmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQp
OworCisgICAgICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtX25vZGUtPm9yaWdpbiA9
IG9yaWdpbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBT
dHJpbmdSZXBsYWNlOiB7CisgICAgICAgICAgICBOb2RlKiBzdHJpbmdOb2RlID0gbV9ub2RlLT5j
aGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nID0gc3RyaW5nTm9kZS0+
dHJ5R2V0U3RyaW5nKG1fZ3JhcGgpOworICAgICAgICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJlZ0V4cE9i
amVjdE5vZGUgPSBtX25vZGUtPmNoaWxkMigpLm5vZGUoKTsKKyAgICAgICAgICAgIFJlZ0V4cCog
cmVnRXhwOworICAgICAgICAgICAgaWYgKFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0ID0gcmVn
RXhwT2JqZWN0Tm9kZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxSZWdFeHBPYmplY3QqPigpKQorICAg
ICAgICAgICAgICAgIHJlZ0V4cCA9IHJlZ0V4cE9iamVjdC0+cmVnRXhwKCk7CisgICAgICAgICAg
ICBlbHNlIGlmIChyZWdFeHBPYmplY3ROb2RlLT5vcCgpID09IE5ld1JlZ2V4cCkKKyAgICAgICAg
ICAgICAgICByZWdFeHAgPSBjb2RlQmxvY2soKS0+cmVnZXhwKHJlZ0V4cE9iamVjdE5vZGUtPnJl
Z2V4cEluZGV4KCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRo
ZSByZWdleHAgaXMgdW5rbm93bi5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZSA9IG1fbm9kZS0+Y2hpbGQzKCkt
PnRyeUdldFN0cmluZyhtX2dyYXBoKTsKKyAgICAgICAgICAgIGlmICghc3RyaW5nKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisK
KyAgICAgICAgICAgIHVuc2lnbmVkIGxhc3RJbmRleCA9IDA7CisgICAgICAgICAgICB1bnNpZ25l
ZCBzdGFydFBvc2l0aW9uID0gMDsKKyAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICAg
ICAgICAgZG8geworICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8aW50LCAzMj4gb3ZlY3RvcjsKKyAgICAgICAgICAgICAgICAvLyBNb2Rl
bCB3aGljaCB2ZXJzaW9uIG9mIG1hdGNoKCkgaXMgY2FsbGVkIGJ5IHRoZSBtYWluIHRocmVhZC4K
KyAgICAgICAgICAgICAgICBpZiAocmVwbGFjZS5pc0VtcHR5KCkgJiYgcmVnRXhwLT5nbG9iYWwo
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZ0V4cC0+bWF0Y2hDb25jdXJyZW50bHko
dm0oKSwgc3RyaW5nLCBzdGFydFBvc2l0aW9uLCByZXN1bHQpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBpbnQgcG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5t
YXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJpbmcsIHN0YXJ0UG9zaXRpb24sIHBvc2l0aW9uLCBv
dmVjdG9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBwb3NpdGlvbjsK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmVuZCA9IG92ZWN0b3JbMV07CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGludCByZXBsTGVu
ID0gcmVwbGFjZS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAobGFzdEluZGV4IDwgcmVz
dWx0LnN0YXJ0IHx8IHJlcGxMZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoc3RyaW5nLCBsYXN0SW5kZXgsIHJlc3VsdC5zdGFydCAtIGxhc3RJbmRleCk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChyZXBsTGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKHJlcGxhY2UsIHN0cmluZywgb3ZlY3Rv
ci5kYXRhKCksIHJlZ0V4cCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGxhc3RJbmRleCA9IHJlc3VsdC5lbmQ7CisgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9
IGxhc3RJbmRleDsKKworICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBvZiBlbXB0eSBt
YXRjaAorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgICAgICBzdGFydFBvc2l0aW9uKys7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydFBv
c2l0aW9uID4gc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSB3aGlsZSAocmVnRXhwLT5nbG9iYWwo
KSk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAvLyBXZSBhcmUgY29tbWl0dGVkIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOworCisgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG1fbm9k
ZS0+b3JpZ2luOworCisgICAgICAgICAgICBpZiAocmVnRXhwLT5nbG9iYWwoKSkgeworICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBvcmlnaW4s
CisgICAgICAgICAgICAgICAgICAgIEVkZ2UocmVnRXhwT2JqZWN0Tm9kZSwgUmVnRXhwT2JqZWN0
VXNlKSwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRG
b3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051
bWJlcigwKSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IG9yaWdpbiA9IG9yaWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFsYXN0SW5kZXggJiYgYnVpbGRlci5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgbV9ub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKHN0cmluZ05vZGUpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA8IHN0cmluZy5sZW5ndGgo
KSkKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyaW5nLCBsYXN0SW5kZXgs
IHN0cmluZy5sZW5ndGgoKSAtIGxhc3RJbmRleCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9MYXp5SlNDb25zdGFudCgKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaCwgTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCBidWlsZGVyLnRv
U3RyaW5nKCkpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9ub2RlLT5vcmlnaW4g
PSBvcmlnaW47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzgwLDYgKzc0MSwxMSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9p
ZCBleGVjdXRlSW5zZXJ0aW9uU2V0KCkKKyAgICB7CisgICAgICAgIG1fbm9kZUluZGV4ICs9IG1f
aW5zZXJ0aW9uU2V0LmV4ZWN1dGUobV9ibG9jayk7CisgICAgfQogICAgIAogICAgIEluc2VydGlv
blNldCBtX2luc2VydGlvblNldDsKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE5Nzk4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjc4LDYgKzI3OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSksICF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+
ZGZnU2hvdWxkV2F0Y2goKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
KyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0
cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9ubHkgc3Vw
cG9ydHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0IG9yIEpTQXJyYXkuCisgICAg
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5jbGFzc0lu
Zm8oKSA9PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8fCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTQXJyYXk6OmluZm8oKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBjZXJ0YWluIGluZGV4aW5nIHNo
YXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0FueUFy
cmF5U3RvcmFnZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBE
b3VibGVDb25zdGFudDoKICAgICAgICAgICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CiAgICAg
ICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+aXNOdW1iZXJDb25zdGFudCgp
KTsKQEAgLTQ2MSwxMyArNDczLDQyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRIaW50OgogICAgICAg
ICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFs
aXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNrOgogICAg
ICAgICAgICAgICAgIGNhc2UgS2lsbFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3Rh
Y2s6CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgISJ1bmV4cGVjdGVkIG5v
ZGUgdHlwZSBpbiBDUFMiKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDogeworICAgICAgICAgICAgICAgICAgICAv
LyBDUFMgb25seSBhbGxvd3MgYXJyYXkgbGVuZ3RocyB0byBiZSBjb25zdGFudC4gVGhpcyBjb25z
dHJhaW50IG9ubHkgZXhpc3RzCisgICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBERkcgc3VwcG9ydCBmb3IgYW55dGhpbmcgbW9yZSBhbmQgd2UgZG9uJ3QgbmVlZCBh
bnkKKyAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXIga2luZCBvZiBzdXBwb3J0IGZvciBub3cu
CisgICAgICAgICAgICAgICAgICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBu
b2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9
IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSBlZGdl
ID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZl
Y3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5v
ZGUsIGVkZ2UpLCBlZGdlLT5pc0ludDMyQ29uc3RhbnQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIG9ubHkg
YWxsb3dzIG9uZSBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2Rl
KSwgbm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpOworCisgICAgICAgICAgICAgICAg
ICAgIC8vIENQUyBkaXNhbGxvd3MgaW50MzIgYW5kIGRvdWJsZSBhcnJheXMuIFRob3NlIHJlcXVp
cmUgd2VpcmQgdHlwZSBjaGVja3MgYW5kCisgICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNp
b25zLiBUaGV5IGFyZSBub3QgbmVlZGVkIGluIHRoZSBERkcgcmlnaHQgbm93LiBXZSBzaG91bGQg
YWRkIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoZXNlIGlmIHRoZSBERkcg
ZXZlciBuZWVkcyBpdC4KKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSksICFoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNEb3VibGUoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNl
IFBoYW50b206CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbV9ncmFwaC5t
X2ZpeHBvaW50U3RhdGUgIT0gRml4cG9pbnROb3RDb252ZXJnZWQpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3Qu
aCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVu
dHNUYWJsZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw2ICs3NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAg
ICAgbWFjcm8oSlNTeW1ib2xUYWJsZU9iamVjdF9zeW1ib2xUYWJsZSwgSlNTeW1ib2xUYWJsZU9i
amVjdDo6b2Zmc2V0T2ZTeW1ib2xUYWJsZSgpKSBcCiAgICAgbWFjcm8oSlNXcmFwcGVyT2JqZWN0
X2ludGVybmFsVmFsdWUsIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZU9mZnNldCgpKSBc
CiAgICAgbWFjcm8oTWFya2VkQWxsb2NhdG9yX2ZyZWVMaXN0SGVhZCwgTWFya2VkQWxsb2NhdG9y
OjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3Jf
Y2FjaGVkUmVzdWx0X2xhc3RSZWdFeHAsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hl
ZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkgXAor
ICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0SW5wdXQsIFJlZ0V4
cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0
OjpvZmZzZXRPZkxhc3RJbnB1dCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2Fj
aGVkUmVzdWx0X3Jlc3VsdF9zdGFydCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVk
UmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIHN0YXJ0KSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVj
dG9yX2NhY2hlZFJlc3VsdF9yZXN1bHRfZW5kLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZD
YWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9C
SkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgZW5kKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0
cnVjdG9yX2NhY2hlZFJlc3VsdF9yZWlmaWVkLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZD
YWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZWlmaWVkKCkpIFwK
ICAgICBtYWNybyhSZWdFeHBPYmplY3RfbGFzdEluZGV4LCBSZWdFeHBPYmplY3Q6Om9mZnNldE9m
TGFzdEluZGV4KCkpIFwKICAgICBtYWNybyhSZWdFeHBPYmplY3RfbGFzdEluZGV4SXNXcml0YWJs
ZSwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleElzV3JpdGFibGUoKSkgXAogICAgIG1h
Y3JvKFNjb3BlZEFyZ3VtZW50c19vdmVycm9kZVRoaW5ncywgU2NvcGVkQXJndW1lbnRzOjpvZmZz
ZXRPZk92ZXJyb2RlVGhpbmdzKCkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDYgKzIyOCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAg
ICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6
CiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdF
eHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTM4LDYgKzkzOCw5IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICAgICAgY29t
cGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgorICAgICAgICAgICAgY29tcGlsZVJl
Y29yZFJlZ0V4cENhY2hlZFJlc3VsdCgpOworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CkBAIC0zNzE2LDMyICsz
NzE5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuc3RvcmUz
MihwdWJsaWNMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3Ro
KTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIodmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHksIG1f
aGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmIChoYXNEb3VibGUobV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpIHsKLSAgICAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgaW5pdERvbmUgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291
dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBv
cmlnaW5hbFBvaW50ZXIgPSBtX291dC5hbmNob3IoYnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAg
ICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMih2ZWN0
b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOwotICAgICAgICAgICAgICAgIExWYWx1ZSBp
bmRleCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgb3JpZ2luYWxJbmRleCk7Ci0gICAgICAgICAg
ICAgICAgTFZhbHVlIHBvaW50ZXIgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBvcmlnaW5hbFBv
aW50ZXIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQo
Ci0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0
X3Q+KFBOYU4pKSwKLSAgICAgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVhcHMuaW5k
ZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgTFZhbHVlIG5leHRJbmRleCA9IG1fb3V0LnN1YihpbmRl
eCwgbV9vdXQuaW50MzJPbmUpOwotICAgICAgICAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9Q
aGkoaW5kZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKLSAgICAgICAgICAgICAgICBtX291
dC5hZGRJbmNvbWluZ1RvUGhpKHBvaW50ZXIsIG1fb3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRl
ciwgbV9vdXQuaW50UHRyRWlnaHQpKSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAot
ICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIobmV4dEluZGV4KSwgdW5zdXJlKGlu
aXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oaW5pdERvbmUsIGluaXRMYXN0TmV4dCk7Ci0gICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGluaXRpYWxpemVBcnJheUVsZW1lbnRzKG1fbm9kZS0+aW5kZXhp
bmdUeXBlKCksIHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5KTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihvYmplY3QpOwog
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtNjI4NiwxMSArNjI2NSwy
MSBAQCBwcml2YXRlOgogICAgICAgICAvLyBMb3dlciB0aGUgdmFsdWVzIGZpcnN0LCB0byBhdm9p
ZCBjcmVhdGluZyB2YWx1ZXMgaW5zaWRlIGEgY29udHJvbCBmbG93IGRpYW1vbmQuCiAgICAgICAg
IAogICAgICAgICBWZWN0b3I8TFZhbHVlLCA4PiB2YWx1ZXM7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
IHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSAr
IGkpKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGll
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5tX3Byb3BlcnRp
ZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAg
ICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgdmFsdWVzLmFw
cGVuZChsb3dJbnQzMihlZGdlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShlZGdl
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0ID0gbV9ub2RlLT5zdHJ1Y3R1
cmVTZXQoKTsKLSAgICAgICAgCisKICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrLCAxPiBibG9j
a3Moc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5zaXplKCk7IGkt
LTspCiAgICAgICAgICAgICBibG9ja3NbaV0gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNjMxNSwy
MSArNjMwNCw1MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIG9iamVjdDsKICAgICAg
ICAgICAgIExWYWx1ZSBidXR0ZXJmbHk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJl
LT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNp
emUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFj
aXR5KCkpOwogICAgICAgICAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gJnZt
KCkuaGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6
ZSk7CisKKyAgICAgICAgICAgICAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gaGFzSW5kZXhl
ZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW5kZXhpbmdIZWFkZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBMVmFsdWUg
aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPSBtX291dC5pbnRQdHJaZXJvOworICAgICAgICAg
ICAgICAgIExWYWx1ZSB2ZWN0b3JMZW5ndGggPSBtX291dC5pbnQzMlplcm87CisgICAgICAgICAg
ICAgICAgTFZhbHVlIHB1YmxpY0xlbmd0aCA9IG1fb3V0LmludDMyWmVybzsKKyAgICAgICAgICAg
ICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhp
bmdIZWFkZXJTaXplID0gc2l6ZW9mKEluZGV4aW5nSGVhZGVyKTsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlw
dG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFB1
YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljTGVuZ3Ro
ID0gdmFsdWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9IHZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmdQYXls
b2FkU2l6ZUluQnl0ZXMgPQorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQubXVsKG1fb3V0
Lnplcm9FeHRQdHIodmVjdG9yTGVuZ3RoKSwgbV9vdXQuaW50UHRyRWlnaHQpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQu
YWRkKAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cigKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1Zh
bHVlKSArIGluZGV4aW5nSGVhZGVyU2l6ZSksCisgICAgICAgICAgICAgICAgICAgIGluZGV4aW5n
UGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2Vy
dE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5k
KAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpLAotICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aCk7Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgTFZhbHVlIGVuZE9m
U3RvcmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5kKGJ1dHRlcmZseVNpemUsIHNs
b3dQYXRoKTsKKwogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBt
X291dC5hZGQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJ
bmRleGluZ0hlYWRlcikpLCBlbmRPZlN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX291
dC5zdWIoZW5kT2ZTdG9yYWdlLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyksCisgICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikgLSBp
bmRleGluZ0hlYWRlclNpemUpKTsKKworICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIodmVj
dG9yTGVuZ3RoLCBmYXN0QnV0dGVyZmx5VmFsdWUsIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxl
bmd0aCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RPYmpl
Y3RWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0KAogICAgICAgICAgICAgICAgICAgICBtX291dC5jb25z
dEludFB0cihhbGxvY2F0b3IpLCBzdHJ1Y3R1cmUsIGZhc3RCdXR0ZXJmbHlWYWx1ZSwgc2xvd1Bh
dGgpOwpAQCAtNjM0MCwxMiArNjM1OSwyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwog
Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgK
LSAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlv
bnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0aW9uc1sw
XS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIExWYWx1ZSBzbG93T2JqZWN0VmFsdWU7CisgICAgICAgICAgICAgICAgaWYg
KGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHNsb3dPYmplY3RWYWx1
ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVj
dG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0
b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxH
ZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09i
amVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbG93T2JqZWN0VmFsdWUg
PSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3Rv
cjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9y
PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2Vu
ZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdPYmpl
Y3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93T2JqZWN0ID0gbV9vdXQuYW5jaG9yKHNsb3dP
YmplY3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0J1dHRlcmZs
eSA9IG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihzbG93
T2JqZWN0VmFsdWUsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5KSk7CkBAIC02MzU2LDYgKzYz
ODcsMTEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgb2Jq
ZWN0ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdE9iamVjdCwgc2xvd09iamVjdCk7CiAg
ICAgICAgICAgICAgICAgYnV0dGVyZmx5ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdEJ1
dHRlcmZseSwgc2xvd0J1dHRlcmZseSk7CisKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMy
KHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgp
OworCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMoc3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkpOworCisgICAgICAgICAgICAg
ICAgSGFzaE1hcDwKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCwgTFZhbHVlLCBEZWZhdWx0
SGFzaDxpbnQzMl90Pjo6SGFzaCwKKyAgICAgICAgICAgICAgICAgICAgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czxpbnQzMl90Pj4gaW5kZXhNYXA7CisgICAgICAgICAgICAgICAg
VmVjdG9yPGludDMyX3Q+IGluZGljZXM7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAg
IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGll
c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iua2luZCgpICE9IEluZGV4
ZWRQcm9wZXJ0eVBMb2MpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRlc2Ny
aXB0b3IuaW5mbygpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gaW5kZXhNYXAuYWRkKGluZGV4LCB2YWx1ZXNbaV0pOworICAgICAgICAg
ICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgcmVzdWx0KTsgLy8gRHVwbGlj
YXRlcyBhcmUgaWxsZWdhbC4KKworICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLmFwcGVuZChp
bmRleCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFpbmRpY2Vz
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBzdGQ6OnNvcnQoaW5kaWNlcy5iZWdp
bigpLCBpbmRpY2VzLmVuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaz4gYmxvY2tzV2l0aFN0b3JlcyhpbmRpY2VzLnNpemUo
KSk7CisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaz4gYmxvY2tzV2l0aENo
ZWNrcyhpbmRpY2VzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgYmxvY2tzV2l0aFN0b3Jlc1tpXSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoQ2hlY2tzW2ldID0gbV9vdXQubmV3
QmxvY2soKTsgLy8gYmxvY2tzV2l0aENoZWNrc1swXSBpcyB0aGUgY29udGludWF0aW9uLgorICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5k
ZXhMYXN0TmV4dCA9IG1fb3V0Lm1fbmV4dEJsb2NrOworICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kaWNlcy5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaW5kZXggPSBpbmRpY2VzW2ldOwor
ICAgICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gaW5kZXhNYXAuZ2V0KGluZGV4
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJlbG93KG1fb3V0
LmNvbnN0SW50MzIoaW5kZXgpLCBwdWJsaWNMZW5ndGgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc3VyZShibG9ja3NXaXRoU3RvcmVzW2ldKSwgdW5zdXJlKGJsb2Nrc1dpdGhDaGVj
a3NbaV0pKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tz
V2l0aFN0b3Jlc1tpXSwgYmxvY2tzV2l0aENoZWNrc1tpXSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaGFzIHRvIHR5cGUtY2hlY2sgYW5kIGNvbnZlcnQgaXRzIGlucHV0cywg
YnV0IGl0IGNhbm5vdCBkbyBzbyBpbiBhCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YXkg
dGhhdCB1cGRhdGVzIEFJLiBUaGF0J3MgYSBiaXQgYW5ub3lpbmcsIGJ1dCBpZiB5b3UgdGhpbmsg
YWJvdXQgaG93CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaW5raW5nIHdvcmtzLCBpdCdz
IGFjdHVhbGx5IG5vdCBhIGJhZCB0aGluZy4gV2UgYXJlIHZpcnR1YWxseSBndWFyYW50ZWVkCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IHRoZXNlIHR5cGUgY2hlY2tzIHdpbGwgbm90
IGZhaWwsIHNpbmNlIHRoZSB0eXBlIGNoZWNrcyB0aGF0IGd1YXJkZWQKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBzdG9yZXMgdG8gdGhlIGFycmF5IGFyZSBzdGlsbCBz
b21ld2hlcmUgYWJvdmUgdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1
dDo6U3RvcmVUeXBlIHN0b3JlVHlwZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4ZWRB
YnN0cmFjdEhlYXAqIGhlYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxM
X0lOVDMyX0lOREVYSU5HX1RZUEVTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGNvdWxkIHVzZSB0aGUgcHJvdmVuIHR5cGUgaWYgd2UgaGFkIHRoZSBFZGdlIGZv
ciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTMxMQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBub1ZhbHVlKCksIG51bGxwdHIsIGlzTm90SW50MzIo
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6
OlN0b3JlNjQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmlu
ZGV4ZWRJbnQzMlByb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBF
UzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgc291cmNl
IGlzIFZhbHVlUmVwLCB3ZSBzaG91bGQgYXZvaWQgZW1pdHRpbmcgYW55CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2hlY2tzLiBXZSBjb3VsZCBhbHNvIGF2b2lkIGVtaXR0aW5nIGNo
ZWNrcyBpZiB3ZSBoYWQgdGhlIEVkZ2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB0aGlzIHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
MzExCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnRDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBkb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzSW50MzIodmFsdWUpLCB1bnN1
cmUoaW50Q2FzZSksIHVuc3VyZShkb3VibGVDYXNlKSk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENhc2UsIGRv
dWJsZUNhc2UpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
aW50UmVzdWx0ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYW5jaG9y
KG1fb3V0LmludFRvRG91YmxlKHVuYm94SW50MzIodmFsdWUpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBub1ZhbHVlKCks
IG51bGxwdHIsIGlzTnVtYmVyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgZG91YmxlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHVuYm94RG91YmxlKHZh
bHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBt
X291dC5waGkoRG91YmxlLCBpbnRSZXN1bHQsIGRvdWJsZVJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZURvdWJsZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRp
ZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNf
SU5ERVhJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0g
T3V0cHV0OjpTdG9yZTY0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9o
ZWFwcy5pbmRleGVkQ29udGlndW91c1Byb3BlcnRpZXM7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkludmFsaWQg
aW5kZXhpbmcgdHlwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX291dC5zdG9yZSh2YWx1ZSwgbV9vdXQuYWRkcmVzcyhidXR0ZXJm
bHksIGhlYXAtPmF0KGluZGV4KSksIHN0b3JlVHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoYmxvY2tzV2l0aENoZWNrc1tpXSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NX
aXRoQ2hlY2tzW2ldLCBpID8gYmxvY2tzV2l0aFN0b3Jlc1tpIC0gMV0gOiBpbmRleExhc3ROZXh0
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGVhc3kgY2FzZSB3aGVyZSB3ZSBj
YW4gZG8gYSBvbmUtc2hvdCBhbGxvY2F0aW9uLCB3ZSBzaW1wbHkgYWxsb2NhdGUgdGhlCiAgICAg
ICAgICAgICAgICAgLy8gb2JqZWN0IHRvIGRpcmVjdGx5IGhhdmUgdGhlIGRlc2lyZWQgc3RydWN0
dXJlLgpAQCAtNjM2NSwxMiArNjUwMywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKFByb3BlcnR5TWFwRW50cnkgZW50cnkgOiBzdHJ1Y3R1cmUtPmdldFByb3Bl
cnRpZXNDb25jdXJyZW50bHkoKSkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgICAgICBQ
aGFudG9tUHJvcGVydHlWYWx1ZSB2YWx1ZSA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOwotICAgICAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pZGVudGlmaWVycygpW3ZhbHVlLm1faWRlbnRpZmll
ck51bWJlcl0gIT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0
aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAg
ICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmtpbmQoKSAhPSBOYW1lZFByb3BlcnR5UExvYykK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC5pZGVudGlmaWVycygpW2Rlc2NyaXB0b3IuaW5mbygpXSAhPSBlbnRyeS5rZXkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gaXNJbmxpbmVPZmZzZXQoZW50cnku
b2Zmc2V0KSA/IG9iamVjdCA6IGJ1dHRlcmZseTsKLSAgICAgICAgICAgICAgICAgICAgc3RvcmVQ
cm9wZXJ0eSh2YWx1ZXNbaV0sIGJhc2UsIHZhbHVlLm1faWRlbnRpZmllck51bWJlciwgZW50cnku
b2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVQcm9wZXJ0eSh2YWx1ZXNbaV0sIGJh
c2UsIGRlc2NyaXB0b3IuaW5mbygpLCBlbnRyeS5vZmZzZXQpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC02NDM1LDkgKzY1
NzUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGFjdGl2YXRpb24gPSBtX291dC5waGko
bV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpID09IHRhYmxlLT5zY29wZVNpemUoKSk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZXNbaV0sCi0gICAgICAgICAg
ICAgICAgYWN0aXZhdGlvbiwKLSAgICAgICAgICAgICAgICBtX2hlYXBzLkpTRW52aXJvbm1lbnRS
ZWNvcmRfdmFyaWFibGVzW2RhdGEubV9wcm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcl0p
OworICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRh
dGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgQVNTRVJUKGRlc2NyaXB0b3Iua2luZCgp
ID09IENsb3N1cmVWYXJQTG9jKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAg
ICAgICAgICAgdmFsdWVzW2ldLCBhY3RpdmF0aW9uLAorICAgICAgICAgICAgICAgIG1faGVhcHMu
SlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGVzY3JpcHRvci5pbmZvKCldKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CkBAIC02NDQ2LDcgKzY1
ODgsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgZm9yIChhdXRvIGl0ZXIgPSB0YWJsZS0+YmVn
aW4obG9ja2VyKSwgZW5kID0gdGFibGUtPmVuZChsb2NrZXIpOyBpdGVyICE9IGVuZDsgKytpdGVy
KSB7CiAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUuc2NvcGVPZmZzZXQoKS5vZmZz
ZXQoKSA9PSBkYXRhLm1fcHJvcGVydGllc1tpXS5tX2lkZW50aWZpZXJOdW1iZXIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRh
dGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGVzY3JpcHRv
ci5raW5kKCkgPT0gQ2xvc3VyZVZhclBMb2MpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRl
ci0+dmFsdWUuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSA9PSBkZXNjcmlwdG9yLmluZm8oKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTY2MTMsNiArNjc1NywyOSBA
QCBwcml2YXRlOgogICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCByZWdFeHAsIG1faGVhcHMu
UmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0KCkKKyAgICB7CisgICAgICAgIEVkZ2UgY29uc3RydWN0b3JFZGdl
ID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApOworICAgICAgICBFZGdlIHJlZ0V4cEVk
Z2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSk7CisgICAgICAgIEVkZ2Ugc3RyaW5n
RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKTsKKyAgICAgICAgRWRnZSBzdGFy
dEVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMyk7CisgICAgICAgIEVkZ2UgZW5k
RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KTsKKyAgICAgICAgCisgICAgICAg
IExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwoY29uc3RydWN0b3JFZGdlKTsKKyAgICAgICAg
TFZhbHVlIHJlZ0V4cCA9IGxvd0NlbGwocmVnRXhwRWRnZSk7CisgICAgICAgIExWYWx1ZSBzdHJp
bmcgPSBsb3dDZWxsKHN0cmluZ0VkZ2UpOworICAgICAgICBMVmFsdWUgc3RhcnQgPSBsb3dJbnQz
MihzdGFydEVkZ2UpOworICAgICAgICBMVmFsdWUgZW5kID0gbG93SW50MzIoZW5kRWRnZSk7CisK
KyAgICAgICAgbV9vdXQuc3RvcmVQdHIocmVnRXhwLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdF
eHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCk7CisgICAgICAgIG1fb3V0LnN0
b3JlUHRyKHN0cmluZywgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2Fj
aGVkUmVzdWx0X2xhc3RJbnB1dCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIoc3RhcnQsIGNvbnN0
cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZXN1bHRfc3Rh
cnQpOworICAgICAgICBtX291dC5zdG9yZTMyKGVuZCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVn
RXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9lbmQpOworICAgICAgICBtX291dC5z
dG9yZTMyQXM4KAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMigwKSwKKyAgICAgICAgICAg
IG1fb3V0LmFkZHJlc3MoY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2Fj
aGVkUmVzdWx0X3JlaWZpZWQpKTsKKyAgICB9CisKICAgICBMVmFsdWUgZGlkT3ZlcmZsb3dTdGFj
aygpCiAgICAgewogICAgICAgICAvLyBUaGlzIGRvZXMgYSB2ZXJ5IHNpbXBsZSBsZWFmIGZ1bmN0
aW9uIGFuYWx5c2lzLiBUaGUgaW52YXJpYW50IG9mIEZUTCBjYWxsCkBAIC02OTcwLDYgKzcxMzcs
MzkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQor
CisgICAgdm9pZCBpbml0aWFsaXplQXJyYXlFbGVtZW50cyhJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlLCBMVmFsdWUgdmVjdG9yTGVuZ3RoLCBMVmFsdWUgYnV0dGVyZmx5KQorICAgIHsKKyAgICAg
ICAgaWYgKCFoYXNEb3VibGUoaW5kZXhpbmdUeXBlKSkgeworICAgICAgICAgICAgLy8gVGhlIEdD
IGFscmVhZHkgaW5pdGlhbGl6ZWQgZXZlcnl0aGluZyB0byBKU1ZhbHVlKCkgZm9yIHVzLgorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRG91YmxlcyBtdXN0IGJl
IGluaXRpYWxpemVkIHRvIFBOYU4uCisgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMb29wID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaW5pdERvbmUgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxJbmRleCA9
IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5ndGgpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmln
aW5hbFBvaW50ZXIgPSBtX291dC5hbmNob3IoYnV0dGVyZmx5KTsKKyAgICAgICAgbV9vdXQuYnJh
bmNoKAorICAgICAgICAgICAgbV9vdXQubm90WmVybzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShp
bml0TG9vcCksIHVuc3VyZShpbml0RG9uZSkpOworICAgICAgICAKKyAgICAgICAgTEJhc2ljQmxv
Y2sgaW5pdExhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW5pdExvb3AsIGluaXREb25lKTsKKyAg
ICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0LmludDMyLCBvcmlnaW5hbEluZGV4
KTsKKyAgICAgICAgTFZhbHVlIHBvaW50ZXIgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBvcmln
aW5hbFBvaW50ZXIpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKKyAgICAg
ICAgICAgIFR5cGVkUG9pbnRlcihtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzLmF0QW55
SW5kZXgoKSwgcG9pbnRlcikpOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIG5leHRJbmRleCA9
IG1fb3V0LnN1YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOworICAgICAgICBtX291dC5hZGRJbmNv
bWluZ1RvUGhpKGluZGV4LCBtX291dC5hbmNob3IobmV4dEluZGV4KSk7CisgICAgICAgIG1fb3V0
LmFkZEluY29taW5nVG9QaGkocG9pbnRlciwgbV9vdXQuYW5jaG9yKG1fb3V0LmFkZChwb2ludGVy
LCBtX291dC5pbnRQdHJFaWdodCkpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAg
ICAgbV9vdXQubm90WmVybzMyKG5leHRJbmRleCksIHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShp
bml0RG9uZSkpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW5pdERvbmUsIGlu
aXRMYXN0TmV4dCk7CisgICAgfQogICAgIAogICAgIExWYWx1ZSBhbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZShMVmFsdWUgb2JqZWN0LCBTdHJ1Y3R1cmUqIHByZXZpb3VzU3RydWN0dXJlKQogICAgIHsK
QEAgLTkyNTcsNyArOTQ1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcHJvdmVu
OwogICAgICAgICByZXR1cm4gbV9vdXQudGVzdE5vblplcm82NChqc1ZhbHVlLCBtX3RhZ1R5cGVO
dW1iZXIpOwogICAgIH0KLSAgICAKKwogICAgIExWYWx1ZSB1bmJveERvdWJsZShMVmFsdWUganNW
YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5iaXRDYXN0KG1fb3V0LmFkZChqc1Zh
bHVlLCBtX3RhZ1R5cGVOdW1iZXIpLCBtX291dC5kb3VibGVUeXBlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3OTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsMTkgKzQxLDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7CiAKLWV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICAKLSAgICBCdXR0ZXJm
bHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAotICAgICAgICB2bSwgbnVsbHB0ciwg
MCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwgSW5kZXhpbmdIZWFkZXIo
KSwgMCk7Ci0gICAgCi0gICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTRmluYWxPYmplY3Q6OmNyZWF0
ZShleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Ci0gICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsg
Ly8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCiBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3B1
bGF0ZU9iamVjdEluT1NSKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgRXhpdFRpbWVPYmplY3RNYXRl
cmlhbGl6YXRpb24qIG1hdGVyaWFsaXphdGlvbiwKICAgICBFbmNvZGVkSlNWYWx1ZSogZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSogdmFsdWVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICsz
Nyw2IEBAIGNsYXNzIExhenlTbG93UGF0aDsKIAogZXh0ZXJuICJDIiB7CiAKLUpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKLQogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgRXhlY1N0YXRlKiwgRXhpdFRpbWVPYmplY3RN
YXRlcmlhbGl6YXRpb24qLCBFbmNvZGVkSlNWYWx1ZSopIFdURl9JTlRFUk5BTDsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVk
ZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJZYXJyLmgiCisjaW5jbHVkZSAiWWFy
ckludGVycHJldGVyLmgiCiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
cmV2aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsMTAgQEAgY2xhc3MgSlNPYmplY3QgOiBw
dWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCisgICAg
Ly8gVGhpcyBpcyBhIHN1cGVyIGRhbmdlcm91cyBtZXRob2QgZm9yIEpJVHMuIFNvbWV0aW1lcyB0
aGUgSklUcyB3aWxsIHdhbnQgdG8gY3JlYXRlIGVpdGhlciBhCisgICAgLy8gSlNGaW5hbE9iamVj
dCBvciBhIEpTQXJyYXkuIFRoaXMgaXMgdGhlIG1ldGhvZCB0aGF0IHdpbGwgZG8gdGhhdC4KKyAg
ICBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVJhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqID0gbnVsbHB0cik7CisKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKik7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNvcHlCYWNraW5nU3RvcmUo
SlNDZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pOwpAQCAtMTAzNCw2ICsxMDM4LDIwIEBA
IHByaXZhdGU6CiAKIEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKEV4ZWNTdGF0ZSopOwogCitpbmxpbmUgSlNP
YmplY3QqIEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoCisgICAgRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCit7CisgICAgSlNPYmpl
Y3QqIGZpbmFsT2JqZWN0ID0gbmV3ICgKKyAgICAgICAgTm90TnVsbCwgCisgICAgICAgIGFsbG9j
YXRlQ2VsbDxKU0ZpbmFsT2JqZWN0PigKKyAgICAgICAgICAgICpleGVjLT5oZWFwKCksCisgICAg
ICAgICAgICBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNh
cGFjaXR5KCkpCisgICAgICAgICkKKyAgICApIEpTT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVy
ZSwgYnV0dGVyZmx5KTsKKyAgICBmaW5hbE9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0o
KSk7CisgICAgcmV0dXJuIGZpbmFsT2JqZWN0OworfQorCiBpbmxpbmUgSlNGaW5hbE9iamVjdCog
SlNGaW5hbE9iamVjdDo6Y3JlYXRlKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQogewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsNiAr
MjYyLDggQEAgUmVnRXhwKiBSZWdFeHA6OmNyZWF0ZShWTSYgdm0sIGNvbnN0IFN0cgogCiB2b2lk
IFJlZ0V4cDo6Y29tcGlsZShWTSogdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsK
KyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAgIFlhcnI6
OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCAmbV9jb25zdHJ1
Y3Rpb25FcnJvcik7CiAgICAgaWYgKG1fY29uc3RydWN0aW9uRXJyb3IpIHsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5MSw3ICsyOTMsNyBAQCB2b2lkIFJlZ0V4
cDo6Y29tcGlsZShWTSogdm0sIFlhcnI6OllhcnJDCiAjZW5kaWYKIAogICAgIG1fc3RhdGUgPSBC
eXRlQ29kZTsKLSAgICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGUocGF0dGVy
biwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvcik7CisgICAgbV9yZWdFeHBCeXRlY29kZSA9IFlhcnI6
OmJ5dGVDb21waWxlKHBhdHRlcm4sICZ2bS0+bV9yZWdFeHBBbGxvY2F0b3IsICZ2bS0+bV9yZWdF
eHBBbGxvY2F0b3JMb2NrKTsKIH0KIAogaW50IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBT
dHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3Ip
CkBAIC0yOTksOCArMzAxLDIyIEBAIGludCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgU3Ry
aW5nJiAKICAgICByZXR1cm4gbWF0Y2hJbmxpbmUodm0sIHMsIHN0YXJ0T2Zmc2V0LCBvdmVjdG9y
KTsKIH0KIAorYm9vbCBSZWdFeHA6Om1hdGNoQ29uY3VycmVudGx5KAorICAgIFZNJiB2bSwgY29u
c3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgVmVjdG9y
PGludCwgMzI+JiBvdmVjdG9yKQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CisKKyAgICBpZiAoIWhhc0NvZGVGb3Iocy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4IDog
WWFycjo6Q2hhcjE2KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcG9zaXRpb24gPSBt
YXRjaCh2bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seShWTSogdm0sIFlhcnI6OllhcnJDaGFyU2l6
ZSBjaGFyU2l6ZSkKIHsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2Zs
YWdzLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiAgICAgaWYgKG1fY29uc3RydWN0aW9uRXJyb3Ip
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMzMCw3ICszNDYs
NyBAQCB2b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seShWTSogdm0sIFlhCiAjZW5kaWYKIAog
ICAgIG1fc3RhdGUgPSBCeXRlQ29kZTsKLSAgICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0
ZUNvbXBpbGUocGF0dGVybiwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvcik7CisgICAgbV9yZWdFeHBC
eXRlY29kZSA9IFlhcnI6OmJ5dGVDb21waWxlKHBhdHRlcm4sICZ2bS0+bV9yZWdFeHBBbGxvY2F0
b3IsICZ2bS0+bV9yZWdFeHBBbGxvY2F0b3JMb2NrKTsKIH0KIAogTWF0Y2hSZXN1bHQgUmVnRXhw
OjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQpCkBA
IC0zMzgsOCArMzU0LDIxIEBAIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25z
dCAKICAgICByZXR1cm4gbWF0Y2hJbmxpbmUodm0sIHMsIHN0YXJ0T2Zmc2V0KTsKIH0KIAorYm9v
bCBSZWdFeHA6Om1hdGNoQ29uY3VycmVudGx5KFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKCFoYXNNYXRjaE9ubHlDb2RlRm9y
KHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJlc3VsdCA9IG1hdGNoKHZtLCBzLCBzdGFydE9mZnNldCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVnRXhwOjpkZWxldGVDb2RlKCkKIHsKKyAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAogICAgIGlmICghaGFzQ29kZSgp
KQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IE5vdENvbXBpbGVkOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw3IEBACiAjaWZuZGVmIFJlZ0V4cF9oCiAjZGVmaW5lIFJlZ0V4cF9oCiAKKyNpbmNs
dWRlICJDb25jdXJyZW50SklUTG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJNYXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlJlZ0V4cEtleS5oIgpAQCAt
NTYsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1
cm4gbV9mbGFncyAmIEZsYWdJZ25vcmVDYXNlOyB9CiAgICAgYm9vbCBtdWx0aWxpbmUoKSBjb25z
dCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ011bHRpbGluZTsgfQogICAgIGJvb2wgc3RpY2t5KCkg
Y29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdTdGlja3k7IH0KKyAgICBib29sIGdsb2JhbE9y
U3RpY2t5KCkgY29uc3QgeyByZXR1cm4gZ2xvYmFsKCkgfHwgc3RpY2t5KCk7IH0KICAgICBib29s
IHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ1VuaWNvZGU7IH0KIAogICAg
IGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsg
fQpAQCAtNjQsOCArNjYsMTQgQEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIGVycm9yTWVzc2Fn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RydWN0aW9uRXJyb3I7IH0KIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIGludCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOworCisgICAgLy8gUmV0dXJucyBmYWxzZSBp
ZiB3ZSBjb3VsZG4ndCBydW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgYW55IHJlYXNvbi4K
KyAgICBib29sIG1hdGNoQ29uY3VycmVudGx5KFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7Cisg
ICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgTWF0Y2hSZXN1bHQgbWF0Y2goVk0mLCBjb25zdCBT
dHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCk7CiAKKyAgICBib29sIG1hdGNoQ29uY3VycmVu
dGx5KFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0
Jik7CisKICAgICAvLyBDYWxsIHRoZXNlIHZlcnNpb25zIG9mIHRoZSBtYXRjaCBmdW5jdGlvbnMg
aWYgeW91J3JlIGRlc3BlcmF0ZSBmb3IgcGVyZm9ybWFuY2UuCiAgICAgaW50IG1hdGNoSW5saW5l
KFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMy
PiYgb3ZlY3Rvcik7CiAgICAgTWF0Y2hSZXN1bHQgbWF0Y2hJbmxpbmUoVk0mLCBjb25zdCBTdHJp
bmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCk7CkBAIC03Nyw2ICs4NSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fc3RhdGUgIT0gTm90Q29tcGlsZWQ7CiAgICAgfQogCisgICAgYm9vbCBo
YXNDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSk7CisgICAgYm9vbCBoYXNNYXRjaE9ubHlDb2Rl
Rm9yKFlhcnI6OllhcnJDaGFyU2l6ZSk7CisKICAgICB2b2lkIGRlbGV0ZUNvZGUoKTsKIAogI2lm
IEVOQUJMRShSRUdFWFBfVFJBQ0lORykKQEAgLTEzMiw2ICsxNDMsNyBAQCBwcml2YXRlOgogICAg
IHVuc2lnbmVkIG1fcnRNYXRjaENhbGxDb3VudDsKICAgICB1bnNpZ25lZCBtX3J0TWF0Y2hGb3Vu
ZENvdW50OwogI2VuZGlmCisgICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwogCiAjaWYgRU5B
QkxFKFlBUlJfSklUKQogICAgIFlhcnI6OllhcnJDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVk
UmVzdWx0LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKIAorICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZMYXN0UmVnRXhwKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFJlZ0V4cENhY2hlZFJlc3VsdCwgbV9sYXN0UmVnRXhwKTsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZMYXN0SW5wdXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVn
RXhwQ2FjaGVkUmVzdWx0LCBtX2xhc3RJbnB1dCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mUmVzdWx0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENhY2hlZFJlc3Vs
dCwgbV9yZXN1bHQpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlaWZpZWQoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX3JlaWZpZWQpOyB9
CisKIHByaXZhdGU6CiAgICAgTWF0Y2hSZXN1bHQgbV9yZXN1bHQ7CiAgICAgYm9vbCBtX3JlaWZp
ZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENv
bnN0cnVjdG9yLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDgg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZFJlc3VsdCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDb25zdHJ1Y3RvciwgbV9jYWNoZWRSZXN1
bHQpOyB9CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgUmVnRXhw
UHJvdG90eXBlKiwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAkocmV2aXNpb24gMTk3OTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIllhcnIuaCIKKyNpbmNsdWRlICJZYXJySW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJZYXJySklULmgiCiAKICNkZWZpbmUgUkVHRVhQX0ZVTkNfVEVTVF9E
QVRBX0dFTiAwCkBAIC02NywyMCArNjgsMjcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYgLy8gUkVH
RVhQX0ZVTkNfVEVTVF9EQVRBX0dFTgogCi1BTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21w
aWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCitBTFdB
WVNfSU5MSU5FIGJvb2wgUmVnRXhwOjpoYXNDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFy
U2l6ZSkKIHsKICAgICBpZiAoaGFzQ29kZSgpKSB7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAg
ICAgICBpZiAobV9zdGF0ZSAhPSBKSVRDb2RlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjgp
ICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzOEJpdENvZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJy
OjpDaGFyMTYpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzMTZCaXRDb2RlKCkpKQotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZN
JiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQoreworICAgIGlmIChoYXNDb2RlRm9y
KGNoYXJTaXplKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgY29tcGlsZSgmdm0sIGNoYXJTaXpl
KTsKIH0KQEAgLTE1MiwyMSArMTYwLDI5IEBAIEFMV0FZU19JTkxJTkUgaW50IFJlZ0V4cDo6bWF0
Y2hJbmxpbmUoVk0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQg
UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hh
clNpemUgY2hhclNpemUpCitBTFdBWVNfSU5MSU5FIGJvb2wgUmVnRXhwOjpoYXNNYXRjaE9ubHlD
b2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKICAgICBpZiAoaGFzQ29kZSgp
KSB7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgICAgICBpZiAobV9zdGF0ZSAhPSBKSVRDb2Rl
KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzOEJp
dENvZGVNYXRjaE9ubHkoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyMTYpICYmIChtX3Jl
Z0V4cEpJVENvZGUuaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkpKQotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgfQogCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitBTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHko
Vk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit7CisgICAgaWYgKGhhc01hdGNo
T25seUNvZGVGb3IoY2hhclNpemUpKQorICAgICAgICByZXR1cm47CisKICAgICBjb21waWxlTWF0
Y2hPbmx5KCZ2bSwgY2hhclNpemUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAxOTc5ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgSlNWYWx1ZSBSZWdFeHBPYmplY3Q6OmV4
ZWNJbmxpbmUoRXhlY1N0YQogICAgIFN0cmluZyBpbnB1dCA9IHN0cmluZy0+dmFsdWUoZXhlYyk7
IC8vIEZJWE1FOiBIYW5kbGUgZXJyb3JzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1MTQ1CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAg
Ym9vbCBnbG9iYWxPclN0aWNreSA9IHJlZ0V4cC0+Z2xvYmFsKCkgfHwgcmVnRXhwLT5zdGlja3ko
KTsKKyAgICBib29sIGdsb2JhbE9yU3RpY2t5ID0gcmVnRXhwLT5nbG9iYWxPclN0aWNreSgpOwog
CiAgICAgdW5zaWduZWQgbGFzdEluZGV4OwogICAgIGlmIChnbG9iYWxPclN0aWNreSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAxOTc5ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNyArMjgxLDcgQEAgc3Rh
dGljIE5FVkVSX0lOTElORSBTdHJpbmcgc3Vic3RpdHV0ZUJhYwogICAgIHJldHVybiBzdWJzdGl0
dXRlZFJlcGxhY2VtZW50LnRvU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIHN1
YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBTdHJpbmdW
aWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZykKK2lubGluZSBTdHJp
bmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzSW5saW5lKGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnKQog
ewogICAgIHNpemVfdCBpID0gcmVwbGFjZW1lbnQuZmluZCgnJCcpOwogICAgIGlmIChVTkxJS0VM
WShpICE9IG5vdEZvdW5kKSkKQEAgLTI5MCw2ICsyOTAsMTEgQEAgc3RhdGljIGlubGluZSBTdHJp
bmcgc3Vic3RpdHV0ZUJhY2tyZWZlcgogICAgIHJldHVybiByZXBsYWNlbWVudDsKIH0KIAorU3Ry
aW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBT
dHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZykKK3sKKyAg
ICByZXR1cm4gc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzSW5saW5lKHJlcGxhY2VtZW50LCBzb3Vy
Y2UsIG92ZWN0b3IsIHJlZyk7Cit9CisKIHN0cnVjdCBTdHJpbmdSYW5nZSB7CiAgICAgU3RyaW5n
UmFuZ2UoaW50IHBvcywgaW50IGxlbikKICAgICAgICAgOiBwb3NpdGlvbihwb3MpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAkocmV2
aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBPYmplY3RQcm90b3R5cGU7CitjbGFzcyBSZWdFeHA7CiBjbGFzcyBSZWdFeHBP
YmplY3Q7CiAKIGNsYXNzIFN0cmluZ1Byb3RvdHlwZSA6IHB1YmxpYyBTdHJpbmdPYmplY3QgewpA
QCAtNjIsNiArNjMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1Jl
cGxhY2VSZWdFeHBTdHJpbmcoCiAgICAgRXhlY1N0YXRlKiwgSlNTdHJpbmcqIHRoaXNWYWx1ZSwg
UmVnRXhwT2JqZWN0KiBzZWFyY2hWYWx1ZSwgSlNTdHJpbmcqIHJlcGxhY2VWYWx1ZSk7CiAKK1N0
cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwg
U3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcpOworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFN0cmluZ1Byb3RvdHlwZV9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZm5kZWYgVk1faAogI2RlZmluZSBWTV9oCiAKKyNpbmNsdWRlICJDb25jdXJyZW50SklU
TG9jay5oIgogI2luY2x1ZGUgIkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKICNpbmNsdWRlICJEYXRl
SW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKQEAgLTU0
MSw2ICs1NDIsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFR5cGVkQXJyYXlDb250cm9sbGVyPiBt
X3R5cGVkQXJyYXlDb250cm9sbGVyOwogICAgIFJlZ0V4cENhY2hlKiBtX3JlZ0V4cENhY2hlOwog
ICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2NhdG9yOworICAgIENvbmN1cnJl
bnRKSVRMb2NrIG1fcmVnRXhwQWxsb2NhdG9yTG9jazsKIAogI2lmIEVOQUJMRShSRUdFWFBfVFJB
Q0lORykKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZ0V4cCo+IFJUVHJhY2VMaXN0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMt
Zm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVj
LWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlv
biBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykvLmV4ZWMoImJhciIpOworfQorCitub0lu
bGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIg
cmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAt
ZXhlYy1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykv
LmV4ZWMoImZvbyIpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdC5s
ZW5ndGggIT0gNCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworICAgIGlmIChyZXN1bHRbMF0gIT0gImZvbyIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFk
IHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzFdICE9ICJmIikKKyAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1bHRbMl0g
IT0gIm8iKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cisg
ICAgaWYgKHJlc3VsdFszXSAhPSAibyIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3Vs
dDogIiArIHJlc3VsdDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5n
LWZhaWwuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMSBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiAvKGYpKG8pKG8pLy50
ZXN0KCJiYXIiKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlmIChyZXN1bHQgIT0g
ZmFsc2UpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gZm9vKCkgewor
ICAgIHJldHVybiAvKGYpKG8pKG8pLy50ZXN0KCJmb28iKTsKK30KKworbm9JbmxpbmUoZm9vKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZv
bygpOworICAgIGlmIChyZXN1bHQgIT0gdHJ1ZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
UmVndWxhckV4cHJlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcAkocmV2aXNpb24gMTk3OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsMyBAQAotCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBD
b2xsYWJvcmEgTHRkLgpAQCAtMzAsNiArMjksNyBAQAogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNz
aW9uLmgiCiAKICNpbmNsdWRlICJZYXJyLmgiCisjaW5jbHVkZSAiWWFyckludGVycHJldGVyLmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJB
bGxvY2F0b3IuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaAkocmV2aXNpb24g
MTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw2IEBACiAjaWZuZGVmIFlhcnJfaAogI2RlZmluZSBZYXJyX2gKIAot
I2luY2x1ZGUgIllhcnJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CkBAIC02Myw2ICs2Miw4IEBAIGVudW0g
WWFyckNoYXJTaXplIHsKICAgICBDaGFyMTYKIH07CiAKK3N0cnVjdCBCeXRlY29kZVBhdHRlcm47
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpZYXJyCiAKICNlbmRpZiAvLyBZYXJyX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkocmV2
aXNpb24gMTk3OTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNyw2ICsxNTE3LDkgQEAgcHVibGljOgogICAg
ICAgICBpZiAoIWlucHV0LmlzQXZhaWxhYmxlSW5wdXQoMCkpCiAgICAgICAgICAgICByZXR1cm4g
b2Zmc2V0Tm9NYXRjaDsKIAorICAgICAgICBpZiAocGF0dGVybi0+bV9sb2NrKQorICAgICAgICAg
ICAgcGF0dGVybi0+bV9sb2NrLT5sb2NrKCk7CisgICAgICAgIAogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcGF0dGVybi0+bV9ib2R5LT5tX251bVN1YnBhdHRlcm5zICsgMTsgKytp
KQogICAgICAgICAgICAgb3V0cHV0W2kgPDwgMV0gPSBvZmZzZXROb01hdGNoOwogCkBAIC0xNTM2
LDYgKzE1MzksMTAgQEAgcHVibGljOgogICAgICAgICBwYXR0ZXJuLT5tX2FsbG9jYXRvci0+c3Rv
cEFsbG9jYXRvcigpOwogCiAgICAgICAgIEFTU0VSVCgocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gp
ID09IChvdXRwdXRbMF0gIT0gb2Zmc2V0Tm9NYXRjaCkpOworCisgICAgICAgIGlmIChwYXR0ZXJu
LT5tX2xvY2spCisgICAgICAgICAgICBwYXR0ZXJuLT5tX2xvY2stPnVubG9jaygpOworICAgICAg
ICAKICAgICAgICAgcmV0dXJuIG91dHB1dFswXTsKICAgICB9CiAKQEAgLTE1NzYsMTMgKzE1ODMs
MTMgQEAgcHVibGljOgogICAgICAgICBtX2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID0gMDsKICAg
ICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBjb21waWxlKEJ1bXBQ
b2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IpCisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
UGF0dGVybj4gY29tcGlsZShCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yLCBDb25jdXJy
ZW50SklUTG9jayogbG9jaykKICAgICB7CiAgICAgICAgIHJlZ2V4QmVnaW4obV9wYXR0ZXJuLm1f
bnVtU3VicGF0dGVybnMsIG1fcGF0dGVybi5tX2JvZHktPm1fY2FsbEZyYW1lU2l6ZSwgbV9wYXR0
ZXJuLm1fYm9keS0+bV9hbHRlcm5hdGl2ZXNbMF0tPm9uY2VUaHJvdWdoKCkpOwogICAgICAgICBl
bWl0RGlzanVuY3Rpb24obV9wYXR0ZXJuLm1fYm9keSk7CiAgICAgICAgIHJlZ2V4RW5kKCk7CiAK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3Zl
KG1fYm9keURpc2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxs
b2NhdG9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVQYXR0ZXJu
PihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0
dGVybiwgYWxsb2NhdG9yLCBsb2NrKTsKICAgICB9CiAKICAgICB2b2lkIGNoZWNrSW5wdXQodW5z
aWduZWQgY291bnQpCkBAIC0yMDI3LDkgKzIwMzQsOSBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPj4gbV9hbGxQYXJlbnRoZXNlc0luZm87CiB9
OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0
dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3N0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiBwYXR0ZXJu
LCBCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yLCBDb25jdXJyZW50SklUTG9jayogbG9j
aykKIHsKLSAgICByZXR1cm4gQnl0ZUNvbXBpbGVyKHBhdHRlcm4pLmNvbXBpbGUoYWxsb2NhdG9y
KTsKKyAgICByZXR1cm4gQnl0ZUNvbXBpbGVyKHBhdHRlcm4pLmNvbXBpbGUoYWxsb2NhdG9yLCBs
b2NrKTsKIH0KIAogdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiogYnl0ZWNvZGUs
IGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCogb3V0cHV0KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgJKHJl
dmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnBy
ZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFlhcnJJbnRl
cnByZXRlcl9oCiAjZGVmaW5lIFlhcnJJbnRlcnByZXRlcl9oCiAKKyNpbmNsdWRlICJDb25jdXJy
ZW50SklUTG9jay5oIgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCiAKIG5hbWVzcGFjZSBXVEYg
ewpAQCAtMzM3LDEwICszMzgsMTEgQEAgcHVibGljOgogc3RydWN0IEJ5dGVjb2RlUGF0dGVybiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQnl0ZWNvZGVQYXR0
ZXJuKHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+IGJvZHksIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPj4mIHBhcmVudGhlc2VzSW5mb1RvQWRvcHQsIFlhcnJQ
YXR0ZXJuJiBwYXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yKQorICAgIEJ5
dGVjb2RlUGF0dGVybihzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPiBib2R5LCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4+JiBwYXJlbnRoZXNlc0luZm9Ub0Fk
b3B0LCBZYXJyUGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgQ29uY3VycmVudEpJVExvY2sqIGxvY2spCiAgICAgICAgIDogbV9ib2R5KFdURk1vdmUoYm9k
eSkpCiAgICAgICAgICwgbV9mbGFncyhwYXR0ZXJuLm1fZmxhZ3MpCiAgICAgICAgICwgbV9hbGxv
Y2F0b3IoYWxsb2NhdG9yKQorICAgICAgICAsIG1fbG9jayhsb2NrKQogICAgIHsKICAgICAgICAg
bV9ib2R5LT50ZXJtcy5zaHJpbmtUb0ZpdCgpOwogCkBAIC0zNjYsNiArMzY4LDcgQEAgcHVibGlj
OgogICAgIC8vIEVhY2ggQnl0ZWNvZGVQYXR0ZXJuIGlzIGFzc29jaWF0ZWQgd2l0aCBhIFJlZ0V4
cCwgZWFjaCBSZWdFeHAgaXMgYXNzb2NpYXRlZAogICAgIC8vIHdpdGggYSBWTS4gIENhY2hlIGEg
cG9pbnRlciB0byBvdXQgVk0ncyBtX3JlZ0V4cEFsbG9jYXRvci4KICAgICBCdW1wUG9pbnRlckFs
bG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgQ29uY3VycmVudEpJVExvY2sqIG1fbG9jazsKIAog
ICAgIENoYXJhY3RlckNsYXNzKiBuZXdsaW5lQ2hhcmFjdGVyQ2xhc3M7CiAgICAgQ2hhcmFjdGVy
Q2xhc3MqIHdvcmRjaGFyQ2hhcmFjdGVyQ2xhc3M7CkBAIC0zNzUsNyArMzc4LDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPj4gbV91c2VyQ2hh
cmFjdGVyQ2xhc3NlczsKIH07CiAKLUpTX0VYUE9SVF9QUklWQVRFIHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiwgQnVtcFBvaW50ZXJBbGxv
Y2F0b3IqKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZVBhdHRl
cm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqLCBDb25j
dXJyZW50SklUTG9jayogPSBudWxscHRyKTsKIEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGlu
dGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQqIG91dHB1dCk7CiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0
ZXJuKiwgY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCogb3V0cHV0KTsKIHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4q
LCBjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkKiBvdXRwdXQpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDMtMTAgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBERkcgYW5kIEZUTCBzaG91
bGQgY29uc3RhbnQtZm9sZCBSZWdFeHBFeGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYWtlIGV4ZWN1dGVJbnNlcnRpb25zKCkgcmV0dXJuIHRoZSBh
bW91bnQgYnkgd2hpY2ggdGhlIHZlY3RvciBpbmNyZWFzZWQgaW4gc2l6ZS4gVGhpcyBpcyBhCisg
ICAgICAgIGNvbnZlbmllbnQgZmVhdHVyZSB0aGF0IEkgdXNlIGluIERGRzo6SW5zZXJ0aW9uU2V0
LgorCisgICAgICAgICogd3RmL0luc2VydGlvbi5oOgorICAgICAgICAoV1RGOjpleGVjdXRlSW5z
ZXJ0aW9ucyk6CisKIDIwMTYtMDMtMTAgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBXT0ZGMgpJbmRleDogU291cmNlL1dU
Ri93dGYvSW5zZXJ0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSW5zZXJ0aW9u
LmgJKHJldmlzaW9uIDE5Nzk4MSkKKysrIFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDE0ICs1NSwxNSBAQCBwcml2YXRlOgogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVGFyZ2V0VmVjdG9yVHlwZSwgdHlwZW5hbWUgSW5zZXJ0aW9uVmVjdG9y
VHlwZT4KLXZvaWQgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlwZSYgdGFyZ2V0LCBJ
bnNlcnRpb25WZWN0b3JUeXBlJiBpbnNlcnRpb25zKQorc2l6ZV90IGV4ZWN1dGVJbnNlcnRpb25z
KFRhcmdldFZlY3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0aW9uVmVjdG9yVHlwZSYgaW5zZXJ0aW9u
cykKIHsKLSAgICBpZiAoIWluc2VydGlvbnMuc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAg
dGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUoKSArIGluc2VydGlvbnMuc2l6ZSgpKTsKKyAgICBzaXpl
X3QgbnVtSW5zZXJ0aW9ucyA9IGluc2VydGlvbnMuc2l6ZSgpOworICAgIGlmICghbnVtSW5zZXJ0
aW9ucykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUoKSAr
IG51bUluc2VydGlvbnMpOwogICAgIHNpemVfdCBsYXN0SW5kZXggPSB0YXJnZXQuc2l6ZSgpOwog
ICAgIHNpemVfdCBvcmlnaW5hbFRhcmdldFNpemUgPSB0YXJnZXQuc2l6ZSgpOwotICAgIGZvciAo
c2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gaW5zZXJ0aW9ucy5zaXplKCk7IGluZGV4SW5JbnNl
cnRpb25zLS07KSB7CisgICAgZm9yIChzaXplX3QgaW5kZXhJbkluc2VydGlvbnMgPSBudW1JbnNl
cnRpb25zOyBpbmRleEluSW5zZXJ0aW9ucy0tOykgewogICAgICAgICBBU1NFUlQoIWluZGV4SW5J
bnNlcnRpb25zIHx8IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4KCkgPj0gaW5z
ZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9ucyAtIDFdLmluZGV4KCkpOwogICAgICAgICBBU1NFUlRf
VU5VU0VEKG9yaWdpbmFsVGFyZ2V0U2l6ZSwgaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10u
aW5kZXgoKSA8IG9yaWdpbmFsVGFyZ2V0U2l6ZSk7CiAgICAgICAgIHNpemVfdCBmaXJzdEluZGV4
ID0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSArIGluZGV4SW5JbnNlcnRp
b25zOwpAQCAtNzMsNiArNzQsNyBAQCB2b2lkIGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3Rv
clR5cGUmCiAgICAgICAgIGxhc3RJbmRleCA9IGZpcnN0SW5kZXg7CiAgICAgfQogICAgIGluc2Vy
dGlvbnMucmVzaXplKDApOworICAgIHJldHVybiBudW1JbnNlcnRpb25zOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzk4MSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAzLTEwICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIGFuZCBGVEwgc2hvdWxk
IGNvbnN0YW50LWZvbGQgUmVnRXhwRXhlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhw
LWV4ZWMtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qczogQWRkZWQuCisgICAgICAgICog
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5q
czogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4
cC10ZXN0LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJl
Z2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdy
ZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1m
b2xkaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUt
cmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
anMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbDogQWRk
ZWQuCisKIDIwMTYtMDMtMTAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFRlc3QgZ2FyZGVuaW5nIGFmdGVyIHIxOTc5MzMKSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4
cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1m
b2xkaW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlv
biB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xk
aW5nLWZhaWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
LWZhaWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVn
cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4
cC1leGVjLWZvbGRpbmctZmFpbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdy
ZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1y
ZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1l
eGVjLWZvbGRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9z
aW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5n
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBs
ZS1yZWdleHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcmVnZXhw
LXRlc3QtZm9sZGluZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBl
eGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRl
c3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3Qt
Zm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbAorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGlu
Zy1mYWlsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBs
ZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9z
aW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZv
bGRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1y
ZWdleHAtdGVzdC1mb2xkaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxl
LXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsr
aSkKKyAgICAgICAgL2Zvby8uZXhlYygiYmFyIik7Cit9KSgpOworCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUt
cmVnZXhwLWV4ZWMtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICAvZm9vLy5leGVjKCJmb28iKTsKK30pKCk7CisK
SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACiso
ZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAg
ICAgIC9mb28vLnRlc3QoImJhciIpOworfSkoKTsKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDA7ICsraSkKKyAgICAgICAgL2Zvby8udGVzdCgiZm9vIik7Cit9KSgpOworCg==
</data>
<flag name="review"
          id="298294"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274169</attachid>
            <date>2016-03-15 20:52:09 -0700</date>
            <delta_ts>2016-03-19 18:23:11 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>128322</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4MjU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MSBA
QAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMsIFJlZ0V4cFRlc3Qs
IGFuZCBTdHJpbmdSZXBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKwor
ICAgICAgICBUaGlzIGVuYWJsZXMgY29uc3RhbnQtZm9sZGluZyBvZiBSZWdFeHBFeGVjLCBSZWdF
eHBUZXN0LCBhbmQgU3RyaW5nUmVwbGFjZS4KKworICAgICAgICBJdCdzIG5vdyBwb3NzaWJsZSB0
byBydW4gWWFyciBvbiB0aGUgSklUIHRocmVhZHMuIFNpbmNlIHByZXZpb3VzIHdvcmsgb24gY29u
c3RhbnQtZm9sZGluZworICAgICAgICBzdHJpbmdzIGdhdmUgdGhlIERGRyBhbiBBUEkgZm9yIHJl
YXNvbmluZyBhYm91dCBKU1N0cmluZyBjb25zdGFudHMgaW4gdGVybXMgb2YKKyAgICAgICAgSklU
LXRocmVhZC1sb2NhbCBXVEY6OlN0cmluZ3MsIGl0J3Mgbm93IHN1cGVyIGVhc3kgdG8ganVzdCBw
YXNzIHN0cmluZ3MgdG8gWWFyciBhbmQgYnVpbGQgSVIKKyAgICAgICAgYmFzZWQgb24gdGhlIHJl
c3VsdHMuCisKKyAgICAgICAgQnV0IFJlZ0V4cEV4ZWMgaXMgaGFyZDogdGhlIGZvbGRlZCB2ZXJz
aW9uIHN0aWxsIG11c3QgYWxsb2NhdGUgYSBSZWdFeHBNYXRjaGVzQXJyYXkuIFdlIG11c3QKKyAg
ICAgICAgdXNlIHRoZSBzYW1lIFN0cnVjdHVyZSB0aGF0IHRoZSBjb2RlIHdvdWxkIGhhdmUgdXNl
ZCBvciBlbHNlIHdlJ2xsIHBvbGx1dGUgdGhlIHByb2dyYW0ncworICAgICAgICBpbmxpbmUgY2Fj
aGVzLiBBbHNvLCBSZWdFeHBNYXRjaGVzQXJyYXkuaHxjcHAgd2lsbCBhbGxvY2F0ZSB0aGUgYXJy
YXkgYW5kIGl0cyBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVzIGluIG9uZSBnbyAtIHdlIGRvbid0
IHdhbnQgdG8gbG9zZSB0aGF0IG9wdGltaXphdGlvbi4gU28sIHRoaXMgcGF0Y2ggZW5hYmxlcwor
ICAgICAgICBNYXRlcmlhbGl6ZU5ld09iamVjdCB0byBhbGxvY2F0ZSBvYmplY3RzIG9yIGFycmF5
cyB3aXRoIGFueSBudW1iZXIgb2YgaW5kZXhlZCBvciBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVz
LiBQcmV2aW91c2x5IGl0IGNvdWxkIG9ubHkgaGFuZGxlIG9iamVjdHMgKGJ1dCBub3QgYXJyYXlz
KSBhbmQgbmFtZWQgcHJvcGVydGllcworICAgICAgICAoYnV0IG5vdCBpbmRleGVkIG9uZXMpLgor
CisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGEgZmV3IG1pbm9yIHRoaW5ncyBmb3Igc2V0dGluZyB0
aGUgUmVnRXhwQ29uc3RydWN0b3IgY2FjaGVkIHJlc3VsdC4KKworICAgICAgICBUaGlzIGlzIGFi
b3V0IGEgMnggc3BlZWQtdXAgb24gbWljcm9iZW5jaG1hcmtzIHdoZW4gd2UgZm9sZCBhIG1hdGNo
IHN1Y2Nlc3MgYW5kIGFib3V0IGEKKyAgICAgICAgOHggc3BlZWQtdXAgd2hlbiB3ZSBmb2xkIGEg
bWF0Y2ggZmFpbHVyZS4gSXQncyBhIDEwJSBzcGVlZC11cCBvbiBPY3RhbmUvcmVnZXhwLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcv
REZHSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Omlu
c2VydFNsb3cpOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6ZXhlY3V0ZSk6Cisg
ICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5oOgorICAgICAgICAoSlNDOjpERkc6Okluc2Vy
dGlvblNldDo6aW5zZXJ0Q2hlY2spOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnRyeUdldFN0cmluZyk6CisgICAgICAg
ICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U3RhY2tBY2Nlc3NEYXRh
OjpmbHVzaGVkQXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE6OmR1bXApOgorICAgICAgICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVl
OjpkdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhOjpvbmVXYXlTaW1pbGFyaXR5U2NvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6Ok9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OnNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQaGFudG9tUHJvcGVydHlWYWx1ZTo6UGhhbnRvbVByb3BlcnR5VmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAg
ICAgICAqIGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6flNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVMYXp5SlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlQ29tbXV0YXRpdml0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6ZXhlY3V0ZUlu
c2VydGlvblNldCk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRl
Ojp2YWxpZGF0ZUNQUyk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVD
cmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpkaWRPdmVyZmxvd1N0YWNrKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3RvcmFnZUZvclRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppbml0aWFsaXplQXJyYXlFbGVt
ZW50cyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNO
b3RDZWxsT3JNaXNjKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dW5i
b3hEb3VibGUpOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpTQzo6RlRM
OjpvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBm
dGwvRlRMT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaCk6CisgICAgICAg
IChKU0M6OlJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OmNvbXBpbGVNYXRjaE9ubHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlbGV0ZUNvZGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNo
ZWRSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxh
c3RSZWdFeHApOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFz
dElucHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3Vs
dCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZWlmaWVkKToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlJl
Z0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzQ29kZUZvcik6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjptYXRjaElubGluZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzTWF0Y2hPbmx5
Q29kZUZvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hP
bmx5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlc1Ns
b3cpOgorICAgICAgICAoSlNDOjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNJbmxpbmUpOgorICAg
ICAgICAoSlNDOjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpTdHJp
bmdSYW5nZTo6U3RyaW5nUmFuZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAg
ICAoZm9vKToKKyAgICAgICAgKiB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcDoKKyAgICAgICAg
KiB5YXJyL1lhcnIuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHA6CisgICAg
ICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjppbnRlcnByZXQpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpCeXRlQ29tcGlsZXI6OkJ5dGVDb21waWxlcik6CisgICAgICAgIChKU0M6OllhcnI6OkJ5
dGVDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6
Y2hlY2tJbnB1dCk6CisgICAgICAgIChKU0M6OllhcnI6OmJ5dGVDb21waWxlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6aW50ZXJwcmV0KToKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5o
OgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlY29kZVBhdHRlcm46OkJ5dGVjb2RlUGF0dGVybik6
CisKIDIwMTYtMDMtMTUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMTk4MDc3KTogZ2VuZXJhdGVkIE9iamVjdGl2ZS1DIHByb3RvY29sIG9iamVj
dCBnZXR0ZXJzIGxlYWsgdGhlaXIgd3JhcHBlcnMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg2
LDYgKzQ4Niw3IEBACiAJCTBGN0MxMUFEMUJDMzg2MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzExQUMx
QkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJl
Z0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi87IH07CiAJ
CTBGN0MzOUZEMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQzFDOEY2NTk1
MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovOyB9OworCQkwRjdDMzlGRjFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmgg
Ki87IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAyM0U5MTYxMzgzMjMw
MEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5j
cHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjQwLDYgKzI2
NDEsNyBAQAogCQkwRjdDMTFBQzFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weUJhcnJpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGlu
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyog
UmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0Mz
OUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGggPSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjUzLDYgKzYyNTUsNyBAQAogCQkJ
CTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
LmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3Bw
ICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmggKi8s
CisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovLAogCQkJCUE3
RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNl
LmNwcCAqLywKIAkJCQlBN0Q4OUNFRjE3QTBCOENDMDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmls
aXR5QW5hbHlzaXNQaGFzZS5oICovLAogCQkJCTBGRDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBE
RkdPU1JFbnRyeS5jcHAgKi8sCkBAIC03NDU0LDYgKzc0NTcsNyBAQAogCQkJCTBGNjRFQUYzMUM0
RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVB
NzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRl
ci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5l
cmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywK
KwkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2Nv
bF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2
MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rp
c3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHJldmlzaW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1Miw2
ICsxOTUyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNh
c2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MTYsNiArOTE2LDEw
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgd3Jp
dGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oUmVn
RXhwT2JqZWN0TGFzdEluZGV4TG9jLCBSZWdFeHBPYmplY3RfbGFzdEluZGV4LCBub2RlLT5jaGls
ZDEoKSksIExhenlOb2RlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpOwogICAgICAgICByZXR1cm47
CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKKyAgICAgICAgd3JpdGUoUmVn
RXhwU3RhdGUpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0RnJvbUFy
Z3VtZW50czogewogICAgICAgICBBYnN0cmFjdEhlYXAgaGVhcChEaXJlY3RBcmd1bWVudHNQcm9w
ZXJ0aWVzLCBub2RlLT5jYXB0dXJlZEFyZ3VtZW50c09mZnNldCgpLm9mZnNldCgpKTsKQEAgLTEw
NzksNyArMTA4Myw5IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUK
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UK
ICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsK
ICAgICAgICAgICAgIHJlYWQoUmVnRXhwU3RhdGUpOworICAgICAgICAgICAgcmVhZChSZWdFeHBP
YmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAg
ICAgICAgIHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIHJlYWQoV29ybGQpOwpAQCAtMTA5MSw3ICsxMDk3LDkgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICAgICAgJiYg
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQogICAgICAgICAgICAg
JiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAg
cmVhZChSZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5k
ZXgpOwogICAgICAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAgICAgICAgd3JpdGUo
UmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsNyBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgog
ICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgIGNhc2UgU2V0UmVnRXhwT2Jq
ZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgIGNh
c2UgR2V0R2xvYmFsVmFyOgogICAgIGNhc2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAg
IGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTksNiAr
MTI5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgICAgICBj
YXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAg
ICAgICAgICAgLy8gVGhlc2UgYXJlIGp1c3Qgbm9kZXMgdGhhdCB3ZSBkb24ndCBjdXJyZW50bHkg
ZXhwZWN0IHRvIHNlZSBkdXJpbmcgZml4dXAuCiAgICAgICAgICAgICAvLyBJZiB3ZSBldmVyIHdh
bnRlZCB0byBpbnNlcnQgdGhlbSBwcmlvciB0byBmaXh1cCwgdGhlbiB3ZSBqdXN0IGhhdmUgdG8g
Y3JlYXRlCiAgICAgICAgICAgICAvLyBmaXh1cCBydWxlcyBmb3IgdGhlbS4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1
LDYgKzMxNSw4IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAg
ICAgICAgICAgIG91dC5wcmludChhbm90aGVyQ29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KGZy
ZWV6ZShtX2NvZGVCbG9jay0+Y29uc3RhbnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKVtp
XSksIGNvbnRleHQpKTsKICAgICAgICAgb3V0LnByaW50KCJdIik7CiAgICAgfQorICAgIGlmIChu
b2RlLT5oYXNMYXp5SlNWYWx1ZSgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5vZGUtPmxh
enlKU1ZhbHVlKCkpOwogICAgIGlmIChub2RlLT5oYXNJbmRleGluZ1R5cGUoKSkKICAgICAgICAg
b3V0LnByaW50KGNvbW1hLCBJbmRleGluZ1R5cGVEdW1wKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7
CiAgICAgaWYgKG5vZGUtPmhhc1R5cGVkQXJyYXlUeXBlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAxOTgyNTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDkgKzQ1LDkgQEAgdm9pZCBJbnNlcnRpb25TZXQ6Omluc2VydFNsb3coY29u
c3QgSW5zZQogICAgIG1faW5zZXJ0aW9ucy5pbnNlcnQoMCwgaW5zZXJ0aW9uKTsKIH0KIAotdm9p
ZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCitzaXplX3QgSW5zZXJ0
aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQogewotICAgIGV4ZWN1dGVJbnNlcnRp
b25zKCpibG9jaywgbV9pbnNlcnRpb25zKTsKKyAgICByZXR1cm4gZXhlY3V0ZUluc2VydGlvbnMo
KmJsb2NrLCBtX2luc2VydGlvbnMpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHJldmlz
aW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KICAgICAKLSAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayog
YmxvY2spOworICAgIHNpemVfdCBleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGluc2VydFNsb3coY29uc3QgSW5zZXJ0aW9uJik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDE5ODI1NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMSw2ICsxMzEsNyBAQCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgY2FzZSBQdXRCeU9mZnNldDoKICAgICBjYXNl
IFB1dENsb3N1cmVWYXI6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkocmV2aXNpb24gMTk4MjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJE
RkdOb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHTm9kZVR5cGUuaCIKICNpbmNsdWRlICJERkdP
YmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgiCiAjaW5j
bHVkZSAiREZHVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRl
ICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKQEAgLTIxOSwyMCArMjIwLDYgQEAgc3RydWN0IFN0
YWNrQWNjZXNzRGF0YSB7CiAgICAgRmx1c2hlZEF0IGZsdXNoZWRBdCgpIHsgcmV0dXJuIEZsdXNo
ZWRBdChmb3JtYXQsIG1hY2hpbmVMb2NhbCk7IH0KIH07CiAKLS8vIFRoaXMgdHlwZSB1c2VkIGlu
IHBhc3NpbmcgYW4gaW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7Ci0vLyBk
aXN0aW5ndWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGludG8g
YSBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKLS8vIGEgY29uc3RhbnQgaW5kZXgsIGFyZ3Vt
ZW50LCBvciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCi1zdHJ1Y3QgT3BJbmZvIHsKLSAgICBP
cEluZm8oKSA6IG1fdmFsdWUoMCkgeyB9Ci0gICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3QgdmFs
dWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAgZXhw
bGljaXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0
cl90Pih2YWx1ZSkpIHsgfQotI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKLSAgICBl
eHBsaWNpdCBPcEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludHB0
cl90Pih2YWx1ZSkpIHsgfQotI2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVl
KSA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0gICAg
dWludHB0cl90IG1fdmFsdWU7Ci19OwotCiAvLyA9PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJl
cHJlc2VudHMgYSBzaW5nbGUgb3BlcmF0aW9uIGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxOTgyNTcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIyMyw2ICsyMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEdldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFj
cm8oU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1Zh
ckFyZ3MpIFwKICAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhDaGVja05vdEVtcHR5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tC
YWRDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAJKHJldmlzaW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzQsNyAr
MTk3NCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQ
TG9jOiB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxs
b2NhdGlvbi5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVy
dGllcy5hcHBlbmQoUGhhbnRvbVByb3BlcnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlw
dG9yKCkpOwogICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ss
IGxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29u
dGFpbnModmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0No
aWxkcmVuLmFwcGVuZChtX2JvdHRvbSk7CkBAIC0yMDI0LDcgKzIwMjQsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICAgICAgY2FzZSBDbG9zdXJlVmFyUExvYzogewogICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQobG9jYXRpb24uYmFzZSgpID09IGFsbG9jYXRpb24uaWRlbnRpZmllcigpKTsK
LSAgICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Qcm9w
ZXJ0eVZhbHVlKGxvY2F0aW9uLmluZm8oKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1f
cHJvcGVydGllcy5hcHBlbmQobG9jYXRpb24uZGVzY3JpcHRvcigpKTsKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogdmFsdWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ib3R0b20p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09i
amVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiwzMiArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCi12b2lkIFBoYW50b21Qcm9wZXJ0eVZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KCJpZCIsIG1faWRlbnRpZmllck51bWJlcik7Ci19Ci0K
IHZvaWQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAogewogICAgIG91dC5wcmludCgiWyIsIGxpc3REdW1wKG1fcHJvcGVydGllcyksICJdIik7
CiB9CiAKLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6Om9uZVdheVNpbWlsYXJpdHlT
Y29yZSgKLSAgICBjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikgY29uc3QK
LXsKLSAgICB1bnNpZ25lZCBudW1IaXRzID0gMDsKLSAgICBmb3IgKFBoYW50b21Qcm9wZXJ0eVZh
bHVlIHZhbHVlIDogbV9wcm9wZXJ0aWVzKSB7Ci0gICAgICAgIGlmIChvdGhlci5tX3Byb3BlcnRp
ZXMuY29udGFpbnModmFsdWUpKQotICAgICAgICAgICAgbnVtSGl0cysrOwotICAgIH0KLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG51bUhpdHMpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1f
cHJvcGVydGllcy5zaXplKCkpOwotfQotCi1mbG9hdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
OjpzaW1pbGFyaXR5U2NvcmUoY29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgb3RoZXIp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bWluKG9uZVdheVNpbWlsYXJpdHlTY29yZShvdGhl
ciksIG90aGVyLm9uZVdheVNpbWlsYXJpdHlTY29yZSgqdGhpcykpOwotfQotCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0
aW9uRGF0YS5oCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdQcm9tb3RlZEhlYXBM
b2NhdGlvbi5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CkBAIC0zNSwzOCArMzYsMTEgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1zdHJ1Y3QgUGhhbnRvbVByb3BlcnR5
VmFsdWUgewotICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlKCkKLSAgICAgICAgOiBtX2lkZW50aWZp
ZXJOdW1iZXIoVUlOVF9NQVgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBQaGFudG9tUHJvcGVy
dHlWYWx1ZSh1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKQotICAgICAgICA6IG1faWRlbnRpZmll
ck51bWJlcihpZGVudGlmaWVyTnVtYmVyKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWdu
ZWQgbV9pZGVudGlmaWVyTnVtYmVyOwotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQ
aGFudG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9pZGVudGlmaWVyTnVtYmVyID09IG90aGVyLm1faWRlbnRpZmllck51bWJlcjsKLSAgICB9Ci0g
ICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci19OwotCiBzdHJ1Y3QgT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSB7CiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgbWVhbmluZyBv
ZiB0aGUgcGFzc2VkIG5vZGVzLgotICAgIFZlY3RvcjxQaGFudG9tUHJvcGVydHlWYWx1ZT4gbV9w
cm9wZXJ0aWVzOworICAgIFZlY3RvcjxQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcj4gbV9wcm9w
ZXJ0aWVzOwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwotICAgIAot
ICAgIC8vIFRoZSBmcmFjdGlvbiBvZiBteSBwcm9wZXJ0aWVzIHRoYXQgdGhlIG90aGVyIGRhdGEg
aGFzLgotICAgIGZsb2F0IG9uZVdheVNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gVGhlIG1pbmltdW0gb2YgdGhlIHR3
byBwb3NzaWJsZSBvbmUtd2F5IHNjb3Jlcy4KLSAgICBmbG9hdCBzaW1pbGFyaXR5U2NvcmUoY29u
c3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYpIGNvbnN0OwogfTsKIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHT3BJbmZvX2gKKyNkZWZpbmUgREZHT3BJbmZv
X2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShERkdfSklU
KQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKy8vIFRoaXMgdHlwZSB1c2Vk
IGluIHBhc3NpbmcgYW4gaW1tZWRpYXRlIGFyZ3VtZW50IHRvIE5vZGUgY29uc3RydWN0b3I7Cisv
LyBkaXN0aW5ndWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGluZGV4IGlu
dG8gYSBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKKy8vIGEgY29uc3RhbnQgaW5kZXgsIGFy
Z3VtZW50LCBvciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCitzdHJ1Y3QgT3BJbmZvIHsKKyAg
ICBPcEluZm8oKSA6IG1fdmFsdWUoMCkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKGludDMyX3Qg
dmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9CisgICAg
ZXhwbGljaXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90Pih2YWx1ZSkpIHsgfQorI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2NCkKKyAg
ICBleHBsaWNpdCBPcEluZm8oc2l6ZV90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90Pih2YWx1ZSkpIHsgfQorI2VuZGlmCisgICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZh
bHVlKSA6IG1fdmFsdWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Cisg
ICAgdWludHB0cl90IG1fdmFsdWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisK
KyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR09wSW5mb19oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMTk4MjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTM4NCw2ICsxMzg0LDYwIEBAIHNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlZmF1bHRIYXMKICAgICByZXR1cm4gMDsKIH0KIAorY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdSYXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseTsKKyAgICBpZiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
IHx8IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7Cisg
ICAgICAgIEluZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICAgICAgaGVhZGVyLnNldFZlY3Rvckxl
bmd0aChsZW5ndGgpOworICAgICAgICBoZWFkZXIuc2V0UHVibGljTGVuZ3RoKDApOworICAgICAg
ICAKKyAgICAgICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgICAgICB2
bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAorICAgICAgICAg
ICAgaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSksIGhlYWRl
ciwKKyAgICAgICAgICAgIGxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOworICAgIH0g
ZWxzZQorICAgICAgICBidXR0ZXJmbHkgPSBudWxscHRyOworCisgICAgSlNPYmplY3QqIHJlc3Vs
dCA9IEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkp
OworICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkg
aXMgaW4gdG8tc3BhY2UuCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4ocmVzdWx0KTsK
K30KKworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJm
bHkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICAKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAor
ICAgICAgICB2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBm
YWxzZSwgSW5kZXhpbmdIZWFkZXIoKSwgMCk7CisgICAgCisgICAgSlNPYmplY3QqIHJlc3VsdCA9
IEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwor
ICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkgaXMg
aW4gdG8tc3BhY2UuCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRW
ZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgSW5kZXhpbmdIZWFkZXIgaGVhZGVy
OworICAgIGhlYWRlci5zZXRWZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAgICBoZWFkZXIuc2V0UHVi
bGljTGVuZ3RoKDApOworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVh
dGUoCisgICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCksIHRydWUsIGhlYWRlciwKKyAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGxlbmd0
aCk7CisKKyAgICAvLyBQYXJhZG94aWNhbGx5IHRoaXMgbWF5IGFsbG9jYXRlIGEgSlNBcnJheS4g
VGhhdCdzIHRvdGFsbHkgY29vbC4KKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNy
ZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5i
dXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJv
Y2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqIGV4ZWMpIAogewogICAgIGV4ZWMtPnZt
KCkudHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiTG9n
IEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lkZSBERkcuIikpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5ODI1NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUs
NiArMTU1LDEwIEBAIGludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG8KIAog
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0
ZSosIEpTQ2VsbCogdmFsdWUsIEpTQ2VsbCogcHJvdG8pOwogCitjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld1Jhd09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBX
VEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0
aEJ1dHRlcmZseShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGlu
Z0hlYWRlckFuZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBs
ZW5ndGgpIFdURl9JTlRFUk5BTDsKKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nl
c3NUeXBlUHJvZmlsZXJMb2dERkcoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJ
VF9PUEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3Rh
dGUqLCB2b2lkKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY3LDYgKzY2
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgICAgIGNhc2UgR2V0
UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJ
bmRleDoKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIGNh
c2UgTGF6eUpTQ29uc3RhbnQ6IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2
ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAg
ICAgICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhl
YXBMb2NhdGlvbi5jcHAJKHJldmlzaW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0
LDYgKzc0LDEwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQcm8KICAg
ICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOgogICAgICAgICBvdXQucHJpbnQoIk5hbWVkUHJvcGVy
dHlQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5UExv
YzoKKyAgICAgICAgb3V0LnByaW50KCJJbmRleGVkUHJvcGVydHlQTG9jIik7CisgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgY2FzZSBBcmd1bWVudFBMb2M6CiAgICAgICAgIG91dC5wcmlu
dCgiQXJndW1lbnRQTG9jIik7CkBAIC0xMDIsNiArMTA2LDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBQcm8KICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOgogICAgICAg
ICBvdXQucHJpbnQoIkNsb3N1cmVWYXJQTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNh
c2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJQdWJsaWNMZW5ndGhQTG9j
Iik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAg
ICAgb3V0LnByaW50KCJWZWN0b3JMZW5ndGhQTG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJKHJl
dmlzaW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRI
ZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyNSArMjgsNDEgQEAKIAogI2lm
IEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkRGR0Vk
Z2UuaCIKKyNpbmNsdWRlICJERkdOb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiREZHT3BJbmZvLmgi
CisjaW5jbHVkZSA8d3RmL0hhc2hUYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3N0cnVjdCBOb2RlOworCisv
LyBQcm9tb3RlZCBsb2NhdGlvbnMgYXJlIGxpa2UgaGVhcCBsb2NhdGlvbnMgYnV0IGFyZSBtZWFu
dCB0byBiZSBtb3JlIHByZWNpc2UuIEEgaGVhcCBsb2NhdGlvbiBpcworLy8gYXBwbGljYWJsZSB0
byBDU0Ugc2NlbmFyaW9zLCB3aGVyZSBpdCBtYWtlcyBzZW5zZSB0byBzcGVhayBvZiBhIGxvY2F0
aW9uIHZlcnkgYWJzdHJhY3RseS4gQQorLy8gcHJvbW90ZWQgaGVhcCBsb2NhdGlvbiBpcyBmb3Ig
Y2FzZXMgd2hlcmUgd2Ugc3BlYWsgb2YgYSBzcGVjaWZpYyBvYmplY3QgYW5kIHRoZSBjb21waWxl
ciBrbm93cworLy8gdGhpcyBvYmplY3QncyBpZGVudGl0eSAtIGZvciBleGFtcGxlLCB0aGUgb2Jq
ZWN0IGFsbG9jYXRpb24gaGFzIGJlZW4gZWxpbWluYXRlZCBhbmQgd2UgdHVybmVkIHRoZQorLy8g
ZmllbGRzIGludG8gbG9jYWwgdmFyaWFibGVzLiBCZWNhdXNlIHRoZXNlIHR3byBjYXNlcyBoYXZl
IHN1YnRseSBkaWZmZXJlbnQgbmVlZHMsIHdlIHVzZSBzdWJ0bHkKKy8vIGRpZmZlcmVudCBzdHJ1
Y3R1cmVzLiBPbmUgb2YgdGhlIHJlYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpcyB0aGF0
IHByb21vdGVkIGxvY2F0aW9ucyBjYW4gYmUKKy8vIHNwb2tlbiBvZiB1c2luZyBlaXRoZXIgYSBk
ZXNjcmlwdG9yIHdoaWNoIGRvZXMgbm90IHJlZmVyIHRvIGFueSBOb2RlKidzIG9yIHdpdGggYSBo
ZWFwIGxvY2F0aW9uLAorLy8gd2hpY2ggaXMgYSBkZXNjcmlwdG9yIHdpdGggYSBOb2RlKiBiYXNl
LgorCiBlbnVtIFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBJbnZhbGlkUHJvbW90ZWRMb2Nh
dGlvbktpbmQsCiAgICAgCi0gICAgU3RydWN0dXJlUExvYywKKyAgICBBY3RpdmF0aW9uU2NvcGVQ
TG9jLAogICAgIEFjdGl2YXRpb25TeW1ib2xUYWJsZVBMb2MsCi0gICAgTmFtZWRQcm9wZXJ0eVBM
b2MsCi0gICAgQXJndW1lbnRQTG9jLAogICAgIEFyZ3VtZW50Q291bnRQTG9jLAorICAgIEFyZ3Vt
ZW50UExvYywKICAgICBBcmd1bWVudHNDYWxsZWVQTG9jLAotCi0gICAgRnVuY3Rpb25FeGVjdXRh
YmxlUExvYywKKyAgICBDbG9zdXJlVmFyUExvYywKICAgICBGdW5jdGlvbkFjdGl2YXRpb25QTG9j
LAotICAgIEFjdGl2YXRpb25TY29wZVBMb2MsCi0gICAgQ2xvc3VyZVZhclBMb2MKKyAgICBGdW5j
dGlvbkV4ZWN1dGFibGVQTG9jLAorICAgIEluZGV4ZWRQcm9wZXJ0eVBMb2MsCisgICAgTmFtZWRQ
cm9wZXJ0eVBMb2MsCisgICAgUHVibGljTGVuZ3RoUExvYywKKyAgICBTdHJ1Y3R1cmVQTG9jLAor
ICAgIFZlY3Rvckxlbmd0aFBMb2MKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNjcmlw
dG9yIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDYgKzMzNSw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6
CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBP
YmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
cmV2aXNpb24gMTk4MjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0Nyw2ICszMDQ3LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogeworICAg
ICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFTU0VS
VChub2RlLT5hcnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CiAgICAgICAgIApAQCAtMzQ5Miw3ICsz
NDk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRl
SlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOwor
ICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBz
dG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBh
bmQgc3RvcmFnZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJh
eSBhbmQgdGhlIEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzcyOCw3ICszNzMzLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdl
R1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShy
ZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAg
ICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlw
ZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChub2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUp
IHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNv
bnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTc2LDcgKzQ5ODEsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBub1Jl
c3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgICAgICAKKyAgICBjYXNl
IE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmpl
Y3Qobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC01MDAz
LDcgKzUwMTEsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKLSAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2Jq
ZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUHV0
U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE5ODI1NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxNjIsNiArMzE2MiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2Fj
aGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1c2g6
IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzSlNBcnJheSgpKTsKQEAgLTM1
MzMsNyArMzUzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAg
ICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRB
bGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1l
bnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIHN0cnVj
dHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgb25lIHdheSBvciBhbm90aGVyLCByZXN1
bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2ludGVycyB0bwogICAgICAgICAgICAgLy8gdGhl
IEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJlc3BlY3RpdmVseS4KQEAgLTM3NjksNyArMzc3
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcg
c3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpT
QXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50
cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRl
eGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIGluZGV4
aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0LmNv
ZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwpAQCAtNDk2
MCw2ICs0OTY1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
KyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOworICAgICAgICBicmVh
azsKKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcElu
TG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJhbmNo
QWRkMzIoCkBAIC01MDUwLDcgKzUwNTksNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBQdXRI
aW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0YWNrOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE5ODI1
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiCiAj
aW5jbHVkZSAiV3JpdGVCYXJyaWVyQnVmZmVyLmgiCkBAIC03NywyNyArNzgsNTQgQEAgU3BlY3Vs
YXRpdmVKSVQ6On5TcGVjdWxhdGl2ZUpJVCgpCiB7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cykKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1
cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
KSB8fCBoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzQ29udGlndW91
cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5n
VHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBoYXNJbmRleGluZ0hl
YWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CisKKyAgICB1bnNpZ25l
ZCBpbmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKTsKKyAgICB1bnNp
Z25lZCBvdXRPZkxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsK
ICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaDIodGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwog
ICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwotICAgIAotICAgIHVuc2ln
bmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgbnVtRWxlbWVudHMp
OworCisgICAgQVNTRVJUKHZlY3Rvckxlbmd0aCA+PSBudW1FbGVtZW50cyk7CisgICAgdmVjdG9y
TGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCB2ZWN0b3JMZW5ndGgpOwogICAgIAog
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgc2xvd0Nhc2Vz
LmFwcGVuZCgKLSAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKFRydXN0ZWRJbW0zMih2
ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwg
c3RvcmFnZUdQUikpOwotICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3Ro
ICogc2l6ZW9mKEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7Ci0gICAgZW1pdEFsbG9jYXRlSlNPYmpl
Y3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VH
UFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwotICAgIAotICAgIG1faml0
LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7Ci0gICAg
bV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7
Ci0gICAgCisKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVy
KQorICAgICAgICBzaXplICs9IHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSArIHNpemVv
ZihJbmRleGluZ0hlYWRlcik7CisgICAgc2l6ZSArPSBvdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVv
ZihKU1ZhbHVlKTsKKworICAgIGlmIChzaXplKSB7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3RlZEltbTMyKHNpemUp
LCBzdG9yYWdlR1BSKSk7CisgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAg
ICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFs
dWUpKSwgc3RvcmFnZUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faml0LmFkZFB0
cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpOworICAg
IH0gZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoMCksIHN0b3JhZ2VHUFIp
OworCisgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlv
blNpemUoaW5saW5lQ2FwYWNpdHkpOworICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yUHRy
ID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Io
YWxsb2NhdGlvblNpemUpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3JQ
dHIpLCBzY3JhdGNoR1BSKTsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIHNj
cmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaDJH
UFIsIHNsb3dDYXNlcyk7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAgIG1f
aml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCksIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwor
CisgICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRoYXQgYWxzbyBsb2FkcyBvdXQgdGhlIHN0b3Jh
Z2UgcG9pbnRlciwgYW5kIHRoYXQncworICAgIC8vIHdoYXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMgbWUuIEl0J3MgYSBsb3QKKyAgICAvLyBv
ZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4gOi0vCisgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3
UmF3T2JqZWN0LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCisgICAgICAgIHN0cnVjdHVyZSwgdmVj
dG9yTGVuZ3RoKSk7CisKICAgICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkpICYmIG51bUVsZW1lbnRzIDwgdmVjdG9yTGVuZ3RoKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBO
YU4pKSwgc2NyYXRjaEdQUik7CkBAIC0xMTMsMTIgKzE0MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkKICNlbmRpZgogICAgIH0KICAgICAKLSAgICAvLyBJIHdh
bnQgYSBzbG93IHBhdGggdGhhdCBhbHNvIGxvYWRzIG91dCB0aGUgc3RvcmFnZSBwb2ludGVyLCBh
bmQgdGhhdCdzCi0gICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JTbG93
UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAotICAgIC8vIG9mIHdvcmsgZm9yIGEg
dmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8KLSAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yPigKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXpl
LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCi0gICAgICAgIHN0cnVjdHVyZSwgbnVtRWxlbWVudHMp
KTsKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1
c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQ
UiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUs
IEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMpCkBAIC03NjI5LDYgKzc2NTMsMTI1
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMYXp5SlNDb25zdGEKICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSogbm9kZSkKK3sKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZVNldCgpWzBdOworICAgIEFTU0VSVChtX2ppdC5ncmFw
aCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+
KCkgPT0gc3RydWN0dXJlKTsKKworICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEg
PSBub2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisgICAgICAgIAorICAgIEluZGV4
aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOworICAgIGJv
b2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUp
OworICAgIGludDMyX3QgcHVibGljTGVuZ3RoID0gMDsKKyAgICBpbnQzMl90IHZlY3Rvckxlbmd0
aCA9IDA7CisKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBF
ZGdlIGVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAg
ICAgICAgIHN3aXRjaCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAg
ICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoID0g
ZWRnZS0+YXNJbnQzMigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9IGVkZ2Ut
PmFzSW50MzIoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzdG9y
YWdlKHRoaXMpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BS
UmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOworICAgIAorICAgIGVtaXRBbGxvY2F0ZVJh
d09iamVjdChyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgMCwgdmVjdG9yTGVuZ3Ro
KTsKKyAgICAKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3Rl
ZEltbTMyKHB1YmxpY0xlbmd0aCksCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHN0b3Jh
Z2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOworCisgICAgZm9yICh1
bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIEVk
Z2UgZWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpOworICAgICAg
ICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRp
ZXNbaV07CisgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAgICAgY2Fz
ZSBJbmRleGVkUHJvcGVydHlQTG9jOiB7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBlZGdlKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlVmFsdWUoCisgICAgICAgICAg
ICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogZGVzY3JpcHRvci5p
bmZvKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBO
YW1lZFByb3BlcnR5UExvYzogeworICAgICAgICAgICAgU3RyaW5nSW1wbCogdWlkID0gbV9qaXQu
Z3JhcGgoKS5pZGVudGlmaWVycygpW2Rlc2NyaXB0b3IuaW5mbygpXTsKKyAgICAgICAgICAgIGZv
ciAoUHJvcGVydHlNYXBFbnRyeSBlbnRyeSA6IHN0cnVjdHVyZS0+Z2V0UHJvcGVydGllc0NvbmN1
cnJlbnRseSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHVpZCAhPSBlbnRyeS5rZXkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgZWRnZSk7CisgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBp
c0lubGluZU9mZnNldChlbnRyeS5vZmZzZXQpID8gcmVzdWx0R1BSIDogc3RvcmFnZUdQUjsKKyAg
ICAgICAgICAgICAgICBtX2ppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgICAgICB2YWx1
ZS5qc1ZhbHVlUmVncygpLAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShlbnRyeS5vZmZzZXQpKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChOb2RlKiBub2RlKQoreworICAgIEVkZ2Ug
Y29uc3RydWN0b3JFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKTsKKyAg
ICBFZGdlIHJlZ0V4cEVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpOwor
ICAgIEVkZ2Ugc3RyaW5nRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMik7
CisgICAgRWRnZSBzdGFydEVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMp
OworICAgIEVkZ2UgZW5kRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgNCk7
CisKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjb25zdHJ1Y3Rvcih0aGlzLCBjb25zdHJ1Y3Rv
ckVkZ2UpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJlZ0V4cCh0aGlzLCByZWdFeHBFZGdl
KTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHJpbmcodGhpcywgc3RyaW5nRWRnZSk7Cisg
ICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHN0YXJ0KHRoaXMsIHN0YXJ0RWRnZSk7CisgICAgU3Bl
Y3VsYXRlSW50MzJPcGVyYW5kIGVuZCh0aGlzLCBlbmRFZGdlKTsKKworICAgIEdQUlJlZyBjb25z
dHJ1Y3RvckdQUiA9IGNvbnN0cnVjdG9yLmdwcigpOworICAgIEdQUlJlZyByZWdFeHBHUFIgPSBy
ZWdFeHAuZ3ByKCk7CisgICAgR1BSUmVnIHN0cmluZ0dQUiA9IHN0cmluZy5ncHIoKTsKKyAgICBH
UFJSZWcgc3RhcnRHUFIgPSBzdGFydC5ncHIoKTsKKyAgICBHUFJSZWcgZW5kR1BSID0gZW5kLmdw
cigpOworCisgICAgcHRyZGlmZl90IG9mZnNldCA9IFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRP
ZkNhY2hlZFJlc3VsdCgpOworCisgICAgbV9qaXQuc3RvcmVQdHIoCisgICAgICAgIHJlZ0V4cEdQ
UiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY29uc3RydWN0b3JHUFIsIG9mZnNldCAr
IFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkpKTsKKyAgICBtX2ppdC5z
dG9yZVB0cigKKyAgICAgICAgc3RyaW5nR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxh
c3RJbnB1dCgpKSk7CisgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgc3RhcnRHUFIsCisgICAg
ICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKAorICAgICAgICAgICAgY29uc3RydWN0b3JHUFIsCisg
ICAgICAgICAgICBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkg
KyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIHN0YXJ0KSkpOworICAgIG1faml0LnN0b3Jl
MzIoCisgICAgICAgIGVuZEdQUiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoCisgICAg
ICAgICAgICBjb25zdHJ1Y3RvckdQUiwKKyAgICAgICAgICAgIG9mZnNldCArIFJlZ0V4cENhY2hl
ZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwg
ZW5kKSkpOworICAgIG1faml0LnN0b3JlOCgKKyAgICAgICAgVHJ1c3RlZEltbTMyKDApLAorICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsgUmVnRXhw
Q2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZpZWQoKSkpOworCisgICAgbm9SZXN1bHQobm9kZSk7
Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxOTgy
NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0MDEsNiArMjQwMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBp
bGVHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNldFJl
Z0V4cE9iamVjdExhc3RJbmRleChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTGF6eUpTQ29uc3Rh
bnQoTm9kZSopOworICAgIHZvaWQgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KE5vZGUqKTsK
KyAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQoTm9kZSopOwogICAgIAog
ICAgIHZvaWQgbW92ZVRydWVUbyhHUFJSZWcpOwogICAgIHZvaWQgbW92ZUZhbHNlVG8oR1BSUmVn
KTsKQEAgLTI1MTYsNyArMjUxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc3RvcmVQdHIo
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
KTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTQXJyYXkoR1BSUmVnIHJlc3VsdEdQ
UiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKTsK
KyAgICB2b2lkIGVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1
cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZl
Y3Rvckxlbmd0aCk7CiAgICAgCiAgICAgdm9pZCBlbWl0R2V0TGVuZ3RoKElubGluZUNhbGxGcmFt
ZSosIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7CiAgICAgdm9p
ZCBlbWl0R2V0TGVuZ3RoKENvZGVPcmlnaW4sIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVk
ZVRoaXMgPSBmYWxzZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk4
MjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MywxMSArMjUzLDE5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgICAgICAgICBjYXNlIFB1dEJ5SWRGbHVz
aDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgICAgIGNhc2UgUHV0
U3RydWN0dXJlOiB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIAorCisgICAgICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogewor
ICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgMCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIFB1dFRvQXJndW1lbnRz
OgogICAgICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CkBAIC0yNjYsMTMg
KzI3NCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIFB1dEJ5SWQ6Ci0gICAgICAgICAg
ICBjYXNlIFB1dEJ5SWRGbHVzaDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDogewot
ICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgY2FzZSBQdXRC
eU9mZnNldDogewogICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxk
MigpLCBtX25vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMTk4MjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDEx
ICszNiwxNSBAQAogI2luY2x1ZGUgIkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCiAj
aW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cmluZ1By
b3RvdHlwZS5oIgogI2luY2x1ZGUgPGNzdGRsaWI+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgIAogcHVibGljOgog
ICAgIFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQogICAgICAgICA6IFBoYXNl
KGdyYXBoLCAic3RyZW5ndGggcmVkdWN0aW9uIikKQEAgLTMzMSwxMSArMzM1LDM2OCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGlmICghIXN0cmluZykgewogICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNOdW1iZXIoc3RyaW5nLmxlbmd0
aCgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6
IHsKKyAgICAgICAgICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0gbV9ub2RlLT5jaGlsZDEoKS0+
ZHluYW1pY0Nhc3RDb25zdGFudDxKU09iamVjdCo+KCkpIHsKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwgb2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7Cisg
ICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBSZWdFeHBFeGVjOgorICAgICAgICBjYXNlIFJlZ0V4cFRlc3Q6IHsKKyAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX25vZGUtPmNoaWxkMSgpLT5keW5hbWlj
Q2FzdENvbnN0YW50PEpTR2xvYmFsT2JqZWN0Kj4oKTsKKyAgICAgICAgICAgIGlmICghZ2xvYmFs
T2JqZWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIG5vIGdsb2JhbCBvYmplY3QuXG4iKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGds
b2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIGJh
ZCB0aW1lLlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIE5vZGUqIHJlZ0V4cE9iamVjdE5vZGUgPSBtX25vZGUtPmNoaWxkMigpLm5vZGUo
KTsKKyAgICAgICAgICAgIFJlZ0V4cCogcmVnRXhwOworICAgICAgICAgICAgaWYgKFJlZ0V4cE9i
amVjdCogcmVnRXhwT2JqZWN0ID0gcmVnRXhwT2JqZWN0Tm9kZS0+ZHluYW1pY0Nhc3RDb25zdGFu
dDxSZWdFeHBPYmplY3QqPigpKQorICAgICAgICAgICAgICAgIHJlZ0V4cCA9IHJlZ0V4cE9iamVj
dC0+cmVnRXhwKCk7CisgICAgICAgICAgICBlbHNlIGlmIChyZWdFeHBPYmplY3ROb2RlLT5vcCgp
ID09IE5ld1JlZ2V4cCkKKyAgICAgICAgICAgICAgICByZWdFeHAgPSBjb2RlQmxvY2soKS0+cmVn
ZXhwKHJlZ0V4cE9iamVjdE5vZGUtPnJlZ2V4cEluZGV4KCkpOworICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSByZWdleHAgaXMgdW5rbm93bi5cbiIpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBOb2RlKiBzdHJp
bmdOb2RlID0gbV9ub2RlLT5jaGlsZDMoKS5ub2RlKCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIE5PVEU6IFRoaXMgbW9zdGx5IGFscmVhZHkgcHJvdGVjdHMgdXMgZnJvbSBoYXZpbmcg
dGhlIGNvbXBpbGVyIGV4ZWN1dGUgYSByZWdleHAKKyAgICAgICAgICAgIC8vIG9wZXJhdGlvbiBv
biBhIGdpbm9ybW91cyBzdHJpbmcgYnkgcHJldmVudGluZyB1cyBmcm9tIGdldHRpbmcgb3VyIGhh
bmRzIG9uIGdpbm9ybW91cworICAgICAgICAgICAgLy8gc3RyaW5ncyBpbiB0aGUgZmlyc3QgcGxh
Y2UuCisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nID0gbV9ub2RlLT5jaGlsZDMoKS0+dHJ5R2V0
U3RyaW5nKG1fZ3JhcGgpOworICAgICAgICAgICAgaWYgKCFzdHJpbmcpIHsKKyAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVw
IGJlY2F1c2UgdGhlIHN0cmluZyBpcyB1bmtub3duLlxuIik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiByZWdFeHBGcm96
ZW5WYWx1ZSA9IG1fZ3JhcGguZnJlZXplKHJlZ0V4cCk7CisKKyAgICAgICAgICAgIC8vIFJlZnVz
ZSB0byBkbyB0aGluZ3Mgd2l0aCByZWd1bGFyIGV4cHJlc3Npb25zIHRoYXQgaGF2ZSBhIGdpbm9y
bW91cyBudW1iZXIgb2YKKyAgICAgICAgICAgIC8vIHN1YnBhdHRlcm5zLgorICAgICAgICAgICAg
dW5zaWduZWQgZ2lub3Jtb3VzTnVtYmVyT2ZTdWJQYXR0ZXJucyA9IDEwMDA7CisgICAgICAgICAg
ICBpZiAocmVnRXhwLT5udW1TdWJwYXR0ZXJucygpID4gZ2lub3Jtb3VzTnVtYmVyT2ZTdWJQYXR0
ZXJucykgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSBvZiBwYXR0ZXJuIGxpbWl0LlxuIik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVuc2lnbmVk
IGxhc3RJbmRleDsKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgb25seSB3b3JrIGlmIHdlIGNhbiBwcm92ZSB3
aGF0IHRoZSB2YWx1ZSBvZiBsYXN0SW5kZXggaXMuIFRvIGRvIHRoaXMKKyAgICAgICAgICAgICAg
ICAvLyBzYWZlbHksIHdlIG5lZWQgdG8gZXhlY3V0ZSB0aGUgaW5zZXJ0aW9uIHNldCBzbyB0aGF0
IHdlIHNlZSBhbnkgcHJldmlvdXMgc3RyZW5ndGgKKyAgICAgICAgICAgICAgICAvLyByZWR1Y3Rp
b25zLiBUaGlzIGlzIG5lZWRlZCBmb3Igc291bmRuZXNzIHNpbmNlIG90aGVyd2lzZSB0aGUgZWZm
ZWN0ZnVsbmVzcyBvZiBhbnkKKyAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBzdHJlbmd0aCBy
ZWR1Y3Rpb25zIHdvdWxkIGJlIGludmlzaWJsZSB0byB1cy4KKyAgICAgICAgICAgICAgICBleGVj
dXRlSW5zZXJ0aW9uU2V0KCk7CisgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gVUlOVF9NQVg7
CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBvdGhlck5vZGVJbmRleCA9IG1fbm9kZUlu
ZGV4OyBvdGhlck5vZGVJbmRleC0tOykgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBvdGhl
ck5vZGUgPSBtX2Jsb2NrLT5hdChvdGhlck5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChvdGhlck5vZGUgPT0gcmVnRXhwT2JqZWN0Tm9kZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbGFzdEluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChvdGhlck5vZGUtPm9w
KCkgPT0gU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAm
JiBvdGhlck5vZGUtPmNoaWxkMSgpID09IHJlZ0V4cE9iamVjdE5vZGUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQyKCktPmlzSW50MzJDb25zdGFudCgpCisgICAg
ICAgICAgICAgICAgICAgICAgICAmJiBvdGhlck5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCkgPj0g
MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG90aGVyTm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpZiAod3JpdGVzT3ZlcmxhcChtX2dyYXBoLCBvdGhlck5vZGUsIFJlZ0V4cE9iamVjdF9sYXN0
SW5kZXgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChsYXN0SW5kZXggPT0gVUlOVF9NQVgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJHaXZpbmcgdXAgYmVjYXVzZSB0aGUgbGFzdCBpbmRleCBpcyBub3Qga25vd24uXG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gMDsKKworICAgICAgICAgICAgbV9n
cmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShnbG9iYWxPYmplY3QtPmhhdmluZ0FCYWRUaW1l
V2F0Y2hwb2ludCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpOworICAg
ICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgIT0gQXJyYXlXaXRoQ29udGln
dW91cykgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZnVydGhlciBwcm90ZWN0aW9uIGFn
YWluc3QgYSByYWNlIHdpdGggaGF2ZUFCYWRUaW1lLgorICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSB0aGUg
c3RydWN0dXJlIGhhcyB0aGUgd3JvbmcgaW5kZXhpbmcgdHlwZS5cbiIpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0
cnVjdHVyZShzdHJ1Y3R1cmUpOworCisgICAgICAgICAgICBSZWdFeHBDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCk7CisgICAgICAgICAg
ICBGcm96ZW5WYWx1ZSogY29uc3RydWN0b3JGcm96ZW5WYWx1ZSA9IG1fZ3JhcGguZnJlZXplKGNv
bnN0cnVjdG9yKTsKKworICAgICAgICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OworICAgICAgICAg
ICAgVmVjdG9yPGludCwgMzI+IG92ZWN0b3I7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGNh
bGwgdGhlIGtpbmQgb2YgbWF0Y2ggZnVuY3Rpb24gdGhhdCB0aGUgbWFpbiB0aHJlYWQgd291bGQg
aGF2ZSBjYWxsZWQuCisgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHdlIG1pZ2h0IG5vdCBoYXZl
IHRoZSBkZXNpcmVkIFlhcnIgY29kZSBjb21waWxlZCwgYW5kIHRoZSBtYXRjaCB3aWxsIGZhaWwu
CisgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFJlZ0V4cEV4ZWMpIHsKKyAgICAgICAg
ICAgICAgICBpbnQgcG9zaXRpb247CisgICAgICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNo
Q29uY3VycmVudGx5KHZtKCksIHN0cmluZywgbGFzdEluZGV4LCBwb3NpdGlvbiwgb3ZlY3Rvcikp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSBtYXRjaCBmYWlsZWQuXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHJlc3VsdC5zdGFydCA9IHBvc2l0aW9uOworICAgICAgICAgICAgICAgIHJlc3VsdC5lbmQgPSBv
dmVjdG9yWzFdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJl
Z0V4cC0+bWF0Y2hDb25jdXJyZW50bHkodm0oKSwgc3RyaW5nLCBsYXN0SW5kZXgsIHJlc3VsdCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSBtYXRjaCBmYWlsZWQuXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBXZSd2ZSBjb25zdGFudC1mb2xkZWQgdGhlIHJlZ2V4cC4gTm93IHdl
J3JlIGNvbW1pdHRlZCB0byByZXBsYWNpbmcgUmVnRXhwRXhlYy9UZXN0LgorCisgICAgICAgICAg
ICBtX2NoYW5nZWQgPSB0cnVlOworCisgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG1f
bm9kZS0+b3JpZ2luOworCisgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgQ2hlY2ssIG9yaWdpbiwgbV9u
b2RlLT5jaGlsZHJlbi5qdXN0Q2hlY2tzKCkpOworCisgICAgICAgICAgICBpZiAobV9ub2RlLT5v
cCgpID09IFJlZ0V4cEV4ZWMpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7CisgICAg
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCogc3RydWN0dXJlU2V0ID0gbV9ncmFwaC5hZGRT
dHJ1Y3R1cmVTZXQoc3RydWN0dXJlKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUg
YW4gYXJyYXkgbW9kZWxpbmcgdGhlIEpTIGFycmF5IHRoYXQgd2Ugd2lsbCB0cnkgdG8gYWxsb2Nh
dGUuIFRoaXMgaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gYmFzaWNhbGx5IGNyZWF0ZVJlZ0V4
cE1hdGNoZXNBcnJheSBidXQgb3ZlciBDKysgc3RyaW5ncyBpbnN0ZWFkIG9mIEpTU3RyaW5ncy4K
KyAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0QXJyYXk7CisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5LmFwcGVuZChzdHJpbmcuc3Vic3RyaW5nKHJlc3VsdC5z
dGFydCwgcmVzdWx0LmVuZCAtIHJlc3VsdC5zdGFydCkpOworICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKTsgKytpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBvdmVjdG9yWzIgKiBpXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5LmFwcGVuZChzdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBvdmVj
dG9yWzIgKiBpICsgMV0gLSBzdGFydCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5LmFwcGVuZChTdHJpbmcoKSk7
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBw
dWJsaWNMZW5ndGggPSByZXN1bHRBcnJheS5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0VfVkVDVE9SX0xFTiwgcHVibGljTGVu
Z3RoKTsKKworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaW5kZXhVSUQg
PSB2bSgpLnByb3BlcnR5TmFtZXMtPmluZGV4LmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
VW5pcXVlZFN0cmluZ0ltcGwqIGlucHV0VUlEID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5pbnB1dC5p
bXBsKCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5kZXggPSBtX2dyYXBo
LmlkZW50aWZpZXJzKCkuZW5zdXJlKGluZGV4VUlEKTsKKyAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW5wdXRJbmRleCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaW5wdXRVSUQp
OworCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBoLm1f
dmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9u
b2RlSW5kZXgsIG9yaWdpbiwgc3RydWN0dXJlLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAg
ICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9vYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhLmFkZCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihwdWJsaWNMZW5n
dGgpLCBLbm93bkludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVy
dGllcy5hcHBlbmQoUHVibGljTGVuZ3RoUExvYyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHZlY3Rvckxl
bmd0aCksIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9w
ZXJ0aWVzLmFwcGVuZChWZWN0b3JMZW5ndGhQTG9jKTsKKworICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0LnN0YXJ0KSwgVW50
eXBlZFVzZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5k
KAorICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoTmFt
ZWRQcm9wZXJ0eVBMb2MsIGluZGV4SW5kZXgpKTsKKworICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uoc3RyaW5nTm9kZSwgVW50eXBlZFVzZSkp
OworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKAorICAgICAg
ICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoTmFtZWRQcm9wZXJ0
eVBMb2MsIGlucHV0SW5kZXgpKTsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIG1hdGVyaWFs
aXplU3RyaW5nID0gWyZdIChjb25zdCBTdHJpbmcmIHN0cmluZykgLT4gTm9kZSogeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dHJpbmcuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCB2bSgpLnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIExh
enlKU1ZhbHVlIHZhbHVlID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCBzdHJpbmcp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBM
YXp5SlNDb25zdGFudCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5m
byhtX2dyYXBoLm1fbGF6eUpTVmFsdWVzLmFkZCh2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVz
dWx0QXJyYXkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChOb2Rl
KiBub2RlID0gbWF0ZXJpYWxpemVTdHJpbmcocmVzdWx0QXJyYXlbaV0pKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKG5v
ZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3By
b3BlcnRpZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3Rl
ZExvY2F0aW9uRGVzY3JpcHRvcihJbmRleGVkUHJvcGVydHlQTG9jLCBpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHROb2RlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjQXJyYXksIE5v
ZGU6OlZhckFyZywgTWF0ZXJpYWxpemVOZXdPYmplY3QsIG9yaWdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIE9wSW5mbyhzdHJ1Y3R1cmVTZXQpLCBPcEluZm8oZGF0YSksIGZpcnN0Q2hpbGQs
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgp
IC0gZmlyc3RDaGlsZCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1f
bm9kZS0+Y29udmVydFRvSWRlbnRpdHlPbihyZXN1bHROb2RlKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChtX25v
ZGUsIGpzTnVsbCgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fZ3Jh
cGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc0Jvb2xlYW4oISFyZXN1bHQpKTsKKworICAg
ICAgICAgICAgLy8gV2hldGhlciBpdCdzIEV4ZWMgb3IgVGVzdCwgd2UgbmVlZCB0byB0ZWxsIHRo
ZSBjb25zdHJ1Y3RvciBhbmQgUmVnRXhwT2JqZWN0IHdoYXQncyB1cC4KKyAgICAgICAgICAgIC8v
IEJlY2F1c2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4IG1heSBleGl0IGFuZCBpdCBjbG9iYmVy
cyBleGl0IHN0YXRlLCB3ZSBkbyB0aGF0CisgICAgICAgICAgICAvLyBmaXJzdC4KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsT3JTdGlja3koKSkgeworICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAg
IG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBvcmlnaW4s
CisgICAgICAgICAgICAgICAgICAgIEVkZ2UocmVnRXhwT2JqZWN0Tm9kZSwgUmVnRXhwT2JqZWN0
VXNlKSwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRG
b3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051
bWJlcihyZXN1bHQgPyByZXN1bHQuZW5kIDogMCksIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBmaXJzdENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUo
KTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGNvbnN0cnVjdG9yRnJv
emVuVmFsdWUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJB
cmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgs
IG9yaWdpbiwgcmVnRXhwRnJvemVuVmFsdWUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShzdHJpbmdOb2RlLCBLbm93
bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBw
ZW5kKAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZv
clVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVt
YmVyKHJlc3VsdC5zdGFydCksIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
bm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHJlc3VsdC5lbmQpLCBLbm93bkludDMyVXNlKSk7
CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBOb2RlOjpWYXJBcmcsIFJlY29yZFJlZ0V4
cENhY2hlZFJlc3VsdCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oKSwgT3BJ
bmZvKCksIGZpcnN0Q2hpbGQsIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBmaXJz
dENoaWxkKTsKKworICAgICAgICAgICAgICAgIG9yaWdpbiA9IG9yaWdpbi53aXRoSW52YWxpZEV4
aXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9ub2RlLT5v
cmlnaW4gPSBvcmlnaW47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgU3RyaW5nUmVwbGFjZTogeworICAgICAgICAgICAgTm9kZSogc3RyaW5nTm9kZSA9IG1f
bm9kZS0+Y2hpbGQxKCkubm9kZSgpOworICAgICAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmlu
Z05vZGUtPnRyeUdldFN0cmluZyhtX2dyYXBoKTsKKyAgICAgICAgICAgIGlmICghc3RyaW5nKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlKiBy
ZWdFeHBPYmplY3ROb2RlID0gbV9ub2RlLT5jaGlsZDIoKS5ub2RlKCk7CisgICAgICAgICAgICBS
ZWdFeHAqIHJlZ0V4cDsKKyAgICAgICAgICAgIGlmIChSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVj
dCA9IHJlZ0V4cE9iamVjdE5vZGUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8UmVnRXhwT2JqZWN0Kj4o
KSkKKyAgICAgICAgICAgICAgICByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgpOworICAg
ICAgICAgICAgZWxzZSBpZiAocmVnRXhwT2JqZWN0Tm9kZS0+b3AoKSA9PSBOZXdSZWdleHApCisg
ICAgICAgICAgICAgICAgcmVnRXhwID0gY29kZUJsb2NrKCktPnJlZ2V4cChyZWdFeHBPYmplY3RO
b2RlLT5yZWdleHBJbmRleCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVj
YXVzZSB0aGUgcmVnZXhwIGlzIHVua25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2UgPSBtX25vZGUtPmNo
aWxkMygpLT50cnlHZXRTdHJpbmcobV9ncmFwaCk7CisgICAgICAgICAgICBpZiAoIXN0cmluZykK
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworCisgICAgICAgICAgICB1bnNpZ25lZCBsYXN0SW5kZXggPSAwOworICAgICAgICAgICAg
dW5zaWduZWQgc3RhcnRQb3NpdGlvbiA9IDA7CisgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsK
KyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdCByZXN1bHQ7Cisg
ICAgICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IG92ZWN0b3I7CisgICAgICAgICAgICAgICAg
Ly8gTW9kZWwgd2hpY2ggdmVyc2lvbiBvZiBtYXRjaCgpIGlzIGNhbGxlZCBieSB0aGUgbWFpbiB0
aHJlYWQuCisgICAgICAgICAgICAgICAgaWYgKHJlcGxhY2UuaXNFbXB0eSgpICYmIHJlZ0V4cC0+
Z2xvYmFsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3Vy
cmVudGx5KHZtKCksIHN0cmluZywgc3RhcnRQb3NpdGlvbiwgcmVzdWx0KSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgaW50IHBvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICBpZiAoIXJl
Z0V4cC0+bWF0Y2hDb25jdXJyZW50bHkodm0oKSwgc3RyaW5nLCBzdGFydFBvc2l0aW9uLCBwb3Np
dGlvbiwgb3ZlY3RvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0YXJ0ID0gcG9z
aXRpb247CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lbmQgPSBvdmVjdG9yWzFdOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICB1bnNp
Z25lZCByZXBsTGVuID0gcmVwbGFjZS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAobGFz
dEluZGV4IDwgcmVzdWx0LnN0YXJ0IHx8IHJlcGxMZW4pIHsKKyAgICAgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoc3RyaW5nLCBsYXN0SW5kZXgsIHJlc3VsdC5zdGFydCAtIGxhc3RJbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXBsTGVuKQorICAgICAgICAgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKHJlcGxhY2UsIHN0
cmluZywgb3ZlY3Rvci5kYXRhKCksIHJlZ0V4cCkpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGxhc3RJbmRleCA9IHJlc3VsdC5lbmQ7CisgICAgICAgICAgICAgICAgc3Rh
cnRQb3NpdGlvbiA9IGxhc3RJbmRleDsKKworICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2Fz
ZSBvZiBlbXB0eSBtYXRjaAorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uKys7CisgICAgICAgICAgICAgICAgICAg
IGlmIChzdGFydFBvc2l0aW9uID4gc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSB3aGlsZSAocmVn
RXhwLT5nbG9iYWwoKSk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAvLyBXZSBhcmUgY29tbWl0dGVkIGF0IHRoaXMgcG9pbnQuCisg
ICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworCisgICAgICAgICAgICBOb2RlT3JpZ2luIG9y
aWdpbiA9IG1fbm9kZS0+b3JpZ2luOworCisgICAgICAgICAgICBpZiAocmVnRXhwLT5nbG9iYWwo
KSkgeworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgU2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UocmVnRXhwT2JqZWN0Tm9kZSwg
UmVnRXhwT2JqZWN0VXNlKSwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwg
b3JpZ2luLCBqc051bWJlcigwKSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIG9yaWdpbiA9IG9yaWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKCFsYXN0SW5kZXggJiYgYnVpbGRlci5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKHN0cmluZ05vZGUp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA8IHN0
cmluZy5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyaW5n
LCBsYXN0SW5kZXgsIHN0cmluZy5sZW5ndGgoKSAtIGxhc3RJbmRleCk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9MYXp5SlNDb25zdGFudCgKKyAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBo
LCBidWlsZGVyLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9u
b2RlLT5vcmlnaW4gPSBvcmlnaW47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzgwLDYg
Kzc0MSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQorCisgICAgdm9pZCBleGVjdXRlSW5zZXJ0aW9uU2V0KCkKKyAgICB7CisgICAgICAgIG1fbm9k
ZUluZGV4ICs9IG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUobV9ibG9jayk7CisgICAgfQogICAgIAog
ICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2Nr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlz
aW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjc4LDYgKzI3OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRy
YW5zaXRpb24oKS0+ZGZnU2hvdWxkV2F0Y2goKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6
ZU5ld09iamVjdDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIG9ubHkgc3VwcG9ydHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0IG9yIEpT
QXJyYXkuCisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
dXJlLT5jbGFzc0luZm8oKSA9PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8fCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IEpTQXJyYXk6OmluZm8o
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBjZXJ0YWlu
IGluZGV4aW5nIHNoYXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2Rl
KSwgIWhhc0FueUFycmF5U3RvcmFnZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAgICAgICAgICAgICBjYXNlIEludDUyQ29u
c3RhbnQ6CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+aXNOdW1i
ZXJDb25zdGFudCgpKTsKQEAgLTQ2MSwxMyArNDczLDQyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRI
aW50OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6Ci0gICAg
ICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBj
YXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFB1
dFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgS2lsbFN0YWNrOgogICAgICAgICAgICAgICAg
IGNhc2UgR2V0U3RhY2s6CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgISJ1
bmV4cGVjdGVkIG5vZGUgdHlwZSBpbiBDUFMiKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDogeworICAgICAgICAg
ICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3MgYXJyYXkgbGVuZ3RocyB0byBiZSBjb25zdGFu
dC4gVGhpcyBjb25zdHJhaW50IG9ubHkgZXhpc3RzCisgICAgICAgICAgICAgICAgICAgIC8vIGJl
Y2F1c2Ugd2UgZG9uJ3QgaGF2ZSBERkcgc3VwcG9ydCBmb3IgYW55dGhpbmcgbW9yZSBhbmQgd2Ug
ZG9uJ3QgbmVlZCBhbnkKKyAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXIga2luZCBvZiBzdXBw
b3J0IGZvciBub3cuCisgICAgICAgICAgICAgICAgICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRh
dGEmIGRhdGEgPSBub2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgaS0t
OykgeworICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3Ig
ZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICAg
ICAgRWRnZSBlZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5pc0ludDMyQ29uc3RhbnQoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gQ1BTIG9ubHkgYWxsb3dzIG9uZSBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlKSwgbm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpOworCisgICAg
ICAgICAgICAgICAgICAgIC8vIENQUyBkaXNhbGxvd3MgaW50MzIgYW5kIGRvdWJsZSBhcnJheXMu
IFRob3NlIHJlcXVpcmUgd2VpcmQgdHlwZSBjaGVja3MgYW5kCisgICAgICAgICAgICAgICAgICAg
IC8vIGNvbnZlcnNpb25zLiBUaGV5IGFyZSBub3QgbmVlZGVkIGluIHRoZSBERkcgcmlnaHQgbm93
LiBXZSBzaG91bGQgYWRkIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoZXNl
IGlmIHRoZSBERkcgZXZlciBuZWVkcyBpdC4KKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNE
b3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBjYXNlIFBoYW50b206CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2Rl
KSwgbV9ncmFwaC5tX2ZpeHBvaW50U3RhdGUgIT0gRml4cG9pbnROb3RDb252ZXJnZWQpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAkocmV2aXNpb24gMTk4
MjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJS
ZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJT
Y29wZWRBcmd1bWVudHNUYWJsZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE5ODI1NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEZUTCB7CiAgICAgbWFjcm8oSlNTeW1ib2xUYWJsZU9iamVjdF9zeW1ib2xUYWJsZSwgSlNT
eW1ib2xUYWJsZU9iamVjdDo6b2Zmc2V0T2ZTeW1ib2xUYWJsZSgpKSBcCiAgICAgbWFjcm8oSlNX
cmFwcGVyT2JqZWN0X2ludGVybmFsVmFsdWUsIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1
ZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oTWFya2VkQWxsb2NhdG9yX2ZyZWVMaXN0SGVhZCwgTWFy
a2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSBcCisgICAgbWFjcm8oUmVnRXhw
Q29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RSZWdFeHAsIFJlZ0V4cENvbnN0cnVjdG9yOjpv
ZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RS
ZWdFeHAoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0
SW5wdXQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhw
Q2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RJbnB1dCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29u
c3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9zdGFydCwgUmVnRXhwQ29uc3RydWN0b3I6Om9m
ZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0
KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIHN0YXJ0KSkgXAorICAgIG1hY3JvKFJl
Z0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZXN1bHRfZW5kLCBSZWdFeHBDb25zdHJ1Y3Rv
cjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZS
ZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgZW5kKSkgXAorICAgIG1hY3Jv
KFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZWlmaWVkLCBSZWdFeHBDb25zdHJ1Y3Rv
cjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZS
ZWlmaWVkKCkpIFwKICAgICBtYWNybyhSZWdFeHBPYmplY3RfbGFzdEluZGV4LCBSZWdFeHBPYmpl
Y3Q6Om9mZnNldE9mTGFzdEluZGV4KCkpIFwKICAgICBtYWNybyhSZWdFeHBPYmplY3RfbGFzdElu
ZGV4SXNXcml0YWJsZSwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleElzV3JpdGFibGUo
KSkgXAogICAgIG1hY3JvKFNjb3BlZEFyZ3VtZW50c19vdmVycm9kZVRoaW5ncywgU2NvcGVkQXJn
dW1lbnRzOjpvZmZzZXRPZk92ZXJyb2RlVGhpbmdzKCkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE5ODI1NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjI3LDYgKzIyNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiAKICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2Fz
ZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAg
ICAgICAgYnJlYWs7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTM1LDYgKzkzNSw5
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAg
ICAgICAgICAgY29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleCgpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgorICAgICAgICAg
ICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCgpOworICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CkBA
IC0zNzA4LDMyICszNzExLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9vdXQuc3RvcmUzMihwdWJsaWNMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlf
cHVibGljTGVuZ3RoKTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIodmVjdG9yTGVuZ3RoLCBi
dXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmIChoYXNEb3VibGUobV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpIHsKLSAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0g
ICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdERvbmUgPSBtX291dC5uZXdCbG9jaygpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFs
SW5kZXggPSBtX291dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50ZXIgPSBtX291dC5hbmNob3IoYnV0dGVyZmx5KTsKLSAg
ICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5v
dFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUp
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFz
dE5leHQgPSBtX291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOwotICAgICAgICAgICAg
ICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgb3JpZ2luYWxJbmRleCk7
Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHBvaW50ZXIgPSBtX291dC5waGkobV9vdXQuaW50UHRy
LCBvcmlnaW5hbFBvaW50ZXIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1f
b3V0LnN0b3JlNjQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoYml0d2lz
ZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKLSAgICAgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVy
KG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSk7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTFZhbHVlIG5leHRJbmRleCA9IG1f
b3V0LnN1YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOwotICAgICAgICAgICAgICAgIG1fb3V0LmFk
ZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKLSAgICAgICAg
ICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKHBvaW50ZXIsIG1fb3V0LmFuY2hvcihtX291
dC5hZGQocG9pbnRlciwgbV9vdXQuaW50UHRyRWlnaHQpKSk7Ci0gICAgICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIobmV4dEluZGV4
KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW5pdERvbmUsIGluaXRMYXN0TmV4dCk7
Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGluaXRpYWxpemVBcnJheUVsZW1lbnRzKG1f
bm9kZS0+aW5kZXhpbmdUeXBlKCksIHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hv
cihvYmplY3QpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtNjI3
OCwxMSArNjI1NywyMSBAQCBwcml2YXRlOgogICAgICAgICAvLyBMb3dlciB0aGUgdmFsdWVzIGZp
cnN0LCB0byBhdm9pZCBjcmVhdGluZyB2YWx1ZXMgaW5zaWRlIGEgY29udHJvbCBmbG93IGRpYW1v
bmQuCiAgICAgICAgIAogICAgICAgICBWZWN0b3I8TFZhbHVlLCA4PiB2YWx1ZXM7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkK
LSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMSArIGkpKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRh
Lm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9n
cmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAoZGF0
YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0
aFBMb2M6CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAg
ICAgdmFsdWVzLmFwcGVuZChsb3dJbnQzMihlZGdlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93
SlNWYWx1ZShlZGdlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0ID0gbV9u
b2RlLT5zdHJ1Y3R1cmVTZXQoKTsKLSAgICAgICAgCisKICAgICAgICAgVmVjdG9yPExCYXNpY0Js
b2NrLCAxPiBibG9ja3Moc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHNl
dC5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBibG9ja3NbaV0gPSBtX291dC5uZXdCbG9jaygp
OwpAQCAtNjMwNywyMSArNjI5Niw1MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIG9i
amVjdDsKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAg
IGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgaGFzSW5kZXhlZFByb3BlcnRp
ZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgICAgICAgICBzaXplX3Qg
YWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUt
PmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxs
b2NhdG9yID0gJnZtKCkuaGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3Rvcihh
bGxvY2F0aW9uU2l6ZSk7CisKKyAgICAgICAgICAgICAgICBib29sIGhhc0luZGV4aW5nSGVhZGVy
ID0gaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW5kZXhpbmdIZWFkZXJTaXplID0gMDsKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPSBtX291dC5pbnRQdHJaZXJv
OworICAgICAgICAgICAgICAgIExWYWx1ZSB2ZWN0b3JMZW5ndGggPSBtX291dC5pbnQzMlplcm87
CisgICAgICAgICAgICAgICAgTFZhbHVlIHB1YmxpY0xlbmd0aCA9IG1fb3V0LmludDMyWmVybzsK
KyAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaW5kZXhpbmdIZWFkZXJTaXplID0gc2l6ZW9mKEluZGV4aW5nSGVhZGVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgp
OyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3Jp
cHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljTGVuZ3RoID0gdmFsdWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9IHZhbHVlc1tpXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPQorICAgICAgICAgICAgICAgICAgICAgICAgbV9v
dXQubXVsKG1fb3V0Lnplcm9FeHRQdHIodmVjdG9yTGVuZ3RoKSwgbV9vdXQuaW50UHRyRWlnaHQp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlT
aXplID0gbV9vdXQuYWRkKAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cigK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAq
IHNpemVvZihKU1ZhbHVlKSArIGluZGV4aW5nSGVhZGVyU2l6ZSksCisgICAgICAgICAgICAgICAg
ICAgIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAg
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9y
YWdlQW5kR2V0RW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpLAotICAgICAgICAg
ICAgICAgICAgICBzbG93UGF0aCk7Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
TFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5kKGJ1dHRl
cmZseVNpemUsIHNsb3dQYXRoKTsKKwogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVy
Zmx5VmFsdWUgPSBtX291dC5hZGQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50
UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBlbmRPZlN0b3JhZ2UpOworICAgICAgICAgICAg
ICAgICAgICBtX291dC5zdWIoZW5kT2ZTdG9yYWdlLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRl
cyksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGlu
Z0hlYWRlcikgLSBpbmRleGluZ0hlYWRlclNpemUpKTsKKworICAgICAgICAgICAgICAgIG1fb3V0
LnN0b3JlMzIodmVjdG9yTGVuZ3RoLCBmYXN0QnV0dGVyZmx5VmFsdWUsIG1faGVhcHMuQnV0dGVy
Zmx5X3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTFZh
bHVlIGZhc3RPYmplY3RWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0KAogICAgICAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IpLCBzdHJ1Y3R1cmUsIGZhc3RCdXR0ZXJmbHlW
YWx1ZSwgc2xvd1BhdGgpOwpAQCAtNjMzMiwxMiArNjM1MSwyNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250
aW51YXRpb24pOwogCi0gICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RWYWx1ZSA9IGxh
enlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRp
b24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHks
IGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93T2JqZWN0VmFsdWU7CisgICAgICAg
ICAgICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHNs
b3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFs9
XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQ
YXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JM
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJl
Y3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbG93
T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICBbPV0g
KGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0
aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZUxhenlDYWxsR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVy
YXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93T2JqZWN0ID0gbV9vdXQu
YW5jaG9yKHNsb3dPYmplY3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
c2xvd0J1dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgICAgICAgICAgbV9vdXQu
bG9hZFB0cihzbG93T2JqZWN0VmFsdWUsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5KSk7CkBA
IC02MzQ4LDYgKzYzNzksMTExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgb2JqZWN0ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdE9iamVjdCwgc2xv
d09iamVjdCk7CiAgICAgICAgICAgICAgICAgYnV0dGVyZmx5ID0gbV9vdXQucGhpKG1fb3V0Lmlu
dFB0ciwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSk7CisKKyAgICAgICAgICAgICAgICBt
X291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRlcmZseV9w
dWJsaWNMZW5ndGgpOworCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkpOworCisg
ICAgICAgICAgICAgICAgSGFzaE1hcDxpbnQzMl90LCBMVmFsdWUsIERlZmF1bHRIYXNoPGludDMy
X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludDMyX3Q+PiBp
bmRleE1hcDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8aW50MzJfdD4gaW5kaWNlczsKKyAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGkt
LTspIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVz
Y3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAo
ZGVzY3JpcHRvci5raW5kKCkgIT0gSW5kZXhlZFByb3BlcnR5UExvYykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGluZGV4ID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVzY3JpcHRvci5pbmZvKCkpOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBpbmRleE1hcC5hZGQoaW5k
ZXgsIHZhbHVlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bV9ub2RlLCByZXN1bHQpOyAvLyBEdXBsaWNhdGVzIGFyZSBpbGxlZ2FsLgorCisgICAgICAgICAg
ICAgICAgICAgIGluZGljZXMuYXBwZW5kKGluZGV4KTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAoIWluZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c29ydChpbmRpY2VzLmJlZ2luKCksIGluZGljZXMuZW5kKCkpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrPiBibG9j
a3NXaXRoU3RvcmVzKGluZGljZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9y
PExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoQ2hlY2tzKGluZGljZXMuc2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGluZGlj
ZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NXaXRoU3Rv
cmVzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nr
c1dpdGhDaGVja3NbaV0gPSBtX291dC5uZXdCbG9jaygpOyAvLyBibG9ja3NXaXRoQ2hlY2tzWzBd
IGlzIHRoZSBjb250aW51YXRpb24uCisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBpbmRleExhc3ROZXh0ID0gbV9vdXQubV9uZXh0QmxvY2s7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBpbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCBpbmRleCA9IGluZGljZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBMVmFsdWUg
dmFsdWUgPSBpbmRleE1hcC5nZXQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuYmVsb3cobV9vdXQuY29uc3RJbnQzMihpbmRleCksIHB1YmxpY0xlbmd0
aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGJsb2Nrc1dpdGhTdG9yZXNb
aV0pLCB1bnN1cmUoYmxvY2tzV2l0aENoZWNrc1tpXSkpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NXaXRoU3RvcmVzW2ldLCBibG9ja3NXaXRoQ2hlY2tz
W2ldKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBoYXMgdG8gdHlwZS1jaGVj
ayBhbmQgY29udmVydCBpdHMgaW5wdXRzLCBidXQgaXQgY2Fubm90IGRvIHNvIGluIGEKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHdheSB0aGF0IHVwZGF0ZXMgQUkuIFRoYXQncyBhIGJpdCBh
bm5veWluZywgYnV0IGlmIHlvdSB0aGluayBhYm91dCBob3cKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHNpbmtpbmcgd29ya3MsIGl0J3MgYWN0dWFsbHkgbm90IGEgYmFkIHRoaW5nLiBXZSBh
cmUgdmlydHVhbGx5IGd1YXJhbnRlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQg
dGhlc2UgdHlwZSBjaGVja3Mgd2lsbCBub3QgZmFpbCwgc2luY2UgdGhlIHR5cGUgY2hlY2tzIHRo
YXQgZ3VhcmRlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIHN0b3Jl
cyB0byB0aGUgYXJyYXkgYXJlIHN0aWxsIHNvbWV3aGVyZSBhYm92ZSB0aGlzIHBvaW50LgorICAg
ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOworICAgICAg
ICAgICAgICAgICAgICAgICAgSW5kZXhlZEFic3RyYWN0SGVhcCogaGVhcDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIHRoZSBwcm92ZW4g
dHlwZSBpZiB3ZSBoYWQgdGhlIEVkZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
MzExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIG5vVmFs
dWUoKSwgbnVsbHB0ciwgaXNOb3RJbnQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmU2NDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGllczsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IElmIHRoZSBzb3VyY2UgaXMgVmFsdWVSZXAsIHdlIHNob3VsZCBhdm9pZCBl
bWl0dGluZyBhbnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVja3MuIFdlIGNv
dWxkIGFsc28gYXZvaWQgZW1pdHRpbmcgY2hlY2tzIGlmIHdlIGhhZCB0aGUgRWRnZSBvZgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTEKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2goaXNJbnQzMih2YWx1ZSksIHVuc3VyZShpbnRDYXNlKSwgdW5zdXJlKGRvdWJsZUNhc2Up
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBpbnRSZXN1bHQgPQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX291dC5hbmNob3IobV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMih2
YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhkb3Vi
bGVDYXNlLCBjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOdW1iZXIodmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBkb3VibGVSZXN1bHQgPSBt
X291dC5hbmNob3IodW5ib3hEb3VibGUodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1fb3V0LnBoaShEb3VibGUsIGludFJlc3VsdCwgZG91
YmxlUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRw
dXQ6OlN0b3JlRG91YmxlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAgPSAmbV9o
ZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlNjQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWRDb250aWd1b3VzUHJvcGVydGll
czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbV9ub2RlLCAiSW52YWxpZCBpbmRleGluZyB0eXBlIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlKHZh
bHVlLCBtX291dC5hZGRyZXNzKGJ1dHRlcmZseSwgaGVhcC0+YXQoaW5kZXgpKSwgc3RvcmVUeXBl
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChibG9ja3NXaXRoQ2hlY2tz
W2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3NbaV0sIGkgPyBibG9ja3NXaXRoU3Rv
cmVzW2kgLSAxXSA6IGluZGV4TGFzdE5leHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJ
biB0aGUgZWFzeSBjYXNlIHdoZXJlIHdlIGNhbiBkbyBhIG9uZS1zaG90IGFsbG9jYXRpb24sIHdl
IHNpbXBseSBhbGxvY2F0ZSB0aGUKICAgICAgICAgICAgICAgICAvLyBvYmplY3QgdG8gZGlyZWN0
bHkgaGF2ZSB0aGUgZGVzaXJlZCBzdHJ1Y3R1cmUuCkBAIC02MzU3LDEyICs2NDkzLDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoUHJvcGVydHlNYXBFbnRyeSBl
bnRyeSA6IHN0cnVjdHVyZS0+Z2V0UHJvcGVydGllc0NvbmN1cnJlbnRseSgpKSB7CiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVlID0gZGF0
YS5tX3Byb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50
aWZpZXJzKClbdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyXSAhPSBlbnRyeS5rZXkpCisgICAgICAg
ICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRh
Lm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iua2lu
ZCgpICE9IE5hbWVkUHJvcGVydHlQTG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClbZGVzY3Jp
cHRvci5pbmZvKCldICE9IGVudHJ5LmtleSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGJh
c2UgPSBpc0lubGluZU9mZnNldChlbnRyeS5vZmZzZXQpID8gb2JqZWN0IDogYnV0dGVyZmx5Owot
ICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgdmFsdWUu
bV9pZGVudGlmaWVyTnVtYmVyLCBlbnRyeS5vZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBz
dG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgZGVzY3JpcHRvci5pbmZvKCksIGVudHJ5Lm9m
ZnNldCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KQEAgLTY0MjcsOSArNjU2NSwxMSBAQCBwcml2YXRlOgogICAgICAgICBMVmFs
dWUgYWN0aXZhdGlvbiA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RSZXN1bHQsIHNsb3dS
ZXN1bHQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChkYXRhLm1fcHJvcGVydGllcy5zaXplKCkg
PT0gdGFibGUtPnNjb3BlU2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBtX291dC5zdG9y
ZTY0KHZhbHVlc1tpXSwKLSAgICAgICAgICAgICAgICBhY3RpdmF0aW9uLAotICAgICAgICAgICAg
ICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGF0YS5tX3Byb3BlcnRp
ZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAg
ICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ2xvc3VyZVZhclBMb2MpOworICAgICAgICAg
ICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgICAgICB2YWx1ZXNbaV0sIGFjdGl2YXRpb24s
CisgICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlc1tk
ZXNjcmlwdG9yLmluZm8oKV0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHZhbGlkYXRpb25F
bmFibGVkKCkpIHsKQEAgLTY0MzgsNyArNjU3OCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBm
b3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbihsb2NrZXIpLCBlbmQgPSB0YWJsZS0+ZW5kKGxv
Y2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgICAgICAgICBib29sIGZvdW5k
ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEu
bV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVy
LT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09IGRhdGEubV9wcm9wZXJ0aWVzW2ldLm1f
aWRlbnRpZmllck51bWJlcikgeworICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9PSBDbG9zdXJlVmFyUExvYyk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgp
ID09IGRlc2NyaXB0b3IuaW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgfQpAQCAtNjYwNSw2ICs2NzQ3LDI5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LnN0b3Jl
NjQodmFsdWUsIHJlZ0V4cCwgbV9oZWFwcy5SZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICB9
CiAKKyAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQoKQorICAgIHsKKyAg
ICAgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MCk7CisgICAgICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2Rl
LCAxKTsKKyAgICAgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDIpOworICAgICAgICBFZGdlIHN0YXJ0RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAzKTsKKyAgICAgICAgRWRnZSBlbmRFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDQpOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIGNvbnN0cnVjdG9yID0gbG93Q2VsbChj
b25zdHJ1Y3RvckVkZ2UpOworICAgICAgICBMVmFsdWUgcmVnRXhwID0gbG93Q2VsbChyZWdFeHBF
ZGdlKTsKKyAgICAgICAgTFZhbHVlIHN0cmluZyA9IGxvd0NlbGwoc3RyaW5nRWRnZSk7CisgICAg
ICAgIExWYWx1ZSBzdGFydCA9IGxvd0ludDMyKHN0YXJ0RWRnZSk7CisgICAgICAgIExWYWx1ZSBl
bmQgPSBsb3dJbnQzMihlbmRFZGdlKTsKKworICAgICAgICBtX291dC5zdG9yZVB0cihyZWdFeHAs
IGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0
UmVnRXhwKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RyaW5nLCBjb25zdHJ1Y3RvciwgbV9o
ZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdElucHV0KTsKKyAgICAgICAg
bV9vdXQuc3RvcmUzMihzdGFydCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0
b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9zdGFydCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIoZW5k
LCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVz
dWx0X2VuZCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzJBczgoCisgICAgICAgICAgICBtX291dC5j
b25zdEludDMyKDApLAorICAgICAgICAgICAgbV9vdXQuYWRkcmVzcyhjb25zdHJ1Y3RvciwgbV9o
ZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVpZmllZCkpOworICAgIH0KKwog
ICAgIExWYWx1ZSBkaWRPdmVyZmxvd1N0YWNrKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZG9l
cyBhIHZlcnkgc2ltcGxlIGxlYWYgZnVuY3Rpb24gYW5hbHlzaXMuIFRoZSBpbnZhcmlhbnQgb2Yg
RlRMIGNhbGwKQEAgLTY5NjIsNiArNzEyNywzOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemVBcnJheUVsZW1l
bnRzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIExWYWx1ZSB2ZWN0b3JMZW5ndGgsIExWYWx1
ZSBidXR0ZXJmbHkpCisgICAgeworICAgICAgICBpZiAoIWhhc0RvdWJsZShpbmRleGluZ1R5cGUp
KSB7CisgICAgICAgICAgICAvLyBUaGUgR0MgYWxyZWFkeSBpbml0aWFsaXplZCBldmVyeXRoaW5n
IHRvIEpTVmFsdWUoKSBmb3IgdXMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBEb3VibGVzIG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gUE5hTi4KKyAgICAgICAg
TEJhc2ljQmxvY2sgaW5pdExvb3AgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNC
bG9jayBpbml0RG9uZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1
ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5jaG9yKHZlY3Rvckxlbmd0aCk7Cisg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFuY2hvcihidXR0
ZXJmbHkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5ub3RaZXJv
MzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Cisg
ICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhpbml0TG9vcCwgaW5pdERvbmUpOworICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5waGko
bV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOworICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1f
b3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7CisgICAgICAgIAorICAgICAg
ICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nh
c3Q8aW50NjRfdD4oUE5hTikpLAorICAgICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVhcHMuaW5k
ZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSk7CisgICAgICAgIAor
ICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5pbnQzMk9u
ZSk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFuY2hvcihu
ZXh0SW5kZXgpKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShwb2ludGVyLCBtX291
dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1fb3V0LmludFB0ckVpZ2h0KSkpOworICAgICAg
ICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIobmV4dEluZGV4KSwg
dW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7CisgICAgICAgIAorICAgICAgICBt
X291dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5pdExhc3ROZXh0KTsKKyAgICB9CiAgICAgCiAgICAg
TFZhbHVlIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKExWYWx1ZSBvYmplY3QsIFN0cnVjdHVyZSog
cHJldmlvdXNTdHJ1Y3R1cmUpCiAgICAgewpAQCAtOTE0NSw3ICs5MzQzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC50ZXN0Tm9u
WmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQotICAgIAorCiAgICAgTFZh
bHVlIHVuYm94RG91YmxlKExWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
b3V0LmJpdENhc3QobV9vdXQuYWRkKGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlciksIG1fb3V0LmRv
dWJsZVR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxOSArNDEsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKIAot
ZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1
dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOwotICAgIAotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVh
dGUoCi0gICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigpLCAwKTsKLSAgICAKLSAgICBKU09iamVjdCogcmVz
dWx0ID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsK
LSAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlz
IGluIHRvLXNwYWNlLgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGV4dGVybiAiQyIgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoCiAgICAgRXhlY1N0YXRl
KiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiogbWF0ZXJpYWxpemF0aW9uLAog
ICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlKiB2YWx1ZXMp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAkocmV2aXNp
b24gMTk4MjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAgY2xhc3MgTGF6eVNsb3dQYXRoOwogCiBl
eHRlcm4gIkMiIHsKIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdp
dGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwotCiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICBF
eGVjU3RhdGUqLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiosIEVuY29kZWRKU1ZhbHVl
KikgV1RGX0lOVEVSTkFMOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDE5
ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1
ZGUgIllhcnIuaCIKKyNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYv
QnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5
NywxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAgICAvLyBUaGlzIGlzIGEgc3VwZXIgZGFuZ2Vyb3VzIG1l
dGhvZCBmb3IgSklUcy4gU29tZXRpbWVzIHRoZSBKSVRzIHdpbGwgd2FudCB0byBjcmVhdGUgZWl0
aGVyIGEKKyAgICAvLyBKU0ZpbmFsT2JqZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBpcyB0aGUgbWV0
aG9kIHRoYXQgd2lsbCBkbyB0aGF0LgorICAgIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUmF3T2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogPSBu
dWxscHRyKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVk
U2l6ZShKU0NlbGwqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENvcHlUb2tl
bik7CkBAIC0xMDM3LDYgKzEwNDEsMjAgQEAgcHJpdmF0ZToKIAogSlNfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2Yo
RXhlY1N0YXRlKik7CiAKK2lubGluZSBKU09iamVjdCogSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVj
dCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkq
IGJ1dHRlcmZseSkKK3sKKyAgICBKU09iamVjdCogZmluYWxPYmplY3QgPSBuZXcgKAorICAgICAg
ICBOb3ROdWxsLCAKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KAorICAgICAg
ICAgICAgKmV4ZWMtPmhlYXAoKSwKKyAgICAgICAgICAgIEpTRmluYWxPYmplY3Q6OmFsbG9jYXRp
b25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgKQorICAgICkgSlNP
YmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIGZpbmFsT2JqZWN0
LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAgICByZXR1cm4gZmluYWxPYmplY3Q7Cit9
CisKIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoCiAgICAgRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkp
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlz
aW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsOCBAQCBSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRl
KFZNJiB2bSwgY29uc3QgU3RyCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFycjo6
WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5T
dHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1
Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MjkxLDcgKzI5Myw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFycjo6WWFyckMK
ICNlbmRpZgogCiAgICAgbV9zdGF0ZSA9IEJ5dGVDb2RlOwotICAgIG1fcmVnRXhwQnl0ZWNvZGUg
PSBZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9yKTsKKyAg
ICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGUocGF0dGVybiwgJnZtLT5tX3Jl
Z0V4cEFsbG9jYXRvciwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvckxvY2spOwogfQogCiBpbnQgUmVn
RXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3RvcikKQEAgLTI5OSw4ICszMDEsMjIgQEAgaW50IFJlZ0V4
cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcmIAogICAgIHJldHVybiBtYXRjaElubGluZSh2
bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOwogfQogCitib29sIFJlZ0V4cDo6bWF0Y2hDb25j
dXJyZW50bHkoCisgICAgVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpCit7CisgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmICghaGFzQ29kZUZvcihz
LmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBwb3NpdGlvbiA9IG1hdGNoKHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rv
cik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5
KFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0
dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAg
ICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMzMwLDcgKzM0Niw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hP
bmx5KFZNKiB2bSwgWWEKICNlbmRpZgogCiAgICAgbV9zdGF0ZSA9IEJ5dGVDb2RlOwotICAgIG1f
cmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmdm0tPm1fcmVnRXhw
QWxsb2NhdG9yKTsKKyAgICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGUocGF0
dGVybiwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvciwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvckxvY2sp
OwogfQogCiBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBz
LCB1bnNpZ25lZCBzdGFydE9mZnNldCkKQEAgLTMzOCw4ICszNTQsMjEgQEAgTWF0Y2hSZXN1bHQg
UmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IAogICAgIHJldHVybiBtYXRjaElubGluZSh2bSwg
cywgc3RhcnRPZmZzZXQpOwogfQogCitib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoVk0m
IHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYg
cmVzdWx0KQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAg
ICBpZiAoIWhhc01hdGNoT25seUNvZGVGb3Iocy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4IDogWWFy
cjo6Q2hhcjE2KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0gbWF0Y2go
dm0sIHMsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZWdFeHA6
OmRlbGV0ZUNvZGUoKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgCiAgICAgaWYgKCFoYXNDb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRl
ID0gTm90Q29tcGlsZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aAkocmV2aXNpb24gMTk4MjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYgUmVnRXhwX2gK
ICNkZWZpbmUgUmVnRXhwX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hdGNoUmVzdWx0LmgiCiAj
aW5jbHVkZSAiUmVnRXhwS2V5LmgiCkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0K
ICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnTXVsdGls
aW5lOyB9CiAgICAgYm9vbCBzdGlja3koKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ1N0
aWNreTsgfQorICAgIGJvb2wgZ2xvYmFsT3JTdGlja3koKSBjb25zdCB7IHJldHVybiBnbG9iYWwo
KSB8fCBzdGlja3koKTsgfQogICAgIGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3MgJiBGbGFnVW5pY29kZTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CkBAIC02NCw4ICs2NiwxNCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rp
b25FcnJvcjsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IG1hdGNoKFZNJiwgY29uc3Qg
U3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7
CisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIGNvdWxkbid0IHJ1biB0aGUgcmVndWxhciBl
eHByZXNzaW9uIGZvciBhbnkgcmVhc29uLgorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0m
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgVmVj
dG9yPGludCwgMzI+JiBvdmVjdG9yKTsKKyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBNYXRj
aFJlc3VsdCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsK
IAorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmKTsKKwogICAgIC8vIENhbGwgdGhlc2UgdmVyc2lv
bnMgb2YgdGhlIG1hdGNoIGZ1bmN0aW9ucyBpZiB5b3UncmUgZGVzcGVyYXRlIGZvciBwZXJmb3Jt
YW5jZS4KICAgICBpbnQgbWF0Y2hJbmxpbmUoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsKICAgICBNYXRjaFJlc3VsdCBt
YXRjaElubGluZShWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKQEAg
LTc3LDYgKzg1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdGF0ZSAhPSBOb3RDb21w
aWxlZDsKICAgICB9CiAKKyAgICBib29sIGhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsK
KyAgICBib29sIGhhc01hdGNoT25seUNvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsKKwogICAg
IHZvaWQgZGVsZXRlQ29kZSgpOwogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtMTMy
LDYgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ydE1hdGNoQ2FsbENvdW50Owog
ICAgIHVuc2lnbmVkIG1fcnRNYXRjaEZvdW5kQ291bnQ7CiAjZW5kaWYKKyAgICBDb25jdXJyZW50
SklUTG9jayBtX2xvY2s7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgWWFycjo6WWFyckNv
ZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkocmV2aXNpb24gMTk4MjU3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYpOwogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RS
ZWdFeHAoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX2xh
c3RSZWdFeHApOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RJbnB1dCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fbGFzdElucHV0KTsg
fQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZXN1bHQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX3Jlc3VsdCk7IH0KKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mUmVpZmllZCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBD
YWNoZWRSZXN1bHQsIG1fcmVpZmllZCk7IH0KKwogcHJpdmF0ZToKICAgICBNYXRjaFJlc3VsdCBt
X3Jlc3VsdDsKICAgICBib29sIG1fcmVpZmllZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTk4MjU3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4
cENvbnN0cnVjdG9yLCBtX2NhY2hlZFJlc3VsdCk7IH0KKwogcHJvdGVjdGVkOgogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBSZWdFeHBQcm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNp
ZXMpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5s
aW5lcy5oCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiWWFyci5o
IgorI2luY2x1ZGUgIllhcnJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIllhcnJKSVQuaCIKIAog
I2RlZmluZSBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOIDAKQEAgLTY3LDIwICs2OCwyNyBAQCBw
cml2YXRlOgogfTsKICNlbmRpZiAvLyBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOCiAKLUFMV0FZ
U19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6Ollh
cnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc0NvZGVG
b3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewogICAgIGlmIChoYXNDb2RlKCkpIHsK
ICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYg
KChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29k
ZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5o
YXMxNkJpdENvZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgUmVn
RXhwOjpjb21waWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNp
emUpCit7CisgICAgaWYgKGhhc0NvZGVGb3IoY2hhclNpemUpKQorICAgICAgICByZXR1cm47CiAK
ICAgICBjb21waWxlKCZ2bSwgY2hhclNpemUpOwogfQpAQCAtMTUyLDIxICsxNjAsMjkgQEAgQUxX
QVlTX0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGluZShWTQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNo
T25seShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUg
Ym9vbCBSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJT
aXplKQogewogICAgIGlmIChoYXNDb2RlKCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAg
ICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkg
JiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZU1hdGNoT25seSgpKSkKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXpl
ID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGVNYXRjaE9u
bHkoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNl
bHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICB9
CiAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNv
bXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFy
U2l6ZSkKK3sKKyAgICBpZiAoaGFzTWF0Y2hPbmx5Q29kZUZvcihjaGFyU2l6ZSkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGNvbXBpbGVNYXRjaE9ubHkoJnZtLCBjaGFyU2l6ZSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3RJ
bmxpbmVzLmgJKHJldmlzaW9uIDE5ODI1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBA
QCBKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlY0lubGluZShFeGVjU3RhCiAgICAgU3RyaW5nIGlu
cHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsgLy8gRklYTUU6IEhhbmRsZSBlcnJvcnMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUxNDUKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBib29sIGdsb2JhbE9yU3RpY2t5ID0gcmVnRXhwLT5n
bG9iYWwoKSB8fCByZWdFeHAtPnN0aWNreSgpOworICAgIGJvb2wgZ2xvYmFsT3JTdGlja3kgPSBy
ZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCk7CiAKICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CiAgICAg
aWYgKGdsb2JhbE9yU3RpY2t5KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5ODI1NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIFN0cmluZyBzdWJzdGl0
dXRlQmFjCiAgICAgcmV0dXJuIHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQudG9TdHJpbmcoKTsKIH0K
IAotc3RhdGljIGlubGluZSBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3Is
IFJlZ0V4cCogcmVnKQoraW5saW5lIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNJbmxp
bmUoY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0IGlu
dCogb3ZlY3RvciwgUmVnRXhwKiByZWcpCiB7CiAgICAgc2l6ZV90IGkgPSByZXBsYWNlbWVudC5m
aW5kKCckJyk7CiAgICAgaWYgKFVOTElLRUxZKGkgIT0gbm90Rm91bmQpKQpAQCAtMjg5LDYgKzI4
OSwxMSBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyCiAgICAgcmV0
dXJuIHJlcGxhY2VtZW50OwogfQogCitTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92
ZWN0b3IsIFJlZ0V4cCogcmVnKQoreworICAgIHJldHVybiBzdWJzdGl0dXRlQmFja3JlZmVyZW5j
ZXNJbmxpbmUocmVwbGFjZW1lbnQsIHNvdXJjZSwgb3ZlY3RvciwgcmVnKTsKK30KKwogc3RydWN0
IFN0cmluZ1JhbmdlIHsKICAgICBTdHJpbmdSYW5nZShpbnQgcG9zLCBpbnQgbGVuKQogICAgICAg
ICA6IHBvc2l0aW9uKHBvcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5oCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE9iamVjdFByb3RvdHlwZTsKK2Ns
YXNzIFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cE9iamVjdDsKIAogY2xhc3MgU3RyaW5nUHJvdG90eXBl
IDogcHVibGljIFN0cmluZ09iamVjdCB7CkBAIC02Miw2ICs2Myw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3QKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZygKICAgICBFeGVjU3Rh
dGUqLCBKU1N0cmluZyogdGhpc1ZhbHVlLCBSZWdFeHBPYmplY3QqIHNlYXJjaFZhbHVlLCBKU1N0
cmluZyogcmVwbGFjZVZhbHVlKTsKIAorU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBv
dmVjdG9yLCBSZWdFeHAqIHJlZyk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
U3RyaW5nUHJvdG90eXBlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2
aXNpb24gMTk4MjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBWTV9oCiAjZGVmaW5lIFZNX2gK
IAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQ
cm9maWxlci5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhl
Y3V0YWJsZUFsbG9jYXRvci5oIgpAQCAtNTQxLDYgKzU0Miw3IEBAIHB1YmxpYzoKICAgICBSZWZQ
dHI8VHlwZWRBcnJheUNvbnRyb2xsZXI+IG1fdHlwZWRBcnJheUNvbnRyb2xsZXI7CiAgICAgUmVn
RXhwQ2FjaGUqIG1fcmVnRXhwQ2FjaGU7CiAgICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IgbV9yZWdF
eHBBbGxvY2F0b3I7CisgICAgQ29uY3VycmVudEpJVExvY2sgbV9yZWdFeHBBbGxvY2F0b3JMb2Nr
OwogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8
UmVnRXhwKj4gUlRUcmFjZUxpc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9s
ZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShv
KS8uZXhlYygiYmFyIik7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0
ICE9PSBudWxsKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7
Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdl
eHAtZXhlYy1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1m
b2xkaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIGZvbygp
IHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8uZXhlYygiZm9vIik7Cit9CisKK25vSW5saW5lKGZv
byk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQg
PSBmb28oKTsKKyAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPSA0KQorICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFswXSAhPSAiZm9vIikK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChy
ZXN1bHRbMV0gIT0gImYiKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBy
ZXN1bHQ7CisgICAgaWYgKHJlc3VsdFsyXSAhPSAibyIpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzNdICE9ICJvIikKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1m
YWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
c2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmct
ZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBmb28oKSB7
CisgICAgcmV0dXJuIC8oZikobykobykvLnRlc3QoImJhciIpOworfQorCitub0lubGluZShmb28p
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0g
Zm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSBmYWxzZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDExIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykvLnRlc3QoImZv
byIpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSB0cnVlKQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwCShy
ZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhw
cmVzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCkBAIC0zMCw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKIAogI2luY2x1ZGUgIllhcnIuaCIKKyNp
bmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyci5oCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpZm5kZWYg
WWFycl9oCiAjZGVmaW5lIFlhcnJfaAogCi0jaW5jbHVkZSAiWWFyckludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiWWFyclBhdHRlcm4uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJy
IHsKQEAgLTYzLDYgKzYyLDggQEAgZW51bSBZYXJyQ2hhclNpemUgewogICAgIENoYXIxNgogfTsK
IAorc3RydWN0IEJ5dGVjb2RlUGF0dGVybjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIK
IAogI2VuZGlmIC8vIFlhcnJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxOTgyNTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE3
LDYgKzE1MTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghaW5wdXQuaXNBdmFpbGFibGVJbnB1
dCgwKSkKICAgICAgICAgICAgIHJldHVybiBvZmZzZXROb01hdGNoOwogCisgICAgICAgIGlmIChw
YXR0ZXJuLT5tX2xvY2spCisgICAgICAgICAgICBwYXR0ZXJuLT5tX2xvY2stPmxvY2soKTsKKyAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXR0ZXJuLT5tX2JvZHkt
Pm1fbnVtU3VicGF0dGVybnMgKyAxOyArK2kpCiAgICAgICAgICAgICBvdXRwdXRbaSA8PCAxXSA9
IG9mZnNldE5vTWF0Y2g7CiAKQEAgLTE1MzYsNiArMTUzOSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IHBhdHRlcm4tPm1fYWxsb2NhdG9yLT5zdG9wQWxsb2NhdG9yKCk7CiAKICAgICAgICAgQVNTRVJU
KChyZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgPT0gKG91dHB1dFswXSAhPSBvZmZzZXROb01hdGNo
KSk7CisKKyAgICAgICAgaWYgKHBhdHRlcm4tPm1fbG9jaykKKyAgICAgICAgICAgIHBhdHRlcm4t
Pm1fbG9jay0+dW5sb2NrKCk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gb3V0cHV0WzBdOwog
ICAgIH0KIApAQCAtMTU3NiwxMyArMTU4MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY3VycmVu
dEFsdGVybmF0aXZlSW5kZXggPSAwOwogICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZVBhdHRlcm4+IGNvbXBpbGUoQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBjb21waWxlKEJ1bXBQb2ludGVyQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKSVRMb2NrKiBsb2NrKQogICAgIHsKICAgICAg
ICAgcmVnZXhCZWdpbihtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucywgbV9wYXR0ZXJuLm1fYm9k
eS0+bV9jYWxsRnJhbWVTaXplLCBtX3BhdHRlcm4ubV9ib2R5LT5tX2FsdGVybmF0aXZlc1swXS0+
b25jZVRocm91Z2goKSk7CiAgICAgICAgIGVtaXREaXNqdW5jdGlvbihtX3BhdHRlcm4ubV9ib2R5
KTsKICAgICAgICAgcmVnZXhFbmQoKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVu
dGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IpOworICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBt
X2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOwogICAgIH0K
IAogICAgIHZvaWQgY2hlY2tJbnB1dCh1bnNpZ25lZCBjb3VudCkKQEAgLTIwMjcsOSArMjAzNCw5
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+
PiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZVBh
dHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9j
YXRvciogYWxsb2NhdG9yKQorc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNv
bXBpbGUoWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIENvbmN1cnJlbnRKSVRMb2NrKiBsb2NrKQogewotICAgIHJldHVybiBCeXRlQ29tcGlsZXIo
cGF0dGVybikuY29tcGlsZShhbGxvY2F0b3IpOworICAgIHJldHVybiBCeXRlQ29tcGlsZXIocGF0
dGVybikuY29tcGlsZShhbGxvY2F0b3IsIGxvY2spOwogfQogCiB1bnNpZ25lZCBpbnRlcnByZXQo
Qnl0ZWNvZGVQYXR0ZXJuKiBieXRlY29kZSwgY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTk4MjU3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgWWFyckludGVycHJldGVyX2gKICNkZWZpbmUgWWFyckludGVycHJl
dGVyX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiWWFyclBh
dHRlcm4uaCIKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0zMzcsMTAgKzMzOCwxMSBAQCBwdWJsaWM6
CiBzdHJ1Y3QgQnl0ZWNvZGVQYXR0ZXJuIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBCeXRlY29kZVBhdHRlcm4oc3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5j
dGlvbj4gYm9keSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiYgcGFy
ZW50aGVzZXNJbmZvVG9BZG9wdCwgWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxs
b2NhdG9yKiBhbGxvY2F0b3IpCisgICAgQnl0ZWNvZGVQYXR0ZXJuKHN0ZDo6dW5pcXVlX3B0cjxC
eXRlRGlzanVuY3Rpb24+IGJvZHksIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0
aW9uPj4mIHBhcmVudGhlc2VzSW5mb1RvQWRvcHQsIFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBCdW1w
UG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yLCBDb25jdXJyZW50SklUTG9jayogbG9jaykKICAg
ICAgICAgOiBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAgICAgLCBtX2ZsYWdzKHBhdHRlcm4u
bV9mbGFncykKICAgICAgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCisgICAgICAgICwgbV9s
b2NrKGxvY2spCiAgICAgewogICAgICAgICBtX2JvZHktPnRlcm1zLnNocmlua1RvRml0KCk7CiAK
QEAgLTM2Niw2ICszNjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gRWFjaCBCeXRlY29kZVBhdHRlcm4g
aXMgYXNzb2NpYXRlZCB3aXRoIGEgUmVnRXhwLCBlYWNoIFJlZ0V4cCBpcyBhc3NvY2lhdGVkCiAg
ICAgLy8gd2l0aCBhIFZNLiAgQ2FjaGUgYSBwb2ludGVyIHRvIG91dCBWTSdzIG1fcmVnRXhwQWxs
b2NhdG9yLgogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICBDb25j
dXJyZW50SklUTG9jayogbV9sb2NrOwogCiAgICAgQ2hhcmFjdGVyQ2xhc3MqIG5ld2xpbmVDaGFy
YWN0ZXJDbGFzczsKICAgICBDaGFyYWN0ZXJDbGFzcyogd29yZGNoYXJDaGFyYWN0ZXJDbGFzczsK
QEAgLTM3NSw3ICszNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Q2hhcmFjdGVyQ2xhc3M+PiBtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzOwogfTsKIAotSlNfRVhQT1JU
X1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGUoWWFy
clBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciopOworSlNfRVhQT1JUX1BSSVZBVEUgc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBC
dW1wUG9pbnRlckFsbG9jYXRvciosIENvbmN1cnJlbnRKSVRMb2NrKiA9IG51bGxwdHIpOwogSlNf
RVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0
IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCogb3V0cHV0KTsKIHVuc2ln
bmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBMQ2hhciogaW5wdXQsIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpOwogdW5zaWduZWQg
aW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCk7CkluZGV4OiBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNp
b24gMTk4MjU3KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI3MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIE1ha2UgZXhlY3V0ZUlu
c2VydGlvbnMoKSByZXR1cm4gdGhlIGFtb3VudCBieSB3aGljaCB0aGUgdmVjdG9yIGluY3JlYXNl
ZCBpbiBzaXplLiBUaGlzIGlzIGEKKyAgICAgICAgY29udmVuaWVudCBmZWF0dXJlIHRoYXQgSSB1
c2UgaW4gREZHOjpJbnNlcnRpb25TZXQuCisKKyAgICAgICAgKiB3dGYvSW5zZXJ0aW9uLmg6Cisg
ICAgICAgIChXVEY6OmV4ZWN1dGVJbnNlcnRpb25zKToKKwogMjAxNi0wMy0xNSAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb21waWxlIHRpbWUgZGVm
aW5lIGZvciBTRVBBUkFURURfSEVBUApJbmRleDogU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgJKHJldmlzaW9uIDE5ODI1
NykKKysrIFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU1LDE0ICs1NSwxNSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVGFy
Z2V0VmVjdG9yVHlwZSwgdHlwZW5hbWUgSW5zZXJ0aW9uVmVjdG9yVHlwZT4KLXZvaWQgZXhlY3V0
ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlwZSYgdGFyZ2V0LCBJbnNlcnRpb25WZWN0b3JUeXBl
JiBpbnNlcnRpb25zKQorc2l6ZV90IGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUm
IHRhcmdldCwgSW5zZXJ0aW9uVmVjdG9yVHlwZSYgaW5zZXJ0aW9ucykKIHsKLSAgICBpZiAoIWlu
c2VydGlvbnMuc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgdGFyZ2V0Lmdyb3codGFyZ2V0
LnNpemUoKSArIGluc2VydGlvbnMuc2l6ZSgpKTsKKyAgICBzaXplX3QgbnVtSW5zZXJ0aW9ucyA9
IGluc2VydGlvbnMuc2l6ZSgpOworICAgIGlmICghbnVtSW5zZXJ0aW9ucykKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUoKSArIG51bUluc2VydGlvbnMpOwog
ICAgIHNpemVfdCBsYXN0SW5kZXggPSB0YXJnZXQuc2l6ZSgpOwogICAgIHNpemVfdCBvcmlnaW5h
bFRhcmdldFNpemUgPSB0YXJnZXQuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGluZGV4SW5JbnNl
cnRpb25zID0gaW5zZXJ0aW9ucy5zaXplKCk7IGluZGV4SW5JbnNlcnRpb25zLS07KSB7CisgICAg
Zm9yIChzaXplX3QgaW5kZXhJbkluc2VydGlvbnMgPSBudW1JbnNlcnRpb25zOyBpbmRleEluSW5z
ZXJ0aW9ucy0tOykgewogICAgICAgICBBU1NFUlQoIWluZGV4SW5JbnNlcnRpb25zIHx8IGluc2Vy
dGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4KCkgPj0gaW5zZXJ0aW9uc1tpbmRleEluSW5z
ZXJ0aW9ucyAtIDFdLmluZGV4KCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9yaWdpbmFsVGFy
Z2V0U2l6ZSwgaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSA8IG9yaWdpbmFs
VGFyZ2V0U2l6ZSk7CiAgICAgICAgIHNpemVfdCBmaXJzdEluZGV4ID0gaW5zZXJ0aW9uc1tpbmRl
eEluSW5zZXJ0aW9uc10uaW5kZXgoKSArIGluZGV4SW5JbnNlcnRpb25zOwpAQCAtNzMsNiArNzQs
NyBAQCB2b2lkIGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUmCiAgICAgICAgIGxh
c3RJbmRleCA9IGZpcnN0SW5kZXg7CiAgICAgfQogICAgIGluc2VydGlvbnMucmVzaXplKDApOwor
ICAgIHJldHVybiBudW1JbnNlcnRpb25zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE5ODI1NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgREZHIGFuZCBGVEwgc2hvdWxkIGNvbnN0YW50LWZvbGQgUmVn
RXhwRXhlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1MjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgKiBq
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhw
LWV4ZWMtZm9sZGluZy5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qczogQWRkZWQuCisgICAgICAgICog
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanM6IEFk
ZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhl
Yy1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbDogQWRkZWQuCisgICAgICAgICog
anMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1m
YWlsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVn
ZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mv
c2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTYtMDMtMTUgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb3ZlcmZsb3c6
IC13ZWJraXQtbWFycXVlZQpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVn
ZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xk
aW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWls
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZh
aWwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRo
cm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmct
ZmFpbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJl
Z2V4cC1leGVjLWZvbGRpbmctZmFpbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2lt
cGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRl
c3QtZm9sZGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAor
SlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmctZmFpbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy1mYWlsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2Vw
dGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1m
b2xkaW5nLWZhaWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Np
bXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdl
eHAtZXhlYy1mb2xkaW5nLWZhaWwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICAvZm9vLy5leGVjKCJiYXIiKTsKK30p
KCk7CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1y
ZWdleHAtZXhlYy1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1l
eGVjLWZvbGRpbmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisoZnVuY3Rpb24o
KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgICAgIC9mb28v
LmV4ZWMoImZvbyIpOworfSkoKTsKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3Qt
Zm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgL2Zvby8udGVzdCgiYmFyIik7Cit9KSgpOworCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRl
c3QtZm9sZGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICAvZm9vLy50ZXN0KCJm
b28iKTsKK30pKCk7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274530</attachid>
            <date>2016-03-19 18:23:11 -0700</date>
            <delta_ts>2016-03-25 12:56:51 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>128358</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MSBA
QAorMjAxNi0wMy0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMsIFJlZ0V4cFRlc3Qs
IGFuZCBTdHJpbmdSZXBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKwor
ICAgICAgICBUaGlzIGVuYWJsZXMgY29uc3RhbnQtZm9sZGluZyBvZiBSZWdFeHBFeGVjLCBSZWdF
eHBUZXN0LCBhbmQgU3RyaW5nUmVwbGFjZS4KKworICAgICAgICBJdCdzIG5vdyBwb3NzaWJsZSB0
byBydW4gWWFyciBvbiB0aGUgSklUIHRocmVhZHMuIFNpbmNlIHByZXZpb3VzIHdvcmsgb24gY29u
c3RhbnQtZm9sZGluZworICAgICAgICBzdHJpbmdzIGdhdmUgdGhlIERGRyBhbiBBUEkgZm9yIHJl
YXNvbmluZyBhYm91dCBKU1N0cmluZyBjb25zdGFudHMgaW4gdGVybXMgb2YKKyAgICAgICAgSklU
LXRocmVhZC1sb2NhbCBXVEY6OlN0cmluZ3MsIGl0J3Mgbm93IHN1cGVyIGVhc3kgdG8ganVzdCBw
YXNzIHN0cmluZ3MgdG8gWWFyciBhbmQgYnVpbGQgSVIKKyAgICAgICAgYmFzZWQgb24gdGhlIHJl
c3VsdHMuCisKKyAgICAgICAgQnV0IFJlZ0V4cEV4ZWMgaXMgaGFyZDogdGhlIGZvbGRlZCB2ZXJz
aW9uIHN0aWxsIG11c3QgYWxsb2NhdGUgYSBSZWdFeHBNYXRjaGVzQXJyYXkuIFdlIG11c3QKKyAg
ICAgICAgdXNlIHRoZSBzYW1lIFN0cnVjdHVyZSB0aGF0IHRoZSBjb2RlIHdvdWxkIGhhdmUgdXNl
ZCBvciBlbHNlIHdlJ2xsIHBvbGx1dGUgdGhlIHByb2dyYW0ncworICAgICAgICBpbmxpbmUgY2Fj
aGVzLiBBbHNvLCBSZWdFeHBNYXRjaGVzQXJyYXkuaHxjcHAgd2lsbCBhbGxvY2F0ZSB0aGUgYXJy
YXkgYW5kIGl0cyBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVzIGluIG9uZSBnbyAtIHdlIGRvbid0
IHdhbnQgdG8gbG9zZSB0aGF0IG9wdGltaXphdGlvbi4gU28sIHRoaXMgcGF0Y2ggZW5hYmxlcwor
ICAgICAgICBNYXRlcmlhbGl6ZU5ld09iamVjdCB0byBhbGxvY2F0ZSBvYmplY3RzIG9yIGFycmF5
cyB3aXRoIGFueSBudW1iZXIgb2YgaW5kZXhlZCBvciBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVz
LiBQcmV2aW91c2x5IGl0IGNvdWxkIG9ubHkgaGFuZGxlIG9iamVjdHMgKGJ1dCBub3QgYXJyYXlz
KSBhbmQgbmFtZWQgcHJvcGVydGllcworICAgICAgICAoYnV0IG5vdCBpbmRleGVkIG9uZXMpLgor
CisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGEgZmV3IG1pbm9yIHRoaW5ncyBmb3Igc2V0dGluZyB0
aGUgUmVnRXhwQ29uc3RydWN0b3IgY2FjaGVkIHJlc3VsdC4KKworICAgICAgICBUaGlzIGlzIGFi
b3V0IGEgMnggc3BlZWQtdXAgb24gbWljcm9iZW5jaG1hcmtzIHdoZW4gd2UgZm9sZCBhIG1hdGNo
IHN1Y2Nlc3MgYW5kIGFib3V0IGEKKyAgICAgICAgOHggc3BlZWQtdXAgd2hlbiB3ZSBmb2xkIGEg
bWF0Y2ggZmFpbHVyZS4gSXQncyBhIDEwJSBzcGVlZC11cCBvbiBPY3RhbmUvcmVnZXhwLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcv
REZHSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Omlu
c2VydFNsb3cpOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6ZXhlY3V0ZSk6Cisg
ICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5oOgorICAgICAgICAoSlNDOjpERkc6Okluc2Vy
dGlvblNldDo6aW5zZXJ0Q2hlY2spOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnRyeUdldFN0cmluZyk6CisgICAgICAg
ICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U3RhY2tBY2Nlc3NEYXRh
OjpmbHVzaGVkQXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE6OmR1bXApOgorICAgICAgICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVl
OjpkdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhOjpvbmVXYXlTaW1pbGFyaXR5U2NvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6Ok9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OnNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQaGFudG9tUHJvcGVydHlWYWx1ZTo6UGhhbnRvbVByb3BlcnR5VmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAg
ICAgICAqIGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6flNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVMYXp5SlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlQ29tbXV0YXRpdml0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6ZXhlY3V0ZUlu
c2VydGlvblNldCk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRl
Ojp2YWxpZGF0ZUNQUyk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVD
cmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpkaWRPdmVyZmxvd1N0YWNrKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3RvcmFnZUZvclRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppbml0aWFsaXplQXJyYXlFbGVt
ZW50cyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNO
b3RDZWxsT3JNaXNjKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dW5i
b3hEb3VibGUpOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpTQzo6RlRM
OjpvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBm
dGwvRlRMT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaCk6CisgICAgICAg
IChKU0M6OlJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OmNvbXBpbGVNYXRjaE9ubHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlbGV0ZUNvZGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNo
ZWRSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxh
c3RSZWdFeHApOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFz
dElucHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3Vs
dCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZWlmaWVkKToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlJl
Z0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzQ29kZUZvcik6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjptYXRjaElubGluZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzTWF0Y2hPbmx5
Q29kZUZvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hP
bmx5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlc1Ns
b3cpOgorICAgICAgICAoSlNDOjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNJbmxpbmUpOgorICAg
ICAgICAoSlNDOjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpTdHJp
bmdSYW5nZTo6U3RyaW5nUmFuZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAg
ICAoZm9vKToKKyAgICAgICAgKiB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcDoKKyAgICAgICAg
KiB5YXJyL1lhcnIuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHA6CisgICAg
ICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjppbnRlcnByZXQpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpCeXRlQ29tcGlsZXI6OkJ5dGVDb21waWxlcik6CisgICAgICAgIChKU0M6OllhcnI6OkJ5
dGVDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6
Y2hlY2tJbnB1dCk6CisgICAgICAgIChKU0M6OllhcnI6OmJ5dGVDb21waWxlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6aW50ZXJwcmV0KToKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5o
OgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlY29kZVBhdHRlcm46OkJ5dGVjb2RlUGF0dGVybik6
CisKIDIwMTYtMDMtMTggIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gTGltaXQgREZHJ3MgVmFsaWRhdGUgc3ltYm9scyB0byBpdHMgY29tcGls
YXRpb24gdW5pdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5
ODQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsNiArNDg4LDcgQEAKIAkJMEY3
QzExQUQxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMTFBQzFCQzM4NjJDMDBDNzRDREIgLyog
Q29weUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjdDMzlGQjFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkExQzhGNjI5
MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLzsgfTsKIAkJMEY3QzM5RkQxQzhGNjU5NTAw
NDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBP
YmplY3RJbmxpbmVzLmggKi87IH07CisJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdP
cEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
N0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLzsgfTsKIAkJMEY4MDIzRUEx
NjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
ODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMx
RTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1
QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0
NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2NDIsNiArMjY0Myw3IEBACiAJCTBGN0MxMUFD
MUJDMzg2MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb3B5QmFycmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdElubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPcElu
Zm8uaDsgcGF0aCA9IGRmZy9ERkdPcEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCeVZhbEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYzOUMx
RTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYyNTMsNiArNjI1NSw3IEBACiAJCQkJMEYyQjlDREQxOUQwQkE3RDAw
QjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCAqLywKIAkJCQk4NkVDOURC
RjEzMjhERjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJODZFQzlEQzAx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuaCAqLywKKwkJCQkwRjdDMzlGRTFDOTBD
NTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8sCiAJCQkJQTdEODlDRUUxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwICovLAogCQkJCUE3RDg5
Q0VGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmgg
Ki8sCiAJCQkJMEZEODJFNTIxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCAqLywK
QEAgLTc0NTQsNiArNzQ1Nyw3IEBACiAJCQkJMEY2NEVBRjMxQzRFQ0QwNjAwNjIxRTlCIC8qIEFp
ckFyZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA1MTlGNkRFNzQwMDk4RjVF
QyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faGVhZGVyLnB5IGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVFQTcxMDYxOUY2REU3NjAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJh
dGlvbl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAorCQkJCTBGN0MzOUZGMUM5MEM1
NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA3MTlG
NkRFNzgwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNf
aGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8q
IEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDgxOUY2REU3
QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weSBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24g
MTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUyLDYgKzE5NTIsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldEZyb21Bcmd1
bWVudHM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
cmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxNyw2ICs5MTcsMTAgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICB3cml0ZShSZWdFeHBPYmplY3RfbGFz
dEluZGV4KTsKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihSZWdFeHBPYmplY3RMYXN0SW5kZXhM
b2MsIFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSk7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0OgorICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7CisgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOiB7CiAgICAgICAg
IEFic3RyYWN0SGVhcCBoZWFwKERpcmVjdEFyZ3VtZW50c1Byb3BlcnRpZXMsIG5vZGUtPmNhcHR1
cmVkQXJndW1lbnRzT2Zmc2V0KCkub2Zmc2V0KCkpOwpAQCAtMTA4MCw3ICsxMDg0LDkgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBpZiAobm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQogICAgICAgICAgICAgJiYgbm9k
ZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgcmVhZChS
ZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICByZWFkKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwog
ICAgICAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAgICAgICAgd3JpdGUoUmVnRXhw
T2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgcmVhZChXb3JsZCk7CkBAIC0xMDkyLDcgKzEwOTgsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VL
aW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCiAgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDMoKS51
c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICByZWFkKFJlZ0V4cFN0YXRlKTsK
KyAgICAgICAgICAgIHJlYWQoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgICAgICB3
cml0ZShSZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICB3cml0ZShSZWdFeHBPYmplY3RfbGFzdElu
ZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICByZWFkKFdvcmxk
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9u
IDE5ODQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBHZXRSZWdFeHBP
YmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAg
Y2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAg
ICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBQdXRHbG9iYWxWYXJp
YWJsZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5OSw2ICsxMjk5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0
TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICAg
ICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgICAgICAvLyBUaGVzZSBh
cmUganVzdCBub2RlcyB0aGF0IHdlIGRvbid0IGN1cnJlbnRseSBleHBlY3QgdG8gc2VlIGR1cmlu
ZyBmaXh1cC4KICAgICAgICAgICAgIC8vIElmIHdlIGV2ZXIgd2FudGVkIHRvIGluc2VydCB0aGVt
IHByaW9yIHRvIGZpeHVwLCB0aGVuIHdlIGp1c3QgaGF2ZSB0byBjcmVhdGUKICAgICAgICAgICAg
IC8vIGZpeHVwIHJ1bGVzIGZvciB0aGVtLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHJldmlzaW9uIDE5ODQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTUsNiArMzE1LDggQEAgdm9pZCBH
cmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICAgICAgb3V0LnByaW50
KGFub3RoZXJDb21tYSwgcG9pbnRlckR1bXBJbkNvbnRleHQoZnJlZXplKG1fY29kZUJsb2NrLT5j
b25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpW2ldKSwgY29udGV4dCkpOwogICAg
ICAgICBvdXQucHJpbnQoIl0iKTsKICAgICB9CisgICAgaWYgKG5vZGUtPmhhc0xhenlKU1ZhbHVl
KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgbm9kZS0+bGF6eUpTVmFsdWUoKSk7CiAgICAg
aWYgKG5vZGUtPmhhc0luZGV4aW5nVHlwZSgpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIElu
ZGV4aW5nVHlwZUR1bXAobm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICBpZiAobm9kZS0+aGFz
VHlwZWRBcnJheVR5cGUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5z
ZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luc2VydGlvblNldC5jcHAJKHJldmlzaW9uIDE5ODQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUs
OSBAQCB2b2lkIEluc2VydGlvblNldDo6aW5zZXJ0U2xvdyhjb25zdCBJbnNlCiAgICAgbV9pbnNl
cnRpb25zLmluc2VydCgwLCBpbnNlcnRpb24pOwogfQogCi12b2lkIEluc2VydGlvblNldDo6ZXhl
Y3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKK3NpemVfdCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFz
aWNCbG9jayogYmxvY2spCiB7Ci0gICAgZXhlY3V0ZUluc2VydGlvbnMoKmJsb2NrLCBtX2luc2Vy
dGlvbnMpOworICAgIHJldHVybiBleGVjdXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9u
cyk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMTk4NDY2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogICAgIAotICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jayk7CisgICAgc2l6ZV90
IGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5zZXJ0
U2xvdyhjb25zdCBJbnNlcnRpb24mKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBAIEV4
aXRNb2RlIG1heUV4aXQoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2QKICAgICBjYXNlIFN0b3JlQmFy
cmllcjoKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKKyAg
ICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIFN0ckNhdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxOTg0NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEuaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKICNpbmNsdWRlICJERkdUcmFuc2l0aW9u
LmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNz
RGF0YS5oIgpAQCAtMjE5LDIwICsyMjAsNiBAQCBzdHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsKICAg
ICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hlZEF0KGZvcm1hdCwgbWFjaGlu
ZUxvY2FsKTsgfQogfTsKIAotLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFzc2luZyBhbiBpbW1lZGlh
dGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKLS8vIGRpc3Rpbmd1aXNoZXMgYW4gaW1t
ZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBkYXRhIHN0
cnVjdHVyZSAtIAotLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlkZW50aWZpZXIp
IGZyb20gYSBOb2RlKi4KLXN0cnVjdCBPcEluZm8gewotICAgIE9wSW5mbygpIDogbV92YWx1ZSgw
KSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8odWludDMy
X3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0j
aWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQotICAgIGV4cGxpY2l0IE9wSW5mbyhzaXpl
X3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9Ci0j
ZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICB1aW50cHRyX3QgbV92YWx1ZTsK
LX07Ci0KIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBv
cGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE5ODQ2NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhWYXJJbmplY3Rp
b25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0UmVnRXhwT2Jq
ZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTZXRSZWdFeHBPYmplY3RM
YXN0SW5kZXgsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3Jv
KENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrTm90RW1wdHks
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0JhZENlbGwsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMTk4NDY2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3NCw3ICsxOTc0LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6IHsKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9PSBhbGxvY2F0aW9uLmlkZW50aWZpZXIo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVuZChQaGFudG9t
UHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRlc2NyaXB0b3IoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShibG9jaywgbG9jYXRpb24pOwogICAgICAg
ICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyh2YWx1ZSkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKG1fYm90
dG9tKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBj
YXNlIENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlv
bi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgICAgICAg
ICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRvbVByb3BlcnR5VmFsdWUobG9jYXRpb24u
aW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVuZChs
b2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lu
a0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2JvdHRvbSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YS5jcHAJKHJldmlzaW9uIDE5ODQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDMyICsz
MiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXZvaWQgUGhhbnRv
bVByb3BlcnR5VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSAgICBvdXQu
cHJpbnQoImlkIiwgbV9pZGVudGlmaWVyTnVtYmVyKTsKLX0KLQogdm9pZCBPYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnBy
aW50KCJbIiwgbGlzdER1bXAobV9wcm9wZXJ0aWVzKSwgIl0iKTsKIH0KIAotZmxvYXQgT2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YTo6b25lV2F5U2ltaWxhcml0eVNjb3JlKAotICAgIGNvbnN0IE9i
amVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBjb25zdAotewotICAgIHVuc2lnbmVkIG51
bUhpdHMgPSAwOwotICAgIGZvciAoUGhhbnRvbVByb3BlcnR5VmFsdWUgdmFsdWUgOiBtX3Byb3Bl
cnRpZXMpIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcHJvcGVydGllcy5jb250YWlucyh2YWx1ZSkp
Ci0gICAgICAgICAgICBudW1IaXRzKys7Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxm
bG9hdD4obnVtSGl0cykgLyBzdGF0aWNfY2FzdDxmbG9hdD4obV9wcm9wZXJ0aWVzLnNpemUoKSk7
Ci19Ci0KLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OnNpbWlsYXJpdHlTY29yZShj
b25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1
cm4gc3RkOjptaW4ob25lV2F5U2ltaWxhcml0eVNjb3JlKG90aGVyKSwgb3RoZXIub25lV2F5U2lt
aWxhcml0eVNjb3JlKCp0aGlzKSk7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgJKHJldmlzaW9u
IDE5ODQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgiCiAjaW5jbHVk
ZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
UHJpbnRTdHJlYW0uaD4KQEAgLTM1LDM4ICszNiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKLXN0cnVjdCBQaGFudG9tUHJvcGVydHlWYWx1ZSB7Ci0gICAgUGhhbnRv
bVByb3BlcnR5VmFsdWUoKQotICAgICAgICA6IG1faWRlbnRpZmllck51bWJlcihVSU5UX01BWCkK
LSAgICB7Ci0gICAgfQotICAgIAotICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlKHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVyTnVtYmVyKGlkZW50aWZpZXJO
dW1iZXIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXJOdW1i
ZXI7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBoYW50b21Qcm9wZXJ0eVZhbHVl
JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJOdW1iZXIg
PT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKLX07Ci0KIHN0cnVjdCBPYmplY3RNYXRlcmlhbGl6YXRpb25E
YXRhIHsKICAgICAvLyBEZXRlcm1pbmVzIHRoZSBtZWFuaW5nIG9mIHRoZSBwYXNzZWQgbm9kZXMu
Ci0gICAgVmVjdG9yPFBoYW50b21Qcm9wZXJ0eVZhbHVlPiBtX3Byb3BlcnRpZXM7CisgICAgVmVj
dG9yPFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yPiBtX3Byb3BlcnRpZXM7CiAgICAgCiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gVGhlIGZyYWN0aW9u
IG9mIG15IHByb3BlcnRpZXMgdGhhdCB0aGUgb3RoZXIgZGF0YSBoYXMuCi0gICAgZmxvYXQgb25l
V2F5U2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmKSBjb25z
dDsKLSAgICAKLSAgICAvLyBUaGUgbWluaW11bSBvZiB0aGUgdHdvIHBvc3NpYmxlIG9uZS13YXkg
c2NvcmVzLgotICAgIGZsb2F0IHNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhJikgY29uc3Q7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBERkdPcEluZm9faAorI2RlZmluZSBERkdPcEluZm9faAorCisjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyB0eXBlIHVzZWQgaW4gcGFzc2luZyBhbiBpbW1l
ZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKKy8vIGRpc3Rpbmd1aXNoZXMgYW4g
aW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBhIENvZGVCbG9jayBkYXRh
IHN0cnVjdHVyZSAtIAorLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1lbnQsIG9yIGlkZW50aWZp
ZXIpIGZyb20gYSBOb2RlKi4KK3N0cnVjdCBPcEluZm8geworICAgIE9wSW5mbygpIDogbV92YWx1
ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8odWlu
dDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9
CisjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQorICAgIGV4cGxpY2l0IE9wSW5mbyhz
aXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9
CisjZW5kaWYKKyAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAgICB1aW50cHRyX3QgbV92YWx1
ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQorCisjZW5kaWYgLy8gREZHT3BJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTg0NjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzk3LDYgKzEzOTcsNjAgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmYXVs
dEhhcwogICAgIHJldHVybiAwOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d1Jhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5Owor
ICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgaGFzSW5kZXhlZFByb3Bl
cnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKKyAgICAgICAgSW5kZXhpbmdIZWFk
ZXIgaGVhZGVyOworICAgICAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7CisgICAg
ICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7CisgICAgICAgIAorICAgICAgICBidXR0ZXJm
bHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksCisgICAgICAgICAgICBoYXNJbmRleGVkUHJvcGVy
dGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgaGVhZGVyLAorICAgICAgICAgICAgbGVu
Z3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJ1dHRl
cmZseSA9IG51bGxwdHI7CisKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0
ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0
ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihyZXN1bHQpOworfQorCitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIAorICAgIEJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIHZtLCBudWxscHRy
LCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGluZ0hlYWRl
cigpLCAwKTsKKyAgICAKKyAgICBKU09iamVjdCogcmVzdWx0ID0gSlNPYmplY3Q6OmNyZWF0ZVJh
d09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgcmVzdWx0LT5idXR0ZXJm
bHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBpbiB0by1zcGFjZS4KKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2Jq
ZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aChFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2
bSwgZXhlYyk7CisKKyAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CisgICAgaGVhZGVyLnNldFZl
Y3Rvckxlbmd0aChsZW5ndGgpOworICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7CisgICAg
QnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgdm0sIG51
bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgaGVhZGVyLAor
ICAgICAgICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogbGVuZ3RoKTsKKworICAgIC8vIFBhcmFk
b3hpY2FsbHkgdGhpcyBtYXkgYWxsb2NhdGUgYSBKU0FycmF5LiBUaGF0J3MgdG90YWxseSBjb29s
LgorICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KGV4ZWMs
IHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1
cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9n
REZHKEV4ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0oKS50eXBlUHJvZmlsZXJMb2co
KS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cgRnVsbCwgY2FsbGVkIGZyb20g
aW5zaWRlIERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsMTAgQEAgaW50NjRf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnREbwogCiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNDZWxsKiB2YWx1ZSwg
SlNDZWxsKiBwcm90byk7CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2Jq
ZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVu
Z3RoKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCkgV1RGX0lOVEVSTkFM
OworCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RG
RyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09w
ZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikg
V1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5ODQ2
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjcsNiArNjY3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5k
ZXg6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgICAgICBjYXNl
IFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDog
ewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRo
aXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRlZCBi
eSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAkocmV2
aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhl
YXBMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsNiArNzQsMTAgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFBybwogICAgIGNhc2UgTmFtZWRQcm9wZXJ0
eVBMb2M6CiAgICAgICAgIG91dC5wcmludCgiTmFtZWRQcm9wZXJ0eVBMb2MiKTsKICAgICAgICAg
cmV0dXJuOworCisgICAgY2FzZSBJbmRleGVkUHJvcGVydHlQTG9jOgorICAgICAgICBvdXQucHJp
bnQoIkluZGV4ZWRQcm9wZXJ0eVBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAg
ICBjYXNlIEFyZ3VtZW50UExvYzoKICAgICAgICAgb3V0LnByaW50KCJBcmd1bWVudFBMb2MiKTsK
QEAgLTEwMiw2ICsxMDYsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IFBybwogICAgIGNhc2UgQ2xvc3VyZVZhclBMb2M6CiAgICAgICAgIG91dC5wcmludCgiQ2xvc3Vy
ZVZhclBMb2MiKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9j
OgorICAgICAgICBvdXQucHJpbnQoIlB1YmxpY0xlbmd0aFBMb2MiKTsKKyAgICAgICAgcmV0dXJu
OworCisgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICBvdXQucHJpbnQoIlZlY3Rv
ckxlbmd0aFBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAkocmV2aXNpb24gMTk4NDY2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDI1ICsyOCw0MSBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAK
LSNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiREZHRWRnZS5oIgorI2luY2x1ZGUgIkRG
R05vZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aFRhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKIAorc3RydWN0IE5vZGU7CisKKy8vIFByb21vdGVkIGxvY2F0aW9u
cyBhcmUgbGlrZSBoZWFwIGxvY2F0aW9ucyBidXQgYXJlIG1lYW50IHRvIGJlIG1vcmUgcHJlY2lz
ZS4gQSBoZWFwIGxvY2F0aW9uIGlzCisvLyBhcHBsaWNhYmxlIHRvIENTRSBzY2VuYXJpb3MsIHdo
ZXJlIGl0IG1ha2VzIHNlbnNlIHRvIHNwZWFrIG9mIGEgbG9jYXRpb24gdmVyeSBhYnN0cmFjdGx5
LiBBCisvLyBwcm9tb3RlZCBoZWFwIGxvY2F0aW9uIGlzIGZvciBjYXNlcyB3aGVyZSB3ZSBzcGVh
ayBvZiBhIHNwZWNpZmljIG9iamVjdCBhbmQgdGhlIGNvbXBpbGVyIGtub3dzCisvLyB0aGlzIG9i
amVjdCdzIGlkZW50aXR5IC0gZm9yIGV4YW1wbGUsIHRoZSBvYmplY3QgYWxsb2NhdGlvbiBoYXMg
YmVlbiBlbGltaW5hdGVkIGFuZCB3ZSB0dXJuZWQgdGhlCisvLyBmaWVsZHMgaW50byBsb2NhbCB2
YXJpYWJsZXMuIEJlY2F1c2UgdGhlc2UgdHdvIGNhc2VzIGhhdmUgc3VidGx5IGRpZmZlcmVudCBu
ZWVkcywgd2UgdXNlIHN1YnRseQorLy8gZGlmZmVyZW50IHN0cnVjdHVyZXMuIE9uZSBvZiB0aGUg
cmVhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2VzIGlzIHRoYXQgcHJvbW90ZWQgbG9jYXRpb25z
IGNhbiBiZQorLy8gc3Bva2VuIG9mIHVzaW5nIGVpdGhlciBhIGRlc2NyaXB0b3Igd2hpY2ggZG9l
cyBub3QgcmVmZXIgdG8gYW55IE5vZGUqJ3Mgb3Igd2l0aCBhIGhlYXAgbG9jYXRpb24sCisvLyB3
aGljaCBpcyBhIGRlc2NyaXB0b3Igd2l0aCBhIE5vZGUqIGJhc2UuCisKIGVudW0gUHJvbW90ZWRM
b2NhdGlvbktpbmQgewogICAgIEludmFsaWRQcm9tb3RlZExvY2F0aW9uS2luZCwKICAgICAKLSAg
ICBTdHJ1Y3R1cmVQTG9jLAorICAgIEFjdGl2YXRpb25TY29wZVBMb2MsCiAgICAgQWN0aXZhdGlv
blN5bWJvbFRhYmxlUExvYywKLSAgICBOYW1lZFByb3BlcnR5UExvYywKLSAgICBBcmd1bWVudFBM
b2MsCiAgICAgQXJndW1lbnRDb3VudFBMb2MsCisgICAgQXJndW1lbnRQTG9jLAogICAgIEFyZ3Vt
ZW50c0NhbGxlZVBMb2MsCi0KLSAgICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLAorICAgIENsb3N1
cmVWYXJQTG9jLAogICAgIEZ1bmN0aW9uQWN0aXZhdGlvblBMb2MsCi0gICAgQWN0aXZhdGlvblNj
b3BlUExvYywKLSAgICBDbG9zdXJlVmFyUExvYworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2Ms
CisgICAgSW5kZXhlZFByb3BlcnR5UExvYywKKyAgICBOYW1lZFByb3BlcnR5UExvYywKKyAgICBQ
dWJsaWNMZW5ndGhQTG9jLAorICAgIFN0cnVjdHVyZVBMb2MsCisgICAgVmVjdG9yTGVuZ3RoUExv
YwogfTsKIAogY2xhc3MgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE5ODQ2
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICBjYXNlIEdldFJlZ0V4
cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAg
ICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBjYXNlIEJvdHRvbVZhbHVlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxOTg0NjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDQ3LDYgKzMwNDcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAg
IGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgIGNvbXBpbGVSZWNvcmRS
ZWdFeHBDYWNoZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAg
CiAgICAgY2FzZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgp
LmlzSlNBcnJheSgpKTsKICAgICAgICAgCkBAIC0zNDkyLDcgKzM0OTcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9y
YWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwg
c3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxs
b2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1l
bnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEF0IHRoaXMg
cG9pbnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdlR1BSIGhhdmUg
cG9pbnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUgQnV0dGVyZmx5
LCByZXNwZWN0aXZlbHkuCkBAIC0zNzI4LDcgKzM3MzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigp
OwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhp
bmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9j
YXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVt
RWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5v
ZGUtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgICAg
IEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIobm9kZS0+
c3RhcnRDb25zdGFudCgpKTsKQEAgLTQ5ODAsNyArNDk4NSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICAgICAgCi0gICAgICAgIAorICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmpl
Y3Q6CisgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChub2RlKTsKKyAgICAgICAg
YnJlYWs7CisKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTUwMDcsNyArNTAxNSw2IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21DcmVh
dGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJl
SW1tZWRpYXRlOgotICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRl
cmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBjYXNlIEtp
bGxTdGFjazoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4Nyw2
ICszMTg3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleChub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorCisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6IHsKKyAgICAg
ICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5UHVzaDogewogICAgICAgICBBU1NFUlQo
bm9kZS0+YXJyYXlNb2RlKCkuaXNKU0FycmF5KCkpOwpAQCAtMzU1OCw3ICszNTYzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BS
ID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1
bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAg
ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBu
dW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBB
dCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFnZUdQ
UiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhlIEJ1
dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzc5NCw3ICszNzk5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFn
ZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VH
UFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgaW5kZXhpbmdUeXBlICYgSXNBcnJheSk7
CiAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50
QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTg5LDYgKzQ5OTQsMTAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAg
ICB9CiAKKyAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICBjb21waWxlTWF0
ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAjaWYgRU5BQkxFKEZU
TF9KSVQpICAgICAgICAKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOiB7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hBZGQzMigKQEAgLTUwNzksNyAr
NTA4OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBj
YXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZUltbWVkaWF0ZToKLSAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAg
IGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUHV0U3RhY2s6CiAg
ICAgY2FzZSBLaWxsU3RhY2s6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDYgKzUyLDcgQEAKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVk
ZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNp
bmNsdWRlICJTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJp
ZXJCdWZmZXIuaCIKQEAgLTc3LDI3ICs3OCw1NCBAQCBTcGVjdWxhdGl2ZUpJVDo6flNwZWN1bGF0
aXZlSklUKCkKIHsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNBcnJh
eShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VH
UFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJS
ZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0
aCkKIHsKLSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkp
IHx8IGhhc0ludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNDb250aWd1b3VzKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCkpKTsKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gc3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKTsKKyAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gaGFzSW5kZXhlZFBy
b3BlcnRpZXMoaW5kZXhpbmdUeXBlKTsKKworICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0g
c3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpOworICAgIHVuc2lnbmVkIG91dE9mTGluZUNhcGFj
aXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIAogICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2gy
R1BSID0gc2NyYXRjaDIuZ3ByKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0g
c3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBudW1FbGVtZW50cyk7CisKKyAgICBBU1NFUlQodmVj
dG9yTGVuZ3RoID49IG51bUVsZW1lbnRzKTsKKyAgICB2ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChC
QVNFX1ZFQ1RPUl9MRU4sIHZlY3Rvckxlbmd0aCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IHNsb3dDYXNlczsKLSAgICAKLSAgICBzbG93Q2FzZXMuYXBwZW5kKAotICAgICAgICBl
bWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVv
ZihKU1ZhbHVlKSArIHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBzdG9yYWdlR1BSKSk7Ci0gICAg
bV9qaXQuc3ViUHRyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkp
LCBzdG9yYWdlR1BSKTsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2Ny
YXRjaDJHUFIsIHNsb3dDYXNlcyk7Ci0gICAgCi0gICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1t
MzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKLSAgICBtX2ppdC5zdG9yZTMyKFRydXN0
ZWRJbW0zMih2ZWN0b3JMZW5ndGgpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKLSAgICAKKworICAgIHNpemVf
dCBzaXplID0gMDsKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAgIHNpemUgKz0g
dmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKTsK
KyAgICBzaXplICs9IG91dE9mTGluZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpOworCisgICAg
aWYgKHNpemUpIHsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCgKKyAgICAgICAgICAgIGVtaXRB
bGxvY2F0ZUJhc2ljU3RvcmFnZShUcnVzdGVkSW1tMzIoc2l6ZSksIHN0b3JhZ2VHUFIpKTsKKyAg
ICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAgICAgICAgbV9qaXQuc3ViUHRyKFRy
dXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkpLCBzdG9yYWdlR1BSKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihzaXpl
b2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZUdQUik7CisgICAgfSBlbHNlCisgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cigwKSwgc3RvcmFnZUdQUik7CisKKyAgICBzaXplX3QgYWxs
b2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShpbmxpbmVDYXBhY2l0
eSk7CisgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JQdHIgPSAmbV9qaXQudm0oKS0+aGVh
cC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7Cisg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGFsbG9jYXRvclB0ciksIHNjcmF0Y2hHUFIpOwor
ICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKKwor
ICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVk
SW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CisKKyAgICAvLyBJIHdhbnQgYSBz
bG93IHBhdGggdGhhdCBhbHNvIGxvYWRzIG91dCB0aGUgc3RvcmFnZSBwb2ludGVyLCBhbmQgdGhh
dCdzCisgICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdl
bmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAorICAgIC8vIG9mIHdvcmsgZm9yIGEgdmVyeSBz
bWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8KKyAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yPigK
KyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdSYXdPYmplY3QsIHJlc3VsdEdQ
Uiwgc3RvcmFnZUdQUiwKKyAgICAgICAgc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpKTsKKwogICAg
IGlmIChoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgJiYgbnVtRWxlbWVudHMg
PCB2ZWN0b3JMZW5ndGgpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW02NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLCBzY3JhdGNoR1BSKTsK
QEAgLTExMywxMiArMTQxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNB
cnJheQogI2VuZGlmCiAgICAgfQogICAgIAotICAgIC8vIEkgd2FudCBhIHNsb3cgcGF0aCB0aGF0
IGFsc28gbG9hZHMgb3V0IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0aGF0J3MKLSAgICAvLyB3
aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdpdmVz
IG1lLiBJdCdzIGEgbG90Ci0gICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNlIG9m
IGZ1bmN0aW9uYWxpdHkuIDotLwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAotICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgc3RvcmFn
ZUdQUiwKLSAgICAgICAgc3RydWN0dXJlLCBudW1FbGVtZW50cykpOworICAgIGlmIChoYXNJbmRl
eGluZ0hlYWRlcikKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobnVtRWxlbWVu
dHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldExl
bmd0aChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGxlbmd0aEdQUiwg
Ym9vbCBpbmNsdWRlVGhpcykKQEAgLTc2NDMsNiArNzY2NywxMjUgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09i
amVjdChOb2RlKiBub2RlKQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS0+c3Ry
dWN0dXJlU2V0KClbMF07CisgICAgQVNTRVJUKG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSA9PSBzdHJ1Y3R1cmUpOwor
CisgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgCisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlw
ZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRl
ciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CisgICAgaW50MzJfdCBwdWJs
aWNMZW5ndGggPSAwOworICAgIGludDMyX3QgdmVjdG9yTGVuZ3RoID0gMDsKKworICAgIGlmICho
YXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJv
cGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1faml0Lmdy
YXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpOworICAgICAgICAgICAgc3dpdGNoIChkYXRh
Lm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3Ro
UExvYzoKKyAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSBlZGdlLT5hc0ludDMyKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6
CisgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gZWRnZS0+YXNJbnQzMigpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CisgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0
b3JhZ2UuZ3ByKCk7CisgICAgCisgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwg
c3RydWN0dXJlLCBzdG9yYWdlR1BSLCAwLCB2ZWN0b3JMZW5ndGgpOworICAgIAorICAgIG1faml0
LnN0b3JlMzIoCisgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIocHVibGljTGVuZ3Ro
KSwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5Ojpv
ZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1f
cHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgRWRnZSBlZGdlID0gbV9qaXQuZ3Jh
cGgoKS52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgIFByb21vdGVkTG9jYXRpb25E
ZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgc3dp
dGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICBjYXNlIEluZGV4ZWRQcm9wZXJ0eVBM
b2M6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UpOworICAg
ICAgICAgICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZS5qc1ZhbHVl
UmVncygpLAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIs
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBkZXNjcmlwdG9yLmluZm8oKSkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOiB7
CisgICAgICAgICAgICBTdHJpbmdJbXBsKiB1aWQgPSBtX2ppdC5ncmFwaCgpLmlkZW50aWZpZXJz
KClbZGVzY3JpcHRvci5pbmZvKCldOworICAgICAgICAgICAgZm9yIChQcm9wZXJ0eU1hcEVudHJ5
IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVzQ29uY3VycmVudGx5KCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAodWlkICE9IGVudHJ5LmtleSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdl
KTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGlzSW5saW5lT2Zmc2V0KGVudHJ5
Lm9mZnNldCkgPyByZXN1bHRHUFIgOiBzdG9yYWdlR1BSOworICAgICAgICAgICAgICAgIG1faml0
LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdzKCksCisg
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIG9mZnNldFJl
bGF0aXZlVG9CYXNlKGVudHJ5Lm9mZnNldCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0KE5vZGUqIG5vZGUpCit7CisgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAgIEVkZ2UgcmVnRXhwRWRnZSA9
IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgRWRnZSBzdHJpbmdFZGdl
ID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsKKyAgICBFZGdlIHN0YXJ0RWRn
ZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMyk7CisgICAgRWRnZSBlbmRFZGdl
ID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCA0KTsKKworICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIGNvbnN0cnVjdG9yRWRnZSk7CisgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgcmVnRXhwKHRoaXMsIHJlZ0V4cEVkZ2UpOworICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIHN0cmluZyh0aGlzLCBzdHJpbmdFZGdlKTsKKyAgICBTcGVjdWxhdGVJbnQzMk9w
ZXJhbmQgc3RhcnQodGhpcywgc3RhcnRFZGdlKTsKKyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQg
ZW5kKHRoaXMsIGVuZEVkZ2UpOworCisgICAgR1BSUmVnIGNvbnN0cnVjdG9yR1BSID0gY29uc3Ry
dWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIHJlZ0V4cEdQUiA9IHJlZ0V4cC5ncHIoKTsKKyAgICBH
UFJSZWcgc3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOworICAgIEdQUlJlZyBzdGFydEdQUiA9IHN0
YXJ0LmdwcigpOworICAgIEdQUlJlZyBlbmRHUFIgPSBlbmQuZ3ByKCk7CisKKyAgICBwdHJkaWZm
X3Qgb2Zmc2V0ID0gUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCk7CisK
KyAgICBtX2ppdC5zdG9yZVB0cigKKyAgICAgICAgcmVnRXhwR1BSLAorICAgICAgICBKSVRDb21w
aWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0
OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkpOworICAgIG1faml0LnN0b3JlUHRyKAorICAgICAgICBz
dHJpbmdHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBv
ZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpKTsKKyAgICBt
X2ppdC5zdG9yZTMyKAorICAgICAgICBzdGFydEdQUiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MoCisgICAgICAgICAgICBjb25zdHJ1Y3RvckdQUiwKKyAgICAgICAgICAgIG9mZnNldCAr
IFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihN
YXRjaFJlc3VsdCwgc3RhcnQpKSk7CisgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgZW5kR1BS
LAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcygKKyAgICAgICAgICAgIGNvbnN0cnVjdG9y
R1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJl
c3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSk7CisgICAgbV9qaXQu
c3RvcmU4KAorICAgICAgICBUcnVzdGVkSW1tMzIoMCksCisgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNl
dE9mUmVpZmllZCgpKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE5ODQ2NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQx
Miw2ICsyNDEyLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldFJlZ0V4cE9iamVjdExh
c3RJbmRleChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMYXp5SlNDb25zdGFudChOb2RlKik7CisgICAgdm9p
ZCBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVJl
Y29yZFJlZ0V4cENhY2hlZFJlc3VsdChOb2RlKik7CiAgICAgCiAgICAgdm9pZCBtb3ZlVHJ1ZVRv
KEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhHUFJSZWcpOwpAQCAtMjUyNyw3ICsyNTI5
LDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogICAgIH0KIAotICAgIHZv
aWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqLCBHUFJS
ZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOworICAgIHZvaWQgZW1pdEFsbG9j
YXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdl
R1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKICAgICAK
ICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1lKiwgR1BSUmVnIGxlbmd0aEdQ
UiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoQ29k
ZU9yaWdpbiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTg0NjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUzLDExICsyNTMsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2Ug
UHV0QnlJZDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgICAgICAgICAgY2Fz
ZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6IHsKICAgICAg
ICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAg
ICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAgICAgICAgICAgICAgY29u
c2lkZXJCYXJyaWVyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNhc2UgUHV0Q2xvc3Vy
ZVZhcjoKICAgICAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNl
IFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKQEAgLTI2NiwxMyArMjc0LDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNo
OgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7Ci0gICAgICAgICAgICAgICAgY29u
c2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAg
ICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQyKCksIG1fbm9kZS0+Y2hpbGQz
KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAxOTg0NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTEgKzM2LDE1IEBACiAjaW5jbHVk
ZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdWYXJpYWJs
ZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlJl
Z0V4cENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSA8Y3N0ZGxpYj4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBT
dHJlbmd0aFJlZHVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgCiBwdWJsaWM6CiAgICAgU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2UoZ3JhcGgsICJzdHJlbmd0aCBy
ZWR1Y3Rpb24iKQpAQCAtMzMxLDExICszMzUsMzY4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgaWYgKCEhc3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRv
Q29uc3RhbnQobV9ub2RlLCBqc051bWJlcihzdHJpbmcubGVuZ3RoKCkpKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDogeworICAgICAgICAgICAgaWYg
KEpTT2JqZWN0KiBvYmplY3QgPSBtX25vZGUtPmNoaWxkMSgpLT5keW5hbWljQ2FzdENvbnN0YW50
PEpTT2JqZWN0Kj4oKSkgeworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3Rh
bnQobV9ub2RlLCBvYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFJlZ0V4cEV4ZWM6Cisg
ICAgICAgIGNhc2UgUmVnRXhwVGVzdDogeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNHbG9i
YWxPYmplY3QqPigpOworICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5n
IHVwIGJlY2F1c2Ugbm8gZ2xvYmFsIG9iamVjdC5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5pc0hhdmlu
Z0FCYWRUaW1lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgYmFkIHRpbWUuXG4iKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTm9kZSogcmVn
RXhwT2JqZWN0Tm9kZSA9IG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgpOworICAgICAgICAgICAgUmVn
RXhwKiByZWdFeHA7CisgICAgICAgICAgICBpZiAoUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3Qg
PSByZWdFeHBPYmplY3ROb2RlLT5keW5hbWljQ2FzdENvbnN0YW50PFJlZ0V4cE9iamVjdCo+KCkp
CisgICAgICAgICAgICAgICAgcmVnRXhwID0gcmVnRXhwT2JqZWN0LT5yZWdFeHAoKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHJlZ0V4cE9iamVjdE5vZGUtPm9wKCkgPT0gTmV3UmVnZXhwKQorICAg
ICAgICAgICAgICAgIHJlZ0V4cCA9IGNvZGVCbG9jaygpLT5yZWdleHAocmVnRXhwT2JqZWN0Tm9k
ZS0+cmVnZXhwSW5kZXgoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1
c2UgdGhlIHJlZ2V4cCBpcyB1bmtub3duLlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5vZGUqIHN0cmluZ05vZGUgPSBtX25vZGUtPmNo
aWxkMygpLm5vZGUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTk9URTogVGhpcyBt
b3N0bHkgYWxyZWFkeSBwcm90ZWN0cyB1cyBmcm9tIGhhdmluZyB0aGUgY29tcGlsZXIgZXhlY3V0
ZSBhIHJlZ2V4cAorICAgICAgICAgICAgLy8gb3BlcmF0aW9uIG9uIGEgZ2lub3Jtb3VzIHN0cmlu
ZyBieSBwcmV2ZW50aW5nIHVzIGZyb20gZ2V0dGluZyBvdXIgaGFuZHMgb24gZ2lub3Jtb3VzCisg
ICAgICAgICAgICAvLyBzdHJpbmdzIGluIHRoZSBmaXJzdCBwbGFjZS4KKyAgICAgICAgICAgIFN0
cmluZyBzdHJpbmcgPSBtX25vZGUtPmNoaWxkMygpLT50cnlHZXRTdHJpbmcobV9ncmFwaCk7Cisg
ICAgICAgICAgICBpZiAoIXN0cmluZykgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSB0aGUgc3RyaW5n
IGlzIHVua25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgRnJvemVuVmFsdWUqIHJlZ0V4cEZyb3plblZhbHVlID0gbV9ncmFwaC5m
cmVlemUocmVnRXhwKTsKKworICAgICAgICAgICAgLy8gUmVmdXNlIHRvIGRvIHRoaW5ncyB3aXRo
IHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBoYXZlIGEgZ2lub3Jtb3VzIG51bWJlciBvZgorICAg
ICAgICAgICAgLy8gc3VicGF0dGVybnMuCisgICAgICAgICAgICB1bnNpZ25lZCBnaW5vcm1vdXNO
dW1iZXJPZlN1YlBhdHRlcm5zID0gMTAwMDsKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPm51bVN1
YnBhdHRlcm5zKCkgPiBnaW5vcm1vdXNOdW1iZXJPZlN1YlBhdHRlcm5zKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1
cCBiZWNhdXNlIG9mIHBhdHRlcm4gbGltaXQuXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5zaWduZWQgbGFzdEluZGV4OworICAgICAg
ICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsT3JTdGlja3koKSkgeworICAgICAgICAgICAgICAgIC8v
IFRoaXMgd2lsbCBvbmx5IHdvcmsgaWYgd2UgY2FuIHByb3ZlIHdoYXQgdGhlIHZhbHVlIG9mIGxh
c3RJbmRleCBpcy4gVG8gZG8gdGhpcworICAgICAgICAgICAgICAgIC8vIHNhZmVseSwgd2UgbmVl
ZCB0byBleGVjdXRlIHRoZSBpbnNlcnRpb24gc2V0IHNvIHRoYXQgd2Ugc2VlIGFueSBwcmV2aW91
cyBzdHJlbmd0aAorICAgICAgICAgICAgICAgIC8vIHJlZHVjdGlvbnMuIFRoaXMgaXMgbmVlZGVk
IGZvciBzb3VuZG5lc3Mgc2luY2Ugb3RoZXJ3aXNlIHRoZSBlZmZlY3RmdWxuZXNzIG9mIGFueQor
ICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHN0cmVuZ3RoIHJlZHVjdGlvbnMgd291bGQgYmUg
aW52aXNpYmxlIHRvIHVzLgorICAgICAgICAgICAgICAgIGV4ZWN1dGVJbnNlcnRpb25TZXQoKTsK
KyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBVSU5UX01BWDsKKyAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIG90aGVyTm9kZUluZGV4ID0gbV9ub2RlSW5kZXg7IG90aGVyTm9kZUluZGV4
LS07KSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fYmxvY2stPmF0
KG90aGVyTm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZSA9PSBy
ZWdFeHBPYmplY3ROb2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSAw
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3AoKSA9PSBTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQx
KCkgPT0gcmVnRXhwT2JqZWN0Tm9kZQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJO
b2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNvbnN0YW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICYmIG90aGVyTm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSA+PSAwKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBsYXN0SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3RoZXJOb2RlLT5j
aGlsZDIoKS0+YXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh3cml0ZXNPdmVybGFw
KG1fZ3JhcGgsIG90aGVyTm9kZSwgUmVnRXhwT2JqZWN0X2xhc3RJbmRleCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKGxhc3RJbmRleCA9PSBVSU5UX01BWCkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNl
IHRoZSBsYXN0IGluZGV4IGlzIG5vdCBrbm93bi5cbiIpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBsYXN0SW5kZXggPSAwOworCisgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCku
YWRkTGF6aWx5KGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCk7CisgICAgICAgICAgICBpZiAoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSAhPSBBcnJheVdpdGhDb250aWd1b3VzKSB7CisgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyBmdXJ0aGVyIHByb3RlY3Rpb24gYWdhaW5zdCBhIHJhY2Ugd2l0aCBo
YXZlQUJhZFRpbWUuCisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSBzdHJ1Y3R1cmUgaGFzIHRoZSB3
cm9uZyBpbmRleGluZyB0eXBlLlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7
CisKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IGdsb2JhbE9i
amVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKTsKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiBjb25z
dHJ1Y3RvckZyb3plblZhbHVlID0gbV9ncmFwaC5mcmVlemUoY29uc3RydWN0b3IpOworCisgICAg
ICAgICAgICBNYXRjaFJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBWZWN0b3I8aW50LCAzMj4g
b3ZlY3RvcjsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gY2FsbCB0aGUga2luZCBvZiBtYXRj
aCBmdW5jdGlvbiB0aGF0IHRoZSBtYWluIHRocmVhZCB3b3VsZCBoYXZlIGNhbGxlZC4KKyAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbWlnaHQgbm90IGhhdmUgdGhlIGRlc2lyZWQgWWFyciBj
b2RlIGNvbXBpbGVkLCBhbmQgdGhlIG1hdGNoIHdpbGwgZmFpbC4KKyAgICAgICAgICAgIGlmICht
X25vZGUtPm9wKCkgPT0gUmVnRXhwRXhlYykgeworICAgICAgICAgICAgICAgIGludCBwb3NpdGlv
bjsKKyAgICAgICAgICAgICAgICBpZiAoIXJlZ0V4cC0+bWF0Y2hDb25jdXJyZW50bHkodm0oKSwg
c3RyaW5nLCBsYXN0SW5kZXgsIHBvc2l0aW9uLCBvdmVjdG9yKSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmlu
ZyB1cCBiZWNhdXNlIG1hdGNoIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0LnN0YXJ0ID0gcG9z
aXRpb247CisgICAgICAgICAgICAgICAgcmVzdWx0LmVuZCA9IG92ZWN0b3JbMV07CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJl
bnRseSh2bSgpLCBzdHJpbmcsIGxhc3RJbmRleCwgcmVzdWx0KSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmlu
ZyB1cCBiZWNhdXNlIG1hdGNoIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdl
J3ZlIGNvbnN0YW50LWZvbGRlZCB0aGUgcmVnZXhwLiBOb3cgd2UncmUgY29tbWl0dGVkIHRvIHJl
cGxhY2luZyBSZWdFeHBFeGVjL1Rlc3QuCisKKyAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7
CisKKyAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbV9ub2RlLT5vcmlnaW47CisKKyAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9u
b2RlSW5kZXgsIFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBtX25vZGUtPmNoaWxkcmVuLmp1c3RD
aGVja3MoKSk7CisKKyAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUmVnRXhwRXhlYykg
eworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1
cmUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBhcnJheSBtb2RlbGluZyB0
aGUgSlMgYXJyYXkgdGhhdCB3ZSB3aWxsIHRyeSB0byBhbGxvY2F0ZS4gVGhpcyBpcworICAgICAg
ICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5IGJ1dCBv
dmVyIEMrKyBzdHJpbmdzIGluc3RlYWQgb2YgSlNTdHJpbmdzLgorICAgICAgICAgICAgICAgICAg
ICBWZWN0b3I8U3RyaW5nPiByZXN1bHRBcnJheTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0g
cmVzdWx0LnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPD0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzdGFydCA9IG92ZWN0b3JbMiAqIGldOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcoc3RhcnQsIG92ZWN0b3JbMiAqIGkgKyAxXSAtIHN0
YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKFN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHB1YmxpY0xlbmd0aCA9IHJlc3Vs
dEFycmF5LnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3Ro
ID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBwdWJsaWNMZW5ndGgpOworCisgICAgICAgICAg
ICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbmRleFVJRCA9IHZtKCkucHJvcGVydHlOYW1l
cy0+aW5kZXguaW1wbCgpOworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
aW5wdXRVSUQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmlucHV0LmltcGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW5kZXhJbmRleCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1
cmUoaW5kZXhVSUQpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dEluZGV4ID0g
bV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpbnB1dFVJRCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXpl
KCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQo
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZv
clVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBz
dHJ1Y3R1cmUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAgICAgICAgICBPYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhKiBkYXRhID0gbV9ncmFwaC5tX29iamVjdE1hdGVyaWFsaXphdGlvbkRh
dGEuYWRkKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHB1YmxpY0xlbmd0aCksIEtub3duSW50MzJVc2Up
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZChQdWJsaWNM
ZW5ndGhQTG9jKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
dmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIodmVjdG9yTGVuZ3RoKSwgS25vd25JbnQzMlVz
ZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKFZlY3Rv
ckxlbmd0aFBMb2MpOworCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGls
ZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRl
eCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQpLCBVbnR5cGVkVXNlKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3BlcnR5UExvYywgaW5k
ZXhJbmRleCkpOworCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5hcHBlbmQoRWRnZShzdHJpbmdOb2RlLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAg
ICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3BlcnR5UExvYywgaW5wdXRJbmRleCkp
OworCisgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0ZXJpYWxpemVTdHJpbmcgPSBbJl0gKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSAtPiBOb2RlKiB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBv
cmlnaW4sIHZtKCkuc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgTGF6eUpTVmFsdWUgdmFsdWUgPSBM
YXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIHN0cmluZyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIExhenlKU0NvbnN0YW50LCBvcmln
aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9sYXp5SlNW
YWx1ZXMuYWRkKHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRBcnJheS5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSBtYXRlcmlhbGl6
ZVN0cmluZyhyZXN1bHRBcnJheVtpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uobm9kZSwgVW50eXBlZFVzZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9y
KEluZGV4ZWRQcm9wZXJ0eVBMb2MsIGkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIHJlc3VsdE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNBcnJheSwgTm9kZTo6VmFyQXJnLCBNYXRlcmlh
bGl6ZU5ld09iamVjdCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHN0
cnVjdHVyZVNldCksIE9wSW5mbyhkYXRhKSwgZmlyc3RDaGlsZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBmaXJzdENoaWxkKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9JZGVu
dGl0eU9uKHJlc3VsdE5vZGUpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9kZSwganNOdWxsKCkpOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFu
dChtX25vZGUsIGpzQm9vbGVhbighIXJlc3VsdCkpOworCisgICAgICAgICAgICAvLyBXaGV0aGVy
IGl0J3MgRXhlYyBvciBUZXN0LCB3ZSBuZWVkIHRvIHRlbGwgdGhlIGNvbnN0cnVjdG9yIGFuZCBS
ZWdFeHBPYmplY3Qgd2hhdCdzIHVwLgorICAgICAgICAgICAgLy8gQmVjYXVzZSBTZXRSZWdFeHBP
YmplY3RMYXN0SW5kZXggbWF5IGV4aXQgYW5kIGl0IGNsb2JiZXJzIGV4aXQgc3RhdGUsIHdlIGRv
IHRoYXQKKyAgICAgICAgICAgIC8vIGZpcnN0LgorICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNO
b25lLCBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgRWRnZShyZWdFeHBPYmplY3ROb2RlLCBSZWdFeHBPYmplY3RVc2UpLAorICAgICAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHJlc3VsdCA/IHJlc3Vs
dC5lbmQgOiAwKSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIG9yaWdpbiA9IG9yaWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0
Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOworICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwgY29uc3RydWN0b3JGcm96ZW5WYWx1ZSwgS25vd25DZWxs
VXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2Uo
CisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCByZWdFeHBGcm96
ZW5WYWx1ZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFy
Z0NoaWxkcmVuLmFwcGVuZChFZGdlKHN0cmluZ05vZGUsIEtub3duQ2VsbFVzZSkpOworICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0LnN0YXJ0KSwg
S25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0
YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwg
anNOdW1iZXIocmVzdWx0LmVuZCksIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRl
eCwgU3BlY05vbmUsIE5vZGU6OlZhckFyZywgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0LCBvcmln
aW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbygpLCBPcEluZm8oKSwgZmlyc3RDaGlsZCwg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOworCisgICAgICAg
ICAgICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBtX25vZGUtPm9yaWdpbiA9IG9yaWdpbjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNl
OiB7CisgICAgICAgICAgICBOb2RlKiBzdHJpbmdOb2RlID0gbV9ub2RlLT5jaGlsZDEoKS5ub2Rl
KCk7CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nID0gc3RyaW5nTm9kZS0+dHJ5R2V0U3RyaW5n
KG1fZ3JhcGgpOworICAgICAgICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJlZ0V4cE9iamVjdE5vZGUgPSBt
X25vZGUtPmNoaWxkMigpLm5vZGUoKTsKKyAgICAgICAgICAgIFJlZ0V4cCogcmVnRXhwOworICAg
ICAgICAgICAgaWYgKFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0ID0gcmVnRXhwT2JqZWN0Tm9k
ZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxSZWdFeHBPYmplY3QqPigpKQorICAgICAgICAgICAgICAg
IHJlZ0V4cCA9IHJlZ0V4cE9iamVjdC0+cmVnRXhwKCk7CisgICAgICAgICAgICBlbHNlIGlmIChy
ZWdFeHBPYmplY3ROb2RlLT5vcCgpID09IE5ld1JlZ2V4cCkKKyAgICAgICAgICAgICAgICByZWdF
eHAgPSBjb2RlQmxvY2soKS0+cmVnZXhwKHJlZ0V4cE9iamVjdE5vZGUtPnJlZ2V4cEluZGV4KCkp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSByZWdleHAgaXMg
dW5rbm93bi5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBTdHJpbmcgcmVwbGFjZSA9IG1fbm9kZS0+Y2hpbGQzKCktPnRyeUdldFN0cmlu
ZyhtX2dyYXBoKTsKKyAgICAgICAgICAgIGlmICghc3RyaW5nKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICAgICAgICAg
IHVuc2lnbmVkIGxhc3RJbmRleCA9IDA7CisgICAgICAgICAgICB1bnNpZ25lZCBzdGFydFBvc2l0
aW9uID0gMDsKKyAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICAgICAgICAgZG8gewor
ICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgICAgICBWZWN0
b3I8aW50LCAzMj4gb3ZlY3RvcjsKKyAgICAgICAgICAgICAgICAvLyBNb2RlbCB3aGljaCB2ZXJz
aW9uIG9mIG1hdGNoKCkgaXMgY2FsbGVkIGJ5IHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAg
ICAgICBpZiAocmVwbGFjZS5pc0VtcHR5KCkgJiYgcmVnRXhwLT5nbG9iYWwoKSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoIXJlZ0V4cC0+bWF0Y2hDb25jdXJyZW50bHkodm0oKSwgc3RyaW5n
LCBzdGFydFBvc2l0aW9uLCByZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvayA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpbnQg
cG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJl
bnRseSh2bSgpLCBzdHJpbmcsIHN0YXJ0UG9zaXRpb24sIHBvc2l0aW9uLCBvdmVjdG9yKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBwb3NpdGlvbjsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmVuZCA9IG92ZWN0b3JbMV07CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlcGxMZW4gPSByZXBs
YWNlLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChsYXN0SW5kZXggPCByZXN1bHQuc3Rh
cnQgfHwgcmVwbExlbikgeworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJp
bmcsIGxhc3RJbmRleCwgcmVzdWx0LnN0YXJ0IC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlcGxMZW4pCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMocmVwbGFjZSwgc3RyaW5nLCBvdmVjdG9yLmRhdGEo
KSwgcmVnRXhwKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbGFzdElu
ZGV4ID0gcmVzdWx0LmVuZDsKKyAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gbGFzdElu
ZGV4OworCisgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIG9mIGVtcHR5IG1hdGNoCisg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5lbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAg
IHN0YXJ0UG9zaXRpb24rKzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9zaXRpb24g
PiBzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IHdoaWxlIChyZWdFeHAtPmdsb2JhbCgpKTsKKyAg
ICAgICAgICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IC8vIFdlIGFyZSBjb21taXR0ZWQgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7CisKKyAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbV9ub2RlLT5vcmln
aW47CisKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPmdsb2JhbCgpKSB7CisgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2Rl
SW5kZXgsIFNwZWNOb25lLCBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIG9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgRWRnZShyZWdFeHBPYmplY3ROb2RlLCBSZWdFeHBPYmplY3RVc2UpLAor
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKDAp
LCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb3JpZ2lu
ID0gb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIWxhc3RJbmRleCAmJiBidWlsZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBt
X25vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24oc3RyaW5nTm9kZSk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZiAobGFzdEluZGV4IDwgc3RyaW5nLmxlbmd0aCgpKQorICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmcsIGxhc3RJbmRleCwgc3RyaW5n
Lmxlbmd0aCgpIC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBtX25vZGUtPmNvbnZlcnRUb0xhenlKU0NvbnN0YW50KAorICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLCBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIGJ1aWxkZXIudG9TdHJpbmco
KSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX25vZGUtPm9yaWdpbiA9IG9yaWdp
bjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zODAsNiArNzQxLDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGV4ZWN1
dGVJbnNlcnRpb25TZXQoKQorICAgIHsKKyAgICAgICAgbV9ub2RlSW5kZXggKz0gbV9pbnNlcnRp
b25TZXQuZXhlY3V0ZShtX2Jsb2NrKTsKKyAgICB9CiAgICAgCiAgICAgSW5zZXJ0aW9uU2V0IG1f
aW5zZXJ0aW9uU2V0OwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTk4NDY2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yODEsNiArMjgxLDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElE
QVRFKChub2RlKSwgIXZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5kZmdTaG91
bGRXYXRjaCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAg
ICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJl
U2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBz
dHJ1Y3R1cmVzIHRoYXQgYXJlIEpTRmluYWxPYmplY3Qgb3IgSlNBcnJheS4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIFZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2Rl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09
IEpTRmluYWxPYmplY3Q6OmluZm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNBcnJheTo6aW5mbygpKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGNlcnRhaW4gaW5kZXhpbmcgc2hhcGVzLgor
ICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzQW55QXJyYXlTdG9y
YWdlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZUNv
bnN0YW50OgogICAgICAgICAgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5pc051bWJlckNvbnN0YW50KCkpOwpAQCAt
NTA1LDEzICs1MTcsNDIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJn
dW1lbnRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKLSAgICAgICAgICAgICAgICBjYXNlIE1h
dGVyaWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVh
dGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAgICAg
ICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhInVuZXhwZWN0ZWQgbm9kZSB0eXBl
IGluIENQUyIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OiB7CisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBv
bmx5IGFsbG93cyBhcnJheSBsZW5ndGhzIHRvIGJlIGNvbnN0YW50LiBUaGlzIGNvbnN0cmFpbnQg
b25seSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZl
IERGRyBzdXBwb3J0IGZvciBhbnl0aGluZyBtb3JlIGFuZCB3ZSBkb24ndCBuZWVkIGFueQorICAg
ICAgICAgICAgICAgICAgICAvLyBvdGhlciBraW5kIG9mIHN1cHBvcnQgZm9yIG5vdy4KKyAgICAg
ICAgICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9i
amVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5t
X3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
UHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVu
Z3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSwgZWRn
ZSksIGVkZ2UtPmlzSW50MzJDb25zdGFudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBDUFMgb25seSBhbGxvd3Mg
b25lIHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2Rl
LT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgPT0gMSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
Q1BTIGRpc2FsbG93cyBpbnQzMiBhbmQgZG91YmxlIGFycmF5cy4gVGhvc2UgcmVxdWlyZSB3ZWly
ZCB0eXBlIGNoZWNrcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgLy8gY29udmVyc2lvbnMuIFRo
ZXkgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIERGRyByaWdodCBub3cuIFdlIHNob3VsZCBhZGQgc3Vw
cG9ydAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhlc2UgaWYgdGhlIERGRyBldmVyIG5l
ZWRzIGl0LgorICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDog
bm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KChub2RlKSwgIWhhc0ludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0RvdWJsZShzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRv
bToKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBtX2dyYXBoLm1fZml4cG9p
bnRTdGF0ZSAhPSBGaXhwb2ludE5vdENvbnZlcmdlZCk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCShyZXZpc2lvbiAxOTg0NjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2lu
Y2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxl
LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDYgKzc3LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNy
byhKU1N5bWJvbFRhYmxlT2JqZWN0X3N5bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojpv
ZmZzZXRPZlN5bWJvbFRhYmxlKCkpIFwKICAgICBtYWNybyhKU1dyYXBwZXJPYmplY3RfaW50ZXJu
YWxWYWx1ZSwgSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlT2Zmc2V0KCkpIFwKICAgICBt
YWNybyhNYXJrZWRBbGxvY2F0b3JfZnJlZUxpc3RIZWFkLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNl
dE9mRnJlZUxpc3RIZWFkKCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRS
ZXN1bHRfbGFzdFJlZ0V4cCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0
KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4cCgpKSBcCisgICAgbWFj
cm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RJbnB1dCwgUmVnRXhwQ29uc3Ry
dWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNl
dE9mTGFzdElucHV0KCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1
bHRfcmVzdWx0X3N0YXJ0LCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQo
KSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRP
RihNYXRjaFJlc3VsdCwgc3RhcnQpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2Fj
aGVkUmVzdWx0X3Jlc3VsdF9lbmQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJl
c3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09G
RlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3Jf
Y2FjaGVkUmVzdWx0X3JlaWZpZWQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJl
c3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlaWZpZWQoKSkgXAogICAgIG1h
Y3JvKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5k
ZXgoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXhJc1dyaXRhYmxlLCBSZWdF
eHBPYmplY3Q6Om9mZnNldE9mTGFzdEluZGV4SXNXcml0YWJsZSgpKSBcCiAgICAgbWFjcm8oU2Nv
cGVkQXJndW1lbnRzX292ZXJyb2RlVGhpbmdzLCBTY29wZWRBcmd1bWVudHM6Om9mZnNldE9mT3Zl
cnJvZGVUaGluZ3MoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNiArMjI3
LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2Ug
U3RyaW5nUmVwbGFjZToKICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBj
YXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hl
ZFJlc3VsdDoKICAgICBjYXNlIFNldEZ1bmN0aW9uTmFtZToKICAgICAgICAgLy8gVGhlc2UgYXJl
IE9LLgogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDE5ODQ2NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTM4LDYg
KzkzOCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4
OgogICAgICAgICAgICAgY29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleCgpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgorICAg
ICAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCgpOworICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhp
bnQ6CkBAIC0zNzExLDMyICszNzE0LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9vdXQuc3RvcmUzMihwdWJsaWNMZW5ndGgsIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0
ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIodmVjdG9yTGVu
Z3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChoYXNEb3VibGUobV9ub2RlLT5pbmRleGluZ1R5cGUoKSkp
IHsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdERvbmUgPSBtX291dC5uZXdCbG9j
aygpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9y
aWdpbmFsSW5kZXggPSBtX291dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsKLSAgICAgICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50ZXIgPSBtX291dC5hbmNob3IoYnV0dGVyZmx5
KTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1f
b3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5p
dERvbmUpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBp
bml0TGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOwotICAgICAg
ICAgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgb3JpZ2luYWxJ
bmRleCk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHBvaW50ZXIgPSBtX291dC5waGkobV9vdXQu
aW50UHRyLCBvcmlnaW5hbFBvaW50ZXIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIG1fb3V0LnN0b3JlNjQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQo
Yml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKLSAgICAgICAgICAgICAgICAgICAgVHlwZWRQ
b2ludGVyKG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2lu
dGVyKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTFZhbHVlIG5leHRJbmRl
eCA9IG1fb3V0LnN1YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOwotICAgICAgICAgICAgICAgIG1f
b3V0LmFkZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKLSAg
ICAgICAgICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKHBvaW50ZXIsIG1fb3V0LmFuY2hv
cihtX291dC5hZGQocG9pbnRlciwgbV9vdXQuaW50UHRyRWlnaHQpKSk7Ci0gICAgICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIobmV4
dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW5pdERvbmUsIGluaXRMYXN0
TmV4dCk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGluaXRpYWxpemVBcnJheUVsZW1l
bnRzKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCksIHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5KTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0
LmFuY2hvcihvYmplY3QpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpA
QCAtNjI4MSwxMSArNjI2MCwyMSBAQCBwcml2YXRlOgogICAgICAgICAvLyBMb3dlciB0aGUgdmFs
dWVzIGZpcnN0LCB0byBhdm9pZCBjcmVhdGluZyB2YWx1ZXMgaW5zaWRlIGEgY29udHJvbCBmbG93
IGRpYW1vbmQuCiAgICAgICAgIAogICAgICAgICBWZWN0b3I8TFZhbHVlLCA4PiB2YWx1ZXM7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMSArIGkpKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgRWRnZSBlZGdl
ID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKTsKKyAgICAgICAgICAgIHN3aXRj
aCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIFB1Ymxp
Y0xlbmd0aFBMb2M6CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dJbnQzMihlZGdlKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBl
bmQobG93SlNWYWx1ZShlZGdlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0
ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKLSAgICAgICAgCisKICAgICAgICAgVmVjdG9yPExC
YXNpY0Jsb2NrLCAxPiBibG9ja3Moc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IHNldC5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBibG9ja3NbaV0gPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtNjMxMCwyMSArNjI5OSw1MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZh
bHVlIG9iamVjdDsKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgaGFzSW5kZXhlZFBy
b3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgICAgICAgICBz
aXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1
Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgICAgIE1hcmtlZEFsbG9jYXRv
ciogYWxsb2NhdG9yID0gJnZtKCkuaGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1
Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisKKyAgICAgICAgICAgICAgICBib29sIGhhc0luZGV4aW5n
SGVhZGVyID0gaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXhpbmdIZWFkZXJTaXplID0gMDsKKyAgICAg
ICAgICAgICAgICBMVmFsdWUgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPSBtX291dC5pbnRQ
dHJaZXJvOworICAgICAgICAgICAgICAgIExWYWx1ZSB2ZWN0b3JMZW5ndGggPSBtX291dC5pbnQz
Mlplcm87CisgICAgICAgICAgICAgICAgTFZhbHVlIHB1YmxpY0xlbmd0aCA9IG1fb3V0LmludDMy
WmVybzsKKyAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZXhpbmdIZWFkZXJTaXplID0gc2l6ZW9mKEluZGV4aW5nSGVhZGVyKTsK
KyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMu
c2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljTGVuZ3RoID0gdmFsdWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9j
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9IHZhbHVlc1tpXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9vdXQubXVsKG1fb3V0Lnplcm9FeHRQdHIodmVjdG9yTGVuZ3RoKSwgbV9vdXQuaW50UHRy
RWlnaHQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIExWYWx1ZSBidXR0
ZXJmbHlTaXplID0gbV9vdXQuYWRkKAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cigKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAqIHNpemVvZihKU1ZhbHVlKSArIGluZGV4aW5nSGVhZGVyU2l6ZSksCisgICAgICAgICAg
ICAgICAgICAgIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFz
aWNTdG9yYWdlQW5kR2V0RW5kKAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0
cihzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpLAotICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aCk7Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5k
KGJ1dHRlcmZseVNpemUsIHNsb3dQYXRoKTsKKwogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0
QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBlbmRPZlN0b3JhZ2UpOworICAgICAg
ICAgICAgICAgICAgICBtX291dC5zdWIoZW5kT2ZTdG9yYWdlLCBpbmRleGluZ1BheWxvYWRTaXpl
SW5CeXRlcyksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJ
bmRleGluZ0hlYWRlcikgLSBpbmRleGluZ0hlYWRlclNpemUpKTsKKworICAgICAgICAgICAgICAg
IG1fb3V0LnN0b3JlMzIodmVjdG9yTGVuZ3RoLCBmYXN0QnV0dGVyZmx5VmFsdWUsIG1faGVhcHMu
QnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgTFZhbHVlIGZhc3RPYmplY3RWYWx1ZSA9IGFsbG9jYXRlT2JqZWN0KAogICAgICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IpLCBzdHJ1Y3R1cmUsIGZhc3RCdXR0
ZXJmbHlWYWx1ZSwgc2xvd1BhdGgpOwpAQCAtNjMzNSwxMiArNjM1NCwyNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRo
LCBjb250aW51YXRpb24pOwogCi0gICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RWYWx1
ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8
TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0
ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93T2JqZWN0VmFsdWU7Cisg
ICAgICAgICAgICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6
eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRW
ZWN0b3JMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sw
XS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgdmVj
dG9yTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBzbG93T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICAgICAgICAgICAg
ICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlT
bG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BS
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93T2JqZWN0ID0g
bV9vdXQuYW5jaG9yKHNsb3dPYmplY3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd0J1dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgICAgICAgICAg
bV9vdXQubG9hZFB0cihzbG93T2JqZWN0VmFsdWUsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5
KSk7CkBAIC02MzUxLDYgKzYzODIsMTExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgb2JqZWN0ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdE9iamVj
dCwgc2xvd09iamVjdCk7CiAgICAgICAgICAgICAgICAgYnV0dGVyZmx5ID0gbV9vdXQucGhpKG1f
b3V0LmludFB0ciwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSk7CisKKyAgICAgICAgICAg
ICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRl
cmZseV9wdWJsaWNMZW5ndGgpOworCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUFycmF5RWxl
bWVudHMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkp
OworCisgICAgICAgICAgICAgICAgSGFzaE1hcDxpbnQzMl90LCBMVmFsdWUsIERlZmF1bHRIYXNo
PGludDMyX3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludDMy
X3Q+PiBpbmRleE1hcDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8aW50MzJfdD4gaW5kaWNlczsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZGVzY3JpcHRvci5raW5kKCkgIT0gSW5kZXhlZFByb3BlcnR5UExvYykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGlu
ZGV4ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVzY3JpcHRvci5pbmZvKCkpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBpbmRleE1hcC5h
ZGQoaW5kZXgsIHZhbHVlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbV9ub2RlLCByZXN1bHQpOyAvLyBEdXBsaWNhdGVzIGFyZSBpbGxlZ2FsLgorCisgICAg
ICAgICAgICAgICAgICAgIGluZGljZXMuYXBwZW5kKGluZGV4KTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoIWluZGljZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c29ydChpbmRpY2VzLmJlZ2luKCksIGluZGljZXMuZW5kKCkpOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2Nr
PiBibG9ja3NXaXRoU3RvcmVzKGluZGljZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
VmVjdG9yPExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoQ2hlY2tzKGluZGljZXMuc2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NX
aXRoU3RvcmVzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJsb2Nrc1dpdGhDaGVja3NbaV0gPSBtX291dC5uZXdCbG9jaygpOyAvLyBibG9ja3NXaXRoQ2hl
Y2tzWzBdIGlzIHRoZSBjb250aW51YXRpb24uCisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbmRleExhc3ROZXh0ID0gbV9vdXQubV9uZXh0
QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBpbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCBpbmRleCA9IGluZGljZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBM
VmFsdWUgdmFsdWUgPSBpbmRleE1hcC5nZXQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9vdXQuYmVsb3cobV9vdXQuY29uc3RJbnQzMihpbmRleCksIHB1Ymxp
Y0xlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGJsb2Nrc1dpdGhT
dG9yZXNbaV0pLCB1bnN1cmUoYmxvY2tzV2l0aENoZWNrc1tpXSkpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NXaXRoU3RvcmVzW2ldLCBibG9ja3NXaXRo
Q2hlY2tzW2ldKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBoYXMgdG8gdHlw
ZS1jaGVjayBhbmQgY29udmVydCBpdHMgaW5wdXRzLCBidXQgaXQgY2Fubm90IGRvIHNvIGluIGEK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdheSB0aGF0IHVwZGF0ZXMgQUkuIFRoYXQncyBh
IGJpdCBhbm5veWluZywgYnV0IGlmIHlvdSB0aGluayBhYm91dCBob3cKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHNpbmtpbmcgd29ya3MsIGl0J3MgYWN0dWFsbHkgbm90IGEgYmFkIHRoaW5n
LiBXZSBhcmUgdmlydHVhbGx5IGd1YXJhbnRlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRoYXQgdGhlc2UgdHlwZSBjaGVja3Mgd2lsbCBub3QgZmFpbCwgc2luY2UgdGhlIHR5cGUgY2hl
Y2tzIHRoYXQgZ3VhcmRlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFs
IHN0b3JlcyB0byB0aGUgYXJyYXkgYXJlIHN0aWxsIHNvbWV3aGVyZSBhYm92ZSB0aGlzIHBvaW50
LgorICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhlZEFic3RyYWN0SGVhcCogaGVhcDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIHRoZSBw
cm92ZW4gdHlwZSBpZiB3ZSBoYWQgdGhlIEVkZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1MzExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUs
IG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOb3RJbnQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmU2NDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGllczsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBzb3VyY2UgaXMgVmFsdWVSZXAsIHdlIHNob3VsZCBh
dm9pZCBlbWl0dGluZyBhbnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVja3Mu
IFdlIGNvdWxkIGFsc28gYXZvaWQgZW1pdHRpbmcgY2hlY2tzIGlmIHdlIGhhZCB0aGUgRWRnZSBv
ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgdmFsdWUuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTEKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X291dC5icmFuY2goaXNJbnQzMih2YWx1ZSksIHVuc3VyZShpbnRDYXNlKSwgdW5zdXJlKGRvdWJs
ZUNhc2UpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3RO
ZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBpbnRSZXN1bHQgPQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX291dC5hbmNob3IobV9vdXQuaW50VG9Eb3VibGUodW5ib3hJ
bnQzMih2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3BlY3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOdW1iZXIodmFsdWUp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBkb3VibGVSZXN1
bHQgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1fb3V0LnBoaShEb3VibGUsIGludFJlc3Vs
dCwgZG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUg
PSBPdXRwdXQ6OlN0b3JlRG91YmxlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAg
PSAmbV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlNjQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmluZGV4ZWRDb250aWd1b3VzUHJv
cGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdf
Q1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiSW52YWxpZCBpbmRleGluZyB0eXBlIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0
b3JlKHZhbHVlLCBtX291dC5hZGRyZXNzKGJ1dHRlcmZseSwgaGVhcC0+YXQoaW5kZXgpKSwgc3Rv
cmVUeXBlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChibG9ja3NXaXRo
Q2hlY2tzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3NbaV0sIGkgPyBibG9ja3NX
aXRoU3RvcmVzW2kgLSAxXSA6IGluZGV4TGFzdE5leHQpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBJbiB0aGUgZWFzeSBjYXNlIHdoZXJlIHdlIGNhbiBkbyBhIG9uZS1zaG90IGFsbG9jYXRp
b24sIHdlIHNpbXBseSBhbGxvY2F0ZSB0aGUKICAgICAgICAgICAgICAgICAvLyBvYmplY3QgdG8g
ZGlyZWN0bHkgaGF2ZSB0aGUgZGVzaXJlZCBzdHJ1Y3R1cmUuCkBAIC02MzYwLDEyICs2NDk2LDE0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoUHJvcGVydHlNYXBF
bnRyeSBlbnRyeSA6IHN0cnVjdHVyZS0+Z2V0UHJvcGVydGllc0NvbmN1cnJlbnRseSgpKSB7CiAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgp
OyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIFBoYW50b21Qcm9wZXJ0eVZhbHVlIHZhbHVl
ID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LmlkZW50aWZpZXJzKClbdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyXSAhPSBlbnRyeS5rZXkpCisg
ICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3Ig
PSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0
b3Iua2luZCgpICE9IE5hbWVkUHJvcGVydHlQTG9jKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClb
ZGVzY3JpcHRvci5pbmZvKCldICE9IGVudHJ5LmtleSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTFZh
bHVlIGJhc2UgPSBpc0lubGluZU9mZnNldChlbnRyeS5vZmZzZXQpID8gb2JqZWN0IDogYnV0dGVy
Zmx5OwotICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwg
dmFsdWUubV9pZGVudGlmaWVyTnVtYmVyLCBlbnRyeS5vZmZzZXQpOworICAgICAgICAgICAgICAg
ICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgZGVzY3JpcHRvci5pbmZvKCksIGVu
dHJ5Lm9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTY0MzAsOSArNjU2OCwxMSBAQCBwcml2YXRlOgogICAgICAg
ICBMVmFsdWUgYWN0aXZhdGlvbiA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RSZXN1bHQs
IHNsb3dSZXN1bHQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChkYXRhLm1fcHJvcGVydGllcy5z
aXplKCkgPT0gdGFibGUtPnNjb3BlU2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBtX291
dC5zdG9yZTY0KHZhbHVlc1tpXSwKLSAgICAgICAgICAgICAgICBhY3RpdmF0aW9uLAotICAgICAg
ICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGF0YS5tX3By
b3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAgICAgICBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAg
ICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ2xvc3VyZVZhclBMb2MpOworICAg
ICAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgICAgICB2YWx1ZXNbaV0sIGFjdGl2
YXRpb24sCisgICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3JkX3Zhcmlh
Ymxlc1tkZXNjcmlwdG9yLmluZm8oKV0pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHZhbGlk
YXRpb25FbmFibGVkKCkpIHsKQEAgLTY0NDEsNyArNjU4MSw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbihsb2NrZXIpLCBlbmQgPSB0YWJsZS0+
ZW5kKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgICAgICAgICBib29s
IGZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09IGRhdGEubV9wcm9wZXJ0aWVz
W2ldLm1faWRlbnRpZmllck51bWJlcikgeworICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9PSBDbG9zdXJlVmFyUExv
Yyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9m
ZnNldCgpID09IGRlc2NyaXB0b3IuaW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBm
b3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtNjYxNCw2ICs2NzU2LDI5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0
LnN0b3JlNjQodmFsdWUsIHJlZ0V4cCwgbV9oZWFwcy5SZWdFeHBPYmplY3RfbGFzdEluZGV4KTsK
ICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQoKQorICAg
IHsKKyAgICAgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMCk7CisgICAgICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCAxKTsKKyAgICAgICAgRWRnZSBzdHJpbmdFZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDIpOworICAgICAgICBFZGdlIHN0YXJ0RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAzKTsKKyAgICAgICAgRWRnZSBlbmRFZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDQpOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIGNvbnN0cnVjdG9yID0gbG93
Q2VsbChjb25zdHJ1Y3RvckVkZ2UpOworICAgICAgICBMVmFsdWUgcmVnRXhwID0gbG93Q2VsbChy
ZWdFeHBFZGdlKTsKKyAgICAgICAgTFZhbHVlIHN0cmluZyA9IGxvd0NlbGwoc3RyaW5nRWRnZSk7
CisgICAgICAgIExWYWx1ZSBzdGFydCA9IGxvd0ludDMyKHN0YXJ0RWRnZSk7CisgICAgICAgIExW
YWx1ZSBlbmQgPSBsb3dJbnQzMihlbmRFZGdlKTsKKworICAgICAgICBtX291dC5zdG9yZVB0cihy
ZWdFeHAsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3Vs
dF9sYXN0UmVnRXhwKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RyaW5nLCBjb25zdHJ1Y3Rv
ciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdElucHV0KTsKKyAg
ICAgICAgbV9vdXQuc3RvcmUzMihzdGFydCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29u
c3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9zdGFydCk7CisgICAgICAgIG1fb3V0LnN0b3Jl
MzIoZW5kLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1
bHRfcmVzdWx0X2VuZCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzJBczgoCisgICAgICAgICAgICBt
X291dC5jb25zdEludDMyKDApLAorICAgICAgICAgICAgbV9vdXQuYWRkcmVzcyhjb25zdHJ1Y3Rv
ciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVpZmllZCkpOworICAg
IH0KKwogICAgIExWYWx1ZSBkaWRPdmVyZmxvd1N0YWNrKCkKICAgICB7CiAgICAgICAgIC8vIFRo
aXMgZG9lcyBhIHZlcnkgc2ltcGxlIGxlYWYgZnVuY3Rpb24gYW5hbHlzaXMuIFRoZSBpbnZhcmlh
bnQgb2YgRlRMIGNhbGwKQEAgLTY5NzEsNiArNzEzNiwzOSBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemVBcnJh
eUVsZW1lbnRzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIExWYWx1ZSB2ZWN0b3JMZW5ndGgs
IExWYWx1ZSBidXR0ZXJmbHkpCisgICAgeworICAgICAgICBpZiAoIWhhc0RvdWJsZShpbmRleGlu
Z1R5cGUpKSB7CisgICAgICAgICAgICAvLyBUaGUgR0MgYWxyZWFkeSBpbml0aWFsaXplZCBldmVy
eXRoaW5nIHRvIEpTVmFsdWUoKSBmb3IgdXMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICAvLyBEb3VibGVzIG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gUE5hTi4KKyAg
ICAgICAgTEJhc2ljQmxvY2sgaW5pdExvb3AgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBpbml0RG9uZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIAorICAgICAg
ICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5jaG9yKHZlY3Rvckxlbmd0
aCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFuY2hv
cihidXR0ZXJmbHkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5u
b3RaZXJvMzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25l
KSk7CisgICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOworICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291
dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOworICAgICAgICBMVmFsdWUgcG9pbnRl
ciA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7CisgICAgICAgIAor
ICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3
aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAorICAgICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVh
cHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSk7CisgICAg
ICAgIAorICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5p
bnQzMk9uZSk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFu
Y2hvcihuZXh0SW5kZXgpKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShwb2ludGVy
LCBtX291dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1fb3V0LmludFB0ckVpZ2h0KSkpOwor
ICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIobmV4dElu
ZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7CisgICAgICAgIAorICAg
ICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5pdExhc3ROZXh0KTsKKyAgICB9CiAgICAg
CiAgICAgTFZhbHVlIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKExWYWx1ZSBvYmplY3QsIFN0cnVj
dHVyZSogcHJldmlvdXNTdHJ1Y3R1cmUpCiAgICAgewpAQCAtOTE1NCw3ICs5MzUyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC50
ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQotICAgIAorCiAg
ICAgTFZhbHVlIHVuYm94RG91YmxlKExWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fb3V0LmJpdENhc3QobV9vdXQuYWRkKGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlciksIG1f
b3V0LmRvdWJsZVR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTg0NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxOSArNDEsNiBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M6OkRG
RzsKIAotZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0
V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotewot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwotICAgIAotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5
OjpjcmVhdGUoCi0gICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigpLCAwKTsKLSAgICAKLSAgICBKU09iamVj
dCogcmVzdWx0ID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVy
Zmx5KTsKLSAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVy
Zmx5IGlzIGluIHRvLXNwYWNlLgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGV4dGVybiAiQyIg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoCiAgICAgRXhl
Y1N0YXRlKiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiogbWF0ZXJpYWxpemF0
aW9uLAogICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlKiB2
YWx1ZXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAko
cmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAgY2xhc3MgTGF6eVNsb3dQYXRo
OwogCiBleHRlcm4gIkMiIHsKIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09i
amVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwot
CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigK
ICAgICBFeGVjU3RhdGUqLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiosIEVuY29kZWRK
U1ZhbHVlKikgV1RGX0lOVEVSTkFMOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAJKHJldmlz
aW9uIDE5ODQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNl
YXJjaFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgog
I2luY2x1ZGUgIllhcnIuaCIKKyNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
IDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTg0NjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
Nyw2ICs5NywxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAgICAvLyBUaGlzIGlzIGEgc3VwZXIgZGFuZ2Vy
b3VzIG1ldGhvZCBmb3IgSklUcy4gU29tZXRpbWVzIHRoZSBKSVRzIHdpbGwgd2FudCB0byBjcmVh
dGUgZWl0aGVyIGEKKyAgICAvLyBKU0ZpbmFsT2JqZWN0IG9yIGEgSlNBcnJheS4gVGhpcyBpcyB0
aGUgbWV0aG9kIHRoYXQgd2lsbCBkbyB0aGF0LgorICAgIHN0YXRpYyBKU09iamVjdCogY3JlYXRl
UmF3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZs
eSogPSBudWxscHRyKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzaXplX3QgZXN0
aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwqLCBDb3B5VmlzaXRvciYsIENv
cHlUb2tlbik7CkBAIC0xMDM4LDYgKzEwNDIsMjAgQEAgcHJpdmF0ZToKIAogSlNfRVhQT1JUX1BS
SVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcml2YXRlRnVuY0luc3Rh
bmNlT2YoRXhlY1N0YXRlKik7CiAKK2lubGluZSBKU09iamVjdCogSlNPYmplY3Q6OmNyZWF0ZVJh
d09iamVjdCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSkKK3sKKyAgICBKU09iamVjdCogZmluYWxPYmplY3QgPSBuZXcgKAor
ICAgICAgICBOb3ROdWxsLCAKKyAgICAgICAgYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KAor
ICAgICAgICAgICAgKmV4ZWMtPmhlYXAoKSwKKyAgICAgICAgICAgIEpTRmluYWxPYmplY3Q6OmFs
bG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgKQorICAg
ICkgSlNPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIGZpbmFs
T2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAgICByZXR1cm4gZmluYWxPYmpl
Y3Q7Cit9CisKIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoCiAg
ICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0
ZXJmbHkpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJ
KHJldmlzaW9uIDE5ODQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsOCBAQCBSZWdFeHAqIFJlZ0V4cDo6
Y3JlYXRlKFZNJiB2bSwgY29uc3QgU3RyCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwg
WWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3Bh
dHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9j
b25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjkxLDcgKzI5Myw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFycjo6
WWFyckMKICNlbmRpZgogCiAgICAgbV9zdGF0ZSA9IEJ5dGVDb2RlOwotICAgIG1fcmVnRXhwQnl0
ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9y
KTsKKyAgICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGUocGF0dGVybiwgJnZt
LT5tX3JlZ0V4cEFsbG9jYXRvciwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvckxvY2spOwogfQogCiBp
bnQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3RvcikKQEAgLTI5OSw4ICszMDEsMjIgQEAgaW50
IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcmIAogICAgIHJldHVybiBtYXRjaElu
bGluZSh2bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOwogfQogCitib29sIFJlZ0V4cDo6bWF0
Y2hDb25jdXJyZW50bHkoCisgICAgVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpCit7Cisg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmICghaGFzQ29k
ZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBwb3NpdGlvbiA9IG1hdGNoKHZtLCBzLCBzdGFydE9mZnNldCwg
b3ZlY3Rvcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0
Y2hPbmx5KFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBhdHRl
cm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9y
KTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzMwLDcgKzM0Niw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxl
TWF0Y2hPbmx5KFZNKiB2bSwgWWEKICNlbmRpZgogCiAgICAgbV9zdGF0ZSA9IEJ5dGVDb2RlOwot
ICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmdm0tPm1f
cmVnRXhwQWxsb2NhdG9yKTsKKyAgICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBp
bGUocGF0dGVybiwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvciwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRv
ckxvY2spOwogfQogCiBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgU3Ry
aW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKQEAgLTMzOCw4ICszNTQsMjEgQEAgTWF0Y2hS
ZXN1bHQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IAogICAgIHJldHVybiBtYXRjaElubGlu
ZSh2bSwgcywgc3RhcnRPZmZzZXQpOwogfQogCitib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50
bHkoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJl
c3VsdCYgcmVzdWx0KQoreworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisKKyAgICBpZiAoIWhhc01hdGNoT25seUNvZGVGb3Iocy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4
IDogWWFycjo6Q2hhcjE2KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0ID0g
bWF0Y2godm0sIHMsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBS
ZWdFeHA6OmRlbGV0ZUNvZGUoKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgCiAgICAgaWYgKCFoYXNDb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBt
X3N0YXRlID0gTm90Q29tcGlsZWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuaAkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYgUmVn
RXhwX2gKICNkZWZpbmUgUmVnRXhwX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgi
CiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hdGNoUmVzdWx0
LmgiCiAjaW5jbHVkZSAiUmVnRXhwS2V5LmgiCkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0lnbm9yZUNh
c2U7IH0KICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFn
TXVsdGlsaW5lOyB9CiAgICAgYm9vbCBzdGlja3koKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYg
RmxhZ1N0aWNreTsgfQorICAgIGJvb2wgZ2xvYmFsT3JTdGlja3koKSBjb25zdCB7IHJldHVybiBn
bG9iYWwoKSB8fCBzdGlja3koKTsgfQogICAgIGJvb2wgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxhZ3MgJiBGbGFnVW5pY29kZTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CkBAIC02NCw4ICs2NiwxNCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25z
dHJ1Y3Rpb25FcnJvcjsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IG1hdGNoKFZNJiwg
Y29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3Zl
Y3Rvcik7CisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIGNvdWxkbid0IHJ1biB0aGUgcmVn
dWxhciBleHByZXNzaW9uIGZvciBhbnkgcmVhc29uLgorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50
bHkoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50JiBwb3NpdGlv
biwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsKKyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBNYXRjaFJlc3VsdCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KTsKIAorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0mLCBjb25zdCBTdHJpbmcmLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmKTsKKwogICAgIC8vIENhbGwgdGhlc2Ug
dmVyc2lvbnMgb2YgdGhlIG1hdGNoIGZ1bmN0aW9ucyBpZiB5b3UncmUgZGVzcGVyYXRlIGZvciBw
ZXJmb3JtYW5jZS4KICAgICBpbnQgbWF0Y2hJbmxpbmUoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsKICAgICBNYXRjaFJl
c3VsdCBtYXRjaElubGluZShWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
KTsKQEAgLTc3LDYgKzg1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdGF0ZSAhPSBO
b3RDb21waWxlZDsKICAgICB9CiAKKyAgICBib29sIGhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJT
aXplKTsKKyAgICBib29sIGhhc01hdGNoT25seUNvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsK
KwogICAgIHZvaWQgZGVsZXRlQ29kZSgpOwogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpA
QCAtMTMyLDYgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ydE1hdGNoQ2FsbENv
dW50OwogICAgIHVuc2lnbmVkIG1fcnRNYXRjaEZvdW5kQ291bnQ7CiAjZW5kaWYKKyAgICBDb25j
dXJyZW50SklUTG9jayBtX2xvY2s7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgWWFycjo6
WWFyckNvZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkocmV2aXNpb24gMTk4NDY2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
Zkxhc3RSZWdFeHAoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0
LCBtX2xhc3RSZWdFeHApOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RJbnB1
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fbGFzdElu
cHV0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZXN1bHQoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX3Jlc3VsdCk7IH0KKyAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mUmVpZmllZCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihS
ZWdFeHBDYWNoZWRSZXN1bHQsIG1fcmVpZmllZCk7IH0KKwogcHJpdmF0ZToKICAgICBNYXRjaFJl
c3VsdCBtX3Jlc3VsdDsKICAgICBib29sIG1fcmVpZmllZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTk4
NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKKyAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KFJlZ0V4cENvbnN0cnVjdG9yLCBtX2NhY2hlZFJlc3VsdCk7IH0KKwogcHJvdGVjdGVkOgogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBSZWdFeHBQcm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIq
IHNwZWNpZXMpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwSW5saW5lcy5oCShyZXZpc2lvbiAxOTg0NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
WWFyci5oIgorI2luY2x1ZGUgIllhcnJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIllhcnJKSVQu
aCIKIAogI2RlZmluZSBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOIDAKQEAgLTY3LDIwICs2OCwy
NyBAQCBwcml2YXRlOgogfTsKICNlbmRpZiAvLyBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VOCiAK
LUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlh
cnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhh
c0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewogICAgIGlmIChoYXNDb2Rl
KCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENv
ZGUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4
Qml0Q29kZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklU
Q29kZS5oYXMxNkJpdENvZGUoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIHZv
aWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUg
Y2hhclNpemUpCit7CisgICAgaWYgKGhhc0NvZGVGb3IoY2hhclNpemUpKQorICAgICAgICByZXR1
cm47CiAKICAgICBjb21waWxlKCZ2bSwgY2hhclNpemUpOwogfQpAQCAtMTUyLDIxICsxNjAsMjkg
QEAgQUxXQVlTX0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGluZShWTQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2Fy
eU1hdGNoT25seShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19J
TkxJTkUgYm9vbCBSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IoWWFycjo6WWFyckNoYXJTaXpl
IGNoYXJTaXplKQogewogICAgIGlmIChoYXNDb2RlKCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQp
CiAgICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpD
aGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZU1hdGNoT25seSgpKSkKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNo
YXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGVN
YXRjaE9ubHkoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYK
ICAgICB9CiAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBSZWdF
eHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6
ZSBjaGFyU2l6ZSkKK3sKKyAgICBpZiAoaGFzTWF0Y2hPbmx5Q29kZUZvcihjaGFyU2l6ZSkpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGNvbXBpbGVNYXRjaE9ubHkoJnZtLCBjaGFyU2l6ZSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDE5ODQ2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyAr
NjMsNyBAQCBKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlY0lubGluZShFeGVjU3RhCiAgICAgU3Ry
aW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsgLy8gRklYTUU6IEhhbmRsZSBlcnJvcnMu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUxNDUKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBib29sIGdsb2JhbE9yU3RpY2t5ID0gcmVn
RXhwLT5nbG9iYWwoKSB8fCByZWdFeHAtPnN0aWNreSgpOworICAgIGJvb2wgZ2xvYmFsT3JTdGlj
a3kgPSByZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCk7CiAKICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7
CiAgICAgaWYgKGdsb2JhbE9yU3RpY2t5KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5ODQ2NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIFN0cmluZyBz
dWJzdGl0dXRlQmFjCiAgICAgcmV0dXJuIHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQudG9TdHJpbmco
KTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92
ZWN0b3IsIFJlZ0V4cCogcmVnKQoraW5saW5lIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5j
ZXNJbmxpbmUoY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNv
bnN0IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcpCiB7CiAgICAgc2l6ZV90IGkgPSByZXBsYWNl
bWVudC5maW5kKCckJyk7CiAgICAgaWYgKFVOTElLRUxZKGkgIT0gbm90Rm91bmQpKQpAQCAtMjkw
LDYgKzI5MCwxMSBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyCiAg
ICAgcmV0dXJuIHJlcGxhY2VtZW50OwogfQogCitTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVu
Y2VzKGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBp
bnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnKQoreworICAgIHJldHVybiBzdWJzdGl0dXRlQmFja3Jl
ZmVyZW5jZXNJbmxpbmUocmVwbGFjZW1lbnQsIHNvdXJjZSwgb3ZlY3RvciwgcmVnKTsKK30KKwog
c3RydWN0IFN0cmluZ1JhbmdlIHsKICAgICBTdHJpbmdSYW5nZShpbnQgcG9zLCBpbnQgbGVuKQog
ICAgICAgICA6IHBvc2l0aW9uKHBvcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCShyZXZpc2lvbiAxOTg0NjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE9iamVjdFByb3RvdHlw
ZTsKK2NsYXNzIFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cE9iamVjdDsKIAogY2xhc3MgU3RyaW5nUHJv
dG90eXBlIDogcHVibGljIFN0cmluZ09iamVjdCB7CkBAIC02Miw2ICs2Myw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3QKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZygKICAgICBF
eGVjU3RhdGUqLCBKU1N0cmluZyogdGhpc1ZhbHVlLCBSZWdFeHBPYmplY3QqIHNlYXJjaFZhbHVl
LCBKU1N0cmluZyogcmVwbGFjZVZhbHVlKTsKIAorU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJl
bmNlcyhjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3Qg
aW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZyk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gU3RyaW5nUHJvdG90eXBlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBWTV9oCiAjZGVmaW5l
IFZNX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiQ29udHJv
bEZsb3dQcm9maWxlci5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgpAQCAtNTQxLDYgKzU0Miw3IEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8VHlwZWRBcnJheUNvbnRyb2xsZXI+IG1fdHlwZWRBcnJheUNvbnRyb2xsZXI7CiAg
ICAgUmVnRXhwQ2FjaGUqIG1fcmVnRXhwQ2FjaGU7CiAgICAgQnVtcFBvaW50ZXJBbGxvY2F0b3Ig
bV9yZWdFeHBBbGxvY2F0b3I7CisgICAgQ29uY3VycmVudEpJVExvY2sgbV9yZWdFeHBBbGxvY2F0
b3JMb2NrOwogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIHR5cGVkZWYgTGlzdEhh
c2hTZXQ8UmVnRXhwKj4gUlRUcmFjZUxpc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4
ZWMtZm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhm
KShvKShvKS8uZXhlYygiYmFyIik7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAo
cmVzdWx0ICE9PSBudWxsKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBy
ZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAt
ZXhlYy1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9u
IGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8uZXhlYygiZm9vIik7Cit9CisKK25vSW5s
aW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBy
ZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPSA0KQorICAgICAgICB0aHJv
dyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFswXSAhPSAi
Zm9vIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAg
IGlmIChyZXN1bHRbMV0gIT0gImYiKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFsyXSAhPSAibyIpCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzNdICE9ICJvIikK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZv
bGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBm
b28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykvLnRlc3QoImJhciIpOworfQorCitub0lubGlu
ZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVz
dWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSBmYWxzZSkKKyAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDExIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykvLnRl
c3QoImZvbyIpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSB0
cnVlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24u
Y3BwCShyZXZpc2lvbiAxOTg0NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1
bGFyRXhwcmVzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBACi0KIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCkBAIC0zMCw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKIAogI2luY2x1ZGUgIllhcnIu
aCIKKyNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyci5oCShyZXZpc2lvbiAxOTg0NjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNp
Zm5kZWYgWWFycl9oCiAjZGVmaW5lIFlhcnJfaAogCi0jaW5jbHVkZSAiWWFyckludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBZYXJyIHsKQEAgLTYzLDYgKzYyLDggQEAgZW51bSBZYXJyQ2hhclNpemUgewogICAgIENoYXIx
NgogfTsKIAorc3RydWN0IEJ5dGVjb2RlUGF0dGVybjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OllhcnIKIAogI2VuZGlmIC8vIFlhcnJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxOTg0NjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTE4LDYgKzE1MTgsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghaW5wdXQuaXNBdmFpbGFi
bGVJbnB1dCgwKSkKICAgICAgICAgICAgIHJldHVybiBvZmZzZXROb01hdGNoOwogCisgICAgICAg
IGlmIChwYXR0ZXJuLT5tX2xvY2spCisgICAgICAgICAgICBwYXR0ZXJuLT5tX2xvY2stPmxvY2so
KTsKKyAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXR0ZXJuLT5t
X2JvZHktPm1fbnVtU3VicGF0dGVybnMgKyAxOyArK2kpCiAgICAgICAgICAgICBvdXRwdXRbaSA8
PCAxXSA9IG9mZnNldE5vTWF0Y2g7CiAKQEAgLTE1MzcsNiArMTU0MCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHBhdHRlcm4tPm1fYWxsb2NhdG9yLT5zdG9wQWxsb2NhdG9yKCk7CiAKICAgICAgICAg
QVNTRVJUKChyZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgPT0gKG91dHB1dFswXSAhPSBvZmZzZXRO
b01hdGNoKSk7CisKKyAgICAgICAgaWYgKHBhdHRlcm4tPm1fbG9jaykKKyAgICAgICAgICAgIHBh
dHRlcm4tPm1fbG9jay0+dW5sb2NrKCk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gb3V0cHV0
WzBdOwogICAgIH0KIApAQCAtMTU3NywxMyArMTU4NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
Y3VycmVudEFsdGVybmF0aXZlSW5kZXggPSAwOwogICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZVBhdHRlcm4+IGNvbXBpbGUoQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRv
cikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBjb21waWxlKEJ1bXBQb2lu
dGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKSVRMb2NrKiBsb2NrKQogICAgIHsK
ICAgICAgICAgcmVnZXhCZWdpbihtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucywgbV9wYXR0ZXJu
Lm1fYm9keS0+bV9jYWxsRnJhbWVTaXplLCBtX3BhdHRlcm4ubV9ib2R5LT5tX2FsdGVybmF0aXZl
c1swXS0+b25jZVRocm91Z2goKSk7CiAgICAgICAgIGVtaXREaXNqdW5jdGlvbihtX3BhdHRlcm4u
bV9ib2R5KTsKICAgICAgICAgcmVnZXhFbmQoKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2Fs
bFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IpOworICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rp
b24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOwog
ICAgIH0KIAogICAgIHZvaWQgY2hlY2tJbnB1dCh1bnNpZ25lZCBjb3VudCkKQEAgLTIwMjgsOSAr
MjAzNSw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVu
Y3Rpb24+PiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBCdW1wUG9pbnRl
ckFsbG9jYXRvciogYWxsb2NhdG9yKQorc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4g
Ynl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIENvbmN1cnJlbnRKSVRMb2NrKiBsb2NrKQogewotICAgIHJldHVybiBCeXRlQ29t
cGlsZXIocGF0dGVybikuY29tcGlsZShhbGxvY2F0b3IpOworICAgIHJldHVybiBCeXRlQ29tcGls
ZXIocGF0dGVybikuY29tcGlsZShhbGxvY2F0b3IsIGxvY2spOwogfQogCiB1bnNpZ25lZCBpbnRl
cnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiBieXRlY29kZSwgY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTk4NDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgWWFyckludGVycHJldGVyX2gKICNkZWZpbmUgWWFycklu
dGVycHJldGVyX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAi
WWFyclBhdHRlcm4uaCIKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0zMzcsMTAgKzMzOCwxMSBAQCBw
dWJsaWM6CiBzdHJ1Y3QgQnl0ZWNvZGVQYXR0ZXJuIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBCeXRlY29kZVBhdHRlcm4oc3RkOjp1bmlxdWVfcHRyPEJ5dGVE
aXNqdW5jdGlvbj4gYm9keSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+
PiYgcGFyZW50aGVzZXNJbmZvVG9BZG9wdCwgWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2lu
dGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IpCisgICAgQnl0ZWNvZGVQYXR0ZXJuKHN0ZDo6dW5pcXVl
X3B0cjxCeXRlRGlzanVuY3Rpb24+IGJvZHksIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURp
c2p1bmN0aW9uPj4mIHBhcmVudGhlc2VzSW5mb1RvQWRvcHQsIFlhcnJQYXR0ZXJuJiBwYXR0ZXJu
LCBCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yLCBDb25jdXJyZW50SklUTG9jayogbG9j
aykKICAgICAgICAgOiBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAgICAgLCBtX2ZsYWdzKHBh
dHRlcm4ubV9mbGFncykKICAgICAgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCisgICAgICAg
ICwgbV9sb2NrKGxvY2spCiAgICAgewogICAgICAgICBtX2JvZHktPnRlcm1zLnNocmlua1RvRml0
KCk7CiAKQEAgLTM2Niw2ICszNjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gRWFjaCBCeXRlY29kZVBh
dHRlcm4gaXMgYXNzb2NpYXRlZCB3aXRoIGEgUmVnRXhwLCBlYWNoIFJlZ0V4cCBpcyBhc3NvY2lh
dGVkCiAgICAgLy8gd2l0aCBhIFZNLiAgQ2FjaGUgYSBwb2ludGVyIHRvIG91dCBWTSdzIG1fcmVn
RXhwQWxsb2NhdG9yLgogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAg
ICBDb25jdXJyZW50SklUTG9jayogbV9sb2NrOwogCiAgICAgQ2hhcmFjdGVyQ2xhc3MqIG5ld2xp
bmVDaGFyYWN0ZXJDbGFzczsKICAgICBDaGFyYWN0ZXJDbGFzcyogd29yZGNoYXJDaGFyYWN0ZXJD
bGFzczsKQEAgLTM3NSw3ICszNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+PiBtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzOwogfTsKIAotSlNf
RVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBp
bGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciopOworSlNfRVhQT1JUX1BSSVZB
VEUgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGUoWWFyclBhdHRl
cm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciosIENvbmN1cnJlbnRKSVRMb2NrKiA9IG51bGxwdHIp
OwogSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybios
IGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCogb3V0cHV0KTsK
IHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBMQ2hhciogaW5wdXQs
IHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpOwogdW5z
aWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCk7CkluZGV4OiBT
b3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
cmV2aXNpb24gMTk4NDY2KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxNi0wMy0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgorCisgICAgICAgIERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4
ZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIE1ha2UgZXhl
Y3V0ZUluc2VydGlvbnMoKSByZXR1cm4gdGhlIGFtb3VudCBieSB3aGljaCB0aGUgdmVjdG9yIGlu
Y3JlYXNlZCBpbiBzaXplLiBUaGlzIGlzIGEKKyAgICAgICAgY29udmVuaWVudCBmZWF0dXJlIHRo
YXQgSSB1c2UgaW4gREZHOjpJbnNlcnRpb25TZXQuCisKKyAgICAgICAgKiB3dGYvSW5zZXJ0aW9u
Lmg6CisgICAgICAgIChXVEY6OmV4ZWN1dGVJbnNlcnRpb25zKToKKwogMjAxNi0wMy0xNyAgQmVu
amFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBNYWtl
IENTRSdzIEltcHVyZURhdGEgZmFzdGVyIHdoZW4gZGVhbGluZyB3aXRoIGxhcmdlIGJsb2NrcwpJ
bmRleDogU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvSW5zZXJ0aW9uLmgJKHJldmlzaW9uIDE5ODQ2NikKKysrIFNvdXJjZS9XVEYvd3RmL0lu
c2VydGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDE0ICs1NSwxNSBAQCBwcml2
YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0VmVjdG9yVHlwZSwgdHlwZW5hbWUg
SW5zZXJ0aW9uVmVjdG9yVHlwZT4KLXZvaWQgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9y
VHlwZSYgdGFyZ2V0LCBJbnNlcnRpb25WZWN0b3JUeXBlJiBpbnNlcnRpb25zKQorc2l6ZV90IGV4
ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0aW9uVmVjdG9y
VHlwZSYgaW5zZXJ0aW9ucykKIHsKLSAgICBpZiAoIWluc2VydGlvbnMuc2l6ZSgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUoKSArIGluc2VydGlvbnMuc2l6
ZSgpKTsKKyAgICBzaXplX3QgbnVtSW5zZXJ0aW9ucyA9IGluc2VydGlvbnMuc2l6ZSgpOworICAg
IGlmICghbnVtSW5zZXJ0aW9ucykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdGFyZ2V0Lmdyb3co
dGFyZ2V0LnNpemUoKSArIG51bUluc2VydGlvbnMpOwogICAgIHNpemVfdCBsYXN0SW5kZXggPSB0
YXJnZXQuc2l6ZSgpOwogICAgIHNpemVfdCBvcmlnaW5hbFRhcmdldFNpemUgPSB0YXJnZXQuc2l6
ZSgpOwotICAgIGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gaW5zZXJ0aW9ucy5zaXpl
KCk7IGluZGV4SW5JbnNlcnRpb25zLS07KSB7CisgICAgZm9yIChzaXplX3QgaW5kZXhJbkluc2Vy
dGlvbnMgPSBudW1JbnNlcnRpb25zOyBpbmRleEluSW5zZXJ0aW9ucy0tOykgewogICAgICAgICBB
U1NFUlQoIWluZGV4SW5JbnNlcnRpb25zIHx8IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNd
LmluZGV4KCkgPj0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9ucyAtIDFdLmluZGV4KCkpOwog
ICAgICAgICBBU1NFUlRfVU5VU0VEKG9yaWdpbmFsVGFyZ2V0U2l6ZSwgaW5zZXJ0aW9uc1tpbmRl
eEluSW5zZXJ0aW9uc10uaW5kZXgoKSA8IG9yaWdpbmFsVGFyZ2V0U2l6ZSk7CiAgICAgICAgIHNp
emVfdCBmaXJzdEluZGV4ID0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSAr
IGluZGV4SW5JbnNlcnRpb25zOwpAQCAtNzMsNiArNzQsNyBAQCB2b2lkIGV4ZWN1dGVJbnNlcnRp
b25zKFRhcmdldFZlY3RvclR5cGUmCiAgICAgICAgIGxhc3RJbmRleCA9IGZpcnN0SW5kZXg7CiAg
ICAgfQogICAgIGluc2VydGlvbnMucmVzaXplKDApOworICAgIHJldHVybiBudW1JbnNlcnRpb25z
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODQ2NikKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisy
MDE2LTAzLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZH
IGFuZCBGVEwgc2hvdWxkIGNvbnN0YW50LWZvbGQgUmVnRXhwRXhlYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjcwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
aW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qczogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZv
bGRpbmctZmFpbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xk
aW5nLWZhaWwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhw
LWV4ZWMtZm9sZGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1y
ZWdleHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmcuaHRtbDogQWRkZWQuCisKIDIwMTYtMDMtMTggIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFVwZGF0ZSBBdXRvRmlsbCBidXR0b24gaW4gaW5wdXQgZmllbGRzLgpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVn
ZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVj
LWZvbGRpbmcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0
aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZv
bGRpbmctZmFpbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRp
bmctZmFpbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNS
ZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFp
bC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVn
ZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxl
LXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhw
LWV4ZWMtZm9sZGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2lt
cGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5v
IGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAg
QEAKK0pTUmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nLWZhaWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2lt
cGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3Qt
Zm9sZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxl
LXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
aW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsg
KytpKQorICAgICAgICAvZm9vLy5leGVjKCJiYXIiKTsKK30pKCk7CisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1IEBACisoZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgICAgIC9mb28vLmV4ZWMoImZvbyIpOworfSkoKTsK
KwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4
cC10ZXN0LWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJl
Z2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAK
KyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAg
ICAgICAgL2Zvby8udGVzdCgiYmFyIik7Cit9KSgpOworCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhw
LXRlc3QtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKQorICAgICAgICAvZm9vLy50ZXN0KCJmb28iKTsKK30pKCk7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274929</attachid>
            <date>2016-03-25 12:56:51 -0700</date>
            <delta_ts>2016-04-04 21:33:54 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>128388</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MSBA
QAorMjAxNi0wMy0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMsIFJlZ0V4cFRlc3Qs
IGFuZCBTdHJpbmdSZXBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKwor
ICAgICAgICBUaGlzIGVuYWJsZXMgY29uc3RhbnQtZm9sZGluZyBvZiBSZWdFeHBFeGVjLCBSZWdF
eHBUZXN0LCBhbmQgU3RyaW5nUmVwbGFjZS4KKworICAgICAgICBJdCdzIG5vdyBwb3NzaWJsZSB0
byBydW4gWWFyciBvbiB0aGUgSklUIHRocmVhZHMuIFNpbmNlIHByZXZpb3VzIHdvcmsgb24gY29u
c3RhbnQtZm9sZGluZworICAgICAgICBzdHJpbmdzIGdhdmUgdGhlIERGRyBhbiBBUEkgZm9yIHJl
YXNvbmluZyBhYm91dCBKU1N0cmluZyBjb25zdGFudHMgaW4gdGVybXMgb2YKKyAgICAgICAgSklU
LXRocmVhZC1sb2NhbCBXVEY6OlN0cmluZ3MsIGl0J3Mgbm93IHN1cGVyIGVhc3kgdG8ganVzdCBw
YXNzIHN0cmluZ3MgdG8gWWFyciBhbmQgYnVpbGQgSVIKKyAgICAgICAgYmFzZWQgb24gdGhlIHJl
c3VsdHMuCisKKyAgICAgICAgQnV0IFJlZ0V4cEV4ZWMgaXMgaGFyZDogdGhlIGZvbGRlZCB2ZXJz
aW9uIHN0aWxsIG11c3QgYWxsb2NhdGUgYSBSZWdFeHBNYXRjaGVzQXJyYXkuIFdlIG11c3QKKyAg
ICAgICAgdXNlIHRoZSBzYW1lIFN0cnVjdHVyZSB0aGF0IHRoZSBjb2RlIHdvdWxkIGhhdmUgdXNl
ZCBvciBlbHNlIHdlJ2xsIHBvbGx1dGUgdGhlIHByb2dyYW0ncworICAgICAgICBpbmxpbmUgY2Fj
aGVzLiBBbHNvLCBSZWdFeHBNYXRjaGVzQXJyYXkuaHxjcHAgd2lsbCBhbGxvY2F0ZSB0aGUgYXJy
YXkgYW5kIGl0cyBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVzIGluIG9uZSBnbyAtIHdlIGRvbid0
IHdhbnQgdG8gbG9zZSB0aGF0IG9wdGltaXphdGlvbi4gU28sIHRoaXMgcGF0Y2ggZW5hYmxlcwor
ICAgICAgICBNYXRlcmlhbGl6ZU5ld09iamVjdCB0byBhbGxvY2F0ZSBvYmplY3RzIG9yIGFycmF5
cyB3aXRoIGFueSBudW1iZXIgb2YgaW5kZXhlZCBvciBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVz
LiBQcmV2aW91c2x5IGl0IGNvdWxkIG9ubHkgaGFuZGxlIG9iamVjdHMgKGJ1dCBub3QgYXJyYXlz
KSBhbmQgbmFtZWQgcHJvcGVydGllcworICAgICAgICAoYnV0IG5vdCBpbmRleGVkIG9uZXMpLgor
CisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGEgZmV3IG1pbm9yIHRoaW5ncyBmb3Igc2V0dGluZyB0
aGUgUmVnRXhwQ29uc3RydWN0b3IgY2FjaGVkIHJlc3VsdC4KKworICAgICAgICBUaGlzIGlzIGFi
b3V0IGEgMnggc3BlZWQtdXAgb24gbWljcm9iZW5jaG1hcmtzIHdoZW4gd2UgZm9sZCBhIG1hdGNo
IHN1Y2Nlc3MgYW5kIGFib3V0IGEKKyAgICAgICAgOHggc3BlZWQtdXAgd2hlbiB3ZSBmb2xkIGEg
bWF0Y2ggZmFpbHVyZS4gSXQncyBhIDEwJSBzcGVlZC11cCBvbiBPY3RhbmUvcmVnZXhwLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcv
REZHSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Omlu
c2VydFNsb3cpOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6ZXhlY3V0ZSk6Cisg
ICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5oOgorICAgICAgICAoSlNDOjpERkc6Okluc2Vy
dGlvblNldDo6aW5zZXJ0Q2hlY2spOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnRyeUdldFN0cmluZyk6CisgICAgICAg
ICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U3RhY2tBY2Nlc3NEYXRh
OjpmbHVzaGVkQXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE6OmR1bXApOgorICAgICAgICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVl
OjpkdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhOjpvbmVXYXlTaW1pbGFyaXR5U2NvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6Ok9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OnNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQaGFudG9tUHJvcGVydHlWYWx1ZTo6UGhhbnRvbVByb3BlcnR5VmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAg
ICAgICAqIGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6flNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVMYXp5SlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlQ29tbXV0YXRpdml0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6ZXhlY3V0ZUlu
c2VydGlvblNldCk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRl
Ojp2YWxpZGF0ZUNQUyk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVD
cmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpkaWRPdmVyZmxvd1N0YWNrKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3RvcmFnZUZvclRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppbml0aWFsaXplQXJyYXlFbGVt
ZW50cyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNO
b3RDZWxsT3JNaXNjKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dW5i
b3hEb3VibGUpOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpTQzo6RlRM
OjpvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBm
dGwvRlRMT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaCk6CisgICAgICAg
IChKU0M6OlJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OmNvbXBpbGVNYXRjaE9ubHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlbGV0ZUNvZGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNo
ZWRSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxh
c3RSZWdFeHApOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFz
dElucHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3Vs
dCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZWlmaWVkKToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlJl
Z0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzQ29kZUZvcik6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjptYXRjaElubGluZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzTWF0Y2hPbmx5
Q29kZUZvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hP
bmx5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlc1Ns
b3cpOgorICAgICAgICAoSlNDOjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNJbmxpbmUpOgorICAg
ICAgICAoSlNDOjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpTdHJp
bmdSYW5nZTo6U3RyaW5nUmFuZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAg
ICAoZm9vKToKKyAgICAgICAgKiB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcDoKKyAgICAgICAg
KiB5YXJyL1lhcnIuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHA6CisgICAg
ICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjppbnRlcnByZXQpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpCeXRlQ29tcGlsZXI6OkJ5dGVDb21waWxlcik6CisgICAgICAgIChKU0M6OllhcnI6OkJ5
dGVDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6
Y2hlY2tJbnB1dCk6CisgICAgICAgIChKU0M6OllhcnI6OmJ5dGVDb21waWxlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6aW50ZXJwcmV0KToKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5o
OgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlY29kZVBhdHRlcm46OkJ5dGVjb2RlUGF0dGVybik6
CisKIDIwMTYtMDMtMjUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogcHJvdG9jb2wgZ2VuZXJhdG9yIHNob3VsZCBwcmVmaXggQysrIGZpbGVu
YW1lcyB3aXRoIHRoZSBwcm90b2NvbCBncm91cApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODgs
NiArNDg4LDcgQEAKIAkJMEY3QzExQUQxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMTFBQzFC
QzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdDMzlGQjFDOEY2MjkzMDA0ODAxNTEgLyogUmVn
RXhwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLzsgfTsKIAkJ
MEY3QzM5RkQxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZDMUM4RjY1OTUw
MDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi87IH07CisJCTBGN0MzOUZGMUM5MEM1
NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAq
LzsgfTsKIAkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAw
QTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
ODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2NDEsNiArMjY0
Miw3IEBACiAJCTBGN0MxMUFDMUJDMzg2MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5QmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBS
ZWdFeHBPYmplY3RJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
Z0V4cE9iamVjdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzM5
RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdPcEluZm8uaDsgcGF0aCA9IGRmZy9ERkdPcEluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeVZhbEluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyNTEsNiArNjI1Myw3IEBACiAJCQkJ
MEYyQjlDREQxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEu
aCAqLywKIAkJCQk4NkVDOURCRjEzMjhERjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9ucy5jcHAg
Ki8sCiAJCQkJODZFQzlEQzAxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuaCAqLywK
KwkJCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8sCiAJCQkJQTdE
ODlDRUUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2Uu
Y3BwICovLAogCQkJCUE3RDg5Q0VGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxp
dHlBbmFseXNpc1BoYXNlLmggKi8sCiAJCQkJMEZEODJFNTIxNDFEQUVERTAwMTc5Qzk0IC8qIERG
R09TUkVudHJ5LmNwcCAqLywKQEAgLTc0NTMsNiArNzQ1Niw3IEBACiAJCQkJMEY2NEVBRjMxQzRF
Q0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MTA1MTlGNkRFNzQwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faGVhZGVy
LnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDYxOUY2REU3NjAwOThGNUVDIC8qIGdlbmVy
YXRlX29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAor
CQkJCTBGN0MzOUZGMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1RUE3MTA3MTlGNkRFNzgwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29s
X3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYx
QkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVFQTcxMDgxOUY2REU3QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUyLDYg
KzE5NTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgY2Fz
ZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAg
ICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxNiw2ICs5MTYsMTAg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICB3cml0
ZShSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihSZWdF
eHBPYmplY3RMYXN0SW5kZXhMb2MsIFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgsIG5vZGUtPmNoaWxk
MSgpKSwgTGF6eU5vZGUobm9kZS0+Y2hpbGQyKCkubm9kZSgpKSk7CiAgICAgICAgIHJldHVybjsK
KworICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgorICAgICAgICB3cml0ZShSZWdF
eHBTdGF0ZSk7CisgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBHZXRGcm9tQXJn
dW1lbnRzOiB7CiAgICAgICAgIEFic3RyYWN0SGVhcCBoZWFwKERpcmVjdEFyZ3VtZW50c1Byb3Bl
cnRpZXMsIG5vZGUtPmNhcHR1cmVkQXJndW1lbnRzT2Zmc2V0KCkub2Zmc2V0KCkpOwpAQCAtMTA3
OSw3ICsxMDgzLDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQog
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQog
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewog
ICAgICAgICAgICAgcmVhZChSZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICByZWFkKFJlZ0V4cE9i
amVjdF9sYXN0SW5kZXgpOwogICAgICAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOworICAgICAg
ICAgICAgd3JpdGUoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgcmVhZChXb3JsZCk7CkBAIC0xMDkxLDcgKzEwOTcsOSBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgICAgICAmJiBu
b2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCiAgICAgICAgICAgICAm
JiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICBy
ZWFkKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHJlYWQoUmVnRXhwT2JqZWN0X2xhc3RJbmRl
eCk7CiAgICAgICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICB3cml0ZShS
ZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICByZWFkKFdvcmxkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIGJvb2wgZG9l
c0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAg
ICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRSZWdFeHBPYmpl
Y3RMYXN0SW5kZXg6CisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgY2Fz
ZSBHZXRHbG9iYWxWYXI6CiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAg
Y2FzZSBQdXRHbG9iYWxWYXJpYWJsZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5OSw2ICsx
Mjk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgICAgIGNh
c2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVj
dExhc3RJbmRleDoKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAg
ICAgICAgICAvLyBUaGVzZSBhcmUganVzdCBub2RlcyB0aGF0IHdlIGRvbid0IGN1cnJlbnRseSBl
eHBlY3QgdG8gc2VlIGR1cmluZyBmaXh1cC4KICAgICAgICAgICAgIC8vIElmIHdlIGV2ZXIgd2Fu
dGVkIHRvIGluc2VydCB0aGVtIHByaW9yIHRvIGZpeHVwLCB0aGVuIHdlIGp1c3QgaGF2ZSB0byBj
cmVhdGUKICAgICAgICAgICAgIC8vIGZpeHVwIHJ1bGVzIGZvciB0aGVtLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTUs
NiArMzE1LDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAg
ICAgICAgICAgb3V0LnByaW50KGFub3RoZXJDb21tYSwgcG9pbnRlckR1bXBJbkNvbnRleHQoZnJl
ZXplKG1fY29kZUJsb2NrLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpW2ld
KSwgY29udGV4dCkpOwogICAgICAgICBvdXQucHJpbnQoIl0iKTsKICAgICB9CisgICAgaWYgKG5v
ZGUtPmhhc0xhenlKU1ZhbHVlKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgbm9kZS0+bGF6
eUpTVmFsdWUoKSk7CiAgICAgaWYgKG5vZGUtPmhhc0luZGV4aW5nVHlwZSgpKQogICAgICAgICBv
dXQucHJpbnQoY29tbWEsIEluZGV4aW5nVHlwZUR1bXAobm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsK
ICAgICBpZiAobm9kZS0+aGFzVHlwZWRBcnJheVR5cGUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5jcHAJKHJldmlzaW9uIDE5ODY4NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDUsOSArNDUsOSBAQCB2b2lkIEluc2VydGlvblNldDo6aW5zZXJ0U2xvdyhjb25z
dCBJbnNlCiAgICAgbV9pbnNlcnRpb25zLmluc2VydCgwLCBpbnNlcnRpb24pOwogfQogCi12b2lk
IEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKK3NpemVfdCBJbnNlcnRp
b25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7Ci0gICAgZXhlY3V0ZUluc2VydGlv
bnMoKmJsb2NrLCBtX2luc2VydGlvbnMpOworICAgIHJldHVybiBleGVjdXRlSW5zZXJ0aW9ucygq
YmxvY2ssIG1faW5zZXJ0aW9ucyk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkocmV2aXNp
b24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAotICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKiBi
bG9jayk7CisgICAgc2l6ZV90IGV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spOwogCiBwcml2YXRl
OgogICAgIHZvaWQgaW5zZXJ0U2xvdyhjb25zdCBJbnNlcnRpb24mKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMTk4Njg1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMxLDYgKzEzMSw3IEBAIEV4aXRNb2RlIG1heUV4aXQoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2QK
ICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgIGNhc2Ug
UHV0Q2xvc3VyZVZhcjoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiAxOTg2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkRG
R05vZGVPcmlnaW4uaCIKICNpbmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR09i
amVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIKICNpbmNs
dWRlICJERkdUcmFuc2l0aW9uLmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUg
IkRGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgpAQCAtMjE5LDIwICsyMjAsNiBAQCBzdHJ1Y3QgU3Rh
Y2tBY2Nlc3NEYXRhIHsKICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0KCkgeyByZXR1cm4gRmx1c2hl
ZEF0KGZvcm1hdCwgbWFjaGluZUxvY2FsKTsgfQogfTsKIAotLy8gVGhpcyB0eXBlIHVzZWQgaW4g
cGFzc2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKLS8vIGRp
c3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50byBh
IENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAotLy8gYSBjb25zdGFudCBpbmRleCwgYXJndW1l
bnQsIG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KLXN0cnVjdCBPcEluZm8gewotICAgIE9w
SW5mbygpIDogbV92YWx1ZSgwKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2YWx1
ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICBleHBs
aWNpdCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KHZhbHVlKSkgeyB9Ci0jaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQotICAgIGV4
cGxpY2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KHZhbHVlKSkgeyB9Ci0jZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUp
IDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSAgICB1
aW50cHRyX3QgbV92YWx1ZTsKLX07Ci0KIC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVw
cmVzZW50cyBhIHNpbmdsZSBvcGVyYXRpb24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE5ODY4NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjIzLDYgKzIyMyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhWYXJJbmplY3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFy
QXJncykgXAogICAgIG1hY3JvKENoZWNrQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKENoZWNrTm90RW1wdHksIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0Jh
ZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3NCw3ICsx
OTc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBM
b2M6IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKSA9PSBhbGxv
Y2F0aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0
aWVzLmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZvKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0aW9uLmRlc2NyaXB0
b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVzb2x2ZShibG9jaywg
bG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250
YWlucyh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hp
bGRyZW4uYXBwZW5kKG1fYm90dG9tKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJQTG9jOiB7CiAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCkgPT0gYWxsb2NhdGlvbi5pZGVudGlmaWVyKCkpOwot
ICAgICAgICAgICAgICAgICAgICBkYXRhLm1fcHJvcGVydGllcy5hcHBlbmQoUGhhbnRvbVByb3Bl
cnR5VmFsdWUobG9jYXRpb24uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEubV9w
cm9wZXJ0aWVzLmFwcGVuZChsb2NhdGlvbi5kZXNjcmlwdG9yKCkpOwogICAgICAgICAgICAgICAg
ICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9uKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModmFsdWUpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChtX2JvdHRvbSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDMyICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKLXZvaWQgUGhhbnRvbVByb3BlcnR5VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKLXsKLSAgICBvdXQucHJpbnQoImlkIiwgbV9pZGVudGlmaWVyTnVtYmVyKTsKLX0KLQog
dm9pZCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiB7CiAgICAgb3V0LnByaW50KCJbIiwgbGlzdER1bXAobV9wcm9wZXJ0aWVzKSwgIl0iKTsK
IH0KIAotZmxvYXQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6b25lV2F5U2ltaWxhcml0eVNj
b3JlKAotICAgIGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBjb25zdAot
ewotICAgIHVuc2lnbmVkIG51bUhpdHMgPSAwOwotICAgIGZvciAoUGhhbnRvbVByb3BlcnR5VmFs
dWUgdmFsdWUgOiBtX3Byb3BlcnRpZXMpIHsKLSAgICAgICAgaWYgKG90aGVyLm1fcHJvcGVydGll
cy5jb250YWlucyh2YWx1ZSkpCi0gICAgICAgICAgICBudW1IaXRzKys7Ci0gICAgfQotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obnVtSGl0cykgLyBzdGF0aWNfY2FzdDxmbG9hdD4obV9w
cm9wZXJ0aWVzLnNpemUoKSk7Ci19Ci0KLWZsb2F0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6
OnNpbWlsYXJpdHlTY29yZShjb25zdCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBvdGhlcikg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjptaW4ob25lV2F5U2ltaWxhcml0eVNjb3JlKG90aGVy
KSwgb3RoZXIub25lV2F5U2ltaWxhcml0eVNjb3JlKCp0aGlzKSk7Ci19Ci0KIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhLmgJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTM1LDM4ICszNiwxMSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0cnVjdCBQaGFudG9tUHJvcGVydHlW
YWx1ZSB7Ci0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUoKQotICAgICAgICA6IG1faWRlbnRpZmll
ck51bWJlcihVSU5UX01BWCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFBoYW50b21Qcm9wZXJ0
eVZhbHVlKHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVy
TnVtYmVyKGlkZW50aWZpZXJOdW1iZXIpCi0gICAgewotICAgIH0KLSAgICAKLSAgICB1bnNpZ25l
ZCBtX2lkZW50aWZpZXJOdW1iZXI7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBo
YW50b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2lkZW50aWZpZXJOdW1iZXIgPT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAgIH0KLSAg
ICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLX07Ci0KIHN0cnVjdCBPYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhIHsKICAgICAvLyBEZXRlcm1pbmVzIHRoZSBtZWFuaW5nIG9m
IHRoZSBwYXNzZWQgbm9kZXMuCi0gICAgVmVjdG9yPFBoYW50b21Qcm9wZXJ0eVZhbHVlPiBtX3By
b3BlcnRpZXM7CisgICAgVmVjdG9yPFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yPiBtX3Byb3Bl
cnRpZXM7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0g
ICAgLy8gVGhlIGZyYWN0aW9uIG9mIG15IHByb3BlcnRpZXMgdGhhdCB0aGUgb3RoZXIgZGF0YSBo
YXMuCi0gICAgZmxvYXQgb25lV2F5U2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEmKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgbWluaW11bSBvZiB0aGUgdHdv
IHBvc3NpYmxlIG9uZS13YXkgc2NvcmVzLgotICAgIGZsb2F0IHNpbWlsYXJpdHlTY29yZShjb25z
dCBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJikgY29uc3Q7CiB9OwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdPcEluZm9faAorI2RlZmluZSBERkdPcEluZm9f
aAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKERGR19KSVQp
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworLy8gVGhpcyB0eXBlIHVzZWQg
aW4gcGFzc2luZyBhbiBpbW1lZGlhdGUgYXJndW1lbnQgdG8gTm9kZSBjb25zdHJ1Y3RvcjsKKy8v
IGRpc3Rpbmd1aXNoZXMgYW4gaW1tZWRpYXRlIHZhbHVlICh0eXBpY2FsbHkgYW4gaW5kZXggaW50
byBhIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZSAtIAorLy8gYSBjb25zdGFudCBpbmRleCwgYXJn
dW1lbnQsIG9yIGlkZW50aWZpZXIpIGZyb20gYSBOb2RlKi4KK3N0cnVjdCBPcEluZm8geworICAg
IE9wSW5mbygpIDogbV92YWx1ZSgwKSB7IH0KKyAgICBleHBsaWNpdCBPcEluZm8oaW50MzJfdCB2
YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAgICBl
eHBsaWNpdCBPcEluZm8odWludDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KHZhbHVlKSkgeyB9CisjaWYgT1MoREFSV0lOKSB8fCBVU0UoSlNWQUxVRTY0KQorICAg
IGV4cGxpY2l0IE9wSW5mbyhzaXplX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KHZhbHVlKSkgeyB9CisjZW5kaWYKKyAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFs
dWUpIDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyAg
ICB1aW50cHRyX3QgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKwor
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHT3BJbmZvX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxOTg2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzk3LDYgKzEzOTcsNjAgQEAgc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVmYXVsdEhhcwogICAgIHJldHVybiAwOwogfQogCitjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld1Jhd09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIEJ1dHRl
cmZseSogYnV0dGVyZmx5OworICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
fHwgaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsKKyAg
ICAgICAgSW5kZXhpbmdIZWFkZXIgaGVhZGVyOworICAgICAgICBoZWFkZXIuc2V0VmVjdG9yTGVu
Z3RoKGxlbmd0aCk7CisgICAgICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgoMCk7CisgICAgICAg
IAorICAgICAgICBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgICAgIHZt
LCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksCisgICAgICAgICAg
ICBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgaGVhZGVy
LAorICAgICAgICAgICAgbGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGJ1dHRlcmZseSA9IG51bGxwdHI7CisKKyAgICBKU09iamVjdCogcmVzdWx0
ID0gSlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7
CisgICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBp
cyBpbiB0by1zcGFjZS4KKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihyZXN1bHQpOwor
fQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZs
eShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OworICAgIAorICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisg
ICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZh
bHNlLCBJbmRleGluZ0hlYWRlcigpLCAwKTsKKyAgICAKKyAgICBKU09iamVjdCogcmVzdWx0ID0g
SlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Cisg
ICAgcmVzdWx0LT5idXR0ZXJmbHkoKTsgLy8gRW5zdXJlIHRoYXQgdGhlIGJ1dHRlcmZseSBpcyBp
biB0by1zcGFjZS4KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZl
Y3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBJbmRleGluZ0hlYWRlciBoZWFkZXI7
CisgICAgaGVhZGVyLnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOworICAgIGhlYWRlci5zZXRQdWJs
aWNMZW5ndGgoMCk7CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0
ZSgKKyAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSwgdHJ1ZSwgaGVhZGVyLAorICAgICAgICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogbGVuZ3Ro
KTsKKworICAgIC8vIFBhcmFkb3hpY2FsbHkgdGhpcyBtYXkgYWxsb2NhdGUgYSBKU0FycmF5LiBU
aGF0J3MgdG90YWxseSBjb29sLgorICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3Jl
YXRlUmF3T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1
dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9j
ZXNzVHlwZVByb2ZpbGVyTG9nREZHKEV4ZWNTdGF0ZSogZXhlYykgCiB7CiAgICAgZXhlYy0+dm0o
KS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJMb2cg
RnVsbCwgY2FsbGVkIGZyb20gaW5zaWRlIERGRy4iKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2
ICsxNTUsMTAgQEAgaW50NjRfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnZlcnREbwogCiBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRl
KiwgSlNDZWxsKiB2YWx1ZSwgSlNDZWxsKiBwcm90byk7CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3UmF3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdU
Rl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRo
QnV0dGVyZmx5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5n
SGVhZGVyQW5kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxl
bmd0aCkgV1RGX0lOVEVSTkFMOworCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vz
c1R5cGVQcm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklU
X09QRVJBVElPTiBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0
ZSosIHZvaWQqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjcsNiArNjY3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRTdGFjazoKICAgICAgICAgY2FzZSBHZXRS
ZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgorICAgICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgY2Fz
ZSBMYXp5SlNDb25zdGFudDogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZl
ciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAg
ICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVh
cExvY2F0aW9uLmNwcAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQs
NiArNzQsMTAgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFBybwogICAg
IGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6CiAgICAgICAgIG91dC5wcmludCgiTmFtZWRQcm9wZXJ0
eVBMb2MiKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJbmRleGVkUHJvcGVydHlQTG9j
OgorICAgICAgICBvdXQucHJpbnQoIkluZGV4ZWRQcm9wZXJ0eVBMb2MiKTsKKyAgICAgICAgcmV0
dXJuOwogICAgICAgICAKICAgICBjYXNlIEFyZ3VtZW50UExvYzoKICAgICAgICAgb3V0LnByaW50
KCJBcmd1bWVudFBMb2MiKTsKQEAgLTEwMiw2ICsxMDYsMTQgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIFBybwogICAgIGNhc2UgQ2xvc3VyZVZhclBMb2M6CiAgICAgICAg
IG91dC5wcmludCgiQ2xvc3VyZVZhclBMb2MiKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2Fz
ZSBQdWJsaWNMZW5ndGhQTG9jOgorICAgICAgICBvdXQucHJpbnQoIlB1YmxpY0xlbmd0aFBMb2Mi
KTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAg
ICBvdXQucHJpbnQoIlZlY3Rvckxlbmd0aFBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAkocmV2
aXNpb24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhl
YXBMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDI1ICsyOCw0MSBAQAogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiREZHRWRn
ZS5oIgorI2luY2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJERkdPcEluZm8uaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaFRhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAorc3RydWN0IE5vZGU7CisKKy8v
IFByb21vdGVkIGxvY2F0aW9ucyBhcmUgbGlrZSBoZWFwIGxvY2F0aW9ucyBidXQgYXJlIG1lYW50
IHRvIGJlIG1vcmUgcHJlY2lzZS4gQSBoZWFwIGxvY2F0aW9uIGlzCisvLyBhcHBsaWNhYmxlIHRv
IENTRSBzY2VuYXJpb3MsIHdoZXJlIGl0IG1ha2VzIHNlbnNlIHRvIHNwZWFrIG9mIGEgbG9jYXRp
b24gdmVyeSBhYnN0cmFjdGx5LiBBCisvLyBwcm9tb3RlZCBoZWFwIGxvY2F0aW9uIGlzIGZvciBj
YXNlcyB3aGVyZSB3ZSBzcGVhayBvZiBhIHNwZWNpZmljIG9iamVjdCBhbmQgdGhlIGNvbXBpbGVy
IGtub3dzCisvLyB0aGlzIG9iamVjdCdzIGlkZW50aXR5IC0gZm9yIGV4YW1wbGUsIHRoZSBvYmpl
Y3QgYWxsb2NhdGlvbiBoYXMgYmVlbiBlbGltaW5hdGVkIGFuZCB3ZSB0dXJuZWQgdGhlCisvLyBm
aWVsZHMgaW50byBsb2NhbCB2YXJpYWJsZXMuIEJlY2F1c2UgdGhlc2UgdHdvIGNhc2VzIGhhdmUg
c3VidGx5IGRpZmZlcmVudCBuZWVkcywgd2UgdXNlIHN1YnRseQorLy8gZGlmZmVyZW50IHN0cnVj
dHVyZXMuIE9uZSBvZiB0aGUgcmVhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2VzIGlzIHRoYXQg
cHJvbW90ZWQgbG9jYXRpb25zIGNhbiBiZQorLy8gc3Bva2VuIG9mIHVzaW5nIGVpdGhlciBhIGRl
c2NyaXB0b3Igd2hpY2ggZG9lcyBub3QgcmVmZXIgdG8gYW55IE5vZGUqJ3Mgb3Igd2l0aCBhIGhl
YXAgbG9jYXRpb24sCisvLyB3aGljaCBpcyBhIGRlc2NyaXB0b3Igd2l0aCBhIE5vZGUqIGJhc2Uu
CisKIGVudW0gUHJvbW90ZWRMb2NhdGlvbktpbmQgewogICAgIEludmFsaWRQcm9tb3RlZExvY2F0
aW9uS2luZCwKICAgICAKLSAgICBTdHJ1Y3R1cmVQTG9jLAorICAgIEFjdGl2YXRpb25TY29wZVBM
b2MsCiAgICAgQWN0aXZhdGlvblN5bWJvbFRhYmxlUExvYywKLSAgICBOYW1lZFByb3BlcnR5UExv
YywKLSAgICBBcmd1bWVudFBMb2MsCiAgICAgQXJndW1lbnRDb3VudFBMb2MsCisgICAgQXJndW1l
bnRQTG9jLAogICAgIEFyZ3VtZW50c0NhbGxlZVBMb2MsCi0KLSAgICBGdW5jdGlvbkV4ZWN1dGFi
bGVQTG9jLAorICAgIENsb3N1cmVWYXJQTG9jLAogICAgIEZ1bmN0aW9uQWN0aXZhdGlvblBMb2Ms
Ci0gICAgQWN0aXZhdGlvblNjb3BlUExvYywKLSAgICBDbG9zdXJlVmFyUExvYworICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZVBMb2MsCisgICAgSW5kZXhlZFByb3BlcnR5UExvYywKKyAgICBOYW1lZFBy
b3BlcnR5UExvYywKKyAgICBQdWJsaWNMZW5ndGhQTG9jLAorICAgIFN0cnVjdHVyZVBMb2MsCisg
ICAgVmVjdG9yTGVuZ3RoUExvYwogfTsKIAogY2xhc3MgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNiArMzM1LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToK
ICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9i
amVjdExhc3RJbmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIEJvdHRvbVZhbHVlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShy
ZXZpc2lvbiAxOTg2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQ3LDYgKzMwNDcsMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7CisgICAg
ICAgIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1c2g6IHsKICAgICAgICAgQVNTRVJU
KG5vZGUtPmFycmF5TW9kZSgpLmlzSlNBcnJheSgpKTsKICAgICAgICAgCkBAIC0zNDkyLDcgKzM0
OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVn
IHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVK
U0FycmF5KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7Cisg
ICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0
b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFu
ZCBzdG9yYWdlR1BSIGhhdmUgcG9pbnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5
IGFuZCB0aGUgQnV0dGVyZmx5LCByZXNwZWN0aXZlbHkuCkBAIC0zNzI4LDcgKzM3MzMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VH
UFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJl
c3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAg
ICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBl
KSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKG5vZGUtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkg
ewogICAgICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29u
c3RhbnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQ5NzksNyArNDk4NCwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG5vUmVz
dWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIAorICAgIGNhc2Ug
TWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVj
dChub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTUwMDYs
NyArNTAxNCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAgICBj
YXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgotICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmpl
Y3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRT
dGFjazoKICAgICBjYXNlIEtpbGxTdGFjazoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTk4Njg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzE4Nyw2ICszMTg3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleChu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQ6IHsKKyAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5UHVzaDog
ewogICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNKU0FycmF5KCkpOwpAQCAtMzU1
OCw3ICszNTYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAg
IEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFs
bG9jYXRlSlNBcnJheShyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVu
dHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0
dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3Vs
dEdQUiBhbmQgc3RvcmFnZUdQUiBoYXZlIHBvaW50ZXJzIHRvCiAgICAgICAgICAgICAvLyB0aGUg
SlNBcnJheSBhbmQgdGhlIEJ1dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgpAQCAtMzc5NCw3ICszNzk5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBz
dG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNB
cnJheShyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRz
KTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4
aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgaW5kZXhp
bmdUeXBlICYgSXNBcnJheSk7CiAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29k
ZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00OTg4
LDYgKzQ5OTMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0Ogor
ICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3Qobm9kZSk7CisgICAgICAgIGJyZWFr
OworCiAjaWYgRU5BQkxFKEZUTF9KSVQpICAgICAgICAKICAgICBjYXNlIENoZWNrVGllclVwSW5M
b29wOiB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hB
ZGQzMigKQEAgLTUwNzgsNyArNTA4Nyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIFB1dEhp
bnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKLSAgICBjYXNlIE1hdGVyaWFs
aXplTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAg
IGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTk4Njg1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCisjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTY29w
ZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJXcml0ZUJhcnJpZXJCdWZmZXIuaCIKQEAgLTc3LDI3ICs3OCw1NCBAQCBTcGVjdWxh
dGl2ZUpJVDo6flNwZWN1bGF0aXZlSklUKCkKIHsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIHZlY3Rvckxlbmd0aCkKIHsKLSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVy
ZS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkp
IHx8IGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNDb250aWd1b3Vz
KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICBib29sIGhhc0luZGV4aW5nSGVh
ZGVyID0gaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKTsKKworICAgIHVuc2lnbmVk
IGlubGluZUNhcGFjaXR5ID0gc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpOworICAgIHVuc2ln
bmVkIG91dE9mTGluZUNhcGFjaXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwog
ICAgIAogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMih0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAg
ICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7Ci0gICAgCi0gICAgdW5zaWdu
ZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBudW1FbGVtZW50cyk7
CisKKyAgICBBU1NFUlQodmVjdG9yTGVuZ3RoID49IG51bUVsZW1lbnRzKTsKKyAgICB2ZWN0b3JM
ZW5ndGggPSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIHZlY3Rvckxlbmd0aCk7CiAgICAgCiAg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICAKLSAgICBzbG93Q2FzZXMu
YXBwZW5kKAotICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3RlZEltbTMyKHZl
Y3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSArIHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBz
dG9yYWdlR1BSKSk7Ci0gICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGgg
KiBzaXplb2YoSlNWYWx1ZSkpLCBzdG9yYWdlR1BSKTsKLSAgICBlbWl0QWxsb2NhdGVKU09iamVj
dDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQ
Uiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7Ci0gICAgCi0gICAgbV9qaXQu
c3RvcmUzMihUcnVzdGVkSW1tMzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKLSAgICBt
X2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGgpLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsK
LSAgICAKKworICAgIHNpemVfdCBzaXplID0gMDsKKyAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIp
CisgICAgICAgIHNpemUgKz0gdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpTVmFsdWUpICsgc2l6ZW9m
KEluZGV4aW5nSGVhZGVyKTsKKyAgICBzaXplICs9IG91dE9mTGluZUNhcGFjaXR5ICogc2l6ZW9m
KEpTVmFsdWUpOworCisgICAgaWYgKHNpemUpIHsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCgK
KyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShUcnVzdGVkSW1tMzIoc2l6ZSks
IHN0b3JhZ2VHUFIpKTsKKyAgICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAgICAg
ICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJbW0zMih2ZWN0b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1
ZSkpLCBzdG9yYWdlR1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9qaXQuYWRkUHRy
KFRydXN0ZWRJbW0zMihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc3RvcmFnZUdQUik7CisgICAg
fSBlbHNlCisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cigwKSwgc3RvcmFnZUdQUik7
CisKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9u
U2l6ZShpbmxpbmVDYXBhY2l0eSk7CisgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JQdHIg
PSAmbV9qaXQudm0oKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3Rvcihh
bGxvY2F0aW9uU2l6ZSk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGFsbG9jYXRvclB0
ciksIHNjcmF0Y2hHUFIpOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgc2Ny
YXRjaEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoMkdQ
Uiwgc2xvd0Nhc2VzKTsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgbV9q
aXQuc3RvcmUzMihUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CisK
KyAgICAvLyBJIHdhbnQgYSBzbG93IHBhdGggdGhhdCBhbHNvIGxvYWRzIG91dCB0aGUgc3RvcmFn
ZSBwb2ludGVyLCBhbmQgdGhhdCdzCisgICAgLy8gd2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQncyBhIGxvdAorICAgIC8vIG9m
IHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LiA6LS8KKyAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdS
YXdPYmplY3QsIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwKKyAgICAgICAgc3RydWN0dXJlLCB2ZWN0
b3JMZW5ndGgpKTsKKwogICAgIGlmIChoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KSkgJiYgbnVtRWxlbWVudHMgPCB2ZWN0b3JMZW5ndGgpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5h
TikpLCBzY3JhdGNoR1BSKTsKQEAgLTExMywxMiArMTQxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEFsbG9jYXRlSlNBcnJheQogI2VuZGlmCiAgICAgfQogICAgIAotICAgIC8vIEkgd2Fu
dCBhIHNsb3cgcGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFu
ZCB0aGF0J3MKLSAgICAvLyB3aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFsbG9jYXRvclNsb3dQ
YXRoR2VuZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90Ci0gICAgLy8gb2Ygd29yayBmb3IgYSB2
ZXJ5IHNtYWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkuIDotLwotICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0
b3I+KAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUs
IHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwKLSAgICAgICAgc3RydWN0dXJlLCBudW1FbGVtZW50cykp
OworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVz
dGVkSW1tMzIobnVtRWxlbWVudHMpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwg
R1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcykKQEAgLTc2NDMsNiArNzY2NywxMjUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YQogICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKiBub2RlKQoreworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbm9kZS0+c3RydWN0dXJlU2V0KClbMF07CisgICAgQVNTRVJUKG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4o
KSA9PSBzdHJ1Y3R1cmUpOworCisgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9
IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgCisgICAgSW5kZXhp
bmdUeXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgYm9v
bCBoYXNJbmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7
CisgICAgaW50MzJfdCBwdWJsaWNMZW5ndGggPSAwOworICAgIGludDMyX3QgdmVjdG9yTGVuZ3Ro
ID0gMDsKKworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIEVk
Z2UgZWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpOworICAgICAg
ICAgICAgc3dpdGNoIChkYXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAg
IGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGggPSBl
ZGdlLT5hc0ludDMyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gZWRnZS0+
YXNJbnQzMigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0b3Jh
Z2UodGhpcyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJS
ZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgCisgICAgZW1pdEFsbG9jYXRlUmF3
T2JqZWN0KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCAwLCB2ZWN0b3JMZW5ndGgp
OworICAgIAorICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tMzIocHVibGljTGVuZ3RoKSwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgRWRn
ZSBlZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAg
IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGll
c1tpXTsKKyAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICBjYXNl
IEluZGV4ZWRQcm9wZXJ0eVBMb2M6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIGVkZ2UpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAg
ICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBkZXNjcmlwdG9yLmlu
Zm8oKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIE5h
bWVkUHJvcGVydHlQTG9jOiB7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiB1aWQgPSBtX2ppdC5n
cmFwaCgpLmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCldOworICAgICAgICAgICAgZm9y
IChQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVzQ29uY3Vy
cmVudGx5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodWlkICE9IGVudHJ5LmtleSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGlz
SW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNldCkgPyByZXN1bHRHUFIgOiBzdG9yYWdlR1BSOworICAg
ICAgICAgICAgICAgIG1faml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgICAgIHZhbHVl
LmpzVmFsdWVSZWdzKCksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGVudHJ5Lm9mZnNldCkpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqIG5vZGUpCit7CisgICAgRWRnZSBj
b25zdHJ1Y3RvckVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAg
IEVkZ2UgcmVnRXhwRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7Cisg
ICAgRWRnZSBzdHJpbmdFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsK
KyAgICBFZGdlIHN0YXJ0RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMyk7
CisgICAgRWRnZSBlbmRFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCA0KTsK
KworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNvbnN0cnVjdG9yKHRoaXMsIGNvbnN0cnVjdG9y
RWRnZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmVnRXhwKHRoaXMsIHJlZ0V4cEVkZ2Up
OworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0aGlzLCBzdHJpbmdFZGdlKTsKKyAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc3RhcnQodGhpcywgc3RhcnRFZGdlKTsKKyAgICBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQgZW5kKHRoaXMsIGVuZEVkZ2UpOworCisgICAgR1BSUmVnIGNvbnN0
cnVjdG9yR1BSID0gY29uc3RydWN0b3IuZ3ByKCk7CisgICAgR1BSUmVnIHJlZ0V4cEdQUiA9IHJl
Z0V4cC5ncHIoKTsKKyAgICBHUFJSZWcgc3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOworICAgIEdQ
UlJlZyBzdGFydEdQUiA9IHN0YXJ0LmdwcigpOworICAgIEdQUlJlZyBlbmRHUFIgPSBlbmQuZ3By
KCk7CisKKyAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9m
Q2FjaGVkUmVzdWx0KCk7CisKKyAgICBtX2ppdC5zdG9yZVB0cigKKyAgICAgICAgcmVnRXhwR1BS
LAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjb25zdHJ1Y3RvckdQUiwgb2Zmc2V0ICsg
UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkpOworICAgIG1faml0LnN0
b3JlUHRyKAorICAgICAgICBzdHJpbmdHUFIsCisgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFz
dElucHV0KCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBzdGFydEdQUiwKKyAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICBjb25zdHJ1Y3RvckdQUiwKKyAg
ICAgICAgICAgIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSAr
IE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSk7CisgICAgbV9qaXQuc3RvcmUz
MigKKyAgICAgICAgZW5kR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcygKKyAgICAg
ICAgICAgIGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVk
UmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBl
bmQpKSk7CisgICAgbV9qaXQuc3RvcmU4KAorICAgICAgICBUcnVzdGVkSW1tMzIoMCksCisgICAg
ICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBD
YWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsK
K30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE5ODY4
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQxMiw2ICsyNDEyLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGls
ZUdldFJlZ0V4cE9iamVjdExhc3RJbmRleChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMYXp5SlNDb25zdGFu
dChOb2RlKik7CisgICAgdm9pZCBjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdChOb2RlKik7CiAgICAgCiAg
ICAgdm9pZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3ZlRmFsc2VUbyhHUFJSZWcp
OwpAQCAtMjUyNyw3ICsyNTI5LDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkp
OwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheShHUFJSZWcgcmVzdWx0R1BS
LCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMpOwor
ICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVy
ZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVj
dG9yTGVuZ3RoKTsKICAgICAKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZyYW1l
KiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKICAgICB2b2lk
IGVtaXRHZXRMZW5ndGgoQ29kZU9yaWdpbiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRl
VGhpcyA9IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTg2
ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDExICsyNTMsMTkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKKyAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNo
OgorICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBQdXRT
dHJ1Y3R1cmU6IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgCisKKyAgICAgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OiB7Cisg
ICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2Rl
LCAwKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6
CiAgICAgICAgICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKQEAgLTI2NiwxMyAr
Mjc0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKLSAgICAgICAgICAg
IGNhc2UgUHV0QnlJZEZsdXNoOgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7Ci0g
ICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBjYXNlIFB1dEJ5
T2Zmc2V0OiB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQy
KCksIG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxOTg2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTEg
KzM2LDE1IEBACiAjaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKICNp
bmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RyaW5nUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSA8Y3N0ZGxpYj4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCiBjbGFzcyBTdHJlbmd0aFJlZHVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
KyAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgCiBwdWJsaWM6CiAg
ICAgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2Uo
Z3JhcGgsICJzdHJlbmd0aCByZWR1Y3Rpb24iKQpAQCAtMzMxLDExICszMzUsMzY4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgaWYgKCEhc3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc051bWJlcihzdHJpbmcubGVuZ3Ro
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDog
eworICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBvYmplY3QgPSBtX25vZGUtPmNoaWxkMSgpLT5k
eW5hbWljQ2FzdENvbnN0YW50PEpTT2JqZWN0Kj4oKSkgeworICAgICAgICAgICAgICAgIG1fZ3Jh
cGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBvYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIFJlZ0V4cEV4ZWM6CisgICAgICAgIGNhc2UgUmVnRXhwVGVzdDogeworICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWND
YXN0Q29uc3RhbnQ8SlNHbG9iYWxPYmplY3QqPigpOworICAgICAgICAgICAgaWYgKCFnbG9iYWxP
YmplY3QpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2Ugbm8gZ2xvYmFsIG9iamVjdC5cbiIpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZ2xv
YmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgYmFk
IHRpbWUuXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgTm9kZSogcmVnRXhwT2JqZWN0Tm9kZSA9IG1fbm9kZS0+Y2hpbGQyKCkubm9kZSgp
OworICAgICAgICAgICAgUmVnRXhwKiByZWdFeHA7CisgICAgICAgICAgICBpZiAoUmVnRXhwT2Jq
ZWN0KiByZWdFeHBPYmplY3QgPSByZWdFeHBPYmplY3ROb2RlLT5keW5hbWljQ2FzdENvbnN0YW50
PFJlZ0V4cE9iamVjdCo+KCkpCisgICAgICAgICAgICAgICAgcmVnRXhwID0gcmVnRXhwT2JqZWN0
LT5yZWdFeHAoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ0V4cE9iamVjdE5vZGUtPm9wKCkg
PT0gTmV3UmVnZXhwKQorICAgICAgICAgICAgICAgIHJlZ0V4cCA9IGNvZGVCbG9jaygpLT5yZWdl
eHAocmVnRXhwT2JqZWN0Tm9kZS0+cmVnZXhwSW5kZXgoKSk7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhlIHJlZ2V4cCBpcyB1bmtub3duLlxuIik7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5vZGUqIHN0cmlu
Z05vZGUgPSBtX25vZGUtPmNoaWxkMygpLm5vZGUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gTk9URTogVGhpcyBtb3N0bHkgYWxyZWFkeSBwcm90ZWN0cyB1cyBmcm9tIGhhdmluZyB0
aGUgY29tcGlsZXIgZXhlY3V0ZSBhIHJlZ2V4cAorICAgICAgICAgICAgLy8gb3BlcmF0aW9uIG9u
IGEgZ2lub3Jtb3VzIHN0cmluZyBieSBwcmV2ZW50aW5nIHVzIGZyb20gZ2V0dGluZyBvdXIgaGFu
ZHMgb24gZ2lub3Jtb3VzCisgICAgICAgICAgICAvLyBzdHJpbmdzIGluIHRoZSBmaXJzdCBwbGFj
ZS4KKyAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBtX25vZGUtPmNoaWxkMygpLT50cnlHZXRT
dHJpbmcobV9ncmFwaCk7CisgICAgICAgICAgICBpZiAoIXN0cmluZykgeworICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAg
YmVjYXVzZSB0aGUgc3RyaW5nIGlzIHVua25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRnJvemVuVmFsdWUqIHJlZ0V4cEZyb3pl
blZhbHVlID0gbV9ncmFwaC5mcmVlemUocmVnRXhwKTsKKworICAgICAgICAgICAgLy8gUmVmdXNl
IHRvIGRvIHRoaW5ncyB3aXRoIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBoYXZlIGEgZ2lub3Jt
b3VzIG51bWJlciBvZgorICAgICAgICAgICAgLy8gc3VicGF0dGVybnMuCisgICAgICAgICAgICB1
bnNpZ25lZCBnaW5vcm1vdXNOdW1iZXJPZlN1YlBhdHRlcm5zID0gMTAwMDsKKyAgICAgICAgICAg
IGlmIChyZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgPiBnaW5vcm1vdXNOdW1iZXJPZlN1YlBhdHRl
cm5zKSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIG9mIHBhdHRlcm4gbGltaXQuXG4iKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5zaWduZWQg
bGFzdEluZGV4OworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsT3JTdGlja3koKSkgewor
ICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBvbmx5IHdvcmsgaWYgd2UgY2FuIHByb3ZlIHdo
YXQgdGhlIHZhbHVlIG9mIGxhc3RJbmRleCBpcy4gVG8gZG8gdGhpcworICAgICAgICAgICAgICAg
IC8vIHNhZmVseSwgd2UgbmVlZCB0byBleGVjdXRlIHRoZSBpbnNlcnRpb24gc2V0IHNvIHRoYXQg
d2Ugc2VlIGFueSBwcmV2aW91cyBzdHJlbmd0aAorICAgICAgICAgICAgICAgIC8vIHJlZHVjdGlv
bnMuIFRoaXMgaXMgbmVlZGVkIGZvciBzb3VuZG5lc3Mgc2luY2Ugb3RoZXJ3aXNlIHRoZSBlZmZl
Y3RmdWxuZXNzIG9mIGFueQorICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHN0cmVuZ3RoIHJl
ZHVjdGlvbnMgd291bGQgYmUgaW52aXNpYmxlIHRvIHVzLgorICAgICAgICAgICAgICAgIGV4ZWN1
dGVJbnNlcnRpb25TZXQoKTsKKyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBVSU5UX01BWDsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG90aGVyTm9kZUluZGV4ID0gbV9ub2RlSW5k
ZXg7IG90aGVyTm9kZUluZGV4LS07KSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIG90aGVy
Tm9kZSA9IG1fYmxvY2stPmF0KG90aGVyTm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG90aGVyTm9kZSA9PSByZWdFeHBPYmplY3ROb2RlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsYXN0SW5kZXggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyTm9kZS0+b3Ao
KSA9PSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICYm
IG90aGVyTm9kZS0+Y2hpbGQxKCkgPT0gcmVnRXhwT2JqZWN0Tm9kZQorICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNvbnN0YW50KCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICYmIG90aGVyTm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSA+PSAw
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ob3RoZXJOb2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGlmICh3cml0ZXNPdmVybGFwKG1fZ3JhcGgsIG90aGVyTm9kZSwgUmVnRXhwT2JqZWN0X2xhc3RJ
bmRleCkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA9PSBVSU5UX01BWCkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkdpdmluZyB1cCBiZWNhdXNlIHRoZSBsYXN0IGluZGV4IGlzIG5vdCBrbm93bi5cbiIpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSAwOworCisgICAgICAgICAgICBtX2dy
YXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVX
YXRjaHBvaW50KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCk7CisgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSAhPSBBcnJheVdpdGhDb250aWd1
b3VzKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmdXJ0aGVyIHByb3RlY3Rpb24gYWdh
aW5zdCBhIHJhY2Ugd2l0aCBoYXZlQUJhZFRpbWUuCisgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSBz
dHJ1Y3R1cmUgaGFzIHRoZSB3cm9uZyBpbmRleGluZyB0eXBlLlxuIik7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKHN0cnVjdHVyZSk7CisKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKTsKKyAgICAgICAgICAg
IEZyb3plblZhbHVlKiBjb25zdHJ1Y3RvckZyb3plblZhbHVlID0gbV9ncmFwaC5mcmVlemUoY29u
c3RydWN0b3IpOworCisgICAgICAgICAgICBNYXRjaFJlc3VsdCByZXN1bHQ7CisgICAgICAgICAg
ICBWZWN0b3I8aW50LCAzMj4gb3ZlY3RvcjsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gY2Fs
bCB0aGUga2luZCBvZiBtYXRjaCBmdW5jdGlvbiB0aGF0IHRoZSBtYWluIHRocmVhZCB3b3VsZCBo
YXZlIGNhbGxlZC4KKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbWlnaHQgbm90IGhhdmUg
dGhlIGRlc2lyZWQgWWFyciBjb2RlIGNvbXBpbGVkLCBhbmQgdGhlIG1hdGNoIHdpbGwgZmFpbC4K
KyAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUmVnRXhwRXhlYykgeworICAgICAgICAg
ICAgICAgIGludCBwb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBpZiAoIXJlZ0V4cC0+bWF0Y2hD
b25jdXJyZW50bHkodm0oKSwgc3RyaW5nLCBsYXN0SW5kZXgsIHBvc2l0aW9uLCBvdmVjdG9yKSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIG1hdGNoIGZhaWxlZC5cbiIpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
cmVzdWx0LnN0YXJ0ID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAgcmVzdWx0LmVuZCA9IG92
ZWN0b3JbMV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghcmVn
RXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJpbmcsIGxhc3RJbmRleCwgcmVzdWx0KSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIG1hdGNoIGZhaWxlZC5cbiIpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFdlJ3ZlIGNvbnN0YW50LWZvbGRlZCB0aGUgcmVnZXhwLiBOb3cgd2Un
cmUgY29tbWl0dGVkIHRvIHJlcGxhY2luZyBSZWdFeHBFeGVjL1Rlc3QuCisKKyAgICAgICAgICAg
IG1fY2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbV9u
b2RlLT5vcmlnaW47CisKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisg
ICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBDaGVjaywgb3JpZ2luLCBtX25v
ZGUtPmNoaWxkcmVuLmp1c3RDaGVja3MoKSk7CisKKyAgICAgICAgICAgIGlmIChtX25vZGUtPm9w
KCkgPT0gUmVnRXhwRXhlYykgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldChzdHJ1Y3R1cmUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBh
biBhcnJheSBtb2RlbGluZyB0aGUgSlMgYXJyYXkgdGhhdCB3ZSB3aWxsIHRyeSB0byBhbGxvY2F0
ZS4gVGhpcyBpcworICAgICAgICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkgY3JlYXRlUmVnRXhw
TWF0Y2hlc0FycmF5IGJ1dCBvdmVyIEMrKyBzdHJpbmdzIGluc3RlYWQgb2YgSlNTdHJpbmdzLgor
ICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHRBcnJheTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcocmVzdWx0LnN0
YXJ0LCByZXN1bHQuZW5kIC0gcmVzdWx0LnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPD0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCA9IG92ZWN0b3JbMiAqIGldOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKHN0cmluZy5zdWJzdHJpbmcoc3RhcnQsIG92ZWN0
b3JbMiAqIGkgKyAxXSAtIHN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkuYXBwZW5kKFN0cmluZygpKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHB1
YmxpY0xlbmd0aCA9IHJlc3VsdEFycmF5LnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgoQkFTRV9WRUNUT1JfTEVOLCBwdWJsaWNMZW5n
dGgpOworCisgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbmRleFVJRCA9
IHZtKCkucHJvcGVydHlOYW1lcy0+aW5kZXguaW1wbCgpOworICAgICAgICAgICAgICAgICAgICBV
bmlxdWVkU3RyaW5nSW1wbCogaW5wdXRVSUQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmlucHV0Lmlt
cGwoKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXhJbmRleCA9IG1fZ3JhcGgu
aWRlbnRpZmllcnMoKS5lbnN1cmUoaW5kZXhVSUQpOworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnB1dEluZGV4ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpbnB1dFVJRCk7
CisKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGlsZCA9IG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJB
cmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25v
ZGVJbmRleCwgb3JpZ2luLCBzdHJ1Y3R1cmUsIEtub3duQ2VsbFVzZSkpOworICAgICAgICAgICAg
ICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKiBkYXRhID0gbV9ncmFwaC5tX29iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGEuYWRkKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKHB1YmxpY0xlbmd0
aCksIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0
aWVzLmFwcGVuZChQdWJsaWNMZW5ndGhQTG9jKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIodmVjdG9yTGVu
Z3RoKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3Bl
cnRpZXMuYXBwZW5kKFZlY3Rvckxlbmd0aFBMb2MpOworCisgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQpLCBVbnR5
cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQo
CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1l
ZFByb3BlcnR5UExvYywgaW5kZXhJbmRleCkpOworCisgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShzdHJpbmdOb2RlLCBVbnR5cGVkVXNlKSk7
CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihOYW1lZFByb3BlcnR5
UExvYywgaW5wdXRJbmRleCkpOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0ZXJpYWxp
emVTdHJpbmcgPSBbJl0gKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAtPiBOb2RlKiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0
cmluZy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHZtKCkuc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgTGF6
eUpTVmFsdWUgdmFsdWUgPSBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIHN0cmluZyk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIExh
enlKU0NvbnN0YW50LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZv
KG1fZ3JhcGgubV9sYXp5SlNWYWx1ZXMuYWRkKHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1
bHRBcnJheS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE5vZGUq
IG5vZGUgPSBtYXRlcmlhbGl6ZVN0cmluZyhyZXN1bHRBcnJheVtpXSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2Uobm9k
ZSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJv
cGVydGllcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yKEluZGV4ZWRQcm9wZXJ0eVBMb2MsIGkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNBcnJheSwgTm9k
ZTo6VmFyQXJnLCBNYXRlcmlhbGl6ZU5ld09iamVjdCwgb3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgT3BJbmZvKHN0cnVjdHVyZVNldCksIE9wSW5mbyhkYXRhKSwgZmlyc3RDaGlsZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkg
LSBmaXJzdENoaWxkKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9u
b2RlLT5jb252ZXJ0VG9JZGVudGl0eU9uKHJlc3VsdE5vZGUpOworICAgICAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1fbm9k
ZSwganNOdWxsKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9ncmFw
aC5jb252ZXJ0VG9Db25zdGFudChtX25vZGUsIGpzQm9vbGVhbighIXJlc3VsdCkpOworCisgICAg
ICAgICAgICAvLyBXaGV0aGVyIGl0J3MgRXhlYyBvciBUZXN0LCB3ZSBuZWVkIHRvIHRlbGwgdGhl
IGNvbnN0cnVjdG9yIGFuZCBSZWdFeHBPYmplY3Qgd2hhdCdzIHVwLgorICAgICAgICAgICAgLy8g
QmVjYXVzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXggbWF5IGV4aXQgYW5kIGl0IGNsb2JiZXJz
IGV4aXQgc3RhdGUsIHdlIGRvIHRoYXQKKyAgICAgICAgICAgIC8vIGZpcnN0LgorICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7CisgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIFNwZWNOb25lLCBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIG9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgRWRnZShyZWdFeHBPYmplY3ROb2RlLCBSZWdFeHBPYmplY3RV
c2UpLAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZv
clVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIGpzTnVt
YmVyKHJlc3VsdCA/IHJlc3VsdC5lbmQgOiAwKSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIG9yaWdpbiA9IG9yaWdpbi53aXRoSW52YWxpZEV4aXQoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgp
OworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwgY29uc3RydWN0b3JGcm96
ZW5WYWx1ZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFy
Z0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwg
b3JpZ2luLCByZWdFeHBGcm96ZW5WYWx1ZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAg
ICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZChFZGdlKHN0cmluZ05vZGUsIEtub3du
Q2VsbFVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBl
bmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9y
VXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1i
ZXIocmVzdWx0LnN0YXJ0KSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9u
b2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0LmVuZCksIEtub3duSW50MzJVc2UpKTsK
KyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUsIE5vZGU6OlZhckFyZywgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbygpLCBPcElu
Zm8oKSwgZmlyc3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0
Q2hpbGQpOworCisgICAgICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhp
dCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtX25vZGUtPm9y
aWdpbiA9IG9yaWdpbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBTdHJpbmdSZXBsYWNlOiB7CisgICAgICAgICAgICBOb2RlKiBzdHJpbmdOb2RlID0gbV9u
b2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nID0gc3RyaW5n
Tm9kZS0+dHJ5R2V0U3RyaW5nKG1fZ3JhcGgpOworICAgICAgICAgICAgaWYgKCFzdHJpbmcpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJl
Z0V4cE9iamVjdE5vZGUgPSBtX25vZGUtPmNoaWxkMigpLm5vZGUoKTsKKyAgICAgICAgICAgIFJl
Z0V4cCogcmVnRXhwOworICAgICAgICAgICAgaWYgKFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0
ID0gcmVnRXhwT2JqZWN0Tm9kZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxSZWdFeHBPYmplY3QqPigp
KQorICAgICAgICAgICAgICAgIHJlZ0V4cCA9IHJlZ0V4cE9iamVjdC0+cmVnRXhwKCk7CisgICAg
ICAgICAgICBlbHNlIGlmIChyZWdFeHBPYmplY3ROb2RlLT5vcCgpID09IE5ld1JlZ2V4cCkKKyAg
ICAgICAgICAgICAgICByZWdFeHAgPSBjb2RlQmxvY2soKS0+cmVnZXhwKHJlZ0V4cE9iamVjdE5v
ZGUtPnJlZ2V4cEluZGV4KCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNh
dXNlIHRoZSByZWdleHAgaXMgdW5rbm93bi5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZSA9IG1fbm9kZS0+Y2hp
bGQzKCktPnRyeUdldFN0cmluZyhtX2dyYXBoKTsKKyAgICAgICAgICAgIGlmICghc3RyaW5nKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGxhc3RJbmRleCA9IDA7CisgICAgICAgICAgICB1
bnNpZ25lZCBzdGFydFBvc2l0aW9uID0gMDsKKyAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwor
ICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKKyAg
ICAgICAgICAgICAgICBWZWN0b3I8aW50LCAzMj4gb3ZlY3RvcjsKKyAgICAgICAgICAgICAgICAv
LyBNb2RlbCB3aGljaCB2ZXJzaW9uIG9mIG1hdGNoKCkgaXMgY2FsbGVkIGJ5IHRoZSBtYWluIHRo
cmVhZC4KKyAgICAgICAgICAgICAgICBpZiAocmVwbGFjZS5pc0VtcHR5KCkgJiYgcmVnRXhwLT5n
bG9iYWwoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZ0V4cC0+bWF0Y2hDb25jdXJy
ZW50bHkodm0oKSwgc3RyaW5nLCBzdGFydFBvc2l0aW9uLCByZXN1bHQpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBpbnQgcG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgIGlmICghcmVn
RXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJpbmcsIHN0YXJ0UG9zaXRpb24sIHBvc2l0
aW9uLCBvdmVjdG9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBwb3Np
dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmVuZCA9IG92ZWN0b3JbMV07CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHJlcGxMZW4gPSByZXBsYWNlLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChsYXN0
SW5kZXggPCByZXN1bHQuc3RhcnQgfHwgcmVwbExlbikgeworICAgICAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChzdHJpbmcsIGxhc3RJbmRleCwgcmVzdWx0LnN0YXJ0IC0gbGFzdEluZGV4
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGxMZW4pCisgICAgICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMocmVwbGFjZSwgc3Ry
aW5nLCBvdmVjdG9yLmRhdGEoKSwgcmVnRXhwKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgbGFzdEluZGV4ID0gcmVzdWx0LmVuZDsKKyAgICAgICAgICAgICAgICBzdGFy
dFBvc2l0aW9uID0gbGFzdEluZGV4OworCisgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNl
IG9mIGVtcHR5IG1hdGNoCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5lbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24rKzsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHN0YXJ0UG9zaXRpb24gPiBzdHJpbmcubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IHdoaWxlIChyZWdF
eHAtPmdsb2JhbCgpKTsKKyAgICAgICAgICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIC8vIFdlIGFyZSBjb21taXR0ZWQgYXQgdGhpcyBwb2ludC4KKyAg
ICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgICAgIE5vZGVPcmlnaW4gb3Jp
Z2luID0gbV9ub2RlLT5vcmlnaW47CisKKyAgICAgICAgICAgIGlmIChyZWdFeHAtPmdsb2JhbCgp
KSB7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNOb25lLCBTZXRSZWdFeHBPYmplY3RMYXN0SW5k
ZXgsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShyZWdFeHBPYmplY3ROb2RlLCBS
ZWdFeHBPYmplY3RVc2UpLAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBv
cmlnaW4sIGpzTnVtYmVyKDApLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoIWxhc3RJbmRleCAmJiBidWlsZGVyLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lkZW50aXR5T24oc3RyaW5nTm9kZSk7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobGFzdEluZGV4IDwgc3Ry
aW5nLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdHJpbmcs
IGxhc3RJbmRleCwgc3RyaW5nLmxlbmd0aCgpIC0gbGFzdEluZGV4KTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0xhenlKU0NvbnN0YW50KAorICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLCBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgs
IGJ1aWxkZXIudG9TdHJpbmcoKSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX25v
ZGUtPm9yaWdpbiA9IG9yaWdpbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zODAsNiAr
NzQxLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
CisKKyAgICB2b2lkIGV4ZWN1dGVJbnNlcnRpb25TZXQoKQorICAgIHsKKyAgICAgICAgbV9ub2Rl
SW5kZXggKz0gbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShtX2Jsb2NrKTsKKyAgICB9CiAgICAgCiAg
ICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNp
b24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yODEsNiArMjgxLDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIXZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJh
bnNpdGlvbigpLT5kZmdTaG91bGRXYXRjaCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXpl
TmV3T2JqZWN0OgorICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJl
IDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRo
aXMgb25seSBzdXBwb3J0cyBzdHJ1Y3R1cmVzIHRoYXQgYXJlIEpTRmluYWxPYmplY3Qgb3IgSlNB
cnJheS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChub2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpID09IEpTRmluYWxPYmplY3Q6OmluZm8oKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHx8IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNBcnJheTo6aW5mbygp
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGNlcnRhaW4g
aW5kZXhpbmcgc2hhcGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCAhaGFzQW55QXJyYXlTdG9yYWdlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjYXNlIERvdWJsZUNvbnN0YW50OgogICAgICAgICAgICAgICAgIGNhc2UgSW50NTJDb25z
dGFudDoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5pc051bWJl
ckNvbnN0YW50KCkpOwpAQCAtNTA1LDEzICs1MTcsNDIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEhp
bnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKLSAgICAg
ICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgICAgIGNh
c2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0
U3RhY2s6CiAgICAgICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgICAgICAgICAg
Y2FzZSBHZXRTdGFjazoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhInVu
ZXhwZWN0ZWQgbm9kZSB0eXBlIGluIENQUyIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OiB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBhcnJheSBsZW5ndGhzIHRvIGJlIGNvbnN0YW50
LiBUaGlzIGNvbnN0cmFpbnQgb25seSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVj
YXVzZSB3ZSBkb24ndCBoYXZlIERGRyBzdXBwb3J0IGZvciBhbnl0aGluZyBtb3JlIGFuZCB3ZSBk
b24ndCBuZWVkIGFueQorICAgICAgICAgICAgICAgICAgICAvLyBvdGhlciBraW5kIG9mIHN1cHBv
cnQgZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0
YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBk
ZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAg
ICBFZGdlIGVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSwgZWRnZSksIGVkZ2UtPmlzSW50MzJDb25zdGFudCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAv
LyBDUFMgb25seSBhbGxvd3Mgb25lIHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgPT0gMSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQzMiBhbmQgZG91YmxlIGFycmF5cy4g
VGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQKKyAgICAgICAgICAgICAgICAgICAg
Ly8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIERGRyByaWdodCBub3cu
IFdlIHNob3VsZCBhZGQgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhlc2Ug
aWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgorICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVj
dHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0ludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0Rv
dWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCBtX2dyYXBoLm1fZml4cG9pbnRTdGF0ZSAhPSBGaXhwb2ludE5vdENvbnZlcmdlZCk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCShyZXZpc2lvbiAxOTg2
ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJl
Z0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNj
b3BlZEFyZ3VtZW50c1RhYmxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMTk4Njg1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKICAgICBtYWNybyhKU1N5bWJvbFRhYmxlT2JqZWN0X3N5bWJvbFRhYmxlLCBKU1N5
bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpIFwKICAgICBtYWNybyhKU1dy
YXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSwgSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVl
T2Zmc2V0KCkpIFwKICAgICBtYWNybyhNYXJrZWRBbGxvY2F0b3JfZnJlZUxpc3RIZWFkLCBNYXJr
ZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpIFwKKyAgICBtYWNybyhSZWdFeHBD
b25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdFJlZ0V4cCwgUmVnRXhwQ29uc3RydWN0b3I6Om9m
ZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdFJl
Z0V4cCgpKSBcCisgICAgbWFjcm8oUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X2xhc3RJ
bnB1dCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgKyBSZWdFeHBD
YWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25z
dHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0LCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zm
c2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQo
KSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgc3RhcnQpKSBcCisgICAgbWFjcm8oUmVn
RXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9lbmQsIFJlZ0V4cENvbnN0cnVjdG9y
OjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJl
c3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSBcCisgICAgbWFjcm8o
UmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3JlaWZpZWQsIFJlZ0V4cENvbnN0cnVjdG9y
OjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJl
aWZpZWQoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgsIFJlZ0V4cE9iamVj
dDo6b2Zmc2V0T2ZMYXN0SW5kZXgoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9sYXN0SW5k
ZXhJc1dyaXRhYmxlLCBSZWdFeHBPYmplY3Q6Om9mZnNldE9mTGFzdEluZGV4SXNXcml0YWJsZSgp
KSBcCiAgICAgbWFjcm8oU2NvcGVkQXJndW1lbnRzX292ZXJyb2RlVGhpbmdzLCBTY29wZWRBcmd1
bWVudHM6Om9mZnNldE9mT3ZlcnJvZGVUaGluZ3MoKSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTk4Njg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjcsNiArMjI3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIAogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICBjYXNlIEdldFJlZ0V4cE9iamVj
dExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICBjYXNl
IFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICBjYXNlIFNldEZ1bmN0aW9uTmFtZToKICAg
ICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDE5ODY4NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTM4LDYgKzkzOCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4OgogICAgICAgICAgICAgY29tcGlsZVNldFJlZ0V4cE9iamVjdExh
c3RJbmRleCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVjb3JkUmVnRXhw
Q2FjaGVkUmVzdWx0OgorICAgICAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3Vs
dCgpOworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAg
ICAgICAgIGNhc2UgTG9vcEhpbnQ6CkBAIC0zNzExLDMyICszNzE0LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihwdWJsaWNMZW5ndGgsIGJ1dHRl
cmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAgICAgICAgIG1fb3V0
LnN0b3JlMzIodmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rv
ckxlbmd0aCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChoYXNEb3VibGUobV9ub2Rl
LT5pbmRleGluZ1R5cGUoKSkpIHsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0TG9v
cCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdERv
bmUgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291dC5hbmNob3IodmVjdG9yTGVuZ3Ro
KTsKLSAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50ZXIgPSBtX291
dC5hbmNob3IoYnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAg
ICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5p
dExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbml0TG9vcCwg
aW5pdERvbmUpOwotICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShtX291
dC5pbnQzMiwgb3JpZ2luYWxJbmRleCk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHBvaW50ZXIg
PSBtX291dC5waGkobV9vdXQuaW50UHRyLCBvcmlnaW5hbFBvaW50ZXIpOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCi0gICAgICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludDY0X3Q+KFBOYU4pKSwKLSAgICAgICAg
ICAgICAgICAgICAgVHlwZWRQb2ludGVyKG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMu
YXRBbnlJbmRleCgpLCBwb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgTFZhbHVlIG5leHRJbmRleCA9IG1fb3V0LnN1YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOwot
ICAgICAgICAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkoaW5kZXgsIG1fb3V0LmFuY2hv
cihuZXh0SW5kZXgpKTsKLSAgICAgICAgICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKHBv
aW50ZXIsIG1fb3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRlciwgbV9vdXQuaW50UHRyRWlnaHQp
KSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBt
X291dC5ub3RaZXJvMzIobmV4dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXRE
b25lKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aW5pdERvbmUsIGluaXRMYXN0TmV4dCk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlu
aXRpYWxpemVBcnJheUVsZW1lbnRzKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCksIHZlY3Rvckxlbmd0
aCwgYnV0dGVyZmx5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
ZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihvYmplY3QpOwogICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwpAQCAtNjI4MSwxMSArNjI2MCwyMSBAQCBwcml2YXRlOgogICAgICAg
ICAvLyBMb3dlciB0aGUgdmFsdWVzIGZpcnN0LCB0byBhdm9pZCBjcmVhdGluZyB2YWx1ZXMgaW5z
aWRlIGEgY29udHJvbCBmbG93IGRpYW1vbmQuCiAgICAgICAgIAogICAgICAgICBWZWN0b3I8TFZh
bHVlLCA4PiB2YWx1ZXM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1f
cHJvcGVydGllcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNW
YWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpKSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgRWRnZSBlZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKTsK
KyAgICAgICAgICAgIHN3aXRjaCAoZGF0YS5tX3Byb3BlcnRpZXNbaV0ua2luZCgpKSB7CisgICAg
ICAgICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAgICAgICAgICBjYXNlIFZlY3Rvckxl
bmd0aFBMb2M6CisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dJbnQzMihlZGdlKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShlZGdlKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNvbnN0
IFN0cnVjdHVyZVNldCYgc2V0ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKLSAgICAgICAgCisK
ICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrLCAxPiBibG9ja3Moc2V0LnNpemUoKSk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBibG9j
a3NbaV0gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNjMxMCwyMSArNjI5OSw1MSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgTFZhbHVlIG9iamVjdDsKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJm
bHk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpIHsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkgfHwgaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpIHsK
ICAgICAgICAgICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0Ojph
bGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAg
ICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gJnZtKCkuaGVhcC5hbGxvY2F0b3JGb3JP
YmplY3RXaXRob3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CisKKyAgICAgICAgICAgICAg
ICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJl
LT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXhpbmdIZWFk
ZXJTaXplID0gMDsKKyAgICAgICAgICAgICAgICBMVmFsdWUgaW5kZXhpbmdQYXlsb2FkU2l6ZUlu
Qnl0ZXMgPSBtX291dC5pbnRQdHJaZXJvOworICAgICAgICAgICAgICAgIExWYWx1ZSB2ZWN0b3JM
ZW5ndGggPSBtX291dC5pbnQzMlplcm87CisgICAgICAgICAgICAgICAgTFZhbHVlIHB1YmxpY0xl
bmd0aCA9IG1fb3V0LmludDMyWmVybzsKKyAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhpbmdI
ZWFkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmdIZWFkZXJTaXplID0gc2l6ZW9m
KEluZGV4aW5nSGVhZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
ZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRp
ZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iua2luZCgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoID0gdmFsdWVzW2ldOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBWZWN0b3JMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3Rvckxl
bmd0aCA9IHZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPQorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQubXVsKG1fb3V0Lnplcm9FeHRQdHIodmVjdG9yTGVu
Z3RoKSwgbV9vdXQuaW50UHRyRWlnaHQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQuYWRkKAorICAgICAgICAgICAgICAg
ICAgICBtX291dC5jb25zdEludFB0cigKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSArIGluZGV4aW5nSGVhZGVy
U2l6ZSksCisgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93
UGF0aCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTFZhbHVlIGVuZE9mU3Rv
cmFnZSA9IGFsbG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5kKAotICAgICAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXpl
b2YoSlNWYWx1ZSkpLAotICAgICAgICAgICAgICAgICAgICBzbG93UGF0aCk7Ci0gICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgTFZhbHVlIGVuZE9mU3RvcmFnZSA9IGFsbG9jYXRlQmFz
aWNTdG9yYWdlQW5kR2V0RW5kKGJ1dHRlcmZseVNpemUsIHNsb3dQYXRoKTsKKwogICAgICAgICAg
ICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBtX291dC5hZGQoCi0gICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBlbmRP
ZlN0b3JhZ2UpOworICAgICAgICAgICAgICAgICAgICBtX291dC5zdWIoZW5kT2ZTdG9yYWdlLCBp
bmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikgLSBpbmRleGluZ0hlYWRlclNpemUpKTsK
KworICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIodmVjdG9yTGVuZ3RoLCBmYXN0QnV0dGVy
Zmx5VmFsdWUsIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RPYmplY3RWYWx1ZSA9IGFsbG9jYXRlT2Jq
ZWN0KAogICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IpLCBz
dHJ1Y3R1cmUsIGZhc3RCdXR0ZXJmbHlWYWx1ZSwgc2xvd1BhdGgpOwpAQCAtNjMzNSwxMiArNjM1
NCwyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwogCi0gICAgICAgICAgICAgICAgTFZh
bHVlIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKLSAgICAgICAgICAgICAgICAgICAg
Wz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xv
d1BhdGg6OkdlbmVyYXRvcj4gewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZUxhenlDYWxsR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlv
bk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIExWYWx1ZSBz
bG93T2JqZWN0VmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKSB7
CisgICAgICAgICAgICAgICAgICAgIHNsb3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRp
b25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRo
SW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9u
c1sxXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBzbG93T2JqZWN0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCisgICAg
ICAgICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9u
cykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2Nh
dGlvbnNbMF0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93T2JqZWN0ID0gbV9vdXQuYW5jaG9yKHNsb3dPYmplY3RWYWx1ZSk7CiAgICAgICAg
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0J1dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihzbG93T2JqZWN0VmFsdWUsIG1faGVhcHMu
SlNPYmplY3RfYnV0dGVyZmx5KSk7CkBAIC02MzUxLDYgKzYzODIsMTExIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgb2JqZWN0ID0gbV9vdXQucGhpKG1fb3V0
LmludFB0ciwgZmFzdE9iamVjdCwgc2xvd09iamVjdCk7CiAgICAgICAgICAgICAgICAgYnV0dGVy
Zmx5ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZs
eSk7CisKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVy
Zmx5LCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOworCisgICAgICAgICAgICAgICAg
aW5pdGlhbGl6ZUFycmF5RWxlbWVudHMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9y
TGVuZ3RoLCBidXR0ZXJmbHkpOworCisgICAgICAgICAgICAgICAgSGFzaE1hcDxpbnQzMl90LCBM
VmFsdWUsIERlZmF1bHRIYXNoPGludDMyX3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPGludDMyX3Q+PiBpbmRleE1hcDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8
aW50MzJfdD4gaW5kaWNlczsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRh
Lm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvbW90
ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5raW5kKCkgIT0gSW5kZXhlZFByb3Bl
cnR5UExvYykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVzY3JpcHRvci5p
bmZvKCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBpbmRleE1hcC5hZGQoaW5kZXgsIHZhbHVlc1tpXSk7CisgICAgICAgICAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCByZXN1bHQpOyAvLyBEdXBsaWNhdGVzIGFy
ZSBpbGxlZ2FsLgorCisgICAgICAgICAgICAgICAgICAgIGluZGljZXMuYXBwZW5kKGluZGV4KTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWluZGljZXMuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c29ydChpbmRpY2VzLmJlZ2luKCksIGlu
ZGljZXMuZW5kKCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
VmVjdG9yPExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoU3RvcmVzKGluZGljZXMuc2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrPiBibG9ja3NXaXRoQ2hlY2tzKGlu
ZGljZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBibG9ja3NXaXRoU3RvcmVzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVja3NbaV0gPSBtX291dC5uZXdCbG9jaygp
OyAvLyBibG9ja3NXaXRoQ2hlY2tzWzBdIGlzIHRoZSBjb250aW51YXRpb24uCisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbmRleExhc3RO
ZXh0ID0gbV9vdXQubV9uZXh0QmxvY2s7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRpY2VzLnNpemUoKTsgaS0tOykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9IGluZGljZXNbaV07CisgICAgICAg
ICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBpbmRleE1hcC5nZXQoaW5kZXgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFu
Y2goCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYmVsb3cobV9vdXQuY29uc3RJ
bnQzMihpbmRleCksIHB1YmxpY0xlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zdXJlKGJsb2Nrc1dpdGhTdG9yZXNbaV0pLCB1bnN1cmUoYmxvY2tzV2l0aENoZWNrc1tpXSkp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NXaXRoU3Rv
cmVzW2ldLCBibG9ja3NXaXRoQ2hlY2tzW2ldKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBoYXMgdG8gdHlwZS1jaGVjayBhbmQgY29udmVydCBpdHMgaW5wdXRzLCBidXQgaXQg
Y2Fubm90IGRvIHNvIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdheSB0aGF0IHVw
ZGF0ZXMgQUkuIFRoYXQncyBhIGJpdCBhbm5veWluZywgYnV0IGlmIHlvdSB0aGluayBhYm91dCBo
b3cKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpbmtpbmcgd29ya3MsIGl0J3MgYWN0dWFs
bHkgbm90IGEgYmFkIHRoaW5nLiBXZSBhcmUgdmlydHVhbGx5IGd1YXJhbnRlZWQKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhlc2UgdHlwZSBjaGVja3Mgd2lsbCBub3QgZmFpbCwg
c2luY2UgdGhlIHR5cGUgY2hlY2tzIHRoYXQgZ3VhcmRlZAorICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhlIG9yaWdpbmFsIHN0b3JlcyB0byB0aGUgYXJyYXkgYXJlIHN0aWxsIHNvbWV3aGVy
ZSBhYm92ZSB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OjpTdG9y
ZVR5cGUgc3RvcmVUeXBlOworICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhlZEFic3RyYWN0
SGVhcCogaGVhcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfSU5UMzJf
SU5ERVhJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgY291bGQgdXNlIHRoZSBwcm92ZW4gdHlwZSBpZiB3ZSBoYWQgdGhlIEVkZ2UgZm9yIHRoZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3BlY3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNOb3RJbnQzMih2YWx1ZSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmU2
NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZElu
dDMyUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBzb3VyY2UgaXMgVmFs
dWVSZXAsIHdlIHNob3VsZCBhdm9pZCBlbWl0dGluZyBhbnkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBjaGVja3MuIFdlIGNvdWxkIGFsc28gYXZvaWQgZW1pdHRpbmcgY2hlY2tzIGlm
IHdlIGhhZCB0aGUgRWRnZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMg
dmFsdWUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTEKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJs
ZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMih2YWx1ZSksIHVuc3VyZShpbnRD
YXNlKSwgdW5zdXJlKGRvdWJsZUNhc2UpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2Fz
ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBpbnRSZXN1
bHQgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hbmNob3IobV9vdXQu
aW50VG9Eb3VibGUodW5ib3hJbnQzMih2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIG5vVmFsdWUoKSwgbnVsbHB0
ciwgaXNOdW1iZXIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBkb3VibGVSZXN1bHQgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUodmFsdWUpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1fb3V0LnBo
aShEb3VibGUsIGludFJlc3VsdCwgZG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlRG91YmxlOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllczsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElO
R19UWVBFUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6
OlN0b3JlNjQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZtX2hlYXBzLmlu
ZGV4ZWRDb250aWd1b3VzUHJvcGVydGllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiSW52YWxpZCBpbmRleGlu
ZyB0eXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fb3V0LnN0b3JlKHZhbHVlLCBtX291dC5hZGRyZXNzKGJ1dHRlcmZseSwgaGVh
cC0+YXQoaW5kZXgpKSwgc3RvcmVUeXBlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbV9v
dXQuanVtcChibG9ja3NXaXRoQ2hlY2tzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhDaGVj
a3NbaV0sIGkgPyBibG9ja3NXaXRoU3RvcmVzW2kgLSAxXSA6IGluZGV4TGFzdE5leHQpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgZWFzeSBjYXNlIHdoZXJlIHdlIGNhbiBkbyBh
IG9uZS1zaG90IGFsbG9jYXRpb24sIHdlIHNpbXBseSBhbGxvY2F0ZSB0aGUKICAgICAgICAgICAg
ICAgICAvLyBvYmplY3QgdG8gZGlyZWN0bHkgaGF2ZSB0aGUgZGVzaXJlZCBzdHJ1Y3R1cmUuCkBA
IC02MzYwLDEyICs2NDk2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGZvciAoUHJvcGVydHlNYXBFbnRyeSBlbnRyeSA6IHN0cnVjdHVyZS0+Z2V0UHJvcGVydGllc0Nv
bmN1cnJlbnRseSgpKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5t
X3Byb3BlcnRpZXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIFBoYW50b21Q
cm9wZXJ0eVZhbHVlIHZhbHVlID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZpZXJzKClbdmFsdWUubV9pZGVudGlmaWVyTnVtYmVy
XSAhPSBlbnRyeS5rZXkpCisgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNj
cmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGRlc2NyaXB0b3Iua2luZCgpICE9IE5hbWVkUHJvcGVydHlQTG9jKQorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLmlkZW50aWZpZXJzKClbZGVzY3JpcHRvci5pbmZvKCldICE9IGVudHJ5LmtleSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBpc0lubGluZU9mZnNldChlbnRyeS5vZmZzZXQp
ID8gb2JqZWN0IDogYnV0dGVyZmx5OwotICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5
KHZhbHVlc1tpXSwgYmFzZSwgdmFsdWUubV9pZGVudGlmaWVyTnVtYmVyLCBlbnRyeS5vZmZzZXQp
OworICAgICAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KHZhbHVlc1tpXSwgYmFzZSwgZGVz
Y3JpcHRvci5pbmZvKCksIGVudHJ5Lm9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTY0MzAsOSArNjU2OCwxMSBA
QCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgYWN0aXZhdGlvbiA9IG1fb3V0LnBoaShtX291dC5p
bnRQdHIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChk
YXRhLm1fcHJvcGVydGllcy5zaXplKCkgPT0gdGFibGUtPnNjb3BlU2l6ZSgpKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlc1tpXSwKLSAgICAgICAgICAgICAgICBh
Y3RpdmF0aW9uLAotICAgICAgICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92
YXJpYWJsZXNbZGF0YS5tX3Byb3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyXSk7CisgICAg
ICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3By
b3BlcnRpZXNbaV07CisgICAgICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5raW5kKCkgPT0gQ2xv
c3VyZVZhclBMb2MpOworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgICAg
ICB2YWx1ZXNbaV0sIGFjdGl2YXRpb24sCisgICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmly
b25tZW50UmVjb3JkX3ZhcmlhYmxlc1tkZXNjcmlwdG9yLmluZm8oKV0pOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKQEAgLTY0NDEsNyArNjU4MSw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLT5iZWdpbihsb2Nr
ZXIpLCBlbmQgPSB0YWJsZS0+ZW5kKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAg
ICAgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09
IGRhdGEubV9wcm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcikgeworICAgICAgICAgICAg
ICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gZGF0YS5tX3By
b3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQo
KSA9PSBDbG9zdXJlVmFyUExvYyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1
ZS5zY29wZU9mZnNldCgpLm9mZnNldCgpID09IGRlc2NyaXB0b3IuaW5mbygpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNjYxNCw2ICs2NzU2LDI5IEBAIHByaXZh
dGU6CiAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUsIHJlZ0V4cCwgbV9oZWFwcy5SZWdFeHBP
YmplY3RfbGFzdEluZGV4KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBD
YWNoZWRSZXN1bHQoKQorICAgIHsKKyAgICAgICAgRWRnZSBjb25zdHJ1Y3RvckVkZ2UgPSBtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CisgICAgICAgIEVkZ2UgcmVnRXhwRWRnZSA9IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgRWRnZSBzdHJpbmdFZGdlID0g
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpOworICAgICAgICBFZGdlIHN0YXJ0RWRnZSA9
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKTsKKyAgICAgICAgRWRnZSBlbmRFZGdlID0g
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDQpOworICAgICAgICAKKyAgICAgICAgTFZhbHVl
IGNvbnN0cnVjdG9yID0gbG93Q2VsbChjb25zdHJ1Y3RvckVkZ2UpOworICAgICAgICBMVmFsdWUg
cmVnRXhwID0gbG93Q2VsbChyZWdFeHBFZGdlKTsKKyAgICAgICAgTFZhbHVlIHN0cmluZyA9IGxv
d0NlbGwoc3RyaW5nRWRnZSk7CisgICAgICAgIExWYWx1ZSBzdGFydCA9IGxvd0ludDMyKHN0YXJ0
RWRnZSk7CisgICAgICAgIExWYWx1ZSBlbmQgPSBsb3dJbnQzMihlbmRFZGdlKTsKKworICAgICAg
ICBtX291dC5zdG9yZVB0cihyZWdFeHAsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0
cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0UmVnRXhwKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
c3RyaW5nLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1
bHRfbGFzdElucHV0KTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihzdGFydCwgY29uc3RydWN0b3Is
IG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X3Jlc3VsdF9zdGFydCk7Cisg
ICAgICAgIG1fb3V0LnN0b3JlMzIoZW5kLCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25z
dHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X2VuZCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzJB
czgoCisgICAgICAgICAgICBtX291dC5jb25zdEludDMyKDApLAorICAgICAgICAgICAgbV9vdXQu
YWRkcmVzcyhjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1
bHRfcmVpZmllZCkpOworICAgIH0KKwogICAgIExWYWx1ZSBkaWRPdmVyZmxvd1N0YWNrKCkKICAg
ICB7CiAgICAgICAgIC8vIFRoaXMgZG9lcyBhIHZlcnkgc2ltcGxlIGxlYWYgZnVuY3Rpb24gYW5h
bHlzaXMuIFRoZSBpbnZhcmlhbnQgb2YgRlRMIGNhbGwKQEAgLTY5NzEsNiArNzEzNiwzOSBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2
b2lkIGluaXRpYWxpemVBcnJheUVsZW1lbnRzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIExW
YWx1ZSB2ZWN0b3JMZW5ndGgsIExWYWx1ZSBidXR0ZXJmbHkpCisgICAgeworICAgICAgICBpZiAo
IWhhc0RvdWJsZShpbmRleGluZ1R5cGUpKSB7CisgICAgICAgICAgICAvLyBUaGUgR0MgYWxyZWFk
eSBpbml0aWFsaXplZCBldmVyeXRoaW5nIHRvIEpTVmFsdWUoKSBmb3IgdXMuCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBEb3VibGVzIG11c3QgYmUgaW5pdGlh
bGl6ZWQgdG8gUE5hTi4KKyAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExvb3AgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIAorICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQu
YW5jaG9yKHZlY3Rvckxlbmd0aCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9p
bnRlciA9IG1fb3V0LmFuY2hvcihidXR0ZXJmbHkpOworICAgICAgICBtX291dC5icmFuY2goCisg
ICAgICAgICAgICBtX291dC5ub3RaZXJvMzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJlKGluaXRMb29w
KSwgdW5zdXJlKGluaXREb25lKSk7CisgICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBpbml0
TGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOworICAgICAgICBM
VmFsdWUgaW5kZXggPSBtX291dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOworICAg
ICAgICBMVmFsdWUgcG9pbnRlciA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9p
bnRlcik7CisgICAgICAgIAorICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAorICAgICAgICAgICAg
VHlwZWRQb2ludGVyKG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXMuYXRBbnlJbmRleCgp
LCBwb2ludGVyKSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0gbV9vdXQu
c3ViKGluZGV4LCBtX291dC5pbnQzMk9uZSk7CisgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9Q
aGkoaW5kZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKKyAgICAgICAgbV9vdXQuYWRkSW5j
b21pbmdUb1BoaShwb2ludGVyLCBtX291dC5hbmNob3IobV9vdXQuYWRkKHBvaW50ZXIsIG1fb3V0
LmludFB0ckVpZ2h0KSkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291
dC5ub3RaZXJvMzIobmV4dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25l
KSk7CisgICAgICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5pdExhc3RO
ZXh0KTsKKyAgICB9CiAgICAgCiAgICAgTFZhbHVlIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKExW
YWx1ZSBvYmplY3QsIFN0cnVjdHVyZSogcHJldmlvdXNTdHJ1Y3R1cmUpCiAgICAgewpAQCAtOTE1
NCw3ICs5MzUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAg
ICAgIHJldHVybiBtX291dC50ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7
CiAgICAgfQotICAgIAorCiAgICAgTFZhbHVlIHVuYm94RG91YmxlKExWYWx1ZSBqc1ZhbHVlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmJpdENhc3QobV9vdXQuYWRkKGpzVmFsdWUsIG1f
dGFnVHlwZU51bWJlciksIG1fb3V0LmRvdWJsZVR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTg2ODUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSwxOSArNDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBKU0M6OkRGRzsKIAotZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIAotICAgIEJ1dHRlcmZseSogYnV0
dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCi0gICAgICAgIHZtLCBudWxscHRyLCAwLCBzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCBJbmRleGluZ0hlYWRlcigpLCAwKTsK
LSAgICAKLSAgICBKU09iamVjdCogcmVzdWx0ID0gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMs
IHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKLSAgICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1
cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2Jq
ZWN0SW5PU1IoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXph
dGlvbiogbWF0ZXJpYWxpemF0aW9uLAogICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlKiB2YWx1ZXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAg
Y2xhc3MgTGF6eVNsb3dQYXRoOwogCiBleHRlcm4gIkMiIHsKIAotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwgU3RydWN0dXJl
KikgV1RGX0lOVEVSTkFMOwotCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJp
YWxpemVPYmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqLCBFeGl0VGltZU9iamVjdE1hdGVyaWFs
aXphdGlvbiosIEVuY29kZWRKU1ZhbHVlKikgV1RGX0lOVEVSTkFMOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHAJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJSZWd1
bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIllhcnIuaCIKKyNpbmNsdWRlICJZYXJySW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lv
biAxOTg2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBK
U0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAgICAvLyBUaGlz
IGlzIGEgc3VwZXIgZGFuZ2Vyb3VzIG1ldGhvZCBmb3IgSklUcy4gU29tZXRpbWVzIHRoZSBKSVRz
IHdpbGwgd2FudCB0byBjcmVhdGUgZWl0aGVyIGEKKyAgICAvLyBKU0ZpbmFsT2JqZWN0IG9yIGEg
SlNBcnJheS4gVGhpcyBpcyB0aGUgbWV0aG9kIHRoYXQgd2lsbCBkbyB0aGF0LgorICAgIHN0YXRp
YyBKU09iamVjdCogY3JlYXRlUmF3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEJ1dHRlcmZseSogPSBudWxscHRyKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29weUJhY2tpbmdTdG9yZShKU0NlbGwq
LCBDb3B5VmlzaXRvciYsIENvcHlUb2tlbik7CkBAIC0xMDQxLDYgKzEwNDUsMjAgQEAgcHJpdmF0
ZToKIAogSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcml2YXRlRnVuY0luc3RhbmNlT2YoRXhlY1N0YXRlKik7CiAKK2lubGluZSBKU09iamVjdCog
SlNPYmplY3Q6OmNyZWF0ZVJhd09iamVjdCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKK3sKKyAgICBKU09iamVjdCogZmlu
YWxPYmplY3QgPSBuZXcgKAorICAgICAgICBOb3ROdWxsLCAKKyAgICAgICAgYWxsb2NhdGVDZWxs
PEpTRmluYWxPYmplY3Q+KAorICAgICAgICAgICAgKmV4ZWMtPmhlYXAoKSwKKyAgICAgICAgICAg
IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHko
KSkKKyAgICAgICAgKQorICAgICkgSlNPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidXR0
ZXJmbHkpOworICAgIGZpbmFsT2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAg
ICByZXR1cm4gZmluYWxPYmplY3Q7Cit9CisKIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFs
T2JqZWN0OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5jcHAJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsOCBA
QCBSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRlKFZNJiB2bSwgY29uc3QgU3RyCiAKIHZvaWQgUmVnRXhw
Ojpjb21waWxlKFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogeworICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgWWFycjo6WWFyclBh
dHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVy
cm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjkxLDcgKzI5Myw3IEBAIHZvaWQgUmVnRXhwOjpjb21w
aWxlKFZNKiB2bSwgWWFycjo6WWFyckMKICNlbmRpZgogCiAgICAgbV9zdGF0ZSA9IEJ5dGVDb2Rl
OwotICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmdm0t
Pm1fcmVnRXhwQWxsb2NhdG9yKTsKKyAgICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNv
bXBpbGUocGF0dGVybiwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvciwgJnZtLT5tX3JlZ0V4cEFsbG9j
YXRvckxvY2spOwogfQogCiBpbnQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYg
cywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3RvcikKQEAgLTI5
OSw4ICszMDEsMjIgQEAgaW50IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcmIAog
ICAgIHJldHVybiBtYXRjaElubGluZSh2bSwgcywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOwogfQog
Citib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoCisgICAgVk0mIHZtLCBjb25zdCBTdHJp
bmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50LCAz
Mj4mIG92ZWN0b3IpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KworICAgIGlmICghaGFzQ29kZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpD
aGFyMTYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwb3NpdGlvbiA9IG1hdGNoKHZt
LCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQg
UmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJT
aXplKQogeworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAg
ICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZt
X2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzMwLDcgKzM0Niw3IEBAIHZv
aWQgUmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWEKICNlbmRpZgogCiAgICAgbV9z
dGF0ZSA9IEJ5dGVDb2RlOwotICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGls
ZShwYXR0ZXJuLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9yKTsKKyAgICBtX3JlZ0V4cEJ5dGVjb2Rl
ID0gWWFycjo6Ynl0ZUNvbXBpbGUocGF0dGVybiwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvciwgJnZt
LT5tX3JlZ0V4cEFsbG9jYXRvckxvY2spOwogfQogCiBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNo
KFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKQEAgLTMzOCw4
ICszNTQsMjEgQEAgTWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IAogICAg
IHJldHVybiBtYXRjaElubGluZSh2bSwgcywgc3RhcnRPZmZzZXQpOwogfQogCitib29sIFJlZ0V4
cDo6bWF0Y2hDb25jdXJyZW50bHkoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYgcmVzdWx0KQoreworICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoIWhhc01hdGNoT25seUNvZGVGb3Iocy5pczhC
aXQoKSA/IFlhcnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmVzdWx0ID0gbWF0Y2godm0sIHMsIHN0YXJ0T2Zmc2V0KTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogdm9pZCBSZWdFeHA6OmRlbGV0ZUNvZGUoKQogeworICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgCiAgICAgaWYgKCFoYXNDb2RlKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBtX3N0YXRlID0gTm90Q29tcGlsZWQ7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIy
LDcgQEAKICNpZm5kZWYgUmVnRXhwX2gKICNkZWZpbmUgUmVnRXhwX2gKIAorI2luY2x1ZGUgIkNv
bmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2lu
Y2x1ZGUgIk1hdGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiUmVnRXhwS2V5LmgiCkBAIC01Niw2ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0KICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmxhZ3MgJiBGbGFnTXVsdGlsaW5lOyB9CiAgICAgYm9vbCBzdGlja3koKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzICYgRmxhZ1N0aWNreTsgfQorICAgIGJvb2wgZ2xvYmFsT3JTdGlja3ko
KSBjb25zdCB7IHJldHVybiBnbG9iYWwoKSB8fCBzdGlja3koKTsgfQogICAgIGJvb2wgdW5pY29k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnVW5pY29kZTsgfQogCiAgICAgY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CkBAIC02
NCw4ICs2NiwxNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25FcnJvcjsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgaW50IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZl
Y3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7CisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIGNv
dWxkbid0IHJ1biB0aGUgcmVndWxhciBleHByZXNzaW9uIGZvciBhbnkgcmVhc29uLgorICAgIGJv
b2wgbWF0Y2hDb25jdXJyZW50bHkoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgaW50JiBwb3NpdGlvbiwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKTsKKyAgICAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBNYXRjaFJlc3VsdCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKIAorICAgIGJvb2wgbWF0Y2hDb25jdXJyZW50bHkoVk0m
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmKTsKKwog
ICAgIC8vIENhbGwgdGhlc2UgdmVyc2lvbnMgb2YgdGhlIG1hdGNoIGZ1bmN0aW9ucyBpZiB5b3Un
cmUgZGVzcGVyYXRlIGZvciBwZXJmb3JtYW5jZS4KICAgICBpbnQgbWF0Y2hJbmxpbmUoVk0mLCBj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVj
dG9yKTsKICAgICBNYXRjaFJlc3VsdCBtYXRjaElubGluZShWTSYsIGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KTsKQEAgLTc3LDYgKzg1LDkgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV9zdGF0ZSAhPSBOb3RDb21waWxlZDsKICAgICB9CiAKKyAgICBib29sIGhhc0NvZGVG
b3IoWWFycjo6WWFyckNoYXJTaXplKTsKKyAgICBib29sIGhhc01hdGNoT25seUNvZGVGb3IoWWFy
cjo6WWFyckNoYXJTaXplKTsKKwogICAgIHZvaWQgZGVsZXRlQ29kZSgpOwogCiAjaWYgRU5BQkxF
KFJFR0VYUF9UUkFDSU5HKQpAQCAtMTMyLDYgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9ydE1hdGNoQ2FsbENvdW50OwogICAgIHVuc2lnbmVkIG1fcnRNYXRjaEZvdW5kQ291bnQ7
CiAjZW5kaWYKKyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CiAKICNpZiBFTkFCTEUoWUFS
Ul9KSVQpCiAgICAgWWFycjo6WWFyckNvZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQu
aAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ2FjaGVkUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDExIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkxhc3RSZWdFeHAoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
UmVnRXhwQ2FjaGVkUmVzdWx0LCBtX2xhc3RSZWdFeHApOyB9CisgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkxhc3RJbnB1dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNo
ZWRSZXN1bHQsIG1fbGFzdElucHV0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZS
ZXN1bHQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwQ2FjaGVkUmVzdWx0LCBtX3Jl
c3VsdCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUmVpZmllZCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fcmVpZmllZCk7IH0KKwogcHJp
dmF0ZToKICAgICBNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKICAgICBib29sIG1fcmVpZmllZDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuaAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FjaGVkUmVzdWx0KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENvbnN0cnVjdG9yLCBtX2NhY2hlZFJlc3VsdCk7IH0K
KwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBSZWdFeHBQcm90b3R5
cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXMpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCShyZXZpc2lvbiAxOTg2ODUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiWWFyci5oIgorI2luY2x1ZGUgIllhcnJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIllhcnJKSVQuaCIKIAogI2RlZmluZSBSRUdFWFBfRlVOQ19URVNUX0RBVEFfR0VO
IDAKQEAgLTY3LDIwICs2OCwyNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZiAvLyBSRUdFWFBfRlVO
Q19URVNUX0RBVEFfR0VOCiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5l
Y2Vzc2FyeShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJ
TkUgYm9vbCBSZWdFeHA6Omhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQog
ewogICAgIGlmIChoYXNDb2RlKCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlm
IChtX3N0YXRlICE9IEpJVENvZGUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1f
cmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXIx
NikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGUoKSkpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitBTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZ
YXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit7CisgICAgaWYgKGhhc0NvZGVGb3IoY2hhclNp
emUpKQorICAgICAgICByZXR1cm47CiAKICAgICBjb21waWxlKCZ2bSwgY2hhclNpemUpOwogfQpA
QCAtMTUyLDIxICsxNjAsMjkgQEAgQUxXQVlTX0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGlu
ZShWTQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6
OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBj
aGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3Io
WWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewogICAgIGlmIChoYXNDb2RlKCkpIHsKICNp
ZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCi0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKChj
aGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZU1h
dGNoT25seSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklU
Q29kZS5oYXMxNkJpdENvZGVNYXRjaE9ubHkoKSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAjZW5kaWYKICAgICB9CiAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZ
U19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShWTSYgdm0s
IFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK3sKKyAgICBpZiAoaGFzTWF0Y2hPbmx5Q29k
ZUZvcihjaGFyU2l6ZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGNvbXBpbGVNYXRjaE9ubHko
JnZtLCBjaGFyU2l6ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlY0lubGlu
ZShFeGVjU3RhCiAgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsgLy8gRklY
TUU6IEhhbmRsZSBlcnJvcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTUxNDUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBib29sIGds
b2JhbE9yU3RpY2t5ID0gcmVnRXhwLT5nbG9iYWwoKSB8fCByZWdFeHAtPnN0aWNreSgpOworICAg
IGJvb2wgZ2xvYmFsT3JTdGlja3kgPSByZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCk7CiAKICAgICB1
bnNpZ25lZCBsYXN0SW5kZXg7CiAgICAgaWYgKGdsb2JhbE9yU3RpY2t5KSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Myw3ICsyODMsNyBAQCBzdGF0aWMgTkVW
RVJfSU5MSU5FIFN0cmluZyBzdWJzdGl0dXRlQmFjCiAgICAgcmV0dXJuIHN1YnN0aXR1dGVkUmVw
bGFjZW1lbnQudG9TdHJpbmcoKTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgc3Vic3RpdHV0
ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291
cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnKQoraW5saW5lIFN0cmluZyBzdWJz
dGl0dXRlQmFja3JlZmVyZW5jZXNJbmxpbmUoY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgU3Ry
aW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcpCiB7CiAgICAg
c2l6ZV90IGkgPSByZXBsYWNlbWVudC5maW5kKCckJyk7CiAgICAgaWYgKFVOTElLRUxZKGkgIT0g
bm90Rm91bmQpKQpAQCAtMjkyLDYgKzI5MiwxMSBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBzdWJz
dGl0dXRlQmFja3JlZmVyCiAgICAgcmV0dXJuIHJlcGxhY2VtZW50OwogfQogCitTdHJpbmcgc3Vi
c3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1Zp
ZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnKQoreworICAgIHJldHVy
biBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNJbmxpbmUocmVwbGFjZW1lbnQsIHNvdXJjZSwgb3Zl
Y3RvciwgcmVnKTsKK30KKwogc3RydWN0IFN0cmluZ1JhbmdlIHsKICAgICBTdHJpbmdSYW5nZShp
bnQgcG9zLCBpbnQgbGVuKQogICAgICAgICA6IHBvc2l0aW9uKHBvcykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCShyZXZpc2lvbiAx
OTg2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIE9iamVjdFByb3RvdHlwZTsKK2NsYXNzIFJlZ0V4cDsKIGNsYXNzIFJlZ0V4cE9iamVjdDsK
IAogY2xhc3MgU3RyaW5nUHJvdG90eXBlIDogcHVibGljIFN0cmluZ09iamVjdCB7CkBAIC02Miw2
ICs2Myw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3QKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJl
Z0V4cFN0cmluZygKICAgICBFeGVjU3RhdGUqLCBKU1N0cmluZyogdGhpc1ZhbHVlLCBSZWdFeHBP
YmplY3QqIHNlYXJjaFZhbHVlLCBKU1N0cmluZyogcmVwbGFjZVZhbHVlKTsKIAorU3RyaW5nIHN1
YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBTdHJpbmdW
aWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZyk7CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RyaW5nUHJvdG90eXBlX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lm
bmRlZiBWTV9oCiAjZGVmaW5lIFZNX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgi
CiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5j
ZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgpAQCAtNTQxLDYgKzU0
Miw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8VHlwZWRBcnJheUNvbnRyb2xsZXI+IG1fdHlwZWRB
cnJheUNvbnRyb2xsZXI7CiAgICAgUmVnRXhwQ2FjaGUqIG1fcmVnRXhwQ2FjaGU7CiAgICAgQnVt
cFBvaW50ZXJBbGxvY2F0b3IgbV9yZWdFeHBBbGxvY2F0b3I7CisgICAgQ29uY3VycmVudEpJVExv
Y2sgbV9yZWdFeHBBbGxvY2F0b3JMb2NrOwogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQog
ICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVnRXhwKj4gUlRUcmFjZUxpc3Q7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
LWZhaWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy1mYWlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGZvbygp
IHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8uZXhlYygiYmFyIik7Cit9CisKK25vSW5saW5lKGZv
byk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQg
PSBmb28oKTsKKyAgICBpZiAocmVzdWx0ICE9PSBudWxsKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZv
bGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTkgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8uZXhlYygi
Zm9vIik7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0Lmxlbmd0aCAh
PSA0KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAg
aWYgKHJlc3VsdFswXSAhPSAiZm9vIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1bHRbMV0gIT0gImYiKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFsyXSAhPSAibyIp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAo
cmVzdWx0WzNdICE9ICJvIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1w
bGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5q
cwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2lt
cGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDExIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIC8oZikobykobykvLnRlc3QoImJh
ciIpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSBmYWxzZSkK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0
dXJuIC8oZikobykobykvLnRlc3QoImZvbyIpOworfQorCitub0lubGluZShmb28pOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7Cisg
ICAgaWYgKHJlc3VsdCAhPSB0cnVlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFy
RXhwcmVzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
UmVndWxhckV4cHJlc3Npb24uY3BwCShyZXZpc2lvbiAxOTg2ODUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NCArMSwzIEBACi0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9y
YSBMdGQuCkBAIC0zMCw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIK
IAogI2luY2x1ZGUgIllhcnIuaCIKKyNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRv
ci5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCShyZXZpc2lvbiAxOTg2ODUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDYgQEAKICNpZm5kZWYgWWFycl9oCiAjZGVmaW5lIFlhcnJfaAogCi0jaW5jbHVk
ZSAiWWFyckludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKQEAgLTYzLDYgKzYyLDggQEAgZW51bSBZYXJyQ2hh
clNpemUgewogICAgIENoYXIxNgogfTsKIAorc3RydWN0IEJ5dGVjb2RlUGF0dGVybjsKKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIKIAogI2VuZGlmIC8vIFlhcnJfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAx
OTg2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTIyLDYgKzE1MjIsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlm
ICghaW5wdXQuaXNBdmFpbGFibGVJbnB1dCgwKSkKICAgICAgICAgICAgIHJldHVybiBvZmZzZXRO
b01hdGNoOwogCisgICAgICAgIGlmIChwYXR0ZXJuLT5tX2xvY2spCisgICAgICAgICAgICBwYXR0
ZXJuLT5tX2xvY2stPmxvY2soKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwYXR0ZXJuLT5tX2JvZHktPm1fbnVtU3VicGF0dGVybnMgKyAxOyArK2kpCiAgICAg
ICAgICAgICBvdXRwdXRbaSA8PCAxXSA9IG9mZnNldE5vTWF0Y2g7CiAKQEAgLTE1NDEsNiArMTU0
NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHBhdHRlcm4tPm1fYWxsb2NhdG9yLT5zdG9wQWxsb2Nh
dG9yKCk7CiAKICAgICAgICAgQVNTRVJUKChyZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgPT0gKG91
dHB1dFswXSAhPSBvZmZzZXROb01hdGNoKSk7CisKKyAgICAgICAgaWYgKHBhdHRlcm4tPm1fbG9j
aykKKyAgICAgICAgICAgIHBhdHRlcm4tPm1fbG9jay0+dW5sb2NrKCk7CisgICAgICAgIAogICAg
ICAgICByZXR1cm4gb3V0cHV0WzBdOwogICAgIH0KIApAQCAtMTU4MSwxMyArMTU4OCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fY3VycmVudEFsdGVybmF0aXZlSW5kZXggPSAwOwogICAgIH0KIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZVBhdHRlcm4+IGNvbXBpbGUoQnVtcFBvaW50ZXJB
bGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJu
PiBjb21waWxlKEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKSVRM
b2NrKiBsb2NrKQogICAgIHsKICAgICAgICAgcmVnZXhCZWdpbihtX3BhdHRlcm4ubV9udW1TdWJw
YXR0ZXJucywgbV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplLCBtX3BhdHRlcm4ubV9i
b2R5LT5tX2FsdGVybmF0aXZlc1swXS0+b25jZVRocm91Z2goKSk7CiAgICAgICAgIGVtaXREaXNq
dW5jdGlvbihtX3BhdHRlcm4ubV9ib2R5KTsKICAgICAgICAgcmVnZXhFbmQoKTsKIAotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5
RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3Ip
OworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1v
dmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBh
bGxvY2F0b3IsIGxvY2spOwogICAgIH0KIAogICAgIHZvaWQgY2hlY2tJbnB1dCh1bnNpZ25lZCBj
b3VudCkKQEAgLTIwMzIsOSArMjAzOSw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKIH07CiAKLXN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiBw
YXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yKQorc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKSVRMb2NrKiBsb2NrKQogewot
ICAgIHJldHVybiBCeXRlQ29tcGlsZXIocGF0dGVybikuY29tcGlsZShhbGxvY2F0b3IpOworICAg
IHJldHVybiBCeXRlQ29tcGlsZXIocGF0dGVybikuY29tcGlsZShhbGxvY2F0b3IsIGxvY2spOwog
fQogCiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiBieXRlY29kZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAkocmV2aXNpb24g
MTk4Njg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgWWFyckludGVycHJldGVy
X2gKICNkZWZpbmUgWWFyckludGVycHJldGVyX2gKIAorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRM
b2NrLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0z
MzcsMTAgKzMzOCwxMSBAQCBwdWJsaWM6CiBzdHJ1Y3QgQnl0ZWNvZGVQYXR0ZXJuIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBCeXRlY29kZVBhdHRlcm4oc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4gYm9keSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlRGlzanVuY3Rpb24+PiYgcGFyZW50aGVzZXNJbmZvVG9BZG9wdCwgWWFyclBhdHRlcm4m
IHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IpCisgICAgQnl0ZWNvZGVQ
YXR0ZXJuKHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+IGJvZHksIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPj4mIHBhcmVudGhlc2VzSW5mb1RvQWRvcHQsIFlh
cnJQYXR0ZXJuJiBwYXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yLCBDb25j
dXJyZW50SklUTG9jayogbG9jaykKICAgICAgICAgOiBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAg
ICAgICAgLCBtX2ZsYWdzKHBhdHRlcm4ubV9mbGFncykKICAgICAgICAgLCBtX2FsbG9jYXRvcihh
bGxvY2F0b3IpCisgICAgICAgICwgbV9sb2NrKGxvY2spCiAgICAgewogICAgICAgICBtX2JvZHkt
PnRlcm1zLnNocmlua1RvRml0KCk7CiAKQEAgLTM2Niw2ICszNjgsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gRWFjaCBCeXRlY29kZVBhdHRlcm4gaXMgYXNzb2NpYXRlZCB3aXRoIGEgUmVnRXhwLCBlYWNo
IFJlZ0V4cCBpcyBhc3NvY2lhdGVkCiAgICAgLy8gd2l0aCBhIFZNLiAgQ2FjaGUgYSBwb2ludGVy
IHRvIG91dCBWTSdzIG1fcmVnRXhwQWxsb2NhdG9yLgogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9y
KiBtX2FsbG9jYXRvcjsKKyAgICBDb25jdXJyZW50SklUTG9jayogbV9sb2NrOwogCiAgICAgQ2hh
cmFjdGVyQ2xhc3MqIG5ld2xpbmVDaGFyYWN0ZXJDbGFzczsKICAgICBDaGFyYWN0ZXJDbGFzcyog
d29yZGNoYXJDaGFyYWN0ZXJDbGFzczsKQEAgLTM3NSw3ICszNzgsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+PiBtX3VzZXJDaGFyYWN0ZXJD
bGFzc2VzOwogfTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
UGF0dGVybj4gYnl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciop
OworSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0
ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciosIENvbmN1cnJlbnRK
SVRMb2NrKiA9IG51bGxwdHIpOwogSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgaW50ZXJwcmV0
KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCogb3V0cHV0KTsKIHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBj
b25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkKiBvdXRwdXQpOwogdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0
IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQq
IG91dHB1dCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4Njg1KQorKysgU291cmNlL1dURi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wMy0xOSAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBhbmQgRlRMIHNob3VsZCBjb25z
dGFudC1mb2xkIFJlZ0V4cEV4ZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgor
CisgICAgICAgIE1ha2UgZXhlY3V0ZUluc2VydGlvbnMoKSByZXR1cm4gdGhlIGFtb3VudCBieSB3
aGljaCB0aGUgdmVjdG9yIGluY3JlYXNlZCBpbiBzaXplLiBUaGlzIGlzIGEKKyAgICAgICAgY29u
dmVuaWVudCBmZWF0dXJlIHRoYXQgSSB1c2UgaW4gREZHOjpJbnNlcnRpb25TZXQuCisKKyAgICAg
ICAgKiB3dGYvSW5zZXJ0aW9uLmg6CisgICAgICAgIChXVEY6OmV4ZWN1dGVJbnNlcnRpb25zKToK
KwogMjAxNi0wMy0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFkZCBhIGNvbXBpbGUgdGltZSBmbGFnIGZvciB1c2luZyBRVEtpdApJbmRl
eDogU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvSW5zZXJ0aW9uLmgJKHJldmlzaW9uIDE5ODY4NSkKKysrIFNvdXJjZS9XVEYvd3RmL0luc2Vy
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDE0ICs1NSwxNSBAQCBwcml2YXRl
OgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0VmVjdG9yVHlwZSwgdHlwZW5hbWUgSW5z
ZXJ0aW9uVmVjdG9yVHlwZT4KLXZvaWQgZXhlY3V0ZUluc2VydGlvbnMoVGFyZ2V0VmVjdG9yVHlw
ZSYgdGFyZ2V0LCBJbnNlcnRpb25WZWN0b3JUeXBlJiBpbnNlcnRpb25zKQorc2l6ZV90IGV4ZWN1
dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0aW9uVmVjdG9yVHlw
ZSYgaW5zZXJ0aW9ucykKIHsKLSAgICBpZiAoIWluc2VydGlvbnMuc2l6ZSgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgdGFyZ2V0Lmdyb3codGFyZ2V0LnNpemUoKSArIGluc2VydGlvbnMuc2l6ZSgp
KTsKKyAgICBzaXplX3QgbnVtSW5zZXJ0aW9ucyA9IGluc2VydGlvbnMuc2l6ZSgpOworICAgIGlm
ICghbnVtSW5zZXJ0aW9ucykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdGFyZ2V0Lmdyb3codGFy
Z2V0LnNpemUoKSArIG51bUluc2VydGlvbnMpOwogICAgIHNpemVfdCBsYXN0SW5kZXggPSB0YXJn
ZXQuc2l6ZSgpOwogICAgIHNpemVfdCBvcmlnaW5hbFRhcmdldFNpemUgPSB0YXJnZXQuc2l6ZSgp
OwotICAgIGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gaW5zZXJ0aW9ucy5zaXplKCk7
IGluZGV4SW5JbnNlcnRpb25zLS07KSB7CisgICAgZm9yIChzaXplX3QgaW5kZXhJbkluc2VydGlv
bnMgPSBudW1JbnNlcnRpb25zOyBpbmRleEluSW5zZXJ0aW9ucy0tOykgewogICAgICAgICBBU1NF
UlQoIWluZGV4SW5JbnNlcnRpb25zIHx8IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmlu
ZGV4KCkgPj0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9ucyAtIDFdLmluZGV4KCkpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKG9yaWdpbmFsVGFyZ2V0U2l6ZSwgaW5zZXJ0aW9uc1tpbmRleElu
SW5zZXJ0aW9uc10uaW5kZXgoKSA8IG9yaWdpbmFsVGFyZ2V0U2l6ZSk7CiAgICAgICAgIHNpemVf
dCBmaXJzdEluZGV4ID0gaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc10uaW5kZXgoKSArIGlu
ZGV4SW5JbnNlcnRpb25zOwpAQCAtNzMsNiArNzQsNyBAQCB2b2lkIGV4ZWN1dGVJbnNlcnRpb25z
KFRhcmdldFZlY3RvclR5cGUmCiAgICAgICAgIGxhc3RJbmRleCA9IGZpcnN0SW5kZXg7CiAgICAg
fQogICAgIGluc2VydGlvbnMucmVzaXplKDApOworICAgIHJldHVybiBudW1JbnNlcnRpb25zOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODY4NSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2
LTAzLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIGFu
ZCBGVEwgc2hvdWxkIGNvbnN0YW50LWZvbGQgUmVnRXhwRXhlYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjcwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qczogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmctZmFpbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
LWZhaWwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4
ZWMtZm9sZGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVz
cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcu
aHRtbDogQWRkZWQuCisKIDIwMTYtMDMtMjMgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgSW1wbGVtZW50IHRoZSBhbGxvdy1lbmQgdmFsdWUgb2YgdGhlIGhhbmdpbmct
cHVuY3R1YXRpb24gQ1NTIHByb3BlcnR5LgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
aW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAt
ZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitKU1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9s
ZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1m
b2xkaW5nLWZhaWwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhj
ZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVj
LWZvbGRpbmctZmFpbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGlu
Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5n
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUt
cmVnZXhwLXRlc3QtZm9sZGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcmVnZXhw
LXRlc3QtZm9sZGluZy1mYWlsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFp
bC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5n
LWZhaWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNz
LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0
LWZvbGRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3Qt
Zm9sZGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jl
c3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWls
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Np
bXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1m
YWlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9uKCkgeworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICAvZm9vLy5leGVjKCJi
YXIiKTsKK30pKCk7CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxl
LXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACiso
ZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAg
ICAgIC9mb28vLmV4ZWMoImZvbyIpOworfSkoKTsKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVn
ZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgL2Zvby8udGVzdCgiYmFyIik7Cit9
KSgpOworCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUt
cmVnZXhwLXRlc3QtZm9sZGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorKGZ1bmN0aW9u
KCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgICAgICAvZm9v
Ly50ZXN0KCJmb28iKTsKK30pKCk7CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275633</attachid>
            <date>2016-04-04 21:33:54 -0700</date>
            <delta_ts>2016-04-04 21:33:54 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>128417</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5MDQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MSBA
QAorMjAxNi0wMy0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBhbmQgRlRMIHNob3VsZCBjb25zdGFudC1mb2xkIFJlZ0V4cEV4ZWMsIFJlZ0V4cFRlc3Qs
IGFuZCBTdHJpbmdSZXBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKwor
ICAgICAgICBUaGlzIGVuYWJsZXMgY29uc3RhbnQtZm9sZGluZyBvZiBSZWdFeHBFeGVjLCBSZWdF
eHBUZXN0LCBhbmQgU3RyaW5nUmVwbGFjZS4KKworICAgICAgICBJdCdzIG5vdyBwb3NzaWJsZSB0
byBydW4gWWFyciBvbiB0aGUgSklUIHRocmVhZHMuIFNpbmNlIHByZXZpb3VzIHdvcmsgb24gY29u
c3RhbnQtZm9sZGluZworICAgICAgICBzdHJpbmdzIGdhdmUgdGhlIERGRyBhbiBBUEkgZm9yIHJl
YXNvbmluZyBhYm91dCBKU1N0cmluZyBjb25zdGFudHMgaW4gdGVybXMgb2YKKyAgICAgICAgSklU
LXRocmVhZC1sb2NhbCBXVEY6OlN0cmluZ3MsIGl0J3Mgbm93IHN1cGVyIGVhc3kgdG8ganVzdCBw
YXNzIHN0cmluZ3MgdG8gWWFyciBhbmQgYnVpbGQgSVIKKyAgICAgICAgYmFzZWQgb24gdGhlIHJl
c3VsdHMuCisKKyAgICAgICAgQnV0IFJlZ0V4cEV4ZWMgaXMgaGFyZDogdGhlIGZvbGRlZCB2ZXJz
aW9uIHN0aWxsIG11c3QgYWxsb2NhdGUgYSBSZWdFeHBNYXRjaGVzQXJyYXkuIFdlIG11c3QKKyAg
ICAgICAgdXNlIHRoZSBzYW1lIFN0cnVjdHVyZSB0aGF0IHRoZSBjb2RlIHdvdWxkIGhhdmUgdXNl
ZCBvciBlbHNlIHdlJ2xsIHBvbGx1dGUgdGhlIHByb2dyYW0ncworICAgICAgICBpbmxpbmUgY2Fj
aGVzLiBBbHNvLCBSZWdFeHBNYXRjaGVzQXJyYXkuaHxjcHAgd2lsbCBhbGxvY2F0ZSB0aGUgYXJy
YXkgYW5kIGl0cyBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVzIGluIG9uZSBnbyAtIHdlIGRvbid0
IHdhbnQgdG8gbG9zZSB0aGF0IG9wdGltaXphdGlvbi4gU28sIHRoaXMgcGF0Y2ggZW5hYmxlcwor
ICAgICAgICBNYXRlcmlhbGl6ZU5ld09iamVjdCB0byBhbGxvY2F0ZSBvYmplY3RzIG9yIGFycmF5
cyB3aXRoIGFueSBudW1iZXIgb2YgaW5kZXhlZCBvciBuYW1lZAorICAgICAgICBwcm9wZXJ0aWVz
LiBQcmV2aW91c2x5IGl0IGNvdWxkIG9ubHkgaGFuZGxlIG9iamVjdHMgKGJ1dCBub3QgYXJyYXlz
KSBhbmQgbmFtZWQgcHJvcGVydGllcworICAgICAgICAoYnV0IG5vdCBpbmRleGVkIG9uZXMpLgor
CisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGEgZmV3IG1pbm9yIHRoaW5ncyBmb3Igc2V0dGluZyB0
aGUgUmVnRXhwQ29uc3RydWN0b3IgY2FjaGVkIHJlc3VsdC4KKworICAgICAgICBUaGlzIGlzIGFi
b3V0IGEgMnggc3BlZWQtdXAgb24gbWljcm9iZW5jaG1hcmtzIHdoZW4gd2UgZm9sZCBhIG1hdGNo
IHN1Y2Nlc3MgYW5kIGFib3V0IGEKKyAgICAgICAgOHggc3BlZWQtdXAgd2hlbiB3ZSBmb2xkIGEg
bWF0Y2ggZmFpbHVyZS4gSXQncyBhIDEwJSBzcGVlZC11cCBvbiBPY3RhbmUvcmVnZXhwLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcv
REZHSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Omlu
c2VydFNsb3cpOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6ZXhlY3V0ZSk6Cisg
ICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5oOgorICAgICAgICAoSlNDOjpERkc6Okluc2Vy
dGlvblNldDo6aW5zZXJ0Q2hlY2spOgorICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6TGF6eUpTVmFsdWU6OnRyeUdldFN0cmluZyk6CisgICAgICAg
ICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U3RhY2tBY2Nlc3NEYXRh
OjpmbHVzaGVkQXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE6OmR1bXApOgorICAgICAgICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVl
OjpkdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhOjpvbmVXYXlTaW1pbGFyaXR5U2NvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6Ok9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE6OnNpbWlsYXJpdHlTY29yZSk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpQaGFudG9tUHJvcGVydHlWYWx1ZTo6UGhhbnRvbVByb3BlcnR5VmFsdWUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlBoYW50b21Qcm9wZXJ0eVZhbHVlOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpERkc6Ok9wSW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAg
ICAgICAqIGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6flNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEdldExlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVMYXp5SlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlQ29tbXV0YXRpdml0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6ZXhlY3V0ZUlu
c2VydGlvblNldCk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlZhbGlkYXRl
Ojp2YWxpZGF0ZUNQUyk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVD
cmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVNldFJlZ0V4cE9iamVjdExhc3RJbmRleCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpkaWRPdmVyZmxvd1N0YWNrKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3RvcmFnZUZvclRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppbml0aWFsaXplQXJyYXlFbGVt
ZW50cyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNO
b3RDZWxsT3JNaXNjKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dW5i
b3hEb3VibGUpOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpTQzo6RlRM
OjpvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBm
dGwvRlRMT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaCk6CisgICAgICAg
IChKU0M6OlJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OmNvbXBpbGVNYXRjaE9ubHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlbGV0ZUNvZGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNo
ZWRSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxh
c3RSZWdFeHApOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFz
dElucHV0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3Vs
dCk6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZWlmaWVkKToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlJl
Z0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzQ29kZUZvcik6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjptYXRjaElubGluZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6aGFzTWF0Y2hPbmx5
Q29kZUZvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hP
bmx5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlc1Ns
b3cpOgorICAgICAgICAoSlNDOjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNJbmxpbmUpOgorICAg
ICAgICAoSlNDOjpzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpTdHJp
bmdSYW5nZTo6U3RyaW5nUmFuZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAg
ICAoZm9vKToKKyAgICAgICAgKiB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcDoKKyAgICAgICAg
KiB5YXJyL1lhcnIuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHA6CisgICAg
ICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjppbnRlcnByZXQpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpCeXRlQ29tcGlsZXI6OkJ5dGVDb21waWxlcik6CisgICAgICAgIChKU0M6OllhcnI6OkJ5
dGVDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6
Y2hlY2tJbnB1dCk6CisgICAgICAgIChKU0M6OllhcnI6OmJ5dGVDb21waWxlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6aW50ZXJwcmV0KToKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5o
OgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlY29kZVBhdHRlcm46OkJ5dGVjb2RlUGF0dGVybik6
CisKIDIwMTYtMDQtMDQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBdm9pZCBjb3B5aW5nIE1vZHVsZUxvYWRlck9iamVjdC5qcyB0byByZXNvdXJjZXMg
YnVuZGxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk5MDQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4OCw2ICs0ODgsNyBAQAogCQkwRjdDMTFB
RDFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MxMUFDMUJDMzg2MkMwMEM3NENEQiAvKiBDb3B5
QmFycmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGN0MzOUZCMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDMzlGQTFDOEY2MjkzMDA0
ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovOyB9OwogCQkwRjdDMzlGRDFDOEY2NTk1MDA0ODAx
NTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVj
dElubGluZXMuaCAqLzsgfTsKKwkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5
RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovOyB9OwogCQkwRjgwMjNFQTE2MTM4
MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MzM1
QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjQxNjM5QzFFMzAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9OwogCQkwRjgzMzVCODE2
MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1
IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjYzOCw2ICsyNjM5LDcgQEAKIAkJMEY3QzExQUMxQkMz
ODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvcHlCYXJyaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0Mz
OUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyog
REZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5o
OyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjI0Niw2ICs2MjQ4LDcgQEAKIAkJCQkwRjJCOUNERDE5RDBCQTdEMDBCMUQx
QjUgLyogREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oICovLAogCQkJCTg2RUM5REJGMTMy
OERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCAqLywKIAkJCQk4NkVDOURDMDEzMjhE
RjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9ucy5oICovLAorCQkJCTBGN0MzOUZFMUM5MEM1NUIw
MDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLywKIAkJCQlBN0Q4OUNFRTE3QTBCOENDMDA3NzNBRDgg
LyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAgKi8sCiAJCQkJQTdEODlDRUYx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCAqLywK
IAkJCQkwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50cnkuY3BwICovLApAQCAt
NzQ0OCw2ICs3NDUxLDcgQEAKIAkJCQkwRjY0RUFGMzFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJn
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDUxOUY2REU3NDAwOThGNUVDIC8q
IGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUVBNzEwNjE5RjZERTc2MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9u
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzM5RkYxQzkwQzU1QjAw
NDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDcxOUY2REU3
ODAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFk
ZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1MDAxM0M4OEYgLyogQjND
b25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwODE5RjZERTdBMDA5
OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAxOTkw
NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NTUsNiArMTk1NSw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJl
c3VsdDoKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50
czoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZp
c2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkod29ya2luZyBjb3B5KQpAQCAtOTE3LDYgKzkxNywxMCBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0SW5k
ZXgpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFJlZ0V4cE9iamVjdExhc3RJbmRleExvYywg
UmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlLT5j
aGlsZDIoKS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBSZWNvcmRSZWdF
eHBDYWNoZWRSZXN1bHQ6CisgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgcmV0
dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6IHsKICAgICAgICAgQWJz
dHJhY3RIZWFwIGhlYXAoRGlyZWN0QXJndW1lbnRzUHJvcGVydGllcywgbm9kZS0+Y2FwdHVyZWRB
cmd1bWVudHNPZmZzZXQoKS5vZmZzZXQoKSk7CkBAIC0xMDgwLDcgKzEwODQsOSBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGlmIChub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCiAgICAgICAgICAgICAmJiBub2RlLT5j
aGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICByZWFkKFJlZ0V4
cFN0YXRlKTsKKyAgICAgICAgICAgIHJlYWQoUmVnRXhwT2JqZWN0X2xhc3RJbmRleCk7CiAgICAg
ICAgICAgICB3cml0ZShSZWdFeHBTdGF0ZSk7CisgICAgICAgICAgICB3cml0ZShSZWdFeHBPYmpl
Y3RfbGFzdEluZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBy
ZWFkKFdvcmxkKTsKQEAgLTEwOTIsNyArMTA5OCw5IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQo
KSA9PSBSZWdFeHBPYmplY3RVc2UKICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMygpLnVzZUtp
bmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJlYWQoUmVnRXhwU3RhdGUpOworICAg
ICAgICAgICAgcmVhZChSZWdFeHBPYmplY3RfbGFzdEluZGV4KTsKICAgICAgICAgICAgIHdyaXRl
KFJlZ0V4cFN0YXRlKTsKKyAgICAgICAgICAgIHdyaXRlKFJlZ0V4cE9iamVjdF9sYXN0SW5kZXgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJlYWQoV29ybGQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMTk5
MDQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIEdldFJlZ0V4cE9iamVj
dExhc3RJbmRleDoKICAgICBjYXNlIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKKyAgICBjYXNl
IFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICBj
YXNlIEdldEdsb2JhbExleGljYWxWYXJpYWJsZToKICAgICBjYXNlIFB1dEdsb2JhbFZhcmlhYmxl
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShy
ZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAwLDYgKzEzMDAsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0
SW5kZXg6CiAgICAgICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgICAgICBj
YXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBq
dXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IGV4cGVjdCB0byBzZWUgZHVyaW5nIGZp
eHVwLgogICAgICAgICAgICAgLy8gSWYgd2UgZXZlciB3YW50ZWQgdG8gaW5zZXJ0IHRoZW0gcHJp
b3IgdG8gZml4dXAsIHRoZW4gd2UganVzdCBoYXZlIHRvIGNyZWF0ZQogICAgICAgICAgICAgLy8g
Zml4dXAgcnVsZXMgZm9yIHRoZW0uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAkocmV2aXNpb24gMTk5MDQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNSw2ICszMTUsOCBAQCB2b2lkIEdyYXBo
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgICAgICBvdXQucHJpbnQoYW5v
dGhlckNvbW1hLCBwb2ludGVyRHVtcEluQ29udGV4dChmcmVlemUobV9jb2RlQmxvY2stPmNvbnN0
YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSlbaV0pLCBjb250ZXh0KSk7CiAgICAgICAg
IG91dC5wcmludCgiXSIpOwogICAgIH0KKyAgICBpZiAobm9kZS0+aGFzTGF6eUpTVmFsdWUoKSkK
KyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBub2RlLT5sYXp5SlNWYWx1ZSgpKTsKICAgICBpZiAo
bm9kZS0+aGFzSW5kZXhpbmdUeXBlKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgSW5kZXhp
bmdUeXBlRHVtcChub2RlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgIGlmIChub2RlLT5oYXNUeXBl
ZEFycmF5VHlwZSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRp
b25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5z
ZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMTk5MDQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSw5IEBA
IHZvaWQgSW5zZXJ0aW9uU2V0OjppbnNlcnRTbG93KGNvbnN0IEluc2UKICAgICBtX2luc2VydGlv
bnMuaW5zZXJ0KDAsIGluc2VydGlvbik7CiB9CiAKLXZvaWQgSW5zZXJ0aW9uU2V0OjpleGVjdXRl
KEJhc2ljQmxvY2sqIGJsb2NrKQorc2l6ZV90IEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Js
b2NrKiBibG9jaykKIHsKLSAgICBleGVjdXRlSW5zZXJ0aW9ucygqYmxvY2ssIG1faW5zZXJ0aW9u
cyk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRpb25zKCpibG9jaywgbV9pbnNlcnRpb25zKTsK
IH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjksNyArMTI5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKTsKKyAgICBzaXplX3QgZXhl
Y3V0ZShCYXNpY0Jsb2NrKiBibG9jayk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnNlcnRTbG93
KGNvbnN0IEluc2VydGlvbiYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcgQEAgRXhpdE1v
ZGUgbWF5RXhpdChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZAogICAgIGNhc2UgU3RvcmVCYXJyaWVy
OgogICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgorICAgIGNh
c2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
U3RyQ2F0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE5
OTA0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgogI2luY2x1
ZGUgIkRGR05vZGVUeXBlLmgiCiAjaW5jbHVkZSAiREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0
YS5oIgorI2luY2x1ZGUgIkRGR09wSW5mby5oIgogI2luY2x1ZGUgIkRGR1RyYW5zaXRpb24uaCIK
ICNpbmNsdWRlICJERkdVc2VLaW5kLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRh
LmgiCkBAIC0yMTksMjAgKzIyMCw2IEBAIHN0cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogICAgIEZs
dXNoZWRBdCBmbHVzaGVkQXQoKSB7IHJldHVybiBGbHVzaGVkQXQoZm9ybWF0LCBtYWNoaW5lTG9j
YWwpOyB9CiB9OwogCi0vLyBUaGlzIHR5cGUgdXNlZCBpbiBwYXNzaW5nIGFuIGltbWVkaWF0ZSBh
cmd1bWVudCB0byBOb2RlIGNvbnN0cnVjdG9yOwotLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1lZGlh
dGUgdmFsdWUgKHR5cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3RydWN0
dXJlIC0gCi0vLyBhIGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikgZnJv
bSBhIE5vZGUqLgotc3RydWN0IE9wSW5mbyB7Ci0gICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDApIHsg
fQotICAgIGV4cGxpY2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nh
c3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQotICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJfdCB2
YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSNpZiBP
UyhEQVJXSU4pIHx8IFVTRShKU1ZBTFVFNjQpCi0gICAgZXhwbGljaXQgT3BJbmZvKHNpemVfdCB2
YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KLSNlbmRp
ZgotICAgIGV4cGxpY2l0IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQotICAgIHVpbnRwdHJfdCBtX3ZhbHVlOwotfTsK
LQogLy8gPT09IE5vZGUgPT09CiAvLwogLy8gTm9kZSByZXByZXNlbnRzIGEgc2luZ2xlIG9wZXJh
dGlvbiBpbiB0aGUgZGF0YSBmbG93IGdyYXBoLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTk5MDQwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiArMjI0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhckluamVjdGlvbldh
dGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRSZWdFeHBPYmplY3RM
YXN0SW5kZXgsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFNldFJlZ0V4cE9iamVjdExhc3RJ
bmRleCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFJlY29yZFJlZ0V4cENhY2hlZFJl
c3VsdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oQ2hl
Y2tDZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tOb3RFbXB0eSwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrQmFkQ2VsbCwgTm9kZU11c3RHZW5lcmF0
ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxOTkwNDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTc0LDcgKzE5NzQsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgICAgICAgICAgY2FzZSBOYW1lZFByb3BlcnR5UExvYzogewogICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQobG9jYXRpb24uYmFzZSgpID09IGFsbG9jYXRpb24uaWRlbnRpZmllcigpKTsK
LSAgICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Qcm9w
ZXJ0eVZhbHVlKGxvY2F0aW9uLmluZm8oKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLm1f
cHJvcGVydGllcy5hcHBlbmQobG9jYXRpb24uZGVzY3JpcHRvcigpKTsKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogdmFsdWUgPSByZXNvbHZlKGJsb2NrLCBsb2NhdGlvbik7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQobV9ib3R0b20p
OwpAQCAtMjAyNCw3ICsyMDI0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGNhc2Ug
Q2xvc3VyZVZhclBMb2M6IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJh
c2UoKSA9PSBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRh
dGEubV9wcm9wZXJ0aWVzLmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbi5pbmZv
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKGxvY2F0
aW9uLmRlc2NyaXB0b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVz
b2x2ZShibG9jaywgbG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2Fu
ZGlkYXRlcy5jb250YWlucyh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKG1fYm90dG9tKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
LmNwcAkocmV2aXNpb24gMTk5MDQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMzIgKzMyLDEx
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdm9pZCBQaGFudG9tUHJv
cGVydHlWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotewotICAgIG91dC5wcmlu
dCgiaWQiLCBtX2lkZW50aWZpZXJOdW1iZXIpOwotfQotCiB2b2lkIE9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQo
IlsiLCBsaXN0RHVtcChtX3Byb3BlcnRpZXMpLCAiXSIpOwogfQogCi1mbG9hdCBPYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhOjpvbmVXYXlTaW1pbGFyaXR5U2NvcmUoCi0gICAgY29uc3QgT2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgbnVtSGl0
cyA9IDA7Ci0gICAgZm9yIChQaGFudG9tUHJvcGVydHlWYWx1ZSB2YWx1ZSA6IG1fcHJvcGVydGll
cykgewotICAgICAgICBpZiAob3RoZXIubV9wcm9wZXJ0aWVzLmNvbnRhaW5zKHZhbHVlKSkKLSAg
ICAgICAgICAgIG51bUhpdHMrKzsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
PihudW1IaXRzKSAvIHN0YXRpY19jYXN0PGZsb2F0PihtX3Byb3BlcnRpZXMuc2l6ZSgpKTsKLX0K
LQotZmxvYXQgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTo6c2ltaWxhcml0eVNjb3JlKGNvbnN0
IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBz
dGQ6Om1pbihvbmVXYXlTaW1pbGFyaXR5U2NvcmUob3RoZXIpLCBvdGhlci5vbmVXYXlTaW1pbGFy
aXR5U2NvcmUoKnRoaXMpKTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaAkocmV2aXNpb24gMTk5
MDQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdf
SklUKQogCisjaW5jbHVkZSAiREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCIKICNpbmNsdWRlIDxs
aW1pdHMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgpAQCAtMzUsMzggKzM2LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAotc3RydWN0IFBoYW50b21Qcm9wZXJ0eVZhbHVlIHsKLSAgICBQaGFudG9tUHJv
cGVydHlWYWx1ZSgpCi0gICAgICAgIDogbV9pZGVudGlmaWVyTnVtYmVyKFVJTlRfTUFYKQotICAg
IHsKLSAgICB9Ci0gICAgCi0gICAgUGhhbnRvbVByb3BlcnR5VmFsdWUodW5zaWduZWQgaWRlbnRp
Zmllck51bWJlcikKLSAgICAgICAgOiBtX2lkZW50aWZpZXJOdW1iZXIoaWRlbnRpZmllck51bWJl
cikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIHVuc2lnbmVkIG1faWRlbnRpZmllck51bWJlcjsK
LSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGhhbnRvbVByb3BlcnR5VmFsdWUmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllck51bWJlciA9PSBv
dGhlci5tX2lkZW50aWZpZXJOdW1iZXI7Ci0gICAgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwotfTsKLQogc3RydWN0IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEg
ewogICAgIC8vIERldGVybWluZXMgdGhlIG1lYW5pbmcgb2YgdGhlIHBhc3NlZCBub2Rlcy4KLSAg
ICBWZWN0b3I8UGhhbnRvbVByb3BlcnR5VmFsdWU+IG1fcHJvcGVydGllczsKKyAgICBWZWN0b3I8
UHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3I+IG1fcHJvcGVydGllczsKICAgICAKICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICAKLSAgICAvLyBUaGUgZnJhY3Rpb24gb2Yg
bXkgcHJvcGVydGllcyB0aGF0IHRoZSBvdGhlciBkYXRhIGhhcy4KLSAgICBmbG9hdCBvbmVXYXlT
aW1pbGFyaXR5U2NvcmUoY29uc3QgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYpIGNvbnN0Owot
ICAgIAotICAgIC8vIFRoZSBtaW5pbXVtIG9mIHRoZSB0d28gcG9zc2libGUgb25lLXdheSBzY29y
ZXMuCi0gICAgZmxvYXQgc2ltaWxhcml0eVNjb3JlKGNvbnN0IE9iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEmKSBjb25zdDsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIERGR09wSW5mb19oCisjZGVmaW5lIERGR09wSW5mb19oCisKKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgeworCisvLyBUaGlzIHR5cGUgdXNlZCBpbiBwYXNzaW5nIGFuIGltbWVkaWF0
ZSBhcmd1bWVudCB0byBOb2RlIGNvbnN0cnVjdG9yOworLy8gZGlzdGluZ3Vpc2hlcyBhbiBpbW1l
ZGlhdGUgdmFsdWUgKHR5cGljYWxseSBhbiBpbmRleCBpbnRvIGEgQ29kZUJsb2NrIGRhdGEgc3Ry
dWN0dXJlIC0gCisvLyBhIGNvbnN0YW50IGluZGV4LCBhcmd1bWVudCwgb3IgaWRlbnRpZmllcikg
ZnJvbSBhIE5vZGUqLgorc3RydWN0IE9wSW5mbyB7CisgICAgT3BJbmZvKCkgOiBtX3ZhbHVlKDAp
IHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGlj
X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyh1aW50MzJf
dCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyNp
ZiBPUyhEQVJXSU4pIHx8IFVTRShKU1ZBTFVFNjQpCisgICAgZXhwbGljaXQgT3BJbmZvKHNpemVf
dCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSB7IH0KKyNl
bmRpZgorICAgIGV4cGxpY2l0IE9wSW5mbyh2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQorICAgIHVpbnRwdHJfdCBtX3ZhbHVlOwor
fTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCisKKyNlbmRpZiAvLyBERkdPcEluZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5OTA0MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
OTcsNiArMTM5Nyw2MCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZhdWx0SGFz
CiAgICAgcmV0dXJuIDA7CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVu
Z3RoKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHk7CisgICAg
aWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJbmRleGVkUHJvcGVydGll
cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgeworICAgICAgICBJbmRleGluZ0hlYWRlciBo
ZWFkZXI7CisgICAgICAgIGhlYWRlci5zZXRWZWN0b3JMZW5ndGgobGVuZ3RoKTsKKyAgICAgICAg
aGVhZGVyLnNldFB1YmxpY0xlbmd0aCgwKTsKKyAgICAgICAgCisgICAgICAgIGJ1dHRlcmZseSA9
IEJ1dHRlcmZseTo6Y3JlYXRlKAorICAgICAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwKKyAgICAgICAgICAgIGhhc0luZGV4ZWRQcm9wZXJ0aWVz
KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpLCBoZWFkZXIsCisgICAgICAgICAgICBsZW5ndGgg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnV0dGVyZmx5
ID0gbnVsbHB0cjsKKworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3
T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZs
eSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KHJlc3VsdCk7Cit9CisKK0pTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgCisgICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKKyAgICAgICAgdm0sIG51bGxwdHIsIDAs
IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIEluZGV4aW5nSGVhZGVyKCks
IDApOworICAgIAorICAgIEpTT2JqZWN0KiByZXN1bHQgPSBKU09iamVjdDo6Y3JlYXRlUmF3T2Jq
ZWN0KGV4ZWMsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKKyAgICByZXN1bHQtPmJ1dHRlcmZseSgp
OyAvLyBFbnN1cmUgdGhhdCB0aGUgYnV0dGVyZmx5IGlzIGluIHRvLXNwYWNlLgorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RX
aXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKworICAgIEluZGV4aW5nSGVhZGVyIGhlYWRlcjsKKyAgICBoZWFkZXIuc2V0VmVjdG9y
TGVuZ3RoKGxlbmd0aCk7CisgICAgaGVhZGVyLnNldFB1YmxpY0xlbmd0aCgwKTsKKyAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKAorICAgICAgICB2bSwgbnVsbHB0
ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBoZWFkZXIsCisgICAg
ICAgIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBsZW5ndGgpOworCisgICAgLy8gUGFyYWRveGlj
YWxseSB0aGlzIG1heSBhbGxvY2F0ZSBhIEpTQXJyYXkuIFRoYXQncyB0b3RhbGx5IGNvb2wuCisg
ICAgSlNPYmplY3QqIHJlc3VsdCA9IEpTT2JqZWN0OjpjcmVhdGVSYXdPYmplY3QoZXhlYywgc3Ry
dWN0dXJlLCBidXR0ZXJmbHkpOworICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0
aGF0IHRoZSBidXR0ZXJmbHkgaXMgaW4gdG8tc3BhY2UuCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2dERkco
RXhlY1N0YXRlKiBleGVjKSAKIHsKICAgICBleGVjLT52bSgpLnR5cGVQcm9maWxlckxvZygpLT5w
cm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIkxvZyBGdWxsLCBjYWxsZWQgZnJvbSBpbnNp
ZGUgREZHLiIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSwxMCBAQCBpbnQ2NF90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydERvCiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlZmF1bHRIYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU0NlbGwqIHZhbHVlLCBKU0Nl
bGwqIHByb3RvKTsKIAorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSYXdPYmplY3Qo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKSBXVEZfSU5URVJOQUw7CisK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nREZHKEV4
ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIGRlYnVnT3BlcmF0
aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKSBXVEZf
SU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk5MDQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2OCw2ICs2NjgsNyBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIEdldFN0YWNrOgogICAgICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoK
ICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CisgICAgICAgIGNhc2UgUmVj
b3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICBjYXNlIExhenlKU0NvbnN0YW50OiB7CiAg
ICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBz
dGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZp
eHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCShyZXZpc2lv
biAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCw2ICs3NCwxMCBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHJvCiAgICAgY2FzZSBOYW1lZFByb3BlcnR5UExv
YzoKICAgICAgICAgb3V0LnByaW50KCJOYW1lZFByb3BlcnR5UExvYyIpOwogICAgICAgICByZXR1
cm47CisKKyAgICBjYXNlIEluZGV4ZWRQcm9wZXJ0eVBMb2M6CisgICAgICAgIG91dC5wcmludCgi
SW5kZXhlZFByb3BlcnR5UExvYyIpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNh
c2UgQXJndW1lbnRQTG9jOgogICAgICAgICBvdXQucHJpbnQoIkFyZ3VtZW50UExvYyIpOwpAQCAt
MTAyLDYgKzEwNiwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHJv
CiAgICAgY2FzZSBDbG9zdXJlVmFyUExvYzoKICAgICAgICAgb3V0LnByaW50KCJDbG9zdXJlVmFy
UExvYyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFB1YmxpY0xlbmd0aFBMb2M6Cisg
ICAgICAgIG91dC5wcmludCgiUHVibGljTGVuZ3RoUExvYyIpOworICAgICAgICByZXR1cm47CisK
KyAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6CisgICAgICAgIG91dC5wcmludCgiVmVjdG9yTGVu
Z3RoUExvYyIpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b21vdGVkSGVhcExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsMjUgKzI4LDQxIEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2lu
Y2x1ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJERkdFZGdlLmgiCisjaW5jbHVkZSAiREZHTm9k
ZU9yaWdpbi5oIgorI2luY2x1ZGUgIkRGR09wSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVGFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCitzdHJ1Y3QgTm9kZTsKKworLy8gUHJvbW90ZWQgbG9jYXRpb25zIGFy
ZSBsaWtlIGhlYXAgbG9jYXRpb25zIGJ1dCBhcmUgbWVhbnQgdG8gYmUgbW9yZSBwcmVjaXNlLiBB
IGhlYXAgbG9jYXRpb24gaXMKKy8vIGFwcGxpY2FibGUgdG8gQ1NFIHNjZW5hcmlvcywgd2hlcmUg
aXQgbWFrZXMgc2Vuc2UgdG8gc3BlYWsgb2YgYSBsb2NhdGlvbiB2ZXJ5IGFic3RyYWN0bHkuIEEK
Ky8vIHByb21vdGVkIGhlYXAgbG9jYXRpb24gaXMgZm9yIGNhc2VzIHdoZXJlIHdlIHNwZWFrIG9m
IGEgc3BlY2lmaWMgb2JqZWN0IGFuZCB0aGUgY29tcGlsZXIga25vd3MKKy8vIHRoaXMgb2JqZWN0
J3MgaWRlbnRpdHkgLSBmb3IgZXhhbXBsZSwgdGhlIG9iamVjdCBhbGxvY2F0aW9uIGhhcyBiZWVu
IGVsaW1pbmF0ZWQgYW5kIHdlIHR1cm5lZCB0aGUKKy8vIGZpZWxkcyBpbnRvIGxvY2FsIHZhcmlh
Ymxlcy4gQmVjYXVzZSB0aGVzZSB0d28gY2FzZXMgaGF2ZSBzdWJ0bHkgZGlmZmVyZW50IG5lZWRz
LCB3ZSB1c2Ugc3VidGx5CisvLyBkaWZmZXJlbnQgc3RydWN0dXJlcy4gT25lIG9mIHRoZSByZWFs
bHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZXMgaXMgdGhhdCBwcm9tb3RlZCBsb2NhdGlvbnMgY2Fu
IGJlCisvLyBzcG9rZW4gb2YgdXNpbmcgZWl0aGVyIGEgZGVzY3JpcHRvciB3aGljaCBkb2VzIG5v
dCByZWZlciB0byBhbnkgTm9kZSoncyBvciB3aXRoIGEgaGVhcCBsb2NhdGlvbiwKKy8vIHdoaWNo
IGlzIGEgZGVzY3JpcHRvciB3aXRoIGEgTm9kZSogYmFzZS4KKwogZW51bSBQcm9tb3RlZExvY2F0
aW9uS2luZCB7CiAgICAgSW52YWxpZFByb21vdGVkTG9jYXRpb25LaW5kLAogICAgIAotICAgIFN0
cnVjdHVyZVBMb2MsCisgICAgQWN0aXZhdGlvblNjb3BlUExvYywKICAgICBBY3RpdmF0aW9uU3lt
Ym9sVGFibGVQTG9jLAotICAgIE5hbWVkUHJvcGVydHlQTG9jLAotICAgIEFyZ3VtZW50UExvYywK
ICAgICBBcmd1bWVudENvdW50UExvYywKKyAgICBBcmd1bWVudFBMb2MsCiAgICAgQXJndW1lbnRz
Q2FsbGVlUExvYywKLQotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2MsCisgICAgQ2xvc3VyZVZh
clBMb2MsCiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKLSAgICBBY3RpdmF0aW9uU2NvcGVQ
TG9jLAotICAgIENsb3N1cmVWYXJQTG9jCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlUExvYywKKyAg
ICBJbmRleGVkUHJvcGVydHlQTG9jLAorICAgIE5hbWVkUHJvcGVydHlQTG9jLAorICAgIFB1Ymxp
Y0xlbmd0aFBMb2MsCisgICAgU3RydWN0dXJlUExvYywKKyAgICBWZWN0b3JMZW5ndGhQTG9jCiB9
OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTk5MDQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzNiw2ICszMzYsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0CiAgICAgY2FzZSBTdHJpbmdSZXBsYWNlOgogICAgIGNhc2UgR2V0UmVnRXhwT2Jq
ZWN0TGFzdEluZGV4OgogICAgIGNhc2UgU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNh
c2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGNhc2UgQm90dG9tVmFsdWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE5OTA0MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwNDgsNiArMzA0OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2Fz
ZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6IHsKKyAgICAgICAgY29tcGlsZVJlY29yZFJlZ0V4
cENhY2hlZFJlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAg
ICBjYXNlIEFycmF5UHVzaDogewogICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNK
U0FycmF5KCkpOwogICAgICAgICAKQEAgLTM0OTMsNyArMzQ5OCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2Uu
Z3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBzdHJ1
Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0
ZVJhd09iamVjdChyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMs
IG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2lu
dCwgb25lIHdheSBvciBhbm90aGVyLCByZXN1bHRHUFIgYW5kIHN0b3JhZ2VHUFIgaGF2ZSBwb2lu
dGVycyB0bwogICAgICAgICAgICAgLy8gdGhlIEpTQXJyYXkgYW5kIHRoZSBCdXR0ZXJmbHksIHJl
c3BlY3RpdmVseS4KQEAgLTM3MjksNyArMzczNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAK
LSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTQXJyYXkocmVzdWx0R1BSLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5
cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVS
YXdPYmplY3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVt
ZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+
aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAgICAgICAgSlNW
YWx1ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFy
dENvbnN0YW50KCkpOwpAQCAtNDk4MCw3ICs0OTg1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgICAgICAKLSAgICAgICAgCisgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
KyAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KG5vZGUpOworICAgICAgICBicmVh
azsKKwogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTAwNyw3ICs1MDE1LDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFj
dGl2YXRpb246CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1l
ZGlhdGU6Ci0gICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFs
aXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0
YWNrOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTg4LDYgKzMx
ODgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CisKKyAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDogeworICAgICAgICBj
b21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAgICAgIEFTU0VSVChub2Rl
LT5hcnJheU1vZGUoKS5pc0pTQXJyYXkoKSk7CkBAIC0zNTU5LDcgKzM1NjQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBz
dG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQ
Uiwgc3RydWN0dXJlLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0
QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVs
ZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEF0IHRo
aXMgcG9pbnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdlR1BSIGhh
dmUgcG9pbnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUgQnV0dGVy
Zmx5LCByZXNwZWN0aXZlbHkuCkBAIC0zNzk1LDcgKzM4MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdw
cigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHJlc3VsdEdQUiwgZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5k
ZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFs
bG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwg
bnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgREZH
X0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0FycmF5KTsKICAg
ICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZm
ZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQ5ODksNiArNDk5NCwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNvbXBpbGVNYXRlcmlh
bGl6ZU5ld09iamVjdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICNpZiBFTkFCTEUoRlRMX0pJ
VCkgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaEFkZDMyKApAQCAtNTA3OSw3ICs1MDg4
LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
R2V0TXlBcmd1bWVudEJ5VmFsOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3Ry
dWN0dXJlSW1tZWRpYXRlOgotICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgY2Fz
ZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBj
YXNlIEtpbGxTdGFjazoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiAr
NTIsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xl
eGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJS
ZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllckJ1
ZmZlci5oIgpAQCAtNzcsMjcgKzc4LDU0IEBAIFNwZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVK
SVQoKQogewogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KEdQ
UlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwg
dW5zaWduZWQgbnVtRWxlbWVudHMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVS
YXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBz
dG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQog
ewotICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwg
aGFzSW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0cnVjdHVy
ZS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlLT5pbmRleGluZ1R5
cGUoKSkpOworICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4
aW5nVHlwZSgpOworICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJvcGVy
dGllcyhpbmRleGluZ1R5cGUpOworCisgICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSBzdHJ1
Y3R1cmUtPmlubGluZUNhcGFjaXR5KCk7CisgICAgdW5zaWduZWQgb3V0T2ZMaW5lQ2FwYWNpdHkg
PSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaDJHUFIg
PSBzY3JhdGNoMi5ncHIoKTsKLSAgICAKLSAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBzdGQ6
Om1heChCQVNFX1ZFQ1RPUl9MRU4sIG51bUVsZW1lbnRzKTsKKworICAgIEFTU0VSVCh2ZWN0b3JM
ZW5ndGggPj0gbnVtRWxlbWVudHMpOworICAgIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KEJBU0Vf
VkVDVE9SX0xFTiwgdmVjdG9yTGVuZ3RoKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExp
c3Qgc2xvd0Nhc2VzOwotICAgIAotICAgIHNsb3dDYXNlcy5hcHBlbmQoCi0gICAgICAgIGVtaXRB
bGxvY2F0ZUJhc2ljU3RvcmFnZShUcnVzdGVkSW1tMzIodmVjdG9yTGVuZ3RoICogc2l6ZW9mKEpT
VmFsdWUpICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VHUFIpKTsKLSAgICBtX2pp
dC5zdWJQdHIoVHJ1c3RlZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSksIHN0
b3JhZ2VHUFIpOwotICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNo
MkdQUiwgc2xvd0Nhc2VzKTsKLSAgICAKLSAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihu
dW1FbGVtZW50cyksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZs
eTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwotICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZElt
bTMyKHZlY3Rvckxlbmd0aCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1
dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwotICAgIAorCisgICAgc2l6ZV90IHNp
emUgPSAwOworICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikKKyAgICAgICAgc2l6ZSArPSB2ZWN0
b3JMZW5ndGggKiBzaXplb2YoSlNWYWx1ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpOworICAg
IHNpemUgKz0gb3V0T2ZMaW5lQ2FwYWNpdHkgKiBzaXplb2YoSlNWYWx1ZSk7CisKKyAgICBpZiAo
c2l6ZSkgeworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKAorICAgICAgICAgICAgZW1pdEFsbG9j
YXRlQmFzaWNTdG9yYWdlKFRydXN0ZWRJbW0zMihzaXplKSwgc3RvcmFnZUdQUikpOworICAgICAg
ICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpCisgICAgICAgICAgICBtX2ppdC5zdWJQdHIoVHJ1c3Rl
ZEltbTMyKHZlY3Rvckxlbmd0aCAqIHNpemVvZihKU1ZhbHVlKSksIHN0b3JhZ2VHUFIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihJ
bmRleGluZ0hlYWRlcikpLCBzdG9yYWdlR1BSKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyKDApLCBzdG9yYWdlR1BSKTsKKworICAgIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKGlubGluZUNhcGFjaXR5KTsK
KyAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvclB0ciA9ICZtX2ppdC52bSgpLT5oZWFwLmFs
bG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKGFsbG9jYXRpb25TaXplKTsKKyAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yUHRyKSwgc2NyYXRjaEdQUik7CisgICAg
ZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOworCisgICAg
aWYgKGhhc0luZGV4aW5nSGVhZGVyKQorICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0z
Mih2ZWN0b3JMZW5ndGgpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKKworICAgIC8vIEkgd2FudCBhIHNsb3cg
cGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0aGF0J3MK
KyAgICAvLyB3aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90CisgICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5IHNtYWxs
IHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkuIDotLworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAorICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0R1BSLCBz
dG9yYWdlR1BSLAorICAgICAgICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOworCiAgICAgaWYg
KGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSAmJiBudW1FbGVtZW50cyA8IHZl
Y3Rvckxlbmd0aCkgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTY0KGJpdHdpc2VfY2FzdDxpbnQ2NF90PihQTmFOKSksIHNjcmF0Y2hHUFIpOwpAQCAt
MTEzLDEyICsxNDEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5
CiAjZW5kaWYKICAgICB9CiAgICAgCi0gICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRoYXQgYWxz
byBsb2FkcyBvdXQgdGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQncwotICAgIC8vIHdoYXQg
dGhpcyBjdXN0b20gQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMgbWUu
IEl0J3MgYSBsb3QKLSAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ugb2YgZnVu
Y3Rpb25hbGl0eS4gOi0vCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1
ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCi0gICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdG9yYWdlR1BS
LAotICAgICAgICBzdHJ1Y3R1cmUsIG51bUVsZW1lbnRzKSk7CisgICAgaWYgKGhhc0luZGV4aW5n
SGVhZGVyKQorICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihudW1FbGVtZW50cyks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQ
dWJsaWNMZW5ndGgoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0R2V0TGVuZ3Ro
KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29s
IGluY2x1ZGVUaGlzKQpAQCAtNzY1Myw2ICs3Njc3LDEyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTGF6eUpTQ29uc3RhCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0
KE5vZGUqIG5vZGUpCit7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1
cmVTZXQoKVswXTsKKyAgICBBU1NFUlQobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAw
KS0+ZHluYW1pY0Nhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpID09IHN0cnVjdHVyZSk7CisKKyAg
ICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+b2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YSgpOworICAgICAgICAKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0g
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0g
aGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKTsKKyAgICBpbnQzMl90IHB1YmxpY0xl
bmd0aCA9IDA7CisgICAgaW50MzJfdCB2ZWN0b3JMZW5ndGggPSAwOworCisgICAgaWYgKGhhc0lu
ZGV4aW5nSGVhZGVyKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0
aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgRWRnZSBlZGdlID0gbV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCAxICsgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKGRhdGEubV9w
cm9wZXJ0aWVzW2ldLmtpbmQoKSkgeworICAgICAgICAgICAgY2FzZSBQdWJsaWNMZW5ndGhQTG9j
OgorICAgICAgICAgICAgICAgIHB1YmxpY0xlbmd0aCA9IGVkZ2UtPmFzSW50MzIoKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAg
ICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGggPSBlZGdlLT5hc0ludDMyKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFn
ZS5ncHIoKTsKKyAgICAKKyAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1
Y3R1cmUsIHN0b3JhZ2VHUFIsIDAsIHZlY3Rvckxlbmd0aCk7CisgICAgCisgICAgbV9qaXQuc3Rv
cmUzMigKKyAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihwdWJsaWNMZW5ndGgpLAor
ICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9w
ZXJ0aWVzLnNpemUoKTsgaS0tOykgeworICAgICAgICBFZGdlIGVkZ2UgPSBtX2ppdC5ncmFwaCgp
LnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKTsKKyAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2Ny
aXB0b3IgZGVzY3JpcHRvciA9IGRhdGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICBzd2l0Y2gg
KGRlc2NyaXB0b3Iua2luZCgpKSB7CisgICAgICAgIGNhc2UgSW5kZXhlZFByb3BlcnR5UExvYzog
eworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSk7CisgICAgICAg
ICAgICBtX2ppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlLmpzVmFsdWVSZWdz
KCksCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGRlc2NyaXB0b3IuaW5mbygpKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6IHsKKyAg
ICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1faml0LmdyYXBoKCkuaWRlbnRpZmllcnMoKVtk
ZXNjcmlwdG9yLmluZm8oKV07CisgICAgICAgICAgICBmb3IgKFByb3BlcnR5TWFwRW50cnkgZW50
cnkgOiBzdHJ1Y3R1cmUtPmdldFByb3BlcnRpZXNDb25jdXJyZW50bHkoKSkgeworICAgICAgICAg
ICAgICAgIGlmICh1aWQgIT0gZW50cnkua2V5KQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UpOwor
ICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gaXNJbmxpbmVPZmZzZXQoZW50cnkub2Zm
c2V0KSA/IHJlc3VsdEdQUiA6IHN0b3JhZ2VHUFI7CisgICAgICAgICAgICAgICAgbV9qaXQuc3Rv
cmVWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwKKyAgICAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgb2Zmc2V0UmVsYXRp
dmVUb0Jhc2UoZW50cnkub2Zmc2V0KSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQoTm9kZSogbm9kZSkKK3sKKyAgICBFZGdlIGNvbnN0cnVjdG9yRWRnZSA9IG1faml0
LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCk7CisgICAgRWRnZSByZWdFeHBFZGdlID0gbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICBFZGdlIHN0cmluZ0VkZ2UgPSBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpOworICAgIEVkZ2Ugc3RhcnRFZGdlID0g
bV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKTsKKyAgICBFZGdlIGVuZEVkZ2UgPSBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQpOworCisgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgY29uc3RydWN0b3IodGhpcywgY29uc3RydWN0b3JFZGdlKTsKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCByZWdFeHAodGhpcywgcmVnRXhwRWRnZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgc3RyaW5nKHRoaXMsIHN0cmluZ0VkZ2UpOworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBzdGFydCh0aGlzLCBzdGFydEVkZ2UpOworICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBlbmQo
dGhpcywgZW5kRWRnZSk7CisKKyAgICBHUFJSZWcgY29uc3RydWN0b3JHUFIgPSBjb25zdHJ1Y3Rv
ci5ncHIoKTsKKyAgICBHUFJSZWcgcmVnRXhwR1BSID0gcmVnRXhwLmdwcigpOworICAgIEdQUlJl
ZyBzdHJpbmdHUFIgPSBzdHJpbmcuZ3ByKCk7CisgICAgR1BSUmVnIHN0YXJ0R1BSID0gc3RhcnQu
Z3ByKCk7CisgICAgR1BSUmVnIGVuZEdQUiA9IGVuZC5ncHIoKTsKKworICAgIHB0cmRpZmZfdCBv
ZmZzZXQgPSBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKTsKKworICAg
IG1faml0LnN0b3JlUHRyKAorICAgICAgICByZWdFeHBHUFIsCisgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGNvbnN0cnVjdG9yR1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9m
ZnNldE9mTGFzdFJlZ0V4cCgpKSk7CisgICAgbV9qaXQuc3RvcmVQdHIoCisgICAgICAgIHN0cmlu
Z0dQUiwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY29uc3RydWN0b3JHUFIsIG9mZnNl
dCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0SW5wdXQoKSkpOworICAgIG1faml0
LnN0b3JlMzIoCisgICAgICAgIHN0YXJ0R1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cygKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yR1BSLAorICAgICAgICAgICAgb2Zmc2V0ICsgUmVn
RXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNo
UmVzdWx0LCBzdGFydCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICBlbmRHUFIsCisg
ICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKAorICAgICAgICAgICAgY29uc3RydWN0b3JHUFIs
CisgICAgICAgICAgICBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0
KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIGVuZCkpKTsKKyAgICBtX2ppdC5zdG9y
ZTgoCisgICAgICAgIFRydXN0ZWRJbW0zMigwKSwKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJl
c3MoY29uc3RydWN0b3JHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZS
ZWlmaWVkKCkpKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTk5MDQwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEwLDYg
KzI0MTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZUxhenlKU0NvbnN0YW50KE5vZGUqKTsKKyAgICB2b2lkIGNv
bXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKik7CisgICAgdm9pZCBjb21waWxlUmVjb3Jk
UmVnRXhwQ2FjaGVkUmVzdWx0KE5vZGUqKTsKICAgICAKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BS
UmVnKTsKICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJlZyk7CkBAIC0yNTI1LDcgKzI1MjcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
LT5jbGFzc0luZm8oKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0
cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSk7CiAgICAgfQogCi0gICAgdm9pZCBl
bWl0QWxsb2NhdGVKU0FycmF5KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBz
dG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cyk7CisgICAgdm9pZCBlbWl0QWxsb2NhdGVS
YXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3JhZ2VHUFIs
IHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAg
IHZvaWQgZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqLCBHUFJSZWcgbGVuZ3RoR1BSLCBi
b29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwogICAgIHZvaWQgZW1pdEdldExlbmd0aChDb2RlT3Jp
Z2luLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5OTA0MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTMsMTEgKzI1MywxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBQdXRC
eUlkOgorICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CisgICAgICAgICAgICBjYXNlIFB1
dEJ5SWREaXJlY3Q6CiAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewogICAgICAgICAg
ICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAg
Y2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6IHsKKyAgICAgICAgICAgICAgICBjb25zaWRl
ckJhcnJpZXIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFy
OgogICAgICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgU2V0
UmVnRXhwT2JqZWN0TGFzdEluZGV4OgpAQCAtMjY2LDEzICsyNzQsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FzZSBQdXRCeUlkOgotICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6Ci0g
ICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6IHsKLSAgICAgICAgICAgICAgICBjb25zaWRl
ckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0KICAgICAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6IHsKICAgICAgICAgICAg
ICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDIoKSwgbV9ub2RlLT5jaGlsZDMoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5
OTA0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxMSArMzYsMTUgQEAKICNpbmNsdWRlICJE
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNj
ZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVnRXhw
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlIDxj
c3RkbGliPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIFN0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworICAgIHN0YXRpYyBjb25zdCBib29s
IHZlcmJvc2UgPSBmYWxzZTsKKyAgICAKIHB1YmxpYzoKICAgICBTdHJlbmd0aFJlZHVjdGlvblBo
YXNlKEdyYXBoJiBncmFwaCkKICAgICAgICAgOiBQaGFzZShncmFwaCwgInN0cmVuZ3RoIHJlZHVj
dGlvbiIpCkBAIC0zMzEsMTEgKzMzNSwzNjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBp
ZiAoISFzdHJpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudChtX25vZGUsIGpzTnVtYmVyKHN0cmluZy5sZW5ndGgoKSkpOwogICAgICAgICAgICAgICAg
ICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OiB7CisgICAgICAgICAgICBpZiAoSlNP
YmplY3QqIG9iamVjdCA9IG1fbm9kZS0+Y2hpbGQxKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNP
YmplY3QqPigpKSB7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudCht
X25vZGUsIG9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUmVnRXhwRXhlYzoKKyAgICAg
ICAgY2FzZSBSZWdFeHBUZXN0OiB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ub2RlLT5jaGlsZDEoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0dsb2JhbE9i
amVjdCo+KCk7CisgICAgICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAg
YmVjYXVzZSBubyBnbG9iYWwgb2JqZWN0LlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJh
ZFRpbWUoKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSBiYWQgdGltZS5cbiIpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBOb2RlKiByZWdFeHBP
YmplY3ROb2RlID0gbV9ub2RlLT5jaGlsZDIoKS5ub2RlKCk7CisgICAgICAgICAgICBSZWdFeHAq
IHJlZ0V4cDsKKyAgICAgICAgICAgIGlmIChSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCA9IHJl
Z0V4cE9iamVjdE5vZGUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8UmVnRXhwT2JqZWN0Kj4oKSkKKyAg
ICAgICAgICAgICAgICByZWdFeHAgPSByZWdFeHBPYmplY3QtPnJlZ0V4cCgpOworICAgICAgICAg
ICAgZWxzZSBpZiAocmVnRXhwT2JqZWN0Tm9kZS0+b3AoKSA9PSBOZXdSZWdleHApCisgICAgICAg
ICAgICAgICAgcmVnRXhwID0gY29kZUJsb2NrKCktPnJlZ2V4cChyZWdFeHBPYmplY3ROb2RlLT5y
ZWdleHBJbmRleCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgYmVjYXVzZSB0
aGUgcmVnZXhwIGlzIHVua25vd24uXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgTm9kZSogc3RyaW5nTm9kZSA9IG1fbm9kZS0+Y2hpbGQz
KCkubm9kZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOT1RFOiBUaGlzIG1vc3Rs
eSBhbHJlYWR5IHByb3RlY3RzIHVzIGZyb20gaGF2aW5nIHRoZSBjb21waWxlciBleGVjdXRlIGEg
cmVnZXhwCisgICAgICAgICAgICAvLyBvcGVyYXRpb24gb24gYSBnaW5vcm1vdXMgc3RyaW5nIGJ5
IHByZXZlbnRpbmcgdXMgZnJvbSBnZXR0aW5nIG91ciBoYW5kcyBvbiBnaW5vcm1vdXMKKyAgICAg
ICAgICAgIC8vIHN0cmluZ3MgaW4gdGhlIGZpcnN0IHBsYWNlLgorICAgICAgICAgICAgU3RyaW5n
IHN0cmluZyA9IG1fbm9kZS0+Y2hpbGQzKCktPnRyeUdldFN0cmluZyhtX2dyYXBoKTsKKyAgICAg
ICAgICAgIGlmICghc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBiZWNhdXNlIHRoZSBzdHJpbmcgaXMg
dW5rbm93bi5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBGcm96ZW5WYWx1ZSogcmVnRXhwRnJvemVuVmFsdWUgPSBtX2dyYXBoLmZyZWV6
ZShyZWdFeHApOworCisgICAgICAgICAgICAvLyBSZWZ1c2UgdG8gZG8gdGhpbmdzIHdpdGggcmVn
dWxhciBleHByZXNzaW9ucyB0aGF0IGhhdmUgYSBnaW5vcm1vdXMgbnVtYmVyIG9mCisgICAgICAg
ICAgICAvLyBzdWJwYXR0ZXJucy4KKyAgICAgICAgICAgIHVuc2lnbmVkIGdpbm9ybW91c051bWJl
ck9mU3ViUGF0dGVybnMgPSAxMDAwOworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+bnVtU3VicGF0
dGVybnMoKSA+IGdpbm9ybW91c051bWJlck9mU3ViUGF0dGVybnMpIHsKKyAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJl
Y2F1c2Ugb2YgcGF0dGVybiBsaW1pdC5cbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CisgICAgICAgICAg
ICBpZiAocmVnRXhwLT5nbG9iYWxPclN0aWNreSgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhp
cyB3aWxsIG9ubHkgd29yayBpZiB3ZSBjYW4gcHJvdmUgd2hhdCB0aGUgdmFsdWUgb2YgbGFzdElu
ZGV4IGlzLiBUbyBkbyB0aGlzCisgICAgICAgICAgICAgICAgLy8gc2FmZWx5LCB3ZSBuZWVkIHRv
IGV4ZWN1dGUgdGhlIGluc2VydGlvbiBzZXQgc28gdGhhdCB3ZSBzZWUgYW55IHByZXZpb3VzIHN0
cmVuZ3RoCisgICAgICAgICAgICAgICAgLy8gcmVkdWN0aW9ucy4gVGhpcyBpcyBuZWVkZWQgZm9y
IHNvdW5kbmVzcyBzaW5jZSBvdGhlcndpc2UgdGhlIGVmZmVjdGZ1bG5lc3Mgb2YgYW55CisgICAg
ICAgICAgICAgICAgLy8gcHJldmlvdXMgc3RyZW5ndGggcmVkdWN0aW9ucyB3b3VsZCBiZSBpbnZp
c2libGUgdG8gdXMuCisgICAgICAgICAgICAgICAgZXhlY3V0ZUluc2VydGlvblNldCgpOworICAg
ICAgICAgICAgICAgIGxhc3RJbmRleCA9IFVJTlRfTUFYOworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgb3RoZXJOb2RlSW5kZXggPSBtX25vZGVJbmRleDsgb3RoZXJOb2RlSW5kZXgtLTsp
IHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9ibG9jay0+YXQob3Ro
ZXJOb2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlID09IHJlZ0V4
cE9iamVjdE5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAob3RoZXJOb2RlLT5vcCgpID09IFNldFJlZ0V4cE9iamVjdExh
c3RJbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJOb2RlLT5jaGlsZDEoKSA9
PSByZWdFeHBPYmplY3ROb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlck5vZGUt
PmNoaWxkMigpLT5pc0ludDMyQ29uc3RhbnQoKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYg
b3RoZXJOb2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpID49IDApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxhc3RJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvdGhlck5vZGUtPmNoaWxk
MigpLT5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlc092ZXJsYXAobV9n
cmFwaCwgb3RoZXJOb2RlLCBSZWdFeHBPYmplY3RfbGFzdEluZGV4KSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
bGFzdEluZGV4ID09IFVJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhl
IGxhc3QgaW5kZXggaXMgbm90IGtub3duLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IGxhc3RJbmRleCA9IDA7CisKKyAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRM
YXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5y
ZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpICE9IEFycmF5V2l0aENvbnRpZ3VvdXMpIHsKKyAgICAgICAgICAgICAg
ICAvLyBUaGlzIGlzIGZ1cnRoZXIgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgcmFjZSB3aXRoIGhhdmVB
QmFkVGltZS4KKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhlIHN0cnVjdHVyZSBoYXMgdGhlIHdyb25n
IGluZGV4aW5nIHR5cGUuXG4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKwor
ICAgICAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0
LT5yZWdFeHBDb25zdHJ1Y3RvcigpOworICAgICAgICAgICAgRnJvemVuVmFsdWUqIGNvbnN0cnVj
dG9yRnJvemVuVmFsdWUgPSBtX2dyYXBoLmZyZWV6ZShjb25zdHJ1Y3Rvcik7CisKKyAgICAgICAg
ICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVj
dG9yOworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBjYWxsIHRoZSBraW5kIG9mIG1hdGNoIGZ1
bmN0aW9uIHRoYXQgdGhlIG1haW4gdGhyZWFkIHdvdWxkIGhhdmUgY2FsbGVkLgorICAgICAgICAg
ICAgLy8gT3RoZXJ3aXNlLCB3ZSBtaWdodCBub3QgaGF2ZSB0aGUgZGVzaXJlZCBZYXJyIGNvZGUg
Y29tcGlsZWQsIGFuZCB0aGUgbWF0Y2ggd2lsbCBmYWlsLgorICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7CisgICAgICAgICAgICAgICAgaW50IHBvc2l0aW9uOwor
ICAgICAgICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJp
bmcsIGxhc3RJbmRleCwgcG9zaXRpb24sIG92ZWN0b3IpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVw
IGJlY2F1c2UgbWF0Y2ggZmFpbGVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHQuc3RhcnQgPSBwb3NpdGlv
bjsKKyAgICAgICAgICAgICAgICByZXN1bHQuZW5kID0gb3ZlY3RvclsxXTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3VycmVudGx5
KHZtKCksIHN0cmluZywgbGFzdEluZGV4LCByZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVw
IGJlY2F1c2UgbWF0Y2ggZmFpbGVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UndmUg
Y29uc3RhbnQtZm9sZGVkIHRoZSByZWdleHAuIE5vdyB3ZSdyZSBjb21taXR0ZWQgdG8gcmVwbGFj
aW5nIFJlZ0V4cEV4ZWMvVGVzdC4KKworICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKwor
ICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBtX25vZGUtPm9yaWdpbjsKKworICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJ
bmRleCwgU3BlY05vbmUsIENoZWNrLCBvcmlnaW4sIG1fbm9kZS0+Y2hpbGRyZW4uanVzdENoZWNr
cygpKTsKKworICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmVTZXQqIHN0cnVjdHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IG1vZGVsaW5nIHRoZSBK
UyBhcnJheSB0aGF0IHdlIHdpbGwgdHJ5IHRvIGFsbG9jYXRlLiBUaGlzIGlzCisgICAgICAgICAg
ICAgICAgICAgIC8vIGJhc2ljYWxseSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0IG92ZXIg
QysrIHN0cmluZ3MgaW5zdGVhZCBvZiBKU1N0cmluZ3MuCisgICAgICAgICAgICAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IHJlc3VsdEFycmF5OworICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eS5hcHBlbmQoc3RyaW5nLnN1YnN0cmluZyhyZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1
bHQuc3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
PSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHN0YXJ0ID0gb3ZlY3RvclsyICogaV07CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoc3RhcnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheS5h
cHBlbmQoc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgb3ZlY3RvclsyICogaSArIDFdIC0gc3RhcnQp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRBcnJheS5hcHBlbmQoU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHVibGljTGVuZ3RoID0gcmVzdWx0QXJy
YXkuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBz
dGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIHB1YmxpY0xlbmd0aCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGluZGV4VUlEID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5p
bmRleC5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbnB1
dFVJRCA9IHZtKCkucHJvcGVydHlOYW1lcy0+aW5wdXQuaW1wbCgpOworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbmRleEluZGV4ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShp
bmRleFVJRCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0SW5kZXggPSBtX2dy
YXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlucHV0VUlEKTsKKworICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBmaXJzdENoaWxkID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHN0cnVj
dHVyZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEqIGRhdGEgPSBtX2dyYXBoLm1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5h
ZGQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW4uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2Rl
SW5kZXgsIG9yaWdpbiwganNOdW1iZXIocHVibGljTGVuZ3RoKSwgS25vd25JbnQzMlVzZSkpOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhLT5tX3Byb3BlcnRpZXMuYXBwZW5kKFB1YmxpY0xlbmd0
aFBMb2MpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJB
cmdDaGlsZHJlbi5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25v
ZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcih2ZWN0b3JMZW5ndGgpLCBLbm93bkludDMyVXNlKSk7
CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1fcHJvcGVydGllcy5hcHBlbmQoVmVjdG9yTGVu
Z3RoUExvYyk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENv
bnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBv
cmlnaW4sIGpzTnVtYmVyKHJlc3VsdC5zdGFydCksIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBpbmRleElu
ZGV4KSk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFw
cGVuZChFZGdlKHN0cmluZ05vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21v
dGVkTG9jYXRpb25EZXNjcmlwdG9yKE5hbWVkUHJvcGVydHlQTG9jLCBpbnB1dEluZGV4KSk7CisK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRlcmlhbGl6ZVN0cmluZyA9IFsmXSAoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIC0+IE5vZGUqIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dHJpbmcuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnRDb25z
dGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdp
biwgdm0oKS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSB2YWx1ZSA9IExhenlK
U1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgc3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjTm9uZSwgTGF6eUpTQ29uc3RhbnQsIG9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX2xhenlKU1ZhbHVl
cy5hZGQodmFsdWUpKSk7CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdEFycmF5LnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTm9kZSogbm9kZSA9IG1hdGVyaWFsaXplU3Ry
aW5nKHJlc3VsdEFycmF5W2ldKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShub2RlLCBVbnR5cGVkVXNlKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bV9wcm9wZXJ0aWVzLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoSW5k
ZXhlZFByb3BlcnR5UExvYywgaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
cmVzdWx0Tm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX25vZGVJbmRleCwgU3BlY0FycmF5LCBOb2RlOjpWYXJBcmcsIE1hdGVyaWFsaXpl
TmV3T2JqZWN0LCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oc3RydWN0
dXJlU2V0KSwgT3BJbmZvKGRhdGEpLCBmaXJzdENoaWxkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0lkZW50aXR5
T24ocmVzdWx0Tm9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobV9ub2RlLCBqc051bGwoKSk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG1f
bm9kZSwganNCb29sZWFuKCEhcmVzdWx0KSk7CisKKyAgICAgICAgICAgIC8vIFdoZXRoZXIgaXQn
cyBFeGVjIG9yIFRlc3QsIHdlIG5lZWQgdG8gdGVsbCB0aGUgY29uc3RydWN0b3IgYW5kIFJlZ0V4
cE9iamVjdCB3aGF0J3MgdXAuCisgICAgICAgICAgICAvLyBCZWNhdXNlIFNldFJlZ0V4cE9iamVj
dExhc3RJbmRleCBtYXkgZXhpdCBhbmQgaXQgY2xvYmJlcnMgZXhpdCBzdGF0ZSwgd2UgZG8gdGhh
dAorICAgICAgICAgICAgLy8gZmlyc3QuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChy
ZWdFeHAtPmdsb2JhbE9yU3RpY2t5KCkpIHsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY05vbmUs
IFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBF
ZGdlKHJlZ0V4cE9iamVjdE5vZGUsIFJlZ0V4cE9iamVjdFVzZSksCisgICAgICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIocmVzdWx0ID8gcmVzdWx0LmVu
ZCA6IDApLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
b3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RDaGls
ZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCk7CisgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X25vZGVJbmRleCwgb3JpZ2luLCBjb25zdHJ1Y3RvckZyb3plblZhbHVlLCBLbm93bkNlbGxVc2Up
KTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKAorICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBvcmlnaW4sIHJlZ0V4cEZyb3plblZh
bHVlLCBLbm93bkNlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hp
bGRyZW4uYXBwZW5kKEVkZ2Uoc3RyaW5nTm9kZSwgS25vd25DZWxsVXNlKSk7CisgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihyZXN1bHQuc3RhcnQpLCBLbm93
bkludDMyVXNlKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRG
b3JVc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgb3JpZ2luLCBqc051
bWJlcihyZXN1bHQuZW5kKSwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjTm9uZSwgTm9kZTo6VmFyQXJnLCBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQsIG9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKCksIE9wSW5mbygpLCBmaXJzdENoaWxkLCBtX2dy
YXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisKKyAgICAgICAgICAg
ICAgICBvcmlnaW4gPSBvcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbm9kZS0+b3JpZ2luID0gb3JpZ2luOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6IHsK
KyAgICAgICAgICAgIE5vZGUqIHN0cmluZ05vZGUgPSBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKTsK
KyAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJpbmdOb2RlLT50cnlHZXRTdHJpbmcobV9n
cmFwaCk7CisgICAgICAgICAgICBpZiAoIXN0cmluZykKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgTm9kZSogcmVnRXhwT2JqZWN0Tm9kZSA9IG1fbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpOworICAgICAgICAgICAgUmVnRXhwKiByZWdFeHA7CisgICAgICAg
ICAgICBpZiAoUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QgPSByZWdFeHBPYmplY3ROb2RlLT5k
eW5hbWljQ2FzdENvbnN0YW50PFJlZ0V4cE9iamVjdCo+KCkpCisgICAgICAgICAgICAgICAgcmVn
RXhwID0gcmVnRXhwT2JqZWN0LT5yZWdFeHAoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ0V4
cE9iamVjdE5vZGUtPm9wKCkgPT0gTmV3UmVnZXhwKQorICAgICAgICAgICAgICAgIHJlZ0V4cCA9
IGNvZGVCbG9jaygpLT5yZWdleHAocmVnRXhwT2JqZWN0Tm9kZS0+cmVnZXhwSW5kZXgoKSk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIGJlY2F1c2UgdGhlIHJlZ2V4cCBpcyB1bmtu
b3duLlxuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIFN0cmluZyByZXBsYWNlID0gbV9ub2RlLT5jaGlsZDMoKS0+dHJ5R2V0U3RyaW5nKG1f
Z3JhcGgpOworICAgICAgICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgICAgICAgICAgdW5z
aWduZWQgbGFzdEluZGV4ID0gMDsKKyAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24g
PSAwOworICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7CisgICAgICAgICAgICBkbyB7CisgICAg
ICAgICAgICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OworICAgICAgICAgICAgICAgIFZlY3Rvcjxp
bnQsIDMyPiBvdmVjdG9yOworICAgICAgICAgICAgICAgIC8vIE1vZGVsIHdoaWNoIHZlcnNpb24g
b2YgbWF0Y2goKSBpcyBjYWxsZWQgYnkgdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAgICAgICAg
IGlmIChyZXBsYWNlLmlzRW1wdHkoKSAmJiByZWdFeHAtPmdsb2JhbCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghcmVnRXhwLT5tYXRjaENvbmN1cnJlbnRseSh2bSgpLCBzdHJpbmcsIHN0
YXJ0UG9zaXRpb24sIHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGludCBwb3Np
dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdFeHAtPm1hdGNoQ29uY3VycmVudGx5
KHZtKCksIHN0cmluZywgc3RhcnRQb3NpdGlvbiwgcG9zaXRpb24sIG92ZWN0b3IpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5zdGFydCA9IHBvc2l0aW9uOworICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuZW5kID0gb3ZlY3RvclsxXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVwbExlbiA9IHJlcGxhY2Uu
bGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA8IHJlc3VsdC5zdGFydCB8
fCByZXBsTGVuKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0cmluZywg
bGFzdEluZGV4LCByZXN1bHQuc3RhcnQgLSBsYXN0SW5kZXgpOworICAgICAgICAgICAgICAgICAg
ICBpZiAocmVwbExlbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN1
YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhyZXBsYWNlLCBzdHJpbmcsIG92ZWN0b3IuZGF0YSgpLCBy
ZWdFeHApKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsYXN0SW5kZXgg
PSByZXN1bHQuZW5kOworICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBsYXN0SW5kZXg7
CisKKyAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2Ugb2YgZW1wdHkgbWF0Y2gKKyAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0LmVtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
cnRQb3NpdGlvbisrOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRQb3NpdGlvbiA+IHN0
cmluZy5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gd2hpbGUgKHJlZ0V4cC0+Z2xvYmFsKCkpOworICAgICAg
ICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLy8g
V2UgYXJlIGNvbW1pdHRlZCBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgbV9jaGFuZ2VkID0g
dHJ1ZTsKKworICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBtX25vZGUtPm9yaWdpbjsK
KworICAgICAgICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsKCkpIHsKKyAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX25vZGVJbmRl
eCwgU3BlY05vbmUsIFNldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgb3JpZ2luLAorICAgICAgICAg
ICAgICAgICAgICBFZGdlKHJlZ0V4cE9iamVjdE5vZGUsIFJlZ0V4cE9iamVjdFVzZSksCisgICAg
ICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIoMCksIFVu
dHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBvcmlnaW4gPSBv
cmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICghbGFzdEluZGV4ICYmIGJ1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIG1fbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHlPbihzdHJpbmdOb2RlKTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmIChsYXN0SW5kZXggPCBzdHJpbmcubGVuZ3RoKCkpCisgICAgICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0cmluZywgbGFzdEluZGV4LCBzdHJpbmcubGVu
Z3RoKCkgLSBsYXN0SW5kZXgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1f
bm9kZS0+Y29udmVydFRvTGF6eUpTQ29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgsIExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwgYnVpbGRlci50b1N0cmluZygpKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fbm9kZS0+b3JpZ2luID0gb3JpZ2luOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM4MCw2ICs3NDEsMTEgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZUlu
c2VydGlvblNldCgpCisgICAgeworICAgICAgICBtX25vZGVJbmRleCArPSBtX2luc2VydGlvblNl
dC5leGVjdXRlKG1fYmxvY2spOworICAgIH0KICAgICAKICAgICBJbnNlcnRpb25TZXQgbV9pbnNl
cnRpb25TZXQ7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4
MSw2ICsyODEsMTggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUo
KG5vZGUpLCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPmRmZ1Nob3VsZFdh
dGNoKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHN1cHBvcnRzIHN0cnVj
dHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5LgorICAgICAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gSlNG
aW5hbE9iamVjdDo6aW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RydWN0
dXJlLT5jbGFzc0luZm8oKSA9PSBKU0FycmF5OjppbmZvKCkpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBvbmx5IHN1cHBvcnQgY2VydGFpbiBpbmRleGluZyBzaGFwZXMuCisgICAg
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNBbnlBcnJheVN0b3JhZ2Uo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlQ29uc3Rh
bnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICAgICAgICAg
ICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPmlzTnVtYmVyQ29uc3RhbnQoKSk7CkBAIC01MDUs
MTMgKzUxNyw0MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVu
dEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAgICAgICAgICAgICBj
YXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgotICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFj
dGl2YXRpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgICAg
ICBjYXNlIEtpbGxTdGFjazoKICAgICAgICAgICAgICAgICBjYXNlIEdldFN0YWNrOgogICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEidW5leHBlY3RlZCBub2RlIHR5cGUgaW4g
Q1BTIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
TWF0ZXJpYWxpemVOZXdPYmplY3Q6IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIG9ubHkg
YWxsb3dzIGFycmF5IGxlbmd0aHMgdG8gYmUgY29uc3RhbnQuIFRoaXMgY29uc3RyYWludCBvbmx5
IGV4aXN0cworICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgREZH
IHN1cHBvcnQgZm9yIGFueXRoaW5nIG1vcmUgYW5kIHdlIGRvbid0IG5lZWQgYW55CisgICAgICAg
ICAgICAgICAgICAgIC8vIG90aGVyIGtpbmQgb2Ygc3VwcG9ydCBmb3Igbm93LgorICAgICAgICAg
ICAgICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+b2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YSgpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJv
cGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChkZXNjcmlwdG9yLmtpbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQdWJs
aWNMZW5ndGhQTG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWZWN0b3JMZW5ndGhQ
TG9jOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwg
ZWRnZS0+aXNJbnQzMkNvbnN0YW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBvbmUg
c3RydWN0dXJlLgorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPnN0
cnVjdHVyZVNldCgpLnNpemUoKSA9PSAxKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBDUFMg
ZGlzYWxsb3dzIGludDMyIGFuZCBkb3VibGUgYXJyYXlzLiBUaG9zZSByZXF1aXJlIHdlaXJkIHR5
cGUgY2hlY2tzIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzaW9ucy4gVGhleSBh
cmUgbm90IG5lZWRlZCBpbiB0aGUgREZHIHJpZ2h0IG5vdy4gV2Ugc2hvdWxkIGFkZCBzdXBwb3J0
CisgICAgICAgICAgICAgICAgICAgIC8vIGZvciB0aGVzZSBpZiB0aGUgREZHIGV2ZXIgbmVlZHMg
aXQuCisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2Rl
LT5zdHJ1Y3R1cmVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5v
ZGUpLCAhaGFzSW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgog
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG1fZ3JhcGgubV9maXhwb2ludFN0
YXRlICE9IEZpeHBvaW50Tm90Q29udmVyZ2VkKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHAJKHJldmlzaW9uIDE5OTA0MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUg
IlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNzcs
NiArNzcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpT
U3ltYm9sVGFibGVPYmplY3Rfc3ltYm9sVGFibGUsIEpTU3ltYm9sVGFibGVPYmplY3Q6Om9mZnNl
dE9mU3ltYm9sVGFibGUoKSkgXAogICAgIG1hY3JvKEpTV3JhcHBlck9iamVjdF9pbnRlcm5hbFZh
bHVlLCBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWVPZmZzZXQoKSkgXAogICAgIG1hY3Jv
KE1hcmtlZEFsbG9jYXRvcl9mcmVlTGlzdEhlYWQsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZG
cmVlTGlzdEhlYWQoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3Vs
dF9sYXN0UmVnRXhwLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSAr
IFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkpIFwKKyAgICBtYWNybyhS
ZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRSZXN1bHRfbGFzdElucHV0LCBSZWdFeHBDb25zdHJ1Y3Rv
cjo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZM
YXN0SW5wdXQoKSkgXAorICAgIG1hY3JvKFJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9y
ZXN1bHRfc3RhcnQsIFJlZ0V4cENvbnN0cnVjdG9yOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgpICsg
UmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1h
dGNoUmVzdWx0LCBzdGFydCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNoZWRS
ZXN1bHRfcmVzdWx0X2VuZCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0
KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VU
T0YoTWF0Y2hSZXN1bHQsIGVuZCkpIFwKKyAgICBtYWNybyhSZWdFeHBDb25zdHJ1Y3Rvcl9jYWNo
ZWRSZXN1bHRfcmVpZmllZCwgUmVnRXhwQ29uc3RydWN0b3I6Om9mZnNldE9mQ2FjaGVkUmVzdWx0
KCkgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSBcCiAgICAgbWFjcm8o
UmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleCgp
KSBcCiAgICAgbWFjcm8oUmVnRXhwT2JqZWN0X2xhc3RJbmRleElzV3JpdGFibGUsIFJlZ0V4cE9i
amVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXhJc1dyaXRhYmxlKCkpIFwKICAgICBtYWNybyhTY29wZWRB
cmd1bWVudHNfb3ZlcnJvZGVUaGluZ3MsIFNjb3BlZEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycm9k
ZVRoaW5ncygpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgsNyBA
QCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBTdHJp
bmdSZXBsYWNlOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgogICAgIGNhc2Ug
U2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgorICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVz
dWx0OgogICAgIGNhc2UgU2V0RnVuY3Rpb25OYW1lOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0su
CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk5MDQwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDEsNiArOTQx
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAg
ICAgICAgICAgICBjb21waWxlU2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4KCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CisgICAgICAg
ICAgICBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0KCk7CisgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoK
QEAgLTM3MjQsMzIgKzM3MjcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRlcmZs
eV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgs
IGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKGhhc0RvdWJsZShtX25vZGUtPmluZGV4aW5nVHlwZSgpKSkgewot
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMb29wID0gbV9vdXQubmV3QmxvY2soKTsK
LSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbml0RG9uZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2lu
YWxJbmRleCA9IG1fb3V0LmFuY2hvcih2ZWN0b3JMZW5ndGgpOwotICAgICAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIG9yaWdpbmFsUG9pbnRlciA9IG1fb3V0LmFuY2hvcihidXR0ZXJmbHkpOwot
ICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQu
bm90WmVybzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShpbml0RG9u
ZSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRM
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7Ci0gICAgICAgICAg
ICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0LmludDMyLCBvcmlnaW5hbEluZGV4
KTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1fb3V0LnBoaShtX291dC5pbnRQ
dHIsIG9yaWdpbmFsUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
bV9vdXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChiaXR3
aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLAotICAgICAgICAgICAgICAgICAgICBUeXBlZFBvaW50
ZXIobV9oZWFwcy5pbmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFueUluZGV4KCksIHBvaW50ZXIp
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMVmFsdWUgbmV4dEluZGV4ID0g
bV9vdXQuc3ViKGluZGV4LCBtX291dC5pbnQzMk9uZSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQu
YWRkSW5jb21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRleCkpOwotICAgICAg
ICAgICAgICAgIG1fb3V0LmFkZEluY29taW5nVG9QaGkocG9pbnRlciwgbV9vdXQuYW5jaG9yKG1f
b3V0LmFkZChwb2ludGVyLCBtX291dC5pbnRQdHJFaWdodCkpKTsKLSAgICAgICAgICAgICAgICBt
X291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMihuZXh0SW5k
ZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwgaW5pdExhc3ROZXh0
KTsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5pdGlhbGl6ZUFycmF5RWxlbWVudHMo
bV9ub2RlLT5pbmRleGluZ1R5cGUoKSwgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5j
aG9yKG9iamVjdCk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC02
Mjk0LDExICs2MjczLDIxIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIExvd2VyIHRoZSB2YWx1ZXMg
Zmlyc3QsIHRvIGF2b2lkIGNyZWF0aW5nIHZhbHVlcyBpbnNpZGUgYSBjb250cm9sIGZsb3cgZGlh
bW9uZC4KICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxMVmFsdWUsIDg+IHZhbHVlczsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAxICsgaSkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRh
dGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBFZGdlIGVkZ2UgPSBt
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSArIGkpOworICAgICAgICAgICAgc3dpdGNoIChk
YXRhLm1fcHJvcGVydGllc1tpXS5raW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgUHVibGljTGVu
Z3RoUExvYzoKKyAgICAgICAgICAgIGNhc2UgVmVjdG9yTGVuZ3RoUExvYzoKKyAgICAgICAgICAg
ICAgICB2YWx1ZXMuYXBwZW5kKGxvd0ludDMyKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChs
b3dKU1ZhbHVlKGVkZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQgPSBt
X25vZGUtPnN0cnVjdHVyZVNldCgpOwotICAgICAgICAKKwogICAgICAgICBWZWN0b3I8TEJhc2lj
QmxvY2ssIDE+IGJsb2NrcyhzZXQuc2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
c2V0LnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGJsb2Nrc1tpXSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC02MzIzLDIxICs2MzEyLDUxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUg
b2JqZWN0OwogICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJbmRleGVkUHJvcGVy
dGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgICAgIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVy
ZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3IgPSAmdm0oKS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9y
KGFsbG9jYXRpb25TaXplKTsKKworICAgICAgICAgICAgICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFk
ZXIgPSBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleGluZ0hlYWRlclNpemUgPSAwOworICAgICAgICAg
ICAgICAgIExWYWx1ZSBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9IG1fb3V0LmludFB0clpl
cm87CisgICAgICAgICAgICAgICAgTFZhbHVlIHZlY3Rvckxlbmd0aCA9IG1fb3V0LmludDMyWmVy
bzsKKyAgICAgICAgICAgICAgICBMVmFsdWUgcHVibGljTGVuZ3RoID0gbV9vdXQuaW50MzJaZXJv
OworICAgICAgICAgICAgICAgIGlmIChoYXNJbmRleGluZ0hlYWRlcikgeworICAgICAgICAgICAg
ICAgICAgICBpbmRleGluZ0hlYWRlclNpemUgPSBzaXplb2YoSW5kZXhpbmdIZWFkZXIpOworICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNj
cmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5raW5kKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgUHVibGljTGVuZ3RoUExvYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWNMZW5ndGggPSB2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZlY3Rvckxlbmd0aFBMb2M6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoID0gdmFsdWVzW2ldOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9CisgICAgICAgICAgICAgICAgICAgICAgICBt
X291dC5tdWwobV9vdXQuemVyb0V4dFB0cih2ZWN0b3JMZW5ndGgpLCBtX291dC5pbnRQdHJFaWdo
dCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZs
eVNpemUgPSBtX291dC5hZGQoCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
ICogc2l6ZW9mKEpTVmFsdWUpICsgaW5kZXhpbmdIZWFkZXJTaXplKSwKKyAgICAgICAgICAgICAg
ICAgICAgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBMVmFsdWUgZW5kT2ZTdG9yYWdlID0gYWxsb2NhdGVCYXNpY1N0
b3JhZ2VBbmRHZXRFbmQoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSksCi0gICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoKTsKLSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBMVmFsdWUgZW5kT2ZTdG9yYWdlID0gYWxsb2NhdGVCYXNpY1N0b3JhZ2VBbmRHZXRFbmQoYnV0
dGVyZmx5U2l6ZSwgc2xvd1BhdGgpOworCiAgICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RCdXR0
ZXJmbHlWYWx1ZSA9IG1fb3V0LmFkZCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIGVuZE9mU3RvcmFnZSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fb3V0LnN1YihlbmRPZlN0b3JhZ2UsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5
dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEluZGV4
aW5nSGVhZGVyKSAtIGluZGV4aW5nSGVhZGVyU2l6ZSkpOworCisgICAgICAgICAgICAgICAgbV9v
dXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgsIGZhc3RCdXR0ZXJmbHlWYWx1ZSwgbV9oZWFwcy5CdXR0
ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBM
VmFsdWUgZmFzdE9iamVjdFZhbHVlID0gYWxsb2NhdGVPYmplY3QoCiAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvciksIHN0cnVjdHVyZSwgZmFzdEJ1dHRlcmZs
eVZhbHVlLCBzbG93UGF0aCk7CkBAIC02MzQ4LDEyICs2MzY3LDI0IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNv
bnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd09iamVjdFZhbHVlID0g
bGF6eVNsb3dQYXRoKAotICAgICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2Nh
dGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZs
eSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKLSAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dPYmplY3RWYWx1ZTsKKyAgICAg
ICAgICAgICAgICBpZiAoaGFzSW5kZXhpbmdIZWFkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAg
c2xvd09iamVjdFZhbHVlID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAg
Wz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xv
d1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
cmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rv
ckxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRp
cmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3JM
ZW5ndGgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNs
b3dPYmplY3RWYWx1ZSA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFs9
XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQ
YXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dPYmplY3QgPSBtX291
dC5hbmNob3Ioc2xvd09iamVjdFZhbHVlKTsKICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9j
ayBzbG93QnV0dGVyZmx5ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgICAgICAgICBtX291
dC5sb2FkUHRyKHNsb3dPYmplY3RWYWx1ZSwgbV9oZWFwcy5KU09iamVjdF9idXR0ZXJmbHkpKTsK
QEAgLTYzNjQsNiArNjM5NSwxMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBvYmplY3QgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0T2JqZWN0LCBz
bG93T2JqZWN0KTsKICAgICAgICAgICAgICAgICBidXR0ZXJmbHkgPSBtX291dC5waGkobV9vdXQu
aW50UHRyLCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVyZmx5KTsKKworICAgICAgICAgICAgICAg
IG1fb3V0LnN0b3JlMzIocHVibGljTGVuZ3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5
X3B1YmxpY0xlbmd0aCk7CisKKyAgICAgICAgICAgICAgICBpbml0aWFsaXplQXJyYXlFbGVtZW50
cyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpLCB2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseSk7CisK
KyAgICAgICAgICAgICAgICBIYXNoTWFwPGludDMyX3QsIExWYWx1ZSwgRGVmYXVsdEhhc2g8aW50
MzJfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50MzJfdD4+
IGluZGV4TWFwOworICAgICAgICAgICAgICAgIFZlY3RvcjxpbnQzMl90PiBpbmRpY2VzOworICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsg
aS0tOykgeworICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciBk
ZXNjcmlwdG9yID0gZGF0YS5tX3Byb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIGlm
IChkZXNjcmlwdG9yLmtpbmQoKSAhPSBJbmRleGVkUHJvcGVydHlQTG9jKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaW5kZXgg
PSBzdGF0aWNfY2FzdDxpbnQzMl90PihkZXNjcmlwdG9yLmluZm8oKSk7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGluZGV4TWFwLmFkZChp
bmRleCwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBtX25vZGUsIHJlc3VsdCk7IC8vIER1cGxpY2F0ZXMgYXJlIGlsbGVnYWwuCisKKyAgICAgICAg
ICAgICAgICAgICAgaW5kaWNlcy5hcHBlbmQoaW5kZXgpOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGlmICghaW5kaWNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzb3J0KGluZGljZXMuYmVnaW4oKSwgaW5kaWNlcy5lbmQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2s+IGJs
b2Nrc1dpdGhTdG9yZXMoaW5kaWNlcy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBWZWN0
b3I8TEJhc2ljQmxvY2s+IGJsb2Nrc1dpdGhDaGVja3MoaW5kaWNlcy5zaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5k
aWNlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc1dpdGhT
dG9yZXNbaV0gPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgICAgICAgICAgICAgYmxv
Y2tzV2l0aENoZWNrc1tpXSA9IG1fb3V0Lm5ld0Jsb2NrKCk7IC8vIGJsb2Nrc1dpdGhDaGVja3Nb
MF0gaXMgdGhlIGNvbnRpbnVhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluZGV4TGFzdE5leHQgPSBtX291dC5tX25leHRCbG9j
azsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGluZGljZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
bnQzMl90IGluZGV4ID0gaW5kaWNlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGluZGV4TWFwLmdldChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5iZWxvdyhtX291dC5jb25zdEludDMyKGluZGV4KSwgcHVibGljTGVu
Z3RoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN1cmUoYmxvY2tzV2l0aFN0b3Jl
c1tpXSksIHVuc3VyZShibG9ja3NXaXRoQ2hlY2tzW2ldKSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1dpdGhTdG9yZXNbaV0sIGJsb2Nrc1dpdGhDaGVj
a3NbaV0pOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcyB0byB0eXBlLWNo
ZWNrIGFuZCBjb252ZXJ0IGl0cyBpbnB1dHMsIGJ1dCBpdCBjYW5ub3QgZG8gc28gaW4gYQorICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gd2F5IHRoYXQgdXBkYXRlcyBBSS4gVGhhdCdzIGEgYml0
IGFubm95aW5nLCBidXQgaWYgeW91IHRoaW5rIGFib3V0IGhvdworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gc2lua2luZyB3b3JrcywgaXQncyBhY3R1YWxseSBub3QgYSBiYWQgdGhpbmcuIFdl
IGFyZSB2aXJ0dWFsbHkgZ3VhcmFudGVlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhh
dCB0aGVzZSB0eXBlIGNoZWNrcyB3aWxsIG5vdCBmYWlsLCBzaW5jZSB0aGUgdHlwZSBjaGVja3Mg
dGhhdCBndWFyZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgc3Rv
cmVzIHRvIHRoZSBhcnJheSBhcmUgc3RpbGwgc29tZXdoZXJlIGFib3ZlIHRoaXMgcG9pbnQuCisg
ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6OlN0b3JlVHlwZSBzdG9yZVR5cGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBJbmRleGVkQWJzdHJhY3RIZWFwKiBoZWFwOworICAgICAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgdGhlIHByb3Zl
biB0eXBlIGlmIHdlIGhhZCB0aGUgRWRnZSBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTUzMTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwgbm9W
YWx1ZSgpLCBudWxscHRyLCBpc05vdEludDMyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZTY0OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlYXAgPSAmbV9oZWFwcy5pbmRleGVkSW50MzJQcm9wZXJ0aWVzOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogSWYgdGhlIHNvdXJjZSBpcyBWYWx1ZVJlcCwgd2Ugc2hvdWxkIGF2b2lk
IGVtaXR0aW5nIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrcy4gV2Ug
Y291bGQgYWxzbyBhdm9pZCBlbWl0dGluZyBjaGVja3MgaWYgd2UgaGFkIHRoZSBFZGdlIG9mCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB2YWx1ZS4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTMxMQorCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgaW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmJyYW5jaChpc0ludDMyKHZhbHVlKSwgdW5zdXJlKGludENhc2UpLCB1bnN1cmUoZG91YmxlQ2Fz
ZSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhpbnRDYXNlLCBkb3VibGVDYXNlKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGludFJlc3VsdCA9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmFuY2hvcihtX291dC5pbnRUb0RvdWJsZSh1bmJveEludDMy
KHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGRv
dWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
cGVjdWxhdGUoQmFkVHlwZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBpc051bWJlcih2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGRvdWJsZVJlc3VsdCA9
IG1fb3V0LmFuY2hvcih1bmJveERvdWJsZSh2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbV9vdXQucGhpKERvdWJsZSwgaW50UmVzdWx0LCBk
b3VibGVSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91
dHB1dDo6U3RvcmVEb3VibGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhcCA9ICZt
X2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmU2NDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWFwID0gJm1faGVhcHMuaW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0
aWVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERGR19DUkFT
SChtX2dyYXBoLCBtX25vZGUsICJJbnZhbGlkIGluZGV4aW5nIHR5cGUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUo
dmFsdWUsIG1fb3V0LmFkZHJlc3MoYnV0dGVyZmx5LCBoZWFwLT5hdChpbmRleCkpLCBzdG9yZVR5
cGUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGJsb2Nrc1dpdGhDaGVj
a3NbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmxvY2tzV2l0aENoZWNrc1tpXSwgaSA/IGJsb2Nrc1dpdGhT
dG9yZXNbaSAtIDFdIDogaW5kZXhMYXN0TmV4dCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8v
IEluIHRoZSBlYXN5IGNhc2Ugd2hlcmUgd2UgY2FuIGRvIGEgb25lLXNob3QgYWxsb2NhdGlvbiwg
d2Ugc2ltcGx5IGFsbG9jYXRlIHRoZQogICAgICAgICAgICAgICAgIC8vIG9iamVjdCB0byBkaXJl
Y3RseSBoYXZlIHRoZSBkZXNpcmVkIHN0cnVjdHVyZS4KQEAgLTYzNzMsMTIgKzY1MDksMTQgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChQcm9wZXJ0eU1hcEVudHJ5
IGVudHJ5IDogc3RydWN0dXJlLT5nZXRQcm9wZXJ0aWVzQ29uY3VycmVudGx5KCkpIHsKICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7IGkt
LTspIHsKLSAgICAgICAgICAgICAgICAgICAgUGhhbnRvbVByb3BlcnR5VmFsdWUgdmFsdWUgPSBk
YXRhLm1fcHJvcGVydGllc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaWRl
bnRpZmllcnMoKVt2YWx1ZS5tX2lkZW50aWZpZXJOdW1iZXJdICE9IGVudHJ5LmtleSkKKyAgICAg
ICAgICAgICAgICAgICAgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IGRh
dGEubV9wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5r
aW5kKCkgIT0gTmFtZWRQcm9wZXJ0eVBMb2MpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaWRlbnRpZmllcnMoKVtkZXNj
cmlwdG9yLmluZm8oKV0gIT0gZW50cnkua2V5KQogICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBMVmFsdWUg
YmFzZSA9IGlzSW5saW5lT2Zmc2V0KGVudHJ5Lm9mZnNldCkgPyBvYmplY3QgOiBidXR0ZXJmbHk7
Ci0gICAgICAgICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkodmFsdWVzW2ldLCBiYXNlLCB2YWx1
ZS5tX2lkZW50aWZpZXJOdW1iZXIsIGVudHJ5Lm9mZnNldCk7CisgICAgICAgICAgICAgICAgICAg
IHN0b3JlUHJvcGVydHkodmFsdWVzW2ldLCBiYXNlLCBkZXNjcmlwdG9yLmluZm8oKSwgZW50cnku
b2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQpAQCAtNjQ0Myw5ICs2NTgxLDExIEBAIHByaXZhdGU6CiAgICAgICAgIExW
YWx1ZSBhY3RpdmF0aW9uID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xv
d1Jlc3VsdCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEubV9wcm9wZXJ0aWVzLnNpemUo
KSA9PSB0YWJsZS0+c2NvcGVTaXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIG1fb3V0LnN0
b3JlNjQodmFsdWVzW2ldLAotICAgICAgICAgICAgICAgIGFjdGl2YXRpb24sCi0gICAgICAgICAg
ICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlc1tkYXRhLm1fcHJvcGVy
dGllc1tpXS5tX2lkZW50aWZpZXJOdW1iZXJdKTsKKyAgICAgICAgICAgIFByb21vdGVkTG9jYXRp
b25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAg
ICAgIEFTU0VSVChkZXNjcmlwdG9yLmtpbmQoKSA9PSBDbG9zdXJlVmFyUExvYyk7CisgICAgICAg
ICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgICAgIHZhbHVlc1tpXSwgYWN0aXZhdGlv
biwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLkpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVz
W2Rlc2NyaXB0b3IuaW5mbygpXSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodmFsaWRhdGlv
bkVuYWJsZWQoKSkgewpAQCAtNjQ1NCw3ICs2NTk0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKGxvY2tlciksIGVuZCA9IHRhYmxlLT5lbmQo
bG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAgICAgICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0
YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0
ZXItPnZhbHVlLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgPT0gZGF0YS5tX3Byb3BlcnRpZXNbaV0u
bV9pZGVudGlmaWVyTnVtYmVyKSB7CisgICAgICAgICAgICAgICAgICAgIFByb21vdGVkTG9jYXRp
b25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBkYXRhLm1fcHJvcGVydGllc1tpXTsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGRlc2NyaXB0b3Iua2luZCgpID09IENsb3N1cmVWYXJQTG9jKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLnNjb3BlT2Zmc2V0KCkub2Zmc2V0
KCkgPT0gZGVzY3JpcHRvci5pbmZvKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICB9CkBAIC02NjI3LDYgKzY3NjksMjkgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuc3Rv
cmU2NCh2YWx1ZSwgcmVnRXhwLCBtX2hlYXBzLlJlZ0V4cE9iamVjdF9sYXN0SW5kZXgpOwogICAg
IH0KIAorICAgIHZvaWQgY29tcGlsZVJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdCgpCisgICAgewor
ICAgICAgICBFZGdlIGNvbnN0cnVjdG9yRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2Rl
LCAwKTsKKyAgICAgICAgRWRnZSByZWdFeHBFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDEpOworICAgICAgICBFZGdlIHN0cmluZ0VkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMik7CisgICAgICAgIEVkZ2Ugc3RhcnRFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZCht
X25vZGUsIDMpOworICAgICAgICBFZGdlIGVuZEVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgNCk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dDZWxs
KGNvbnN0cnVjdG9yRWRnZSk7CisgICAgICAgIExWYWx1ZSByZWdFeHAgPSBsb3dDZWxsKHJlZ0V4
cEVkZ2UpOworICAgICAgICBMVmFsdWUgc3RyaW5nID0gbG93Q2VsbChzdHJpbmdFZGdlKTsKKyAg
ICAgICAgTFZhbHVlIHN0YXJ0ID0gbG93SW50MzIoc3RhcnRFZGdlKTsKKyAgICAgICAgTFZhbHVl
IGVuZCA9IGxvd0ludDMyKGVuZEVkZ2UpOworCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKHJlZ0V4
cCwgY29uc3RydWN0b3IsIG1faGVhcHMuUmVnRXhwQ29uc3RydWN0b3JfY2FjaGVkUmVzdWx0X2xh
c3RSZWdFeHApOworICAgICAgICBtX291dC5zdG9yZVB0cihzdHJpbmcsIGNvbnN0cnVjdG9yLCBt
X2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9sYXN0SW5wdXQpOworICAgICAg
ICBtX291dC5zdG9yZTMyKHN0YXJ0LCBjb25zdHJ1Y3RvciwgbV9oZWFwcy5SZWdFeHBDb25zdHJ1
Y3Rvcl9jYWNoZWRSZXN1bHRfcmVzdWx0X3N0YXJ0KTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihl
bmQsIGNvbnN0cnVjdG9yLCBtX2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9y
ZXN1bHRfZW5kKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMkFzOCgKKyAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50MzIoMCksCisgICAgICAgICAgICBtX291dC5hZGRyZXNzKGNvbnN0cnVjdG9yLCBt
X2hlYXBzLlJlZ0V4cENvbnN0cnVjdG9yX2NhY2hlZFJlc3VsdF9yZWlmaWVkKSk7CisgICAgfQor
CiAgICAgTFZhbHVlIGRpZE92ZXJmbG93U3RhY2soKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBk
b2VzIGEgdmVyeSBzaW1wbGUgbGVhZiBmdW5jdGlvbiBhbmFseXNpcy4gVGhlIGludmFyaWFudCBv
ZiBGVEwgY2FsbApAQCAtNjk4NCw2ICs3MTQ5LDM5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZUFycmF5RWxl
bWVudHMoSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgTFZhbHVlIHZlY3Rvckxlbmd0aCwgTFZh
bHVlIGJ1dHRlcmZseSkKKyAgICB7CisgICAgICAgIGlmICghaGFzRG91YmxlKGluZGV4aW5nVHlw
ZSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBHQyBhbHJlYWR5IGluaXRpYWxpemVkIGV2ZXJ5dGhp
bmcgdG8gSlNWYWx1ZSgpIGZvciB1cy4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIERvdWJsZXMgbXVzdCBiZSBpbml0aWFsaXplZCB0byBQTmFOLgorICAgICAg
ICBMQmFzaWNCbG9jayBpbml0TG9vcCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGluaXREb25lID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZh
bHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291dC5hbmNob3IodmVjdG9yTGVuZ3RoKTsK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxQb2ludGVyID0gbV9vdXQuYW5jaG9yKGJ1
dHRlcmZseSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0Lm5vdFpl
cm8zMih2ZWN0b3JMZW5ndGgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsK
KyAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMYXN0TmV4dCA9IG1fb3V0LmFwcGVu
ZFRvKGluaXRMb29wLCBpbml0RG9uZSk7CisgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBo
aShtX291dC5pbnQzMiwgb3JpZ2luYWxJbmRleCk7CisgICAgICAgIExWYWx1ZSBwb2ludGVyID0g
bV9vdXQucGhpKG1fb3V0LmludFB0ciwgb3JpZ2luYWxQb2ludGVyKTsKKyAgICAgICAgCisgICAg
ICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KGJpdHdpc2Vf
Y2FzdDxpbnQ2NF90PihQTmFOKSksCisgICAgICAgICAgICBUeXBlZFBvaW50ZXIobV9oZWFwcy5p
bmRleGVkRG91YmxlUHJvcGVydGllcy5hdEFueUluZGV4KCksIHBvaW50ZXIpKTsKKyAgICAgICAg
CisgICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5zdWIoaW5kZXgsIG1fb3V0LmludDMy
T25lKTsKKyAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9y
KG5leHRJbmRleCkpOworICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKHBvaW50ZXIsIG1f
b3V0LmFuY2hvcihtX291dC5hZGQocG9pbnRlciwgbV9vdXQuaW50UHRyRWlnaHQpKSk7CisgICAg
ICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0Lm5vdFplcm8zMihuZXh0SW5kZXgp
LCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKKyAgICAgICAgCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGluaXREb25lLCBpbml0TGFzdE5leHQpOworICAgIH0KICAgICAKICAg
ICBMVmFsdWUgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTFZhbHVlIG9iamVjdCwgU3RydWN0dXJl
KiBwcmV2aW91c1N0cnVjdHVyZSkKICAgICB7CkBAIC05MTY3LDcgKzkzNjUsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LnRlc3RO
b25aZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKTsKICAgICB9Ci0gICAgCisKICAgICBM
VmFsdWUgdW5ib3hEb3VibGUoTFZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4g
bV9vdXQuYml0Q2FzdChtX291dC5hZGQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKSwgbV9vdXQu
ZG91YmxlVHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDE5OTA0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE5ICs0MSw2IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzo6REZHOwog
Ci1leHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRo
QnV0dGVyZmx5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2
bSwgZXhlYyk7Ci0gICAgCi0gICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNy
ZWF0ZSgKLSAgICAgICAgdm0sIG51bGxwdHIsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSwgZmFsc2UsIEluZGV4aW5nSGVhZGVyKCksIDApOwotICAgIAotICAgIEpTT2JqZWN0KiBy
ZXN1bHQgPSBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBidXR0ZXJmbHkp
OwotICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3VyZSB0aGF0IHRoZSBidXR0ZXJmbHkg
aXMgaW4gdG8tc3BhY2UuCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogZXh0ZXJuICJDIiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUigKICAgICBFeGVjU3Rh
dGUqIGV4ZWMsIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiBtYXRlcmlhbGl6YXRpb24s
CiAgICAgRW5jb2RlZEpTVmFsdWUqIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUqIHZhbHVl
cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCShyZXZp
c2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBAQCBjbGFzcyBMYXp5U2xvd1BhdGg7CiAK
IGV4dGVybiAiQyIgewogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0
V2l0aEJ1dHRlcmZseShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7Ci0KIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKAogICAg
IEV4ZWNTdGF0ZSosIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiwgRW5jb2RlZEpTVmFs
dWUqKSBXVEZfSU5URVJOQUw7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAkocmV2aXNpb24g
MTk5MDQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNo
VXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
Ikluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5j
bHVkZSAiWWFyci5oIgorI2luY2x1ZGUgIllhcnJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgPHd0
Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE5OTA0MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYg
Kzk3LDEwIEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKIAorICAgIC8vIFRoaXMgaXMgYSBzdXBlciBkYW5nZXJvdXMg
bWV0aG9kIGZvciBKSVRzLiBTb21ldGltZXMgdGhlIEpJVHMgd2lsbCB3YW50IHRvIGNyZWF0ZSBl
aXRoZXIgYQorICAgIC8vIEpTRmluYWxPYmplY3Qgb3IgYSBKU0FycmF5LiBUaGlzIGlzIHRoZSBt
ZXRob2QgdGhhdCB3aWxsIGRvIHRoYXQuCisgICAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGVSYXdP
YmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiA9
IG51bGxwdHIpOworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHNpemVfdCBlc3RpbWF0
ZWRTaXplKEpTQ2VsbCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBjb3B5QmFja2luZ1N0b3JlKEpTQ2VsbCosIENvcHlWaXNpdG9yJiwgQ29weVRv
a2VuKTsKQEAgLTEwNDEsNiArMTA0NSwyMCBAQCBwcml2YXRlOgogCiBKU19FWFBPUlRfUFJJVkFU
RSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByaXZhdGVGdW5jSW5zdGFuY2VP
ZihFeGVjU3RhdGUqKTsKIAoraW5saW5lIEpTT2JqZWN0KiBKU09iamVjdDo6Y3JlYXRlUmF3T2Jq
ZWN0KAorICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZs
eSogYnV0dGVyZmx5KQoreworICAgIEpTT2JqZWN0KiBmaW5hbE9iamVjdCA9IG5ldyAoCisgICAg
ICAgIE5vdE51bGwsIAorICAgICAgICBhbGxvY2F0ZUNlbGw8SlNGaW5hbE9iamVjdD4oCisgICAg
ICAgICAgICAqZXhlYy0+aGVhcCgpLAorICAgICAgICAgICAgSlNGaW5hbE9iamVjdDo6YWxsb2Nh
dGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKQorICAgICAgICApCisgICAgKSBK
U09iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgZmluYWxPYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgIHJldHVybiBmaW5hbE9iamVjdDsK
K30KKwogaW5saW5lIEpTRmluYWxPYmplY3QqIEpTRmluYWxPYmplY3Q6OmNyZWF0ZSgKICAgICBF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkocmV2
aXNpb24gMTk5MDQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDYgKzI2Miw4IEBAIFJlZ0V4cCogUmVnRXhwOjpjcmVh
dGUoVk0mIHZtLCBjb25zdCBTdHIKIAogdm9pZCBSZWdFeHA6OmNvbXBpbGUoVk0qIHZtLCBZYXJy
OjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVy
blN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IpOwogICAgIGlmIChtX2NvbnN0
cnVjdGlvbkVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC0yOTEsNyArMjkzLDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGUoVk0qIHZtLCBZYXJyOjpZYXJy
QwogI2VuZGlmCiAKICAgICBtX3N0YXRlID0gQnl0ZUNvZGU7Ci0gICAgbV9yZWdFeHBCeXRlY29k
ZSA9IFlhcnI6OmJ5dGVDb21waWxlKHBhdHRlcm4sICZ2bS0+bV9yZWdFeHBBbGxvY2F0b3IpOwor
ICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmdm0tPm1f
cmVnRXhwQWxsb2NhdG9yLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9yTG9jayk7CiB9CiAKIGludCBS
ZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKQpAQCAtMjk5LDggKzMwMSwyMiBAQCBpbnQgUmVn
RXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYgCiAgICAgcmV0dXJuIG1hdGNoSW5saW5l
KHZtLCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7CiB9CiAKK2Jvb2wgUmVnRXhwOjptYXRjaENv
bmN1cnJlbnRseSgKKyAgICBWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIGludCYgcG9zaXRpb24sIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3RvcikKK3sKKyAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKCFoYXNDb2RlRm9y
KHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHBvc2l0aW9uID0gbWF0Y2godm0sIHMsIHN0YXJ0T2Zmc2V0LCBvdmVj
dG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZWdFeHA6OmNvbXBpbGVNYXRjaE9u
bHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7CisgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBw
YXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IpOwog
ICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0zMzAsNyArMzQ2LDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGVNYXRj
aE9ubHkoVk0qIHZtLCBZYQogI2VuZGlmCiAKICAgICBtX3N0YXRlID0gQnl0ZUNvZGU7Ci0gICAg
bV9yZWdFeHBCeXRlY29kZSA9IFlhcnI6OmJ5dGVDb21waWxlKHBhdHRlcm4sICZ2bS0+bV9yZWdF
eHBBbGxvY2F0b3IpOworICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZShw
YXR0ZXJuLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9yLCAmdm0tPm1fcmVnRXhwQWxsb2NhdG9yTG9j
ayk7CiB9CiAKIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcm
IHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KQpAQCAtMzM4LDggKzM1NCwyMSBAQCBNYXRjaFJlc3Vs
dCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29uc3QgCiAgICAgcmV0dXJuIG1hdGNoSW5saW5lKHZt
LCBzLCBzdGFydE9mZnNldCk7CiB9CiAKK2Jvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRseShW
TSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0
JiByZXN1bHQpCit7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKwor
ICAgIGlmICghaGFzTWF0Y2hPbmx5Q29kZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZ
YXJyOjpDaGFyMTYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXN1bHQgPSBtYXRj
aCh2bSwgcywgc3RhcnRPZmZzZXQpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFJlZ0V4
cDo6ZGVsZXRlQ29kZSgpCiB7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICAKICAgICBpZiAoIWhhc0NvZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc3Rh
dGUgPSBOb3RDb21waWxlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5oCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBSZWdFeHBf
aAogI2RlZmluZSBSZWdFeHBfaAogCisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKICNp
bmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiTWF0Y2hSZXN1bHQuaCIK
ICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKQEAgLTU2LDYgKzU3LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdub3JlQ2FzZTsg
fQogICAgIGJvb2wgbXVsdGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdNdWx0
aWxpbmU7IH0KICAgICBib29sIHN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFn
U3RpY2t5OyB9CisgICAgYm9vbCBnbG9iYWxPclN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIGdsb2Jh
bCgpIHx8IHN0aWNreSgpOyB9CiAgICAgYm9vbCB1bmljb2RlKCkgY29uc3QgeyByZXR1cm4gbV9m
bGFncyAmIEZsYWdVbmljb2RlOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHBhdHRlcm4oKSBjb25z
dCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KQEAgLTY0LDggKzY2LDE0IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVj
dGlvbkVycm9yOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgbWF0Y2goVk0mLCBjb25z
dCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9y
KTsKKworICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2UgY291bGRuJ3QgcnVuIHRoZSByZWd1bGFy
IGV4cHJlc3Npb24gZm9yIGFueSByZWFzb24uCisgICAgYm9vbCBtYXRjaENvbmN1cnJlbnRseShW
TSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBW
ZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOworICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIE1h
dGNoUmVzdWx0IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQp
OwogCisgICAgYm9vbCBtYXRjaENvbmN1cnJlbnRseShWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYpOworCiAgICAgLy8gQ2FsbCB0aGVzZSB2ZXJz
aW9ucyBvZiB0aGUgbWF0Y2ggZnVuY3Rpb25zIGlmIHlvdSdyZSBkZXNwZXJhdGUgZm9yIHBlcmZv
cm1hbmNlLgogICAgIGludCBtYXRjaElubGluZShWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOwogICAgIE1hdGNoUmVzdWx0
IG1hdGNoSW5saW5lKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpOwpA
QCAtNzcsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3N0YXRlICE9IE5vdENv
bXBpbGVkOwogICAgIH0KIAorICAgIGJvb2wgaGFzQ29kZUZvcihZYXJyOjpZYXJyQ2hhclNpemUp
OworICAgIGJvb2wgaGFzTWF0Y2hPbmx5Q29kZUZvcihZYXJyOjpZYXJyQ2hhclNpemUpOworCiAg
ICAgdm9pZCBkZWxldGVDb2RlKCk7CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC0x
MzIsNiArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3J0TWF0Y2hDYWxsQ291bnQ7
CiAgICAgdW5zaWduZWQgbV9ydE1hdGNoRm91bmRDb3VudDsKICNlbmRpZgorICAgIENvbmN1cnJl
bnRKSVRMb2NrIG1fbG9jazsKIAogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICBZYXJyOjpZYXJy
Q29kZUJsb2NrIG1fcmVnRXhwSklUQ29kZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCShyZXZpc2lvbiAxOTkwNDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzUsNiArNzUsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCB2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGFz
dFJlZ0V4cCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1f
bGFzdFJlZ0V4cCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGFzdElucHV0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4cENhY2hlZFJlc3VsdCwgbV9sYXN0SW5wdXQp
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlc3VsdCgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihSZWdFeHBDYWNoZWRSZXN1bHQsIG1fcmVzdWx0KTsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZSZWlmaWVkKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFJlZ0V4
cENhY2hlZFJlc3VsdCwgbV9yZWlmaWVkKTsgfQorCiBwcml2YXRlOgogICAgIE1hdGNoUmVzdWx0
IG1fcmVzdWx0OwogICAgIGJvb2wgbV9yZWlmaWVkOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTkwNDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAorICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVn
RXhwQ29uc3RydWN0b3IsIG1fY2FjaGVkUmVzdWx0KTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIFJlZ0V4cFByb3RvdHlwZSosIEdldHRlclNldHRlciogc3Bl
Y2llcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJ
bmxpbmVzLmgJKHJldmlzaW9uIDE5OTA0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJZYXJy
LmgiCisjaW5jbHVkZSAiWWFyckludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiWWFyckpJVC5oIgog
CiAjZGVmaW5lIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4gMApAQCAtNjcsMjAgKzY4LDI3IEBA
IHByaXZhdGU6CiB9OwogI2VuZGlmIC8vIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4KIAotQUxX
QVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZNJiB2bSwgWWFycjo6
WWFyckNoYXJTaXplIGNoYXJTaXplKQorQUxXQVlTX0lOTElORSBib29sIFJlZ0V4cDo6aGFzQ29k
ZUZvcihZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7CiAgICAgaWYgKGhhc0NvZGUoKSkg
ewogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gSklUQ29kZSkK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBp
ZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczhCaXRD
b2RlKCkpKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2Rl
LmhhczE2Qml0Q29kZSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBS
ZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFy
U2l6ZSkKK3sKKyAgICBpZiAoaGFzQ29kZUZvcihjaGFyU2l6ZSkpCisgICAgICAgIHJldHVybjsK
IAogICAgIGNvbXBpbGUoJnZtLCBjaGFyU2l6ZSk7CiB9CkBAIC0xNTIsMjEgKzE2MCwyOSBAQCBB
TFdBWVNfSU5MSU5FIGludCBSZWdFeHA6Om1hdGNoSW5saW5lKFZNCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5TWF0
Y2hPbmx5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQorQUxXQVlTX0lOTElO
RSBib29sIFJlZ0V4cDo6aGFzTWF0Y2hPbmx5Q29kZUZvcihZYXJyOjpZYXJyQ2hhclNpemUgY2hh
clNpemUpCiB7CiAgICAgaWYgKGhhc0NvZGUoKSkgewogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAg
ICAgICAgaWYgKG1fc3RhdGUgIT0gSklUQ29kZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXI4
KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczhCaXRDb2RlTWF0Y2hPbmx5KCkpKQotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICgoY2hhclNp
emUgPT0gWWFycjo6Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczE2Qml0Q29kZU1hdGNo
T25seSgpKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwog
I2Vsc2UKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAg
IH0KIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6
Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNo
YXJTaXplKQoreworICAgIGlmIChoYXNNYXRjaE9ubHlDb2RlRm9yKGNoYXJTaXplKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgY29tcGlsZU1hdGNoT25seSgmdm0sIGNoYXJTaXplKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dElubGluZXMuaAkocmV2aXNpb24gMTk5MDQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3
IEBAIEpTVmFsdWUgUmVnRXhwT2JqZWN0OjpleGVjSW5saW5lKEV4ZWNTdGEKICAgICBTdHJpbmcg
aW5wdXQgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOyAvLyBGSVhNRTogSGFuZGxlIGVycm9ycy4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTE0NQogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGJvb2wgZ2xvYmFsT3JTdGlja3kgPSByZWdFeHAt
Pmdsb2JhbCgpIHx8IHJlZ0V4cC0+c3RpY2t5KCk7CisgICAgYm9vbCBnbG9iYWxPclN0aWNreSA9
IHJlZ0V4cC0+Z2xvYmFsT3JTdGlja3koKTsKIAogICAgIHVuc2lnbmVkIGxhc3RJbmRleDsKICAg
ICBpZiAoZ2xvYmFsT3JTdGlja3kpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk5MDQwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgU3RyaW5nIHN1YnN0
aXR1dGVCYWMKICAgICByZXR1cm4gc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC50b1N0cmluZygpOwog
fQogCi1zdGF0aWMgaW5saW5lIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3Rv
ciwgUmVnRXhwKiByZWcpCitpbmxpbmUgU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlc0lu
bGluZShjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3Qg
aW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZykKIHsKICAgICBzaXplX3QgaSA9IHJlcGxhY2VtZW50
LmZpbmQoJyQnKTsKICAgICBpZiAoVU5MSUtFTFkoaSAhPSBub3RGb3VuZCkpCkBAIC0yOTEsNiAr
MjkxLDExIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXIKICAgICBy
ZXR1cm4gcmVwbGFjZW1lbnQ7CiB9CiAKK1N0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMo
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCog
b3ZlY3RvciwgUmVnRXhwKiByZWcpCit7CisgICAgcmV0dXJuIHN1YnN0aXR1dGVCYWNrcmVmZXJl
bmNlc0lubGluZShyZXBsYWNlbWVudCwgc291cmNlLCBvdmVjdG9yLCByZWcpOworfQorCiBzdHJ1
Y3QgU3RyaW5nUmFuZ2UgewogICAgIFN0cmluZ1JhbmdlKGludCBwb3MsIGludCBsZW4pCiAgICAg
ICAgIDogcG9zaXRpb24ocG9zKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlzaW9uIDE5OTA0MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgT2JqZWN0UHJvdG90eXBlOwor
Y2xhc3MgUmVnRXhwOwogY2xhc3MgUmVnRXhwT2JqZWN0OwogCiBjbGFzcyBTdHJpbmdQcm90b3R5
cGUgOiBwdWJsaWMgU3RyaW5nT2JqZWN0IHsKQEAgLTYyLDYgKzYzLDggQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nKAogICAgIEV4ZWNT
dGF0ZSosIEpTU3RyaW5nKiB0aGlzVmFsdWUsIFJlZ0V4cE9iamVjdCogc2VhcmNoVmFsdWUsIEpT
U3RyaW5nKiByZXBsYWNlVmFsdWUpOwogCitTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2Vz
KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQq
IG92ZWN0b3IsIFJlZ0V4cCogcmVnKTsKKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIoRXhlY1N0YXRlKik7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxOTkw
NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIFZNX2gKICNkZWZpbmUgVk1faAogCisjaW5jbHVk
ZSAiQ29uY3VycmVudEpJVExvY2suaCIKICNpbmNsdWRlICJDb250cm9sRmxvd1Byb2ZpbGVyLmgi
CiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxs
b2NhdG9yLmgiCkBAIC01NDEsNiArNTQyLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxUeXBlZEFy
cmF5Q29udHJvbGxlcj4gbV90eXBlZEFycmF5Q29udHJvbGxlcjsKICAgICBSZWdFeHBDYWNoZSog
bV9yZWdFeHBDYWNoZTsKICAgICBCdW1wUG9pbnRlckFsbG9jYXRvciBtX3JlZ0V4cEFsbG9jYXRv
cjsKKyAgICBDb25jdXJyZW50SklUTG9jayBtX3JlZ0V4cEFsbG9jYXRvckxvY2s7CiAKICNpZiBF
TkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWdFeHAqPiBS
VFRyYWNlTGlzdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwu
anMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Np
bXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMSBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiAvKGYpKG8pKG8pLy5leGVjKCJi
YXIiKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlmIChyZXN1bHQgIT09IG51bGwp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZv
bGRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJl
dHVybiAvKGYpKG8pKG8pLy5leGVjKCJmb28iKTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOwor
ICAgIGlmIChyZXN1bHQubGVuZ3RoICE9IDQpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKKyAgICBpZiAocmVzdWx0WzBdICE9ICJmb28iKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgaWYgKHJlc3VsdFsxXSAh
PSAiZiIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAg
ICBpZiAocmVzdWx0WzJdICE9ICJvIikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworICAgIGlmIChyZXN1bHRbM10gIT0gIm8iKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVn
ZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1
cm4gLyhmKShvKShvKS8udGVzdCgiYmFyIik7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAg
ICBpZiAocmVzdWx0ICE9IGZhbHNlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3NpbXBsZS1y
ZWdleHAtdGVzdC1mb2xkaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1
bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gLyhmKShvKShvKS8udGVzdCgiZm9vIik7Cit9CisK
K25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAg
IHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0ICE9IHRydWUpCisgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5jcHAJKHJldmlzaW9uIDE5
OTA0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLQogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KQEAgLTMwLDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogCiAjaW5jbHVkZSAiWWFyci5oIgorI2luY2x1ZGUgIllh
cnJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJyLmgJKHJldmlzaW9uIDE5OTA0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2lmbmRlZiBZYXJyX2gKICNk
ZWZpbmUgWWFycl9oCiAKLSNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJZ
YXJyUGF0dGVybi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewpAQCAtNjMs
NiArNjIsOCBAQCBlbnVtIFlhcnJDaGFyU2l6ZSB7CiAgICAgQ2hhcjE2CiB9OwogCitzdHJ1Y3Qg
Qnl0ZWNvZGVQYXR0ZXJuOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6WWFycgogCiAjZW5kaWYg
Ly8gWWFycl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDE5OTA0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MjIsNiArMTUyMiw5
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFpbnB1dC5pc0F2YWlsYWJsZUlucHV0KDApKQogICAg
ICAgICAgICAgcmV0dXJuIG9mZnNldE5vTWF0Y2g7CiAKKyAgICAgICAgaWYgKHBhdHRlcm4tPm1f
bG9jaykKKyAgICAgICAgICAgIHBhdHRlcm4tPm1fbG9jay0+bG9jaygpOworICAgICAgICAKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdHRlcm4tPm1fYm9keS0+bV9udW1TdWJw
YXR0ZXJucyArIDE7ICsraSkKICAgICAgICAgICAgIG91dHB1dFtpIDw8IDFdID0gb2Zmc2V0Tm9N
YXRjaDsKIApAQCAtMTU0MSw2ICsxNTQ0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcGF0dGVybi0+
bV9hbGxvY2F0b3ItPnN0b3BBbGxvY2F0b3IoKTsKIAogICAgICAgICBBU1NFUlQoKHJlc3VsdCA9
PSBKU1JlZ0V4cE1hdGNoKSA9PSAob3V0cHV0WzBdICE9IG9mZnNldE5vTWF0Y2gpKTsKKworICAg
ICAgICBpZiAocGF0dGVybi0+bV9sb2NrKQorICAgICAgICAgICAgcGF0dGVybi0+bV9sb2NrLT51
bmxvY2soKTsKKyAgICAgICAgCiAgICAgICAgIHJldHVybiBvdXRwdXRbMF07CiAgICAgfQogCkBA
IC0xNTgxLDEzICsxNTg4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9jdXJyZW50QWx0ZXJuYXRp
dmVJbmRleCA9IDA7CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVy
bj4gY29tcGlsZShCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZVBhdHRlcm4+IGNvbXBpbGUoQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFs
bG9jYXRvciwgQ29uY3VycmVudEpJVExvY2sqIGxvY2spCiAgICAgewogICAgICAgICByZWdleEJl
Z2luKG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zLCBtX3BhdHRlcm4ubV9ib2R5LT5tX2NhbGxG
cmFtZVNpemUsIG1fcGF0dGVybi5tX2JvZHktPm1fYWx0ZXJuYXRpdmVzWzBdLT5vbmNlVGhyb3Vn
aCgpKTsKICAgICAgICAgZW1pdERpc2p1bmN0aW9uKG1fcGF0dGVybi5tX2JvZHkpOwogICAgICAg
ICByZWdleEVuZCgpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2Rl
UGF0dGVybj4oV1RGTW92ZShtX2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZv
LCBtX3BhdHRlcm4sIGFsbG9jYXRvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEJ5dGVjb2RlUGF0dGVybj4oV1RGTW92ZShtX2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50
aGVzZXNJbmZvLCBtX3BhdHRlcm4sIGFsbG9jYXRvciwgbG9jayk7CiAgICAgfQogCiAgICAgdm9p
ZCBjaGVja0lucHV0KHVuc2lnbmVkIGNvdW50KQpAQCAtMjAzMiw5ICsyMDM5LDkgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4+IG1fYWxsUGFy
ZW50aGVzZXNJbmZvOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0
ZUNvbXBpbGUoWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCitzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJy
UGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvciwgQ29uY3Vy
cmVudEpJVExvY2sqIGxvY2spCiB7Ci0gICAgcmV0dXJuIEJ5dGVDb21waWxlcihwYXR0ZXJuKS5j
b21waWxlKGFsbG9jYXRvcik7CisgICAgcmV0dXJuIEJ5dGVDb21waWxlcihwYXR0ZXJuKS5jb21w
aWxlKGFsbG9jYXRvciwgbG9jayk7CiB9CiAKIHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBh
dHRlcm4qIGJ5dGVjb2RlLCBjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQqIG91dHB1dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRl
cnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJ
bnRlcnByZXRlci5oCShyZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBZYXJySW50ZXJwcmV0ZXJfaAogI2RlZmluZSBZYXJySW50ZXJwcmV0ZXJfaAogCisj
aW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKICNpbmNsdWRlICJZYXJyUGF0dGVybi5oIgog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTMzNywxMCArMzM4LDExIEBAIHB1YmxpYzoKIHN0cnVjdCBC
eXRlY29kZVBhdHRlcm4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIEJ5dGVjb2RlUGF0dGVybihzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPiBib2R5
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4+JiBwYXJlbnRoZXNlc0lu
Zm9Ub0Fkb3B0LCBZYXJyUGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFs
bG9jYXRvcikKKyAgICBCeXRlY29kZVBhdHRlcm4oc3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5j
dGlvbj4gYm9keSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiYgcGFy
ZW50aGVzZXNJbmZvVG9BZG9wdCwgWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKSVRMb2NrKiBsb2NrKQogICAgICAgICA6IG1f
Ym9keShXVEZNb3ZlKGJvZHkpKQogICAgICAgICAsIG1fZmxhZ3MocGF0dGVybi5tX2ZsYWdzKQog
ICAgICAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKKyAgICAgICAgLCBtX2xvY2sobG9jaykK
ICAgICB7CiAgICAgICAgIG1fYm9keS0+dGVybXMuc2hyaW5rVG9GaXQoKTsKIApAQCAtMzY2LDYg
KzM2OCw3IEBAIHB1YmxpYzoKICAgICAvLyBFYWNoIEJ5dGVjb2RlUGF0dGVybiBpcyBhc3NvY2lh
dGVkIHdpdGggYSBSZWdFeHAsIGVhY2ggUmVnRXhwIGlzIGFzc29jaWF0ZWQKICAgICAvLyB3aXRo
IGEgVk0uICBDYWNoZSBhIHBvaW50ZXIgdG8gb3V0IFZNJ3MgbV9yZWdFeHBBbGxvY2F0b3IuCiAg
ICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAgIENvbmN1cnJlbnRKSVRM
b2NrKiBtX2xvY2s7CiAKICAgICBDaGFyYWN0ZXJDbGFzcyogbmV3bGluZUNoYXJhY3RlckNsYXNz
OwogICAgIENoYXJhY3RlckNsYXNzKiB3b3JkY2hhckNoYXJhY3RlckNsYXNzOwpAQCAtMzc1LDcg
KzM3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDaGFyYWN0ZXJD
bGFzcz4+IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CiB9OwogCi1KU19FWFBPUlRfUFJJVkFURSBz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYs
IEJ1bXBQb2ludGVyQWxsb2NhdG9yKik7CitKU19FWFBPUlRfUFJJVkFURSBzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQb2ludGVy
QWxsb2NhdG9yKiwgQ29uY3VycmVudEpJVExvY2sqID0gbnVsbHB0cik7CiBKU19FWFBPUlRfUFJJ
VkFURSB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiwgY29uc3QgU3RyaW5nJiBp
bnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpOwogdW5zaWduZWQgaW50ZXJw
cmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCk7CiB1bnNpZ25lZCBpbnRlcnByZXQo
Qnl0ZWNvZGVQYXR0ZXJuKiwgY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCogb3V0cHV0KTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTkwNDAp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE2LTAzLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGFuZCBGVEwgc2hvdWxkIGNvbnN0YW50LWZvbGQgUmVnRXhwRXhlYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgTWFrZSBleGVjdXRlSW5zZXJ0aW9ucygp
IHJldHVybiB0aGUgYW1vdW50IGJ5IHdoaWNoIHRoZSB2ZWN0b3IgaW5jcmVhc2VkIGluIHNpemUu
IFRoaXMgaXMgYQorICAgICAgICBjb252ZW5pZW50IGZlYXR1cmUgdGhhdCBJIHVzZSBpbiBERkc6
Okluc2VydGlvblNldC4KKworICAgICAgICAqIHd0Zi9JbnNlcnRpb24uaDoKKyAgICAgICAgKFdU
Rjo6ZXhlY3V0ZUluc2VydGlvbnMpOgorCiAyMDE2LTAzLTMxICBLb25zdGFudGluIFRva2FyZXYg
IDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBSZW1vdmVkIGxlZnRvdmVycyBvZiBFTkFC
TEUoSU5TUEVDVE9SKSBhbmQgRU5BQkxFKFZJRVdQT1JUKS4KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0luc2VydGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCShy
ZXZpc2lvbiAxOTkwNDApCisrKyBTb3VyY2UvV1RGL3d0Zi9JbnNlcnRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01NSwxNCArNTUsMTUgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFRhcmdldFZlY3RvclR5cGUsIHR5cGVuYW1lIEluc2VydGlvblZlY3RvclR5cGU+
Ci12b2lkIGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZlY3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0
aW9uVmVjdG9yVHlwZSYgaW5zZXJ0aW9ucykKK3NpemVfdCBleGVjdXRlSW5zZXJ0aW9ucyhUYXJn
ZXRWZWN0b3JUeXBlJiB0YXJnZXQsIEluc2VydGlvblZlY3RvclR5cGUmIGluc2VydGlvbnMpCiB7
Ci0gICAgaWYgKCFpbnNlcnRpb25zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRhcmdl
dC5ncm93KHRhcmdldC5zaXplKCkgKyBpbnNlcnRpb25zLnNpemUoKSk7CisgICAgc2l6ZV90IG51
bUluc2VydGlvbnMgPSBpbnNlcnRpb25zLnNpemUoKTsKKyAgICBpZiAoIW51bUluc2VydGlvbnMp
CisgICAgICAgIHJldHVybiAwOworICAgIHRhcmdldC5ncm93KHRhcmdldC5zaXplKCkgKyBudW1J
bnNlcnRpb25zKTsKICAgICBzaXplX3QgbGFzdEluZGV4ID0gdGFyZ2V0LnNpemUoKTsKICAgICBz
aXplX3Qgb3JpZ2luYWxUYXJnZXRTaXplID0gdGFyZ2V0LnNpemUoKTsKLSAgICBmb3IgKHNpemVf
dCBpbmRleEluSW5zZXJ0aW9ucyA9IGluc2VydGlvbnMuc2l6ZSgpOyBpbmRleEluSW5zZXJ0aW9u
cy0tOykgeworICAgIGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gbnVtSW5zZXJ0aW9u
czsgaW5kZXhJbkluc2VydGlvbnMtLTspIHsKICAgICAgICAgQVNTRVJUKCFpbmRleEluSW5zZXJ0
aW9ucyB8fCBpbnNlcnRpb25zW2luZGV4SW5JbnNlcnRpb25zXS5pbmRleCgpID49IGluc2VydGlv
bnNbaW5kZXhJbkluc2VydGlvbnMgLSAxXS5pbmRleCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNF
RChvcmlnaW5hbFRhcmdldFNpemUsIGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4
KCkgPCBvcmlnaW5hbFRhcmdldFNpemUpOwogICAgICAgICBzaXplX3QgZmlyc3RJbmRleCA9IGlu
c2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4KCkgKyBpbmRleEluSW5zZXJ0aW9uczsK
QEAgLTczLDYgKzc0LDcgQEAgdm9pZCBleGVjdXRlSW5zZXJ0aW9ucyhUYXJnZXRWZWN0b3JUeXBl
JgogICAgICAgICBsYXN0SW5kZXggPSBmaXJzdEluZGV4OwogICAgIH0KICAgICBpbnNlcnRpb25z
LnJlc2l6ZSgwKTsKKyAgICByZXR1cm4gbnVtSW5zZXJ0aW9uczsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTkwNDApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0wMy0xOSAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBhbmQgRlRMIHNob3VsZCBjb25z
dGFudC1mb2xkIFJlZ0V4cEV4ZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgor
CisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZv
bGRpbmctZmFpbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanM6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1m
b2xkaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhl
Yy1mb2xkaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuaHRtbDog
QWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmh0bWw6IEFkZGVkLgorCiAy
MDE2LTA0LTA0ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NT
IFRyaWFuZ2xlcyBSZW5kZXJpbmcgUmVncmVzc2lvbiBhZmZlY3RpbmcgQ1NTIFJpYmJvbnMuCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1y
ZWdleHAtZXhlYy1mb2xkaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4
ZWMtZm9sZGluZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNl
cHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMt
Zm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9s
ZGluZy1mYWlsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitK
U1JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbAorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1m
YWlsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1y
ZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEy
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zaW1w
bGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRp
bmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdl
eHAtZXhlYy1mb2xkaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
aW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc2ltcGxlLXJl
Z2V4cC10ZXN0LWZvbGRpbmcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
bm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4
cC10ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmctZmFpbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MCBAQAorSlNSZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXJlZ2V4cC10ZXN0LWZv
bGRpbmctZmFpbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
aW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1w
bGUtcmVnZXhwLXRlc3QtZm9sZGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Np
bXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFp
bC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3NpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1IEBACisoZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAw
OyArK2kpCisgICAgICAgIC9mb28vLmV4ZWMoImJhciIpOworfSkoKTsKKwpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKKyAgICAgICAgL2Zvby8uZXhlYygiZm9vIik7Cit9KSgp
OworCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUtcmVn
ZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwuanMJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW1wbGUt
cmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBA
QAorKGZ1bmN0aW9uKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQor
ICAgICAgICAvZm9vLy50ZXN0KCJiYXIiKTsKK30pKCk7CisKSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1yZWdl
eHAtdGVzdC1mb2xkaW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1IEBACisoZnVuY3Rpb24oKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDAwOyArK2kpCisgICAgICAgIC9mb28vLnRlc3QoImZvbyIpOworfSkoKTsKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>