<?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>152365</bug_id>
          
          <creation_ts>2015-12-16 15:31:17 -0800</creation_ts>
          <short_desc>B3-&gt;Air lowering incorrectly copy-propagates over ZExt32&apos;s</short_desc>
          <delta_ts>2015-12-21 08:17:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>150279</blocked>
    
    <blocked>152478</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1149781</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-16 15:31:17 -0800</bug_when>
    <thetext>Copy propagating over ZExt32&apos;s seemed pretty clever at the time, but this is not something that belongs in the lowering.  The problem is that it assumes that certain operations zero-extend for you.  But that&apos;s not the case if the operation spills.

Here are some possible solutions:

1) Just turn off copy propagation: This will work, but it will cause pointless zero-extension operations.

2) (1) + add copy propagation to Air: We could teach Air which operations do a 32-bit zero-extend as part of their Def if the destination is a register.  Like, we could add DefZExt32 and UseDefZExt32.  This means that the copy propagation would run after register allocation.

3) (2) + teach IRC to coalesce Move32&apos;s but without removing them.  Then instead of full-blown copy propagation, we can just have a forward analysis that proves which locations (registers, spill slots, etc) have a value that is already zero-extended.  The part of this that deals with spill slots could be flow-insensitive while the register part is flow-sensitive.

4) (3) + teach IRC that a Move32 is only coalescable if all of the values that flow into it are already zero-extended based on some forward flow analysis.  I think that this will work because coalescing only happens if both variables get a register, which means that the meaning of DefZExt32 and UseDefZExt32 is preserved.

5) Mandate that DefZExt32 and UseDefZExt32 don&apos;t admitsStack(), and keep the copy propagation in the lowering.  This means substantially less optimal code on x86.

Of these options, I think that I like (4) best, but I still need to convince myself that it&apos;s right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149787</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-16 15:46:44 -0800</bug_when>
    <thetext>I should clarify that (4) does not require any copy propagation later.  I think that this makes this approach the most scalable as well because it doesn&apos;t require a flow-sensitive analysis.  Tmp&apos;s tend to have an SSA-like quality to them, so flow sensitivity buys relatively little.

We could even use this to convert more Move&apos;s into Move32&apos;s.  Currently the instruction selector uses Move&apos;s for 32-bit values because Move32&apos;s are not coalescable.  But they would become coalescable if we had an analysis that showed that the value is already zero-extended.  There are two ways we could go about this:

i) Have the instruction selector emit Move32&apos;s for Int32&apos;s.  Then coalesce Move32&apos;s that are proven to only see zero-extended values.  This means that if we screw up our zero-extension analysis in Air (by being too conservative), we&apos;ll end up with Move32&apos;s that didn&apos;t get coalesced.

ii) Have the instruction selector still emit Move&apos;s for Int32&apos;s, but then have an analysis that converts the Move&apos;s into coalescable Move32&apos;s.

The second option, (ii), has the interesting property that we could convert Move&apos;s to Move32&apos;s using either backward or forward reasoning.

Forward reasoning: As I already described above.

Backward reasoning: Add the notion of Use32 and make UseDefZExt32 imply that the use is  like Use32.  If the destination of a Move is only used by Use32&apos;s then we can use Move32 instead.

Either way, the newly minted Move32 will be register-coalescable, in the sense that if the definitions of the Move32&apos;s source all use a register then the Move32 behaves like Move. From the standpoint of IRC, it means that if the source of the Move32 doesn&apos;t get spilled then it&apos;s coalescable, which in turn means that it&apos;s just coalescable no matter what.

Probably what this means is an analysis that IRC uses, which tells it which Move&apos;s and Move32&apos;s are really register-coalescable Move32&apos;s. IRC will either remove them, or turn them into Move&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150365</commentid>
    <comment_count>2</comment_count>
      <attachid>267646</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-18 11:41:41 -0800</bug_when>
    <thetext>Created attachment 267646
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150385</commentid>
    <comment_count>3</comment_count>
      <attachid>267650</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-18 14:18:06 -0800</bug_when>
    <thetext>Created attachment 267650
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150400</commentid>
    <comment_count>4</comment_count>
      <attachid>267652</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-18 15:27:19 -0800</bug_when>
    <thetext>Created attachment 267652
probably ok

I haven&apos;t tested it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150487</commentid>
    <comment_count>5</comment_count>
      <attachid>267677</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-18 19:52:13 -0800</bug_when>
    <thetext>Created attachment 267677
starting to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150497</commentid>
    <comment_count>6</comment_count>
      <attachid>267681</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-18 21:34:35 -0800</bug_when>
    <thetext>Created attachment 267681
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150498</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-18 21:36:55 -0800</bug_when>
    <thetext>Attachment 267681 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/air/AirInst.h:113:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirInstInlines.h:58:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirInstInlines.h:102:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirUseCounts.h:80:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6080:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6097:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6097:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6099:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6099:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6101:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6103:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6105:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:93:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:219:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:226:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:235:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirInst.cpp:41:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirSpillEverything.cpp:70:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirSpillEverything.cpp:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirEliminateDeadCode.cpp:83:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirTmpWidth.cpp:40:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirTmpWidth.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirAllocateStack.cpp:107:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirAllocateStack.cpp:151:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:60:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:106:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:188:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:358:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:429:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 29 in 24 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>1150516</commentid>
    <comment_count>8</comment_count>
      <attachid>267681</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-19 00:32:57 -0800</bug_when>
    <thetext>Comment on attachment 267681
the patch

This creates a mega class that knows about all the states, all the time. This is against WebKit&apos;s policies of reducing dependencies. Classes of limited scopes are typically less buggy and easier to hack on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150529</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-19 06:48:55 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 267681 [details]
&gt; the patch
&gt; 
&gt; This creates a mega class that knows about all the states, all the time.
&gt; This is against WebKit&apos;s policies of reducing dependencies. Classes of
&gt; limited scopes are typically less buggy and easier to hack on.

I don&apos;t believe that&apos;s a WebKit policy, and if it is, it surely doesn&apos;t apply to cases where we use classes to prevent threading lots of parameters trough helper functions. You don&apos;t need to do such threading if those helpers already have access to some shared state object. Its not useful to apply policies about dependencies to classes that are used as a short-lived scope. 

In the DFG we have always written phases as classes. This follows a long tradition of doing so in other compilers. For example most llvm phases so this as well. 

It also follows a long tradition of using classes this way in JSC:

- JSGlobalObject knows about all of the state of a realm.
- VM knows about all of the state of the Vm. 
- DFG::Graph knows about all of the state of DFG IR. 
- FTL::State knows about all of the state of an FTL compilation. 
- JIT knows about all of the state of a baseline compilation. 
- PolymoprphicAccess knows about all of the state of an inline cache compilation. 
- etc. 

I&apos;m surprised that you don&apos;t want to follow the established style of writing compiler phases in WebKit. The use of classes to hold the state needed during a compile and then making the helpers be private instance methods goes back to the days of the baseline JIT - i.e. it predates either of our involvement in the VM. The DFG followed this style consistently, and most of the B3 code follows it with the exception of:

- phases that can get by just using closures. I&apos;m still not sure if that&apos;s a good style but nobody has objected.
- IRC, which deliberately goes against the established style. 

Consistency is important. Code is easier to hack if it all flows in a similar way. I think that your argument about controlling dependencies is ultimately weaker than the need for consistency, and if your argument were to be accepted then we would probably need to refactor existing compiler code to follow it. We&apos;re not going to do that since it would be a tremendous amount of code churn and it&apos;s not clear what it would improve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150535</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-19 07:58:54 -0800</bug_when>
    <thetext>I am not arguing against a class for the phase. That is probably a good idea for consistency.

What I said is we should not have a single class that knows all the states of the program. You can have a class with the phase and still have a separate class for coloring. 99% of the states of IteratedRegisterCoalescingAllocator are only useful in the narrow context of coloring. It is already complicated as it is. It will only get worse as we improve its perf. We should move things out of it, not make it even more complicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150536</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-19 08:12:06 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I am not arguing against a class for the phase. That is probably a good idea
&gt; for consistency.
&gt; 
&gt; What I said is we should not have a single class that knows all the states
&gt; of the program. You can have a class with the phase and still have a
&gt; separate class for coloring. 99% of the states of
&gt; IteratedRegisterCoalescingAllocator are only useful in the narrow context of
&gt; coloring. It is already complicated as it is. It will only get worse as we
&gt; improve its perf. We should move things out of it, not make it even more
&gt; complicated.

Ah!  I&apos;m fine with this approach. 

Do you want to do this in your refactoring patch, or should I do it in this patch?  I&apos;d be fine waiting for your refactoring if you think it&apos;s something you can do today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150538</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-19 08:35:45 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Ah!  I&apos;m fine with this approach. 
&gt; 
&gt; Do you want to do this in your refactoring patch, or should I do it in this
&gt; patch?  I&apos;d be fine waiting for your refactoring if you think it&apos;s something
&gt; you can do today.

It will probably be easier to merge this change over the refactoring than the other way around. I&apos;ll add a phase class to the refactoring.

I&apos;ll rest a bit first, Jet-lag is kicking hard. I&apos;ll try to look before PST evening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150580</commentid>
    <comment_count>13</comment_count>
      <attachid>267703</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-19 13:32:24 -0800</bug_when>
    <thetext>Created attachment 267703
rebased

I&apos;m not sure if this works yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150584</commentid>
    <comment_count>14</comment_count>
      <attachid>267704</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-19 14:06:42 -0800</bug_when>
    <thetext>Created attachment 267704
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150585</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-19 14:08:00 -0800</bug_when>
    <thetext>Attachment 267704 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/air/AirInst.h:113:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirInstInlines.h:58:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirInstInlines.h:102:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirUseCounts.h:80:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6398:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6415:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6415:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6417:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6417:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6419:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6421:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6423:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:93:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:219:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:226:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:235:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirInst.cpp:41:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOSRExitHandle.cpp:44:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:4228:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/JavaScriptCore/b3/air/AirSpillEverything.cpp:70:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirSpillEverything.cpp:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirEliminateDeadCode.cpp:83:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirTmpWidth.cpp:55:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirTmpWidth.cpp:92:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirAllocateStack.cpp:107:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirAllocateStack.cpp:151:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:783:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:852:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 28 in 27 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>1150586</commentid>
    <comment_count>16</comment_count>
      <attachid>267705</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-19 14:08:36 -0800</bug_when>
    <thetext>Created attachment 267705
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150587</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-19 14:10:44 -0800</bug_when>
    <thetext>Attachment 267705 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/air/AirInst.h:113:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirInstInlines.h:58:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirInstInlines.h:102:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirUseCounts.h:80:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6398:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6415:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6415:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6417:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6417:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6419:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6421:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6423:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:93:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:219:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:226:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirLiveness.h:235:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirInst.cpp:41:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOSRExitHandle.cpp:44:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirSpillEverything.cpp:70:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirSpillEverything.cpp:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirEliminateDeadCode.cpp:83:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirTmpWidth.cpp:55:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirTmpWidth.cpp:92:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirAllocateStack.cpp:107:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirAllocateStack.cpp:151:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:783:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:852:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 27 in 27 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>1150641</commentid>
    <comment_count>18</comment_count>
      <attachid>267705</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-20 06:30:12 -0800</bug_when>
    <thetext>Comment on attachment 267705
the patch

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

That&apos;s pretty neat. A few questions bellow:

&gt; Source/JavaScriptCore/ChangeLog:43
&gt; +        could make CCalls on slow paths use a variant of CCallSpecial that promises not to clobber any
&gt; +        registers, and then have it emit spill code around the call itself. LLVM probably gets this
&gt; +        optimization from its live range splitting.

Tell me when the benchmark runs, I&apos;ll have a look too.

&gt; Source/JavaScriptCore/b3/air/AirArg.h:810
&gt; +            functor(m_base, Use, GP, argRole == UseAddr ? argWidth : pointerWidth());

I am not following this.

Why is UseAddr different from actual Add/Index use?

&gt; Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:661
&gt; -        return mayBeCoalescable(inst) &amp;&amp; inst.args[0].tmp() == inst.args[1].tmp();
&gt; +        return mayBeCoalescableImpl(inst, nullptr) &amp;&amp; inst.args[0].tmp() == inst.args[1].tmp();

It may be easier to just not use mayBeCoalescableImpl() and just check if the opcode is a move and the temps are equals.

&gt; Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:1090
&gt; +            // FIXME: One way to optimize this code is to remove the recomputation inside the fixpoint.
&gt; +            // We need to recompute because spilling adds tmps, but we could just update tmpWidth when we
&gt; +            // add those tmps.
&gt; +            m_tmpWidth.recompute(m_code);

I thought you would only do that after spilling.
Often, FP does not spill so you could reuse everything already computed.

Updating just the new tmps is a good idea.

&gt; Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:1141
&gt; +                if (mayBeCoalescable &amp;&amp; inst.args[0].isTmp() &amp;&amp; inst.args[1].isTmp()

You don&apos;t really need to check &quot;inst.args[0].isTmp() &amp;&amp; inst.args[1].isTmp()&quot; since it is implied by mayBeCoalescable.

&gt; Source/JavaScriptCore/b3/air/AirTmpWidth.cpp:80
&gt; +                    if (inst.args[0].value() &lt;= std::numeric_limits&lt;int8_t&gt;::max())
&gt; +                        widths.def = std::max(widths.def, Arg::Width8);

Not getting this. If I have a large negative number, wouldn&apos;t it end up as Width8?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150643</commentid>
    <comment_count>19</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-20 07:38:44 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Comment on attachment 267705 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267705&amp;action=review
&gt; 
&gt; That&apos;s pretty neat. A few questions bellow:
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:43
&gt; &gt; +        could make CCalls on slow paths use a variant of CCallSpecial that promises not to clobber any
&gt; &gt; +        registers, and then have it emit spill code around the call itself. LLVM probably gets this
&gt; &gt; +        optimization from its live range splitting.
&gt; 
&gt; Tell me when the benchmark runs, I&apos;ll have a look too.

It runs if you apply this patch. 

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirArg.h:810
&gt; &gt; +            functor(m_base, Use, GP, argRole == UseAddr ? argWidth : pointerWidth());
&gt; 
&gt; I am not following this.
&gt; 
&gt; Why is UseAddr different from actual Add/Index use?

UseAddr is what Lea does. You could have a 32-bit Lea. A 32-bit Lea will have a Width32 UseAddr. If you do:

Lea32 4(%rax), %edx

Then you&apos;re actually only using the low 32 bits of %rax. This is unlike all other occurrences of 4(%rax), which use pointerWidth bits. 

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:661
&gt; &gt; -        return mayBeCoalescable(inst) &amp;&amp; inst.args[0].tmp() == inst.args[1].tmp();
&gt; &gt; +        return mayBeCoalescableImpl(inst, nullptr) &amp;&amp; inst.args[0].tmp() == inst.args[1].tmp();
&gt; 
&gt; It may be easier to just not use mayBeCoalescableImpl() and just check if
&gt; the opcode is a move and the temps are equals.

There is some small benefit to making the Impl variant private. In particular the protocol of TmpWidth* being null is currently encapsulated, which is nice. 

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:1090
&gt; &gt; +            // FIXME: One way to optimize this code is to remove the recomputation inside the fixpoint.
&gt; &gt; +            // We need to recompute because spilling adds tmps, but we could just update tmpWidth when we
&gt; &gt; +            // add those tmps.
&gt; &gt; +            m_tmpWidth.recompute(m_code);
&gt; 
&gt; I thought you would only do that after spilling.
&gt; Often, FP does not spill so you could reuse everything already computed.
&gt; 
&gt; Updating just the new tmps is a good idea.

I want to add all of those optimization a but since this is a bug fix patch and since it doesn&apos;t hurt our performance on any benchmark, I think it&apos;s better to land this naive version and optimize it later. How you update TmpWidth when you add temps in the spiller is not super obvious, so it&apos;s the kind of thing that is safer to do in a follow up patch. 

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:1141
&gt; &gt; +                if (mayBeCoalescable &amp;&amp; inst.args[0].isTmp() &amp;&amp; inst.args[1].isTmp()
&gt; 
&gt; You don&apos;t really need to check &quot;inst.args[0].isTmp() &amp;&amp;
&gt; inst.args[1].isTmp()&quot; since it is implied by mayBeCoalescable.
&gt; 

True. 

&gt; &gt; Source/JavaScriptCore/b3/air/AirTmpWidth.cpp:80
&gt; &gt; +                    if (inst.args[0].value() &lt;= std::numeric_limits&lt;int8_t&gt;::max())
&gt; &gt; +                        widths.def = std::max(widths.def, Arg::Width8);
&gt; 
&gt; Not getting this. If I have a large negative number, wouldn&apos;t it end up as
&gt; Width8?

There is a non-negative check that guards all of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150702</commentid>
    <comment_count>20</comment_count>
      <attachid>267705</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-21 02:11:49 -0800</bug_when>
    <thetext>Comment on attachment 267705
the patch

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

Looks good to me.

The Lea case is tricky. I am glad you thought about it right away.

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +          ascribe a type to Tmp&apos;s. We could ascribe types to Tmp&apos;s, but then coalescing would become

Not sure what the possessive form refers to there. &quot;Tmp&apos;s&quot; -&gt; &quot;Tmps&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150738</commentid>
    <comment_count>21</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-21 07:49:18 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Comment on attachment 267705 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267705&amp;action=review
&gt; 
&gt; Looks good to me.
&gt; 
&gt; The Lea case is tricky. I am glad you thought about it right away.
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:18
&gt; &gt; +          ascribe a type to Tmp&apos;s. We could ascribe types to Tmp&apos;s, but then coalescing would become
&gt; 
&gt; Not sure what the possessive form refers to there. &quot;Tmp&apos;s&quot; -&gt; &quot;Tmps&quot;?

Yeah, that&apos;s what I meant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150742</commentid>
    <comment_count>22</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-21 08:17:00 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/194331</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267646</attachid>
            <date>2015-12-18 11:41:41 -0800</date>
            <delta_ts>2015-12-18 14:18:06 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12339</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lv
biAxOTQxNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU4LDE2ICsxNTgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
ICAgIH0KIAotICAgIC8vIE5PVEU6IFRoaXMgZW50aXJlIG1lY2hhbmlzbSBjb3VsZCBiZSBkb25l
IG92ZXIgQWlyLCBpZiB3ZSBmZWx0IHRoYXQgdGhpcyB3b3VsZCBiZSBmYXN0IGVub3VnaC4KLSAg
ICAvLyBGb3Igbm93IHdlJ3JlIGFzc3VtaW5nIHRoYXQgaXQncyBmYXN0ZXIgdG8gZG8gdGhpcyBo
ZXJlLCBzaW5jZSBhbmFseXppbmcgQjMgaXMgc28gY2hlYXAuCiAgICAgYm9vbCBzaG91bGRDb3B5
UHJvcGFnYXRlKFZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodmFsdWUtPm9w
Y29kZSgpKSB7CiAgICAgICAgIGNhc2UgVHJ1bmM6CiAgICAgICAgIGNhc2UgSWRlbnRpdHk6CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBaRXh0MzI6Ci0gICAgICAgICAg
ICByZXR1cm4gaGlnaEJpdHNBcmVaZXJvKHZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE3NjIsMTEgKzE3
NTgsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBaRXh0MzI6IHsKLSAg
ICAgICAgICAgIGlmIChoaWdoQml0c0FyZVplcm8obV92YWx1ZS0+Y2hpbGQoMCkpKSB7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKHRtcChtX3ZhbHVlLT5jaGlsZCgwKSkgPT0gdG1wKG1fdmFsdWUp
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAg
IGFwcGVuZFVuT3A8TW92ZTMyLCBBaXI6Ok9vcHM+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oCShyZXZpc2lvbiAxOTQxNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOSArMTAxLDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gTGlrZSBVc2Ugb2YgYWRkcmVzcywgRGVmIG9mIGFkZHJlc3MgZG9lcyBub3Qg
bWVhbiBlc2NhcGUuCiAgICAgICAgIERlZiwKIAorICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lh
bCB2YXJpYW50IG9mIERlZiB0aGF0IGltcGxpZXMgdGhhdCB0aGUgdXBwZXIgYml0cyBvZiB0aGUg
dGFyZ2V0IHJlZ2lzdGVyIGFyZQorICAgICAgICAvLyB6ZXJvLWZpbGxlZC4gU3BlY2lmaWNhbGx5
LCBpZiB0aGUgV2lkdGggb2YgYSBaRGVmIGlzIGxlc3MgdGhhbiB0aGUgbGFyZ2VzdCBwb3NzaWJs
ZSB3aWR0aCBvZgorICAgICAgICAvLyB0aGUgYXJndW1lbnQgKGZvciBleGFtcGxlLCB3ZSdyZSBv
biBhIDY0LWJpdCBtYWNoaW5lIGFuZCB3ZSBoYXZlIGEgV2lkdGgzMiBEZWYgb2YgYSBHUFIpIHRo
ZW4KKyAgICAgICAgLy8gdGhpcyBoYXMgZGlmZmVyZW50IGltcGxpY2F0aW9ucyBmb3IgdGhlIHVw
cGVyIGJpdHMgKGkuZS4gdGhlIHRvcCAzMiBiaXRzIGluIG91ciBleGFtcGxlKQorICAgICAgICAv
LyBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2Yga2luZCBvZiB0aGUgYXJndW1lbnQ6CisgICAgICAg
IC8vCisgICAgICAgIC8vIEZvciByZWdpc3RlcjogdGhlIHVwcGVyIGJpdHMgYXJlIHplcm8tZmls
bGVkLgorICAgICAgICAvLyBGb3IgYWRkcmVzczogdGhlIHVwcGVyIGJpdHMgYXJlIG5vdCB0b3Vj
aGVkIChpLmUuIHdlIGRvIDMyLWJpdCBzdG9yZSBpbiBvdXIgZXhhbXBsZSkuCisgICAgICAgIC8v
IEZvciB0bXA6IGVpdGhlciB0aGUgdXBwZXIgYml0cyBhcmUgbm90IHRvdWNoZWQgb3IgdGhleSBh
cmUgemVyby1maWxsZWQsIGFuZCB3ZSB3b24ndCBrbm93CisgICAgICAgIC8vIHdoaWNoIHVudGls
IHdlIGxvd2VyIHRoZSB0bXAgdG8gZWl0aGVyIGEgU3RhY2tTbG90IG9yIGEgUmVnLgorICAgICAg
ICAvLworICAgICAgICAvLyBUaGUgYmVoYXZpb3Igb2YgWkRlZiBpcyBjb25zaXN0ZW50IHdpdGgg
d2hhdCBoYXBwZW5zIHdoZW4geW91IHBlcmZvcm0gMzItYml0IG9wZXJhdGlvbnMgb24gYQorICAg
ICAgICAvLyA2NC1iaXQgR1BSLiBJdCdzIG5vdCBjb25zaXN0ZW50IHdpdGggd2hhdCBoYXBwZW5z
IHdpdGggOC1iaXQgb3IgMTYtYml0IERlZnMgb24geDg2IEdQUnMsIG9yCisgICAgICAgIC8vIHdo
YXQgaGFwcGVucyB3aXRoIGZsb2F0IERlZnMgaW4gQVJNIE5FT04gb3IgWDg2IFNTRS4gSGVuY2Ug
d2h5IHdlIGhhdmUgYm90aCBEZWYgYW5kIFpEZWYuCisgICAgICAgIFpEZWYsCisKICAgICAgICAg
Ly8gVGhpcyBpcyBhIGNvbWJpbmVkIFVzZSBhbmQgRGVmLiBJdCBtZWFucyB0aGF0IGJvdGggdGhp
bmdzIGhhcHBlbi4KICAgICAgICAgVXNlRGVmLAogCisgICAgICAgIC8vIFRoaXMgaXMgYSBjb21i
aW5lZCBVc2UgYW5kIFpEZWYuIEl0IG1lYW5zIHRoYXQgYm90aCB0aGluZ3MgaGFwcGVuLgorICAg
ICAgICBVc2VaRGVmLAorCiAgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGtpbmQgb2YgdXNl
IHRoYXQgaXMgb25seSB2YWxpZCBmb3IgYWRkcmVzc2VzLiBJdCBtZWFucyB0aGF0IHRoZQogICAg
ICAgICAvLyBpbnN0cnVjdGlvbiB3aWxsIGV2YWx1YXRlIHRoZSBhZGRyZXNzIGV4cHJlc3Npb24g
YW5kIGNvbnN1bWUgdGhlIGVmZmVjdGl2ZSBhZGRyZXNzLCBidXQgaXQKICAgICAgICAgLy8gd2ls
bCBuZWl0aGVyIGxvYWQgbm9yIHN0b3JlLiBUaGlzIGlzIGFuIGVzY2FwaW5nIHVzZSwgYmVjYXVz
ZSBub3cgdGhlIGFkZHJlc3MgbWF5IGJlCkBAIC0xMjYsNiArMTQ1LDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgV2lkdGg2NAogICAgIH07CiAKKyAgICBzdGF0aWMgV2lkdGggcG9pbnRlcldpZHRoKCkK
KyAgICB7CisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgpCisgICAgICAgICAgICByZXR1
cm4gV2lkdGg2NDsKKyAgICAgICAgcmV0dXJuIFdpZHRoMzI7CisgICAgfQorCiAgICAgZW51bSBT
aWduZWRuZXNzIDogaW50OF90IHsKICAgICAgICAgU2lnbmVkLAogICAgICAgICBVbnNpZ25lZApA
QCAtMTM5LDkgKzE2NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICBj
YXNlIENvbGRVc2U6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6
CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjYXNlIERlZjoKKyAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE1NSw3ICsxODMsOSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVc2U6CiAgICAg
ICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2UgRGVm
OgorICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTczLDggKzIwMywxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgVXNlOgogICAgICAgICBjYXNlIENvbGRVc2U6CiAgICAgICAgIGNhc2UgVXNl
RGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgY2FzZSBEZWY6CisgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRy
OgogICAgICAgICBjYXNlIExhdGVVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
OTgsNiArMjMwLDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBjYXNlIERlZjoKICAgICAgICAgY2FzZSBVc2VEZWY6CisgICAgICAgIGNhc2UgWkRlZjoKKyAg
ICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICB9CkBAIC03MTcsMTkgKzc1MSwxOSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBUaGlz
IGRlZnMgKCVyY3gpIGJ1dCB1c2VzICVyY3guCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KLSAgICB2b2lkIGZvckVhY2hUbXAoUm9sZSBhcmdSb2xlLCBUeXBlIGFyZ1R5cGUsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdm9pZCBmb3JFYWNoVG1wKFJvbGUgYXJnUm9sZSwgVHlw
ZSBhcmdUeXBlLCBXaWR0aCBhcmdXaWR0aCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7
CiAgICAgICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgICAgIGNhc2UgVG1wOgogICAgICAgICAg
ICAgQVNTRVJUKGlzQW55VXNlKGFyZ1JvbGUpIHx8IGlzRGVmKGFyZ1JvbGUpKTsKLSAgICAgICAg
ICAgIGZ1bmN0b3IobV9iYXNlLCBhcmdSb2xlLCBhcmdUeXBlKTsKKyAgICAgICAgICAgIGZ1bmN0
b3IobV9iYXNlLCBhcmdSb2xlLCBhcmdUeXBlLCBhcmdXaWR0aCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBBZGRyOgotICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIFVzZSwg
R1ApOworICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIFVzZSwgR1AsIGFyZ1JvbGUgPT0gVXNl
QWRkciA/IGFyZ1dpZHRoIDogcG9pbnRlcldpZHRoKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgSW5kZXg6Ci0gICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCk7
Ci0gICAgICAgICAgICBmdW5jdG9yKG1faW5kZXgsIFVzZSwgR1ApOworICAgICAgICAgICAgZnVu
Y3RvcihtX2Jhc2UsIFVzZSwgR1AsIGFyZ1JvbGUgPT0gVXNlQWRkciA/IGFyZ1dpZHRoIDogcG9p
bnRlcldpZHRoKCkpOworICAgICAgICAgICAgZnVuY3RvcihtX2luZGV4LCBVc2UsIEdQLCBhcmdS
b2xlID09IFVzZUFkZHIgPyBhcmdXaWR0aCA6IHBvaW50ZXJXaWR0aCgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAkocmV2aXNpb24gMTk0MTcxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4
LDIwICs5OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhcmcuZm9yRWFjaFRtcEZhc3QoZnVu
Y3Rvcik7CiAgICAgfQogCi0gICAgdHlwZWRlZiB2b2lkIEVhY2hBcmdDYWxsYmFjayhBcmcmLCBB
cmc6OlJvbGUsIEFyZzo6VHlwZSk7CisgICAgdHlwZWRlZiB2b2lkIEVhY2hBcmdDYWxsYmFjayhB
cmcmLCBBcmc6OlJvbGUsIEFyZzo6VHlwZSwgQXJnOjpXaWR0aCk7CiAgICAgCi0gICAgLy8gQ2Fs
bHMgdGhlIGZ1bmN0b3Igd2l0aCAoYXJnLCByb2xlLCB0eXBlKS4gVGhpcyBmdW5jdGlvbiBpcyBh
dXRvLWdlbmVyYXRlZCBieQorICAgIC8vIENhbGxzIHRoZSBmdW5jdG9yIHdpdGggKGFyZywgcm9s
ZSwgdHlwZSwgd2lkdGgpLiBUaGlzIGZ1bmN0aW9uIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5CiAgICAg
Ly8gb3Bjb2RlX2dlbmVyYXRvci5yYi4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgog
ICAgIHZvaWQgZm9yRWFjaEFyZyhjb25zdCBGdW5jdG9yJik7CiAKLSAgICAvLyBDYWxscyB0aGUg
ZnVuY3RvciB3aXRoICh0bXAsIHJvbGUsIHR5cGUpLgorICAgIC8vIENhbGxzIHRoZSBmdW5jdG9y
IHdpdGggKHRtcCwgcm9sZSwgdHlwZSwgd2lkdGgpLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+CiAgICAgdm9pZCBmb3JFYWNoVG1wKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAg
ewogICAgICAgICBmb3JFYWNoQXJnKAotICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpS
b2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlKSB7Ci0gICAgICAgICAgICAgICAgYXJnLmZvckVhY2hU
bXAocm9sZSwgdHlwZSwgZnVuY3Rvcik7CisgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6
OlJvbGUgcm9sZSwgQXJnOjpUeXBlIHR5cGUsIEFpcjo6V2lkdGggd2lkdGgpIHsKKyAgICAgICAg
ICAgICAgICBhcmcuZm9yRWFjaFRtcChyb2xlLCB0eXBlLCB3aWR0aCwgZnVuY3Rvcik7CiAgICAg
ICAgICAgICB9KTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3Bjb2RlLm9wY29kZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2RlcwkocmV2aXNpb24gMTk0MTcxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpAQCAtMTAz
LDEwNCArMTAzLDEwNyBAQAogCiBOb3AKIAotQWRkMzIgVTpHLCBVRDpHCitBZGQzMiBVOkc6MzIs
IFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgogICAgIEltbSwgVG1w
CiAgICAgeDg2OiBBZGRyLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogCi1BZGQzMiBVOkcsIFU6
RywgRDpHCitBZGQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIEltbSwgVG1wLCBUbXAK
ICAgICBUbXAsIFRtcCwgVG1wCiAKLTY0OiBBZGQ2NCBVOkcsIFVEOkcKKzY0OiBBZGQ2NCBVOkc6
NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCiAgICAgSW1tLCBU
bXAKICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAKLTY0OiBBZGQ2NCBV
OkcsIFU6RywgRDpHCis2NDogQWRkNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIEltbSwg
VG1wLCBUbXAKICAgICBUbXAsIFRtcCwgVG1wCiAKLUFkZERvdWJsZSBVOkYsIFVEOkYKK0FkZERv
dWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAK
LUFkZEZsb2F0IFU6RiwgVUQ6RgorQWRkRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBU
bXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1TdWIzMiBVOkcsIFVEOkcKK1N1YjMyIFU6RzozMiwg
VVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCiAgICAgSW1tLCBUbXAK
ICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAKLTY0OiBTdWI2NCBVOkcs
IFVEOkcKKzY0OiBTdWI2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4Njog
SW1tLCBBZGRyCiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4NjogVG1w
LCBBZGRyCiAKLVN1YkRvdWJsZSBVOkYsIFVEOkYKK1N1YkRvdWJsZSBVOkY6NjQsIFVEOkY6NjQK
ICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLVN1YkZsb2F0IFU6RiwgVUQ6Rgor
U3ViRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRt
cAogCi1OZWczMiBVRDpHCitOZWczMiBVWkQ6RzozMgogICAgIFRtcAogICAgIEFkZHIKIAotNjQ6
IE5lZzY0IFVEOkcKKzY0OiBOZWc2NCBVRDpHOjY0CiAgICAgVG1wCiAKLU11bDMyIFU6RywgVUQ6
RworTXVsMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBU
bXAKIAotTXVsMzIgVTpHLCBVOkcsIEQ6RworTXVsMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
ICAgICBJbW0sIFRtcCwgVG1wCiAKLTY0OiBNdWw2NCBVOkcsIFVEOkcKKzY0OiBNdWw2NCBVOkc6
NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogCi1NdWxEb3VibGUgVTpGLCBVRDpGCitNdWxEb3Vi
bGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1N
dWxGbG9hdCBVOkYsIFVEOkYKK011bEZsb2F0IFU6RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1w
CiAgICAgeDg2OiBBZGRyLCBUbXAKIAotRGl2RG91YmxlIFU6RiwgVUQ6RgorRGl2RG91YmxlIFU6
RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotRGl2Rmxv
YXQgVTpGLCBVRDpGCitEaXZGbG9hdCBVOkY6MzIsIFVEOkY6MzIKICAgICBUbXAsIFRtcAogICAg
IHg4NjogQWRkciwgVG1wCiAKLXg4NjogWDg2Q29udmVydFRvRG91YmxlV29yZDMyIFU6RywgRDpH
Cit4ODY6IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMiBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAq
LCBUbXAqCiAKLXg4Nl82NDogWDg2Q29udmVydFRvUXVhZFdvcmQ2NCBVOkcsIEQ6RworeDg2XzY0
OiBYODZDb252ZXJ0VG9RdWFkV29yZDY0IFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wKiwgVG1wKgog
Ci14ODY6IFg4NkRpdjMyIFVEOkcsIFVEOkcsIFU6RworeDg2OiBYODZEaXYzMiBVWkQ6RzozMiwg
VVpEOkc6MzIsIFU6RzozMgogICAgIFRtcCosIFRtcCosIFRtcAogCi14ODZfNjQ6IFg4NkRpdjY0
IFVEOkcsIFVEOkcsIFU6RworeDg2XzY0OiBYODZEaXY2NCBVWkQ6RzozMiwgVVpEOkc6MzIsIFU6
RzozMgogICAgIFRtcCosIFRtcCosIFRtcAogCi1MZWEgVUE6RywgRDpHCitMZWEzMiBVQTpHOjMy
LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisKKzY0OiBMZWE2NCBVQTpHOjY0LCBEOkc6NjQKICAg
ICBBZGRyLCBUbXAKIAogQW5kMzIgVTpHLCBVRDpHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCShyZXZpc2lvbiAxOTQxNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDExICs0NCwxMiBAQCBjbGFzcyBPcGNvZGUKIGVuZAogCiBjbGFzcyBB
cmcKLSAgICBhdHRyX3JlYWRlciA6cm9sZSwgOnR5cGUKKyAgICBhdHRyX3JlYWRlciA6cm9sZSwg
OnR5cGUsIDp3aWR0aAogCi0gICAgZGVmIGluaXRpYWxpemUocm9sZSwgdHlwZSkKKyAgICBkZWYg
aW5pdGlhbGl6ZShyb2xlLCB0eXBlLCB3aWR0aCkKICAgICAgICAgQHJvbGUgPSByb2xlCiAgICAg
ICAgIEB0eXBlID0gdHlwZQorICAgICAgICBAd2lkdGggPSB3aWR0aAogICAgIGVuZAogZW5kCiAK
QEAgLTE3Myw3ICsxNzQsNyBAQCBkZWYgbGV4KHN0ciwgZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlz
VUQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoVUEpKVxaLworICAgIHRv
a2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpKVxaLwogZW5kCiAKIGRlZiBp
c0dGKHRva2VuKQpAQCAtMTg4LDggKzE4OSwxMiBAQCBkZWYgaXNBcmNoKHRva2VuKQogICAgIHRv
a2VuID1+IC9cQSgoeDg2KXwoeDg2XzMyKXwoeDg2XzY0KXwoYXJtKXwoYXJtdjcpfChhcm02NCl8
KDMyKXwoNjQpKVxaLwogZW5kCiAKK2RlZiBpc1dpZHRoKHRva2VuKQorICAgIHRva2VuID1+IC9c
QSgoOCl8KDE2KXwoMzIpfCg2NCkpXFovCitlbmQKKwogZGVmIGlzS2V5d29yZCh0b2tlbikKLSAg
ICBpc1VEKHRva2VuKSBvciBpc0dGKHRva2VuKSBvciBpc0tpbmQodG9rZW4pIG9yIGlzQXJjaCh0
b2tlbikgb3IKKyAgICBpc1VEKHRva2VuKSBvciBpc0dGKHRva2VuKSBvciBpc0tpbmQodG9rZW4p
IG9yIGlzQXJjaCh0b2tlbikgb3IgaXNXaWR0aCh0b2tlbikgb3IKICAgICAgICAgdG9rZW4gPT0g
InNwZWNpYWwiIG9yIHRva2VuID09ICJhcyIKIGVuZAogCkBAIC0yNTYsNiArMjYxLDEzIEBAIGNs
YXNzIFBhcnNlcgogICAgICAgICByZXN1bHQKICAgICBlbmQKIAorICAgIGRlZiBjb25zdW1lV2lk
dGgKKyAgICAgICAgcmVzdWx0ID0gdG9rZW4uc3RyaW5nCisgICAgICAgIHBhcnNlRXJyb3IoIkV4
cGVjdGVkIHdpZHRoICg4LCAxNiwgMzIsIG9yIDY0KSIpIHVubGVzcyBpc1dpZHRoKHJlc3VsdCkK
KyAgICAgICAgYWR2YW5jZQorICAgICAgICByZXN1bHQKKyAgICBlbmQKKwogICAgIGRlZiBwYXJz
ZUFyY2hzCiAgICAgICAgIHJldHVybiBuaWwgdW5sZXNzIGlzQXJjaCh0b2tlbikKIApAQCAtMzUw
LDggKzM2MiwxMCBAQCBjbGFzcyBQYXJzZXIKICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUg
PSBjb25zdW1lUm9sZQogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZSgiOiIpCiAgICAg
ICAgICAgICAgICAgICAgICAgICB0eXBlID0gY29uc3VtZVR5cGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN1bWUoIjoiKQorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBjb25z
dW1lV2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAg
ICAgc2lnbmF0dXJlIDw8IEFyZy5uZXcocm9sZSwgdHlwZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpZ25hdHVyZSA8PCBBcmcubmV3KHJvbGUsIHR5cGUsIHdpZHRoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB1bmxlc3MgdG9rZW4g
PT0gIiwiCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lKCIsIikKQEAgLTYwNiw3ICs2
MjAsNyBAQCB3cml0ZUgoIk9wY29kZVV0aWxzIikgewogICAgIG1hdGNoSW5zdE92ZXJsb2FkKG91
dHAsIDpmYXN0LCAidGhpcyIpIHsKICAgICAgICAgfCBvcGNvZGUsIG92ZXJsb2FkIHwKICAgICAg
ICAgaWYgb3Bjb2RlLnNwZWNpYWwKLSAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3Rvcihhcmdz
WzBdLCBBcmc6OlVzZSwgQXJnOjpHUCk7IC8vIFRoaXMgaXMgYmFzaWNhbGx5IGJvZ3VzLCBidXQg
aXQgd29ya3MgZiBhbmFseXNlcyBtb2RlbCBTcGVjaWFsIGFzIGFuIGltbWVkaWF0ZS4iCisgICAg
ICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1swXSwgQXJnOjpVc2UsIEFyZzo6R1AsIEFy
Zzo6cG9pbnRlcldpZHRoKCkpOyAvLyBUaGlzIGlzIGJhc2ljYWxseSBib2d1cywgYnV0IGl0IHdv
cmtzIGZvciBhbmFseXNlcyB0aGF0IG1vZGVsIFNwZWNpYWwgYXMgYW4gaW1tZWRpYXRlLiIKICAg
ICAgICAgICAgIG91dHAucHV0cyAiYXJnc1swXS5zcGVjaWFsKCktPmZvckVhY2hBcmcoKnRoaXMs
IHNjb3BlZExhbWJkYTxFYWNoQXJnQ2FsbGJhY2s+KGZ1bmN0b3IpKTsiCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewpAQCAtNjE3
LDE1ICs2MzEsMTkgQEAgd3JpdGVIKCJPcGNvZGVVdGlscyIpIHsKICAgICAgICAgICAgICAgICAg
ICAgcm9sZSA9ICJVc2UiCiAgICAgICAgICAgICAgICAgd2hlbiAiRCIKICAgICAgICAgICAgICAg
ICAgICAgcm9sZSA9ICJEZWYiCisgICAgICAgICAgICAgICAgd2hlbiAiWkQiCisgICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiWkRlZiIKICAgICAgICAgICAgICAgICB3aGVuICJVRCIKICAgICAg
ICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VEZWYiCisgICAgICAgICAgICAgICAgd2hlbiAiVVpE
IgorICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZVpEZWYiCiAgICAgICAgICAgICAgICAg
d2hlbiAiVUEiCiAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlQWRkciIKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAg
ZW5kCiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9y
KGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7cm9sZX0sIEFyZzo6I3thcmcudHlwZX1QKTsiCisgICAg
ICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7cm9s
ZX0sIEFyZzo6I3thcmcudHlwZX1QLCBBcmc6OldpZHRoI3thcmcud2lkdGh9KTsiCiAgICAgICAg
ICAgICB9CiAgICAgICAgIGVuZAogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267650</attachid>
            <date>2015-12-18 14:18:06 -0800</date>
            <delta_ts>2015-12-18 15:27:19 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>32715</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lv
biAxOTQxNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU4LDE2ICsxNTgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
ICAgIH0KIAotICAgIC8vIE5PVEU6IFRoaXMgZW50aXJlIG1lY2hhbmlzbSBjb3VsZCBiZSBkb25l
IG92ZXIgQWlyLCBpZiB3ZSBmZWx0IHRoYXQgdGhpcyB3b3VsZCBiZSBmYXN0IGVub3VnaC4KLSAg
ICAvLyBGb3Igbm93IHdlJ3JlIGFzc3VtaW5nIHRoYXQgaXQncyBmYXN0ZXIgdG8gZG8gdGhpcyBo
ZXJlLCBzaW5jZSBhbmFseXppbmcgQjMgaXMgc28gY2hlYXAuCiAgICAgYm9vbCBzaG91bGRDb3B5
UHJvcGFnYXRlKFZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodmFsdWUtPm9w
Y29kZSgpKSB7CiAgICAgICAgIGNhc2UgVHJ1bmM6CiAgICAgICAgIGNhc2UgSWRlbnRpdHk6CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBaRXh0MzI6Ci0gICAgICAgICAg
ICByZXR1cm4gaGlnaEJpdHNBcmVaZXJvKHZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE3NjIsMTEgKzE3
NTgsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBaRXh0MzI6IHsKLSAg
ICAgICAgICAgIGlmIChoaWdoQml0c0FyZVplcm8obV92YWx1ZS0+Y2hpbGQoMCkpKSB7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKHRtcChtX3ZhbHVlLT5jaGlsZCgwKSkgPT0gdG1wKG1fdmFsdWUp
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAg
IGFwcGVuZFVuT3A8TW92ZTMyLCBBaXI6Ok9vcHM+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcAkocmV2aXNpb24gMTk0MTcxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgUGF0Y2hwb2ludFNwZWNpYWw6OmZvckVhY2hBcmco
SW5zdCYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNhbGxiYWNrKGluc3QuYXJnc1sx
XSwgQXJnOjpEZWYsIGluc3Qub3JpZ2luLT5haXJUeXBlKCkpOworICAgIGNhbGxiYWNrKGluc3Qu
YXJnc1sxXSwgQXJnOjpEZWYsIGluc3Qub3JpZ2luLT5haXJUeXBlKCksIGluc3Qub3JpZ2luLT5h
aXJXaWR0aCgpKTsKICAgICBmb3JFYWNoQXJnSW1wbCgwLCAyLCBpbnN0LCBTYW1lQXNSZXAsIGNh
bGxiYWNrKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBT
cGVjaWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFj
a21hcFNwZWNpYWwuY3BwCShyZXZpc2lvbiAxOTQxNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOCArMTEx
LDkgQEAgdm9pZCBTdGFja21hcFNwZWNpYWw6OmZvckVhY2hBcmdJbXBsKAogICAgICAgICAgICAg
cm9sZSA9IEFyZzo6TGF0ZVVzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBjYWxsYmFjayhhcmcsIHJvbGUsIEFyZzo6dHlwZUZvckIzVHlwZShjaGls
ZC52YWx1ZSgpLT50eXBlKCkpKTsKKworICAgICAgICBUeXBlIHR5cGUgPSBjaGlsZC52YWx1ZSgp
LT50eXBlKCk7CisgICAgICAgIGNhbGxiYWNrKGFyZywgcm9sZSwgQXJnOjp0eXBlRm9yQjNUeXBl
KHR5cGUpLCBBcmc6OndpZHRoRm9yQjNUeXBlKHR5cGUpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMTk0MTcxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIGlzIHVzZWZ1bCB3aGVuIGxvd2VyaW5nLiBOb3RlIHRo
YXQgdGhpcyBpcyBvbmx5IHZhbGlkIGZvciBub24tdm9pZCB2YWx1ZXMuCiAgICAgQWlyOjpBcmc6
OlR5cGUgYWlyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFpcjo6QXJnOjp0eXBlRm9yQjNUeXBlKHR5
cGUoKSk7IH0KKyAgICBBaXI6OkFyZzo6V2lkdGggYWlyV2lkdGgoKSBjb25zdCB7IHJldHVybiBB
aXI6OkFyZzo6d2lkdGhGb3JCM1R5cGUodHlwZSgpKTsgfQogCiAgICAgQWRqYWNlbmN5TGlzdCYg
Y2hpbGRyZW4oKSB7IHJldHVybiBtX2NoaWxkcmVuOyB9IAogICAgIGNvbnN0IEFkamFjZW5jeUxp
c3QmIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2suY3BwCShyZXZp
c2lvbiAxOTQxNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRl
U3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBhbGxvY2F0
ZVN0YWNrKENvZGUmIGNvZGUpCiAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsK
ICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7CiAgICAgICAgICAgICBpbnN0LmZv
ckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUs
IEFyZzo6VHlwZSkgeworICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSBy
b2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJv
bGUgPT0gQXJnOjpVc2VBZGRyICYmIGFyZy5pc1N0YWNrKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBlc2NhcGluZ1N0YWNrU2xvdHMuYWRkKGFyZy5zdGFja1Nsb3QoKSk7CiAgICAgICAgICAg
ICAgICAgfSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrKENvZGUmIGNv
ZGUpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW50ZXJmZXJpbmc6ICIsIFdURjo6cG9pbnRl
ckxpc3REdW1wKGxvY2FsQ2FsYy5saXZlKCkpLCAiXG4iKTsKIAogICAgICAgICAgICAgaW5zdC5m
b3JFYWNoQXJnKAotICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSByb2xl
LCBBcmc6OlR5cGUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUg
cm9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
QXJnOjppc0RlZihyb2xlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFhcmcuaXNTdGFjaygpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5oCShyZXZpc2lvbiAxOTQxNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOSArMTAxLDI4IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gTGlrZSBVc2Ugb2YgYWRkcmVzcywgRGVmIG9mIGFkZHJlc3Mg
ZG9lcyBub3QgbWVhbiBlc2NhcGUuCiAgICAgICAgIERlZiwKIAorICAgICAgICAvLyBUaGlzIGlz
IGEgc3BlY2lhbCB2YXJpYW50IG9mIERlZiB0aGF0IGltcGxpZXMgdGhhdCB0aGUgdXBwZXIgYml0
cyBvZiB0aGUgdGFyZ2V0IHJlZ2lzdGVyIGFyZQorICAgICAgICAvLyB6ZXJvLWZpbGxlZC4gU3Bl
Y2lmaWNhbGx5LCBpZiB0aGUgV2lkdGggb2YgYSBaRGVmIGlzIGxlc3MgdGhhbiB0aGUgbGFyZ2Vz
dCBwb3NzaWJsZSB3aWR0aCBvZgorICAgICAgICAvLyB0aGUgYXJndW1lbnQgKGZvciBleGFtcGxl
LCB3ZSdyZSBvbiBhIDY0LWJpdCBtYWNoaW5lIGFuZCB3ZSBoYXZlIGEgV2lkdGgzMiBEZWYgb2Yg
YSBHUFIpIHRoZW4KKyAgICAgICAgLy8gdGhpcyBoYXMgZGlmZmVyZW50IGltcGxpY2F0aW9ucyBm
b3IgdGhlIHVwcGVyIGJpdHMgKGkuZS4gdGhlIHRvcCAzMiBiaXRzIGluIG91ciBleGFtcGxlKQor
ICAgICAgICAvLyBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2Yga2luZCBvZiB0aGUgYXJndW1lbnQ6
CisgICAgICAgIC8vCisgICAgICAgIC8vIEZvciByZWdpc3RlcjogdGhlIHVwcGVyIGJpdHMgYXJl
IHplcm8tZmlsbGVkLgorICAgICAgICAvLyBGb3IgYWRkcmVzczogdGhlIHVwcGVyIGJpdHMgYXJl
IG5vdCB0b3VjaGVkIChpLmUuIHdlIGRvIDMyLWJpdCBzdG9yZSBpbiBvdXIgZXhhbXBsZSkuCisg
ICAgICAgIC8vIEZvciB0bXA6IGVpdGhlciB0aGUgdXBwZXIgYml0cyBhcmUgbm90IHRvdWNoZWQg
b3IgdGhleSBhcmUgemVyby1maWxsZWQsIGFuZCB3ZSB3b24ndCBrbm93CisgICAgICAgIC8vIHdo
aWNoIHVudGlsIHdlIGxvd2VyIHRoZSB0bXAgdG8gZWl0aGVyIGEgU3RhY2tTbG90IG9yIGEgUmVn
LgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgYmVoYXZpb3Igb2YgWkRlZiBpcyBjb25zaXN0
ZW50IHdpdGggd2hhdCBoYXBwZW5zIHdoZW4geW91IHBlcmZvcm0gMzItYml0IG9wZXJhdGlvbnMg
b24gYQorICAgICAgICAvLyA2NC1iaXQgR1BSLiBJdCdzIG5vdCBjb25zaXN0ZW50IHdpdGggd2hh
dCBoYXBwZW5zIHdpdGggOC1iaXQgb3IgMTYtYml0IERlZnMgb24geDg2IEdQUnMsIG9yCisgICAg
ICAgIC8vIHdoYXQgaGFwcGVucyB3aXRoIGZsb2F0IERlZnMgaW4gQVJNIE5FT04gb3IgWDg2IFNT
RS4gSGVuY2Ugd2h5IHdlIGhhdmUgYm90aCBEZWYgYW5kIFpEZWYuCisgICAgICAgIFpEZWYsCisK
ICAgICAgICAgLy8gVGhpcyBpcyBhIGNvbWJpbmVkIFVzZSBhbmQgRGVmLiBJdCBtZWFucyB0aGF0
IGJvdGggdGhpbmdzIGhhcHBlbi4KICAgICAgICAgVXNlRGVmLAogCisgICAgICAgIC8vIFRoaXMg
aXMgYSBjb21iaW5lZCBVc2UgYW5kIFpEZWYuIEl0IG1lYW5zIHRoYXQgYm90aCB0aGluZ3MgaGFw
cGVuLgorICAgICAgICBVc2VaRGVmLAorCiAgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGtp
bmQgb2YgdXNlIHRoYXQgaXMgb25seSB2YWxpZCBmb3IgYWRkcmVzc2VzLiBJdCBtZWFucyB0aGF0
IHRoZQogICAgICAgICAvLyBpbnN0cnVjdGlvbiB3aWxsIGV2YWx1YXRlIHRoZSBhZGRyZXNzIGV4
cHJlc3Npb24gYW5kIGNvbnN1bWUgdGhlIGVmZmVjdGl2ZSBhZGRyZXNzLCBidXQgaXQKICAgICAg
ICAgLy8gd2lsbCBuZWl0aGVyIGxvYWQgbm9yIHN0b3JlLiBUaGlzIGlzIGFuIGVzY2FwaW5nIHVz
ZSwgYmVjYXVzZSBub3cgdGhlIGFkZHJlc3MgbWF5IGJlCkBAIC0xMjYsNiArMTQ1LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgV2lkdGg2NAogICAgIH07CiAKKyAgICBzdGF0aWMgV2lkdGggcG9pbnRl
cldpZHRoKCkKKyAgICB7CisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgpCisgICAgICAg
ICAgICByZXR1cm4gV2lkdGg2NDsKKyAgICAgICAgcmV0dXJuIFdpZHRoMzI7CisgICAgfQorCiAg
ICAgZW51bSBTaWduZWRuZXNzIDogaW50OF90IHsKICAgICAgICAgU2lnbmVkLAogICAgICAgICBV
bnNpZ25lZApAQCAtMTM5LDkgKzE2NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlOgog
ICAgICAgICBjYXNlIENvbGRVc2U6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNl
IFVzZVpEZWY6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIERlZjoKKyAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVz
ZUFkZHI6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE1NSw3ICsx
ODMsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBV
c2U6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAg
IGNhc2UgRGVmOgorICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTczLDggKzIwMywxMCBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICBjYXNlIENvbGRVc2U6CiAgICAgICAg
IGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgY2FzZSBEZWY6CisgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2Fz
ZSBVc2VBZGRyOgogICAgICAgICBjYXNlIExhdGVVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xOTgsNiArMjMwLDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBjYXNlIERlZjoKICAgICAgICAgY2FzZSBVc2VEZWY6CisgICAgICAgIGNhc2Ug
WkRlZjoKKyAgICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yMzQsNiArMjY4LDExIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIHN0YXRpYyBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChUeXBlIHR5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gdHlwZSA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2
NDsKKyAgICB9CisKICAgICBBcmcoKQogICAgICAgICA6IG1fa2luZChJbnZhbGlkKQogICAgIHsK
QEAgLTcxNywxOSArNzU2LDE5IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIFRoaXMgZGVmcyAo
JXJjeCkgYnV0IHVzZXMgJXJjeC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAg
IHZvaWQgZm9yRWFjaFRtcChSb2xlIGFyZ1JvbGUsIFR5cGUgYXJnVHlwZSwgY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckVhY2hUbXAoUm9sZSBhcmdSb2xlLCBUeXBlIGFyZ1R5
cGUsIFdpZHRoIGFyZ1dpZHRoLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICAgICAgY2FzZSBUbXA6CiAgICAgICAgICAgICBBU1NF
UlQoaXNBbnlVc2UoYXJnUm9sZSkgfHwgaXNEZWYoYXJnUm9sZSkpOwotICAgICAgICAgICAgZnVu
Y3RvcihtX2Jhc2UsIGFyZ1JvbGUsIGFyZ1R5cGUpOworICAgICAgICAgICAgZnVuY3RvcihtX2Jh
c2UsIGFyZ1JvbGUsIGFyZ1R5cGUsIGFyZ1dpZHRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEFkZHI6Ci0gICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCk7Cisg
ICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCwgYXJnUm9sZSA9PSBVc2VBZGRyID8g
YXJnV2lkdGggOiBwb2ludGVyV2lkdGgoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBJbmRleDoKLSAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlLCBVc2UsIEdQKTsKLSAgICAg
ICAgICAgIGZ1bmN0b3IobV9pbmRleCwgVXNlLCBHUCk7CisgICAgICAgICAgICBmdW5jdG9yKG1f
YmFzZSwgVXNlLCBHUCwgYXJnUm9sZSA9PSBVc2VBZGRyID8gYXJnV2lkdGggOiBwb2ludGVyV2lk
dGgoKSk7CisgICAgICAgICAgICBmdW5jdG9yKG1faW5kZXgsIFVzZSwgR1AsIGFyZ1JvbGUgPT0g
VXNlQWRkciA/IGFyZ1dpZHRoIDogcG9pbnRlcldpZHRoKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAJKHJldmlzaW9uIDE5
NDE3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTYgKzQ1LDE3IEBAIENDYWxsU3BlY2lhbDo6fkNDYWxs
U3BlY2lhbCgpCiB2b2lkIENDYWxsU3BlY2lhbDo6Zm9yRWFjaEFyZyhJbnN0JiBpbnN0LCBjb25z
dCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYgY2FsbGJhY2spCiB7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNhbGxlZUFyZ3M7ICsraSkKLSAgICAgICAgY2Fs
bGJhY2soaW5zdC5hcmdzW2NhbGxlZUFyZ09mZnNldCArIGldLCBBcmc6OlVzZSwgQXJnOjpHUCk7
CisgICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1tjYWxsZWVBcmdPZmZzZXQgKyBpXSwgQXJnOjpV
c2UsIEFyZzo6R1AsIEFyZzo6cG9pbnRlcldpZHRoKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1SZXR1cm5HUEFyZ3M7ICsraSkKLSAgICAgICAgY2FsbGJhY2soaW5zdC5hcmdz
W3JldHVybkdQQXJnT2Zmc2V0ICsgaV0sIEFyZzo6RGVmLCBBcmc6OkdQKTsKKyAgICAgICAgY2Fs
bGJhY2soaW5zdC5hcmdzW3JldHVybkdQQXJnT2Zmc2V0ICsgaV0sIEFyZzo6RGVmLCBBcmc6OkdQ
LCBBcmc6OnBvaW50ZXJXaWR0aCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
UmV0dXJuRlBBcmdzOyArK2kpCi0gICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1tyZXR1cm5GUEFy
Z09mZnNldCArIGldLCBBcmc6OkRlZiwgQXJnOjpGUCk7CisgICAgICAgIGNhbGxiYWNrKGluc3Qu
YXJnc1tyZXR1cm5GUEFyZ09mZnNldCArIGldLCBBcmc6OkRlZiwgQXJnOjpGUCwgQXJnOjpXaWR0
aDY0KTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmdBcmdPZmZzZXQ7IGkgPCBpbnN0
LmFyZ3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgLy8gRm9yIHRoZSB0eXBlLCB3ZSBjYW4ganVz
dCBxdWVyeSB0aGUgYXJnJ3MgdHlwZS4gVGhlIGFyZyB3aWxsIGhhdmUgYSB0eXBlLCBiZWNhdXNl
IHdlCiAgICAgICAgIC8vIHJlcXVpcmUgdGhlc2UgYXJncyB0byBiZSBhcmd1bWVudCByZWdpc3Rl
cnMuCi0gICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1tpXSwgQXJnOjpVc2UsIGluc3QuYXJnc1tp
XS50eXBlKCkpOworICAgICAgICBBcmc6OlR5cGUgdHlwZSA9IGluc3QuYXJnc1tpXS50eXBlKCk7
CisgICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1tpXSwgQXJnOjpVc2UsIHR5cGUsIEFyZzo6Y29u
c2VydmF0aXZlV2lkdGgodHlwZSkpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAJKHJldmlz
aW9uIDE5NDE3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRl
RGVhZENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgZWxpbWlu
YXRlRGVhZENvZGUoQ29kZSYgY29kZSkKICAgICAgICAgLy8gVGhpcyBpbnN0cnVjdGlvbiBzaG91
bGQgYmUgcHJlc3VtZWQgZGVhZCwgaWYgaXRzIEFyZ3MgYXJlIGFsbCBkZWFkLgogICAgICAgICBi
b29sIHN0b3Jlc1RvTGl2ZSA9IGZhbHNlOwogICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0gICAg
ICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAg
ICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6Oldp
ZHRoKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFBcmc6OmlzRGVmKHJvbGUpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgc3RvcmVzVG9MaXZlIHw9IGlzQXJn
TGl2ZShhcmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgJKHJl
dmlzaW9uIDE5NDE3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05OCwyMCArOTgsMjAgQEAgcHVibGljOgogICAgICAgICAgICAg
YXJnLmZvckVhY2hUbXBGYXN0KGZ1bmN0b3IpOwogICAgIH0KIAotICAgIHR5cGVkZWYgdm9pZCBF
YWNoQXJnQ2FsbGJhY2soQXJnJiwgQXJnOjpSb2xlLCBBcmc6OlR5cGUpOworICAgIHR5cGVkZWYg
dm9pZCBFYWNoQXJnQ2FsbGJhY2soQXJnJiwgQXJnOjpSb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lk
dGgpOwogICAgIAotICAgIC8vIENhbGxzIHRoZSBmdW5jdG9yIHdpdGggKGFyZywgcm9sZSwgdHlw
ZSkuIFRoaXMgZnVuY3Rpb24gaXMgYXV0by1nZW5lcmF0ZWQgYnkKKyAgICAvLyBDYWxscyB0aGUg
ZnVuY3RvciB3aXRoIChhcmcsIHJvbGUsIHR5cGUsIHdpZHRoKS4gVGhpcyBmdW5jdGlvbiBpcyBh
dXRvLWdlbmVyYXRlZCBieQogICAgIC8vIG9wY29kZV9nZW5lcmF0b3IucmIuCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckVhY2hBcmcoY29uc3QgRnVuY3RvciYp
OwogCi0gICAgLy8gQ2FsbHMgdGhlIGZ1bmN0b3Igd2l0aCAodG1wLCByb2xlLCB0eXBlKS4KKyAg
ICAvLyBDYWxscyB0aGUgZnVuY3RvciB3aXRoICh0bXAsIHJvbGUsIHR5cGUsIHdpZHRoKS4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yRWFjaFRtcChjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgZm9yRWFjaEFyZygKLSAgICAgICAgICAg
IFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSkgewotICAgICAg
ICAgICAgICAgIGFyZy5mb3JFYWNoVG1wKHJvbGUsIHR5cGUsIGZ1bmN0b3IpOworICAgICAgICAg
ICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlLCBBaXI6Oldp
ZHRoIHdpZHRoKSB7CisgICAgICAgICAgICAgICAgYXJnLmZvckVhY2hUbXAocm9sZSwgdHlwZSwg
d2lkdGgsIGZ1bmN0b3IpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAxOTQx
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRm9yRWFjaDxT
dGFja1Nsb3QqPiB7CiAgICAgc3RhdGljIHZvaWQgZm9yRWFjaChJbnN0JiBpbnN0LCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAgICAg
ICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlKSB7Cisg
ICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIHR5cGUs
IEFyZzo6V2lkdGggd2lkdGgpIHsKICAgICAgICAgICAgICAgICBpZiAoIWFyZy5pc1N0YWNrKCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBTdGFja1Nsb3Qq
IHN0YWNrU2xvdCA9IGFyZy5zdGFja1Nsb3QoKTsKQEAgLTY2LDcgKzY2LDcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRm9yRWFjaDxTdGFja1Nsb3QqPiB7CiAgICAgICAgICAgICAgICAgLy8gc2VtYW50
aWNzIG9mICJBbm9ueW1vdXMiLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTExMjgKICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBmdW5jdG9yKHN0YWNrU2xvdCwgcm9sZSwgdHlwZSk7CisgICAgICAgICAgICAgICAg
ZnVuY3RvcihzdGFja1Nsb3QsIHJvbGUsIHR5cGUsIHdpZHRoKTsKICAgICAgICAgICAgICAgICBh
cmcgPSBBcmc6OnN0YWNrKHN0YWNrU2xvdCwgYXJnLm9mZnNldCgpKTsKICAgICAgICAgICAgIH0p
OwogICAgIH0KQEAgLTk5LDEyICs5OSwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgog
aW5saW5lIHZvaWQgSW5zdDo6Zm9yRWFjaFRtcFdpdGhFeHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCog
bmV4dEluc3QsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgZm9yRWFjaFRtcCgKLSAg
ICAgICAgWyZdIChUbXAmIHRtcEFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSBhcmdUeXBl
KSB7Ci0gICAgICAgICAgICBmdW5jdG9yKHRtcEFyZywgcm9sZSwgYXJnVHlwZSk7CisgICAgICAg
IFsmXSAoVG1wJiB0bXBBcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgYXJnVHlwZSwgQXJn
OjpXaWR0aCBhcmdXaWR0aCkgeworICAgICAgICAgICAgZnVuY3Rvcih0bXBBcmcsIHJvbGUsIGFy
Z1R5cGUsIGFyZ1dpZHRoKTsKICAgICAgICAgfSk7CiAKICAgICBhdXRvIHJlcG9ydFJlZyA9IFsm
XSAoUmVnIHJlZykgewotICAgICAgICBmdW5jdG9yKFRtcChyZWcpLCBBcmc6OkRlZiwgcmVnLmlz
R1BSKCkgPyBBcmc6OkdQIDogQXJnOjpGUCk7CisgICAgICAgIEFyZzo6VHlwZSB0eXBlID0gcmVn
LmlzR1BSKCkgPyBBcmc6OkdQIDogQXJnOjpGUDsKKyAgICAgICAgZnVuY3RvcihUbXAocmVnKSwg
QXJnOjpEZWYsIHR5cGUsIEFyZzo6Y29uc2VydmF0aXZlV2lkdGgodHlwZSkpOwogICAgIH07CiAK
ICAgICBpZiAoaGFzU3BlY2lhbCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAxOTQxNzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBAIC0y
MywxNCArMjMsMTcgQEAKIAogIyBTeWxsYWJ1czoKICMKLSMgUm9sZXMgYW5kIHR5cGVzOgotIyBV
OkcgPT4gdXNlIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9yIHZhbHVlCi0jIEQ6RyA9
PiBkZWYgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKLSMgVUQ6RyA9PiB1
c2UgYW5kIGRlZiBvZiBhIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBvciB2YWx1ZQotIyBVQTpH
ID0+IFVzZUFkZHIgKHNlZSBjb21tZW50IGluIEFyZy5oKQotIyBVOkYgPT4gdXNlIG9mIGEgZmxv
YXQgcmVnaXN0ZXIgb3IgdmFsdWUKLSMgRDpGID0+IGRlZiBvZiBhIGZsb2F0IHJlZ2lzdGVyIG9y
IHZhbHVlCi0jIFVEOkYgPT4gdXNlIGFuZCBkZWYgb2YgYSBmbG9hdCByZWdpc3RlciBvciB2YWx1
ZQorIyBFeGFtcGxlcyBvZiBzb21lIHJvbGVzLCB0eXBlcywgYW5kIHdpZHRoczoKKyMgVTpHOjMy
ID0+IHVzZSBvZiB0aGUgbG93IDMyIGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIg
b3IgdmFsdWUKKyMgRDpHOjMyID0+IGRlZiBvZiB0aGUgbG93IDMyIGJpdHMgb2YgYSBnZW5lcmFs
LXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKKyMgVUQ6RzozMiA9PiB1c2UgYW5kIGRlZiBvZiB0
aGUgbG93IDMyIGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKKyMg
VTpHOjY0ID0+IHVzZSBvZiB0aGUgbG93IDY0IGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVn
aXN0ZXIgb3IgdmFsdWUKKyMgWkQ6RzozMiA9PiBkZWYgb2YgYWxsIGJpdHMgb2YgYSBnZW5lcmFs
LXB1cnBvc2UgcmVnaXN0ZXIsIHdoZXJlIGFsbCBidXQgdGhlIGxvdyAzMiBiaXRzIGFyZSBndWFy
YW50ZWVkIHRvIGJlIHplcm9lZC4KKyMgVUE6RzpQdHIgPT4gVXNlQWRkciAoc2VlIGNvbW1lbnQg
aW4gQXJnLmgpCisjIFU6RjozMiA9PiB1c2Ugb2YgYSBmbG9hdCByZWdpc3RlciBvciB2YWx1ZQor
IyBVOkY6NjQgPT4gdXNlIG9mIGEgZG91YmxlIHJlZ2lzdGVyIG9yIHZhbHVlCisjIEQ6RjozMiA9
PiBkZWYgb2YgYSBmbG9hdCByZWdpc3RlciBvciB2YWx1ZQorIyBVRDpGOjMyID0+IHVzZSBhbmQg
ZGVmIG9mIGEgZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUKICMKICMgQXJndW1lbnQga2luZHM6CiAj
IFRtcCA9PiB0ZW1wb3Jhcnkgb3IgcmVnaXN0ZXIKQEAgLTQ0LDExICs0NywxMSBAQAogIyBvZiB0
aGluZ3MuIFNvLCBhbHRob3VnaCB0aGlzIGZpbGUgdXNlcyBhIHBhcnRpY3VsYXIgaW5kZW50YXRp
b24gc3R5bGUsIG5vbmUgb2YgdGhlIHdoaXRlc3BhY2Ugb3IKICMgZXZlbiBuZXdsaW5lcyBhcmUg
bWVhbmluZ2Z1bCB0byB0aGUgcGFyc2VyLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHdyaXRlOgog
IwotIyBGb280MiBVOkcsIFVEOkYgSW1tLCBUbXAgQWRkciwgVG1wCisjIEZvbzQyIFU6RzozMiwg
VUQ6RjozMiBJbW0sIFRtcCBBZGRyLCBUbXAKICMKICMgQW5kIHRoZSBwYXJzZXIgd291bGQga25v
dyB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgYXM6CiAjCi0jIEZvbzQyIFU6RywgVUQ6RgorIyBGb280
MiBVOkc6MzIsIFVEOkY6MzIKICMgICAgIEltbSwgVG1wCiAjICAgICBBZGRyLCBUbXAKICMKQEAg
LTU4LDIyICs2MSwyMiBAQAogIyB1bmlvbiBvZiB0aG9zZSBhcmNoaXRlY3R1cmVzLiBGb3IgZXhh
bXBsZSwgaWYgdGhpcyBpcyB0aGUgb25seSBvdmVybG9hZCBvZiB0aGUgb3Bjb2RlLCB0aGVuIGl0
IG1ha2VzIHRoZQogIyBvcGNvZGUgb25seSBhdmFpbGFibGUgb24geDg2XzY0OgogIwotIyB4ODZf
NjQ6IEZ1enogVUQ6RywgRDpHCisjIHg4Nl82NDogRnV6eiBVRDpHOjY0LCBEOkc6NjQKICMgICAg
IFRtcCwgVG1wCiAjICAgICBUbXAsIEFkZHIKICMKICMgQnV0IHRoaXMgb25seSByZXN0cmljdHMg
dGhlIHR3by1vcGVyYW5kIGZvcm0sIHRoZSBvdGhlciBmb3JtIGlzIGFsbG93ZWQgb24gYWxsIGFy
Y2hpdGVjdHVyZXM6CiAjCi0jIHg4Nl82NDogRnV6eiBVRDpHLCBEOkcKKyMgeDg2XzY0OiBGdXp6
IFVEOkc6NjQsIEQ6Rzo2NAogIyAgICAgVG1wLCBUbXAKICMgICAgIFRtcCwgQWRkcgotIyBGdXp6
IFVEOkcsIEQ6RywgVTpGCisjIEZ1enogVUQ6RzpQdHIsIEQ6RzpQdHIsIFU6RjpQdHIKICMgICAg
IFRtcCwgVG1wLCBUbXAKICMgICAgIFRtcCwgQWRkciwgVG1wCiAjCiAjIEFuZCB5b3UgY2FuIGFs
c28gcmVzdHJpY3QgaW5kaXZpZHVhbCBmb3JtczoKICMKLSMgVGhpbmd5IFVEOkcsIEQ6RworIyBU
aGluZ3kgVUQ6RzozMiwgRDpHOjMyCiAjICAgICBUbXAsIFRtcAogIyAgICAgYXJtNjQ6IFRtcCwg
QWRkcgogIwpAQCAtODEsNyArODQsNyBAQAogIyBmb3JtLiBJbiB0aGlzIGV4YW1wbGUsIHRoZSB2
ZXJzaW9uIHRoYXQgdGFrZXMgYW4gYWRkcmVzcyBpcyBvbmx5IGF2YWlsYWJsZSBvbiBhcm12NyB3
aGlsZSB0aGUgb3RoZXIKICMgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiBhcm12NyBvciB4ODZf
NjQ6CiAjCi0jIHg4Nl82NCBhcm12NzogQnV6eiBVOkcsIFVEOkYKKyMgeDg2XzY0IGFybXY3OiBC
dXp6IFU6RzozMiwgVUQ6RjozMgogIyAgICAgVG1wLCBUbXAKICMgICAgIEltbSwgVG1wCiAjICAg
ICBhcm12NzogQWRkciwgVG1wCkBAIC0xMDMsMjE0ICsxMDYsMjE0IEBACiAKIE5vcAogCi1BZGQz
MiBVOkcsIFVEOkcKK0FkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4
NjogSW1tLCBBZGRyCiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4Njog
VG1wLCBBZGRyCiAKLUFkZDMyIFU6RywgVTpHLCBEOkcKK0FkZDMyIFU6RzozMiwgVTpHOjMyLCBa
RDpHOjMyCiAgICAgSW1tLCBUbXAsIFRtcAogICAgIFRtcCwgVG1wLCBUbXAKIAotNjQ6IEFkZDY0
IFU6RywgVUQ6RworNjQ6IEFkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAg
eDg2OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAgICAgeDg2
OiBUbXAsIEFkZHIKIAotNjQ6IEFkZDY0IFU6RywgVTpHLCBEOkcKKzY0OiBBZGQ2NCBVOkc6NjQs
IFU6Rzo2NCwgRDpHOjY0CiAgICAgSW1tLCBUbXAsIFRtcAogICAgIFRtcCwgVG1wLCBUbXAKIAot
QWRkRG91YmxlIFU6RiwgVUQ6RgorQWRkRG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwg
VG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotQWRkRmxvYXQgVTpGLCBVRDpGCitBZGRGbG9hdCBV
OkY6MzIsIFVEOkY6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLVN1YjMy
IFU6RywgVUQ6RworU3ViMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2
OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAgICAgeDg2OiBU
bXAsIEFkZHIKIAotNjQ6IFN1YjY0IFU6RywgVUQ6RworNjQ6IFN1YjY0IFU6Rzo2NCwgVUQ6Rzo2
NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAogICAgIHg4
NjogQWRkciwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKIAotU3ViRG91YmxlIFU6RiwgVUQ6Rgor
U3ViRG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBU
bXAKIAotU3ViRmxvYXQgVTpGLCBVRDpGCitTdWJGbG9hdCBVOkY6MzIsIFVEOkY6MzIKICAgICBU
bXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLU5lZzMyIFVEOkcKK05lZzMyIFVaRDpHOjMy
CiAgICAgVG1wCiAgICAgQWRkcgogCi02NDogTmVnNjQgVUQ6RworNjQ6IE5lZzY0IFVEOkc6NjQK
ICAgICBUbXAKIAotTXVsMzIgVTpHLCBVRDpHCitNdWwzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAg
VG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1NdWwzMiBVOkcsIFU6RywgRDpHCitNdWwz
MiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIEltbSwgVG1wLCBUbXAKIAotNjQ6IE11bDY0
IFU6RywgVUQ6RworNjQ6IE11bDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAKLU11
bERvdWJsZSBVOkYsIFVEOkYKK011bERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRt
cAogICAgIHg4NjogQWRkciwgVG1wCiAKLU11bEZsb2F0IFU6RiwgVUQ6RgorTXVsRmxvYXQgVTpG
OjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1EaXZEb3Vi
bGUgVTpGLCBVRDpGCitEaXZEb3VibGUgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAg
ICB4ODY6IEFkZHIsIFRtcAogCi1EaXZGbG9hdCBVOkYsIFVEOkYKK0RpdkZsb2F0IFU6RjozMiwg
VUQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAoteDg2OiBYODZDb252
ZXJ0VG9Eb3VibGVXb3JkMzIgVTpHLCBEOkcKK3g4NjogWDg2Q29udmVydFRvRG91YmxlV29yZDMy
IFU6RzozMiwgWkQ6RzozMgogICAgIFRtcCosIFRtcCoKIAoteDg2XzY0OiBYODZDb252ZXJ0VG9R
dWFkV29yZDY0IFU6RywgRDpHCit4ODZfNjQ6IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQgVTpHOjY0
LCBEOkc6NjQKICAgICBUbXAqLCBUbXAqCiAKLXg4NjogWDg2RGl2MzIgVUQ6RywgVUQ6RywgVTpH
Cit4ODY6IFg4NkRpdjMyIFVaRDpHOjMyLCBVWkQ6RzozMiwgVTpHOjMyCiAgICAgVG1wKiwgVG1w
KiwgVG1wCiAKLXg4Nl82NDogWDg2RGl2NjQgVUQ6RywgVUQ6RywgVTpHCit4ODZfNjQ6IFg4NkRp
djY0IFVaRDpHOjMyLCBVWkQ6RzozMiwgVTpHOjMyCiAgICAgVG1wKiwgVG1wKiwgVG1wCiAKLUxl
YSBVQTpHLCBEOkcKK0xlYSBVQTpHOlB0ciwgRDpHOlB0cgogICAgIEFkZHIsIFRtcAogCi1BbmQz
MiBVOkcsIFVEOkcKK0FuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIElt
bSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4Njog
SW1tLCBBZGRyCiAKLTY0OiBBbmQ2NCBVOkcsIFVEOkcKKzY0OiBBbmQ2NCBVOkc6NjQsIFVEOkc6
NjQKICAgICBUbXAsIFRtcAogICAgIEltbSwgVG1wCiAKLUFuZERvdWJsZSBVOkYsIFVEOkYKK0Fu
ZERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAogCi1BbmRGbG9hdCBVOkYsIFVE
OkYKK0FuZEZsb2F0IFU6RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAKLUxzaGlmdDMyIFU6
RywgVUQ6RworTHNoaWZ0MzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCosIFRtcAogICAgIElt
bSwgVG1wCiAKLTY0OiBMc2hpZnQ2NCBVOkcsIFVEOkcKKzY0OiBMc2hpZnQ2NCBVOkc6NjQsIFVE
Okc6NjQKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi1Sc2hpZnQzMiBVOkcsIFVEOkcK
K1JzaGlmdDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAog
Ci02NDogUnNoaWZ0NjQgVTpHLCBVRDpHCis2NDogUnNoaWZ0NjQgVTpHOjY0LCBVRDpHOjY0CiAg
ICAgVG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKIAotVXJzaGlmdDMyIFU6RywgVUQ6RworVXJzaGlm
dDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi02NDog
VXJzaGlmdDY0IFU6RywgVUQ6RworNjQ6IFVyc2hpZnQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBU
bXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi1PcjMyIFU6RywgVUQ6RworT3IzMiBVOkc6MzIsIFVa
RDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAg
ICAgeDg2OiBBZGRyLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgogCi02NDogT3I2NCBVOkcsIFVE
OkcKKzY0OiBPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgSW1tLCBUbXAK
IAotWG9yMzIgVTpHLCBVRDpHCitYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAK
ICAgICBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAgICAgeDg2OiBBZGRyLCBUbXAKICAg
ICB4ODY6IEltbSwgQWRkcgogCi02NDogWG9yNjQgVTpHLCBVRDpHCis2NDogWG9yNjQgVTpHOjY0
LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIEltbSwgVG1w
CiAKLU5vdDMyIFVEOkcKK05vdDMyIFVaRDpHOjMyCiAgICAgVG1wCiAgICAgeDg2OiBBZGRyCiAK
LTY0OiBOb3Q2NCBVRDpHCis2NDogTm90NjQgVUQ6Rzo2NAogICAgIFRtcAogICAgIHg4NjogQWRk
cgogCi1DZWlsRG91YmxlIFU6RiwgVUQ6RgorQ2VpbERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAg
ICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcAogCi1DZWlsRmxvYXQgVTpGLCBVRDpGCitDZWlsRmxv
YXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAKIAotU3FydERv
dWJsZSBVOkYsIFVEOkYKK1NxcnREb3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1wLCBUbXAK
ICAgICB4ODY6IEFkZHIsIFRtcAogCi1TcXJ0RmxvYXQgVTpGLCBVRDpGCitTcXJ0RmxvYXQgVTpG
OjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1Db252ZXJ0
SW50MzJUb0RvdWJsZSBVOkcsIEQ6RgorQ29udmVydEludDMyVG9Eb3VibGUgVTpHOjMyLCBEOkY6
NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLTY0OiBDb252ZXJ0SW50NjRU
b0RvdWJsZSBVOkcsIEQ6RgorNjQ6IENvbnZlcnRJbnQ2NFRvRG91YmxlIFU6Rzo2NCwgRDpGOjY0
CiAgICAgVG1wLCBUbXAKIAotQ291bnRMZWFkaW5nWmVyb3MzMiBVOkcsIEQ6RworQ291bnRMZWFk
aW5nWmVyb3MzMiBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwg
VG1wCiAKLTY0OiBDb3VudExlYWRpbmdaZXJvczY0IFU6RywgRDpHCis2NDogQ291bnRMZWFkaW5n
WmVyb3M2NCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAK
IAotQ29udmVydERvdWJsZVRvRmxvYXQgVTpGLCBEOkYKK0NvbnZlcnREb3VibGVUb0Zsb2F0IFU6
Rjo2NCwgRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1Db252ZXJ0
RmxvYXRUb0RvdWJsZSBVOkYsIEQ6RgorQ29udmVydEZsb2F0VG9Eb3VibGUgVTpGOjMyLCBEOkY6
NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKQEAgLTMxOCw3ICszMjEsNyBA
QCBDb252ZXJ0RmxvYXRUb0RvdWJsZSBVOkYsIEQ6RgogIyB0aGUgcGxhdGZvcm0uIEknbSBub3Qg
ZW50aXJlbHkgc3VyZSB0aGF0IHRoaXMgaXMgYSBnb29kIHRoaW5nOyBpdCBtaWdodCBiZSBiZXR0
ZXIgdG8ganVzdCBoYXZlIGEKICMgTW92ZTY0IGluc3RydWN0aW9uLiBPVE9ILCBvdXIgTWFjcm9B
c3NlbWJsZXJzIGFscmVhZHkgaGF2ZSB0aGlzIG5vdGlvbiBvZiAibW92ZSgpIiB0aGF0IGJhc2lj
YWxseQogIyBtZWFucyBtb3ZlUHRyLgotTW92ZSBVOkcsIEQ6RworTW92ZSBVOkc6UHRyLCBEOkc6
UHRyCiAgICAgVG1wLCBUbXAKICAgICBJbW0sIFRtcCBhcyBzaWduRXh0ZW5kMzJUb1B0cgogICAg
IEltbTY0LCBUbXAKQEAgLTMyOCw3ICszMzEsNyBAQCBNb3ZlIFU6RywgRDpHCiAgICAgVG1wLCBJ
bmRleCBhcyBzdG9yZVB0cgogICAgIEltbSwgQWRkciBhcyBzdG9yZVB0cgogCi1Nb3ZlMzIgVTpH
LCBEOkcKK01vdmUzMiBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCBhcyB6ZXJvRXh0ZW5k
MzJUb1B0cgogICAgIEFkZHIsIFRtcCBhcyBsb2FkMzIKICAgICBJbmRleCwgVG1wIGFzIGxvYWQz
MgpAQCAtMzM3LDEwOCArMzQwLDEwOCBAQCBNb3ZlMzIgVTpHLCBEOkcKICAgICBJbW0sIEFkZHIg
YXMgc3RvcmUzMgogICAgIEltbSwgSW5kZXggYXMgc3RvcmUzMgogCi1TaWduRXh0ZW5kMzJUb1B0
ciBVOkcsIEQ6RworU2lnbkV4dGVuZDMyVG9QdHIgVTpHOjMyLCBEOkc6UHRyCiAgICAgVG1wLCBU
bXAKIAotWmVyb0V4dGVuZDhUbzMyIFU6RywgRDpHCitaZXJvRXh0ZW5kOFRvMzIgVTpHOjgsIFpE
Okc6MzIKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkOAogICAgIEluZGV4LCBU
bXAgYXMgbG9hZDgKIAotU2lnbkV4dGVuZDhUbzMyIFU6RywgRDpHCitTaWduRXh0ZW5kOFRvMzIg
VTpHOjgsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wIGFzIGxvYWQ4
U2lnbmVkRXh0ZW5kVG8zMgogICAgIEluZGV4LCBUbXAgYXMgbG9hZDhTaWduZWRFeHRlbmRUbzMy
CiAKLVplcm9FeHRlbmQxNlRvMzIgVTpHLCBEOkcKK1plcm9FeHRlbmQxNlRvMzIgVTpHOjE2LCBa
RDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDE2CiAgICAgSW5kZXgs
IFRtcCBhcyBsb2FkMTYKIAotU2lnbkV4dGVuZDE2VG8zMiBVOkcsIEQ6RworU2lnbkV4dGVuZDE2
VG8zMiBVOkc6MTYsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2Fk
MTZTaWduZWRFeHRlbmRUbzMyCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkMTZTaWduZWRFeHRlbmRU
bzMyCiAKLU1vdmVGbG9hdCBVOkYsIEQ6RgorTW92ZUZsb2F0IFU6RjozMiwgRDpGOjMyCiAgICAg
VG1wLCBUbXAgYXMgbW92ZURvdWJsZQogICAgIEFkZHIsIFRtcCBhcyBsb2FkRmxvYXQKICAgICBJ
bmRleCwgVG1wIGFzIGxvYWRGbG9hdAogICAgIFRtcCwgQWRkciBhcyBzdG9yZUZsb2F0CiAgICAg
VG1wLCBJbmRleCBhcyBzdG9yZUZsb2F0CiAKLU1vdmVEb3VibGUgVTpGLCBEOkYKK01vdmVEb3Vi
bGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkRG91
YmxlCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkRG91YmxlCiAgICAgVG1wLCBBZGRyIGFzIHN0b3Jl
RG91YmxlCiAgICAgVG1wLCBJbmRleCBhcyBzdG9yZURvdWJsZQogCi1Nb3ZlWmVyb1RvRG91Ymxl
IEQ6RgorTW92ZVplcm9Ub0RvdWJsZSBEOkY6NjQKICAgICBUbXAKIAotNjQ6IE1vdmU2NFRvRG91
YmxlIFU6RywgRDpGCis2NDogTW92ZTY0VG9Eb3VibGUgVTpHOjY0LCBEOkY6NjQKICAgICBUbXAs
IFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkRG91YmxlCiAKLU1vdmVJbnQzMlRvUGFja2VkIFU6
RywgRDpGCitNb3ZlSW50MzJUb1BhY2tlZCBVOkc6MzIsIEQ6RjozMgogICAgIFRtcCwgVG1wCiAg
ICAgQWRkciwgVG1wIGFzIGxvYWRGbG9hdAogCi02NDogTW92ZURvdWJsZVRvNjQgVTpGLCBEOkcK
KzY0OiBNb3ZlRG91YmxlVG82NCBVOkY6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgQWRk
ciwgVG1wIGFzIGxvYWQ2NAogCi1Nb3ZlUGFja2VkVG9JbnQzMiBVOkYsIEQ6RworTW92ZVBhY2tl
ZFRvSW50MzIgVTpGOjMyLCBEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBs
b2FkMzIKIAotTG9hZDggVTpHLCBEOkcKK0xvYWQ4IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwg
VG1wCiAgICAgSW5kZXgsIFRtcAogCi1TdG9yZTggVTpHLCBEOkcKK1N0b3JlOCBVOkc6OCwgRDpH
OjgKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgSW1tLCBJbmRleAogICAgIElt
bSwgQWRkcgogCi1Mb2FkOFNpZ25lZEV4dGVuZFRvMzIgVTpHLCBEOkcKK0xvYWQ4U2lnbmVkRXh0
ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAot
TG9hZDE2IFU6RywgRDpHCitMb2FkMTYgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAg
ICAgSW5kZXgsIFRtcAogCi1Mb2FkMTZTaWduZWRFeHRlbmRUbzMyIFU6RywgRDpHCitMb2FkMTZT
aWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4
LCBUbXAKIAotQ29tcGFyZTMyIFU6RywgVTpHLCBVOkcsIEQ6RworQ29tcGFyZTMyIFU6RzozMiwg
VTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCiAgICAg
UmVsQ29uZCwgVG1wLCBJbW0sIFRtcAogCi02NDogQ29tcGFyZTY0IFU6RywgVTpHLCBVOkcsIEQ6
RworNjQ6IENvbXBhcmU2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjMyCiAgICAgUmVs
Q29uZCwgVG1wLCBJbW0sIFRtcAogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKIAotVGVzdDMy
IFU6RywgVTpHLCBVOkcsIEQ6RworVGVzdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbSwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBU
bXAsIFRtcAogCi02NDogVGVzdDY0IFU6RywgVTpHLCBVOkcsIEQ6RworNjQ6IFRlc3Q2NCBVOkc6
MzIsIFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjMyCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcAog
ICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAKIAogIyBOb3RlIHRoYXQgYnJhbmNoZXMgaGF2ZSBz
b21lIGxvZ2ljIGluIEFpck9wdGltaXplQmxvY2tPcmRlci5jcHAuIElmIHlvdSBhZGQgbmV3IGJy
YW5jaGVzLCBwbGVhc2UgbWFrZSBzdXJlCiAjIHlvdSBvcHQgdGhlbSBpbnRvIHRoZSBibG9jayBv
cmRlciBvcHRpbWl6YXRpb25zLgogCi1CcmFuY2g4IFU6RywgVTpHLCBVOkcgL2JyYW5jaAorQnJh
bmNoOCBVOkc6MzIsIFU6Rzo4LCBVOkc6OCAvYnJhbmNoCiAgICAgeDg2OiBSZWxDb25kLCBBZGRy
LCBJbW0KICAgICB4ODY6IFJlbENvbmQsIEluZGV4LCBJbW0KIAotQnJhbmNoMzIgVTpHLCBVOkcs
IFU6RyAvYnJhbmNoCitCcmFuY2gzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyIC9icmFuY2gKICAg
ICB4ODY6IFJlbENvbmQsIEFkZHIsIEltbQogICAgIFJlbENvbmQsIFRtcCwgVG1wCiAgICAgUmVs
Q29uZCwgVG1wLCBJbW0KQEAgLTQ0NiwxNyArNDQ5LDE3IEBAIEJyYW5jaDMyIFU6RywgVTpHLCBV
OkcgL2JyYW5jaAogICAgIHg4NjogUmVsQ29uZCwgQWRkciwgVG1wCiAgICAgeDg2OiBSZWxDb25k
LCBJbmRleCwgSW1tCiAKLTY0OiBCcmFuY2g2NCBVOkcsIFU6RywgVTpHIC9icmFuY2gKKzY0OiBC
cmFuY2g2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0IC9icmFuY2gKICAgICBSZWxDb25kLCBUbXAs
IFRtcAogICAgIHg4NjogUmVsQ29uZCwgVG1wLCBBZGRyCiAgICAgeDg2OiBSZWxDb25kLCBBZGRy
LCBUbXAKICAgICB4ODY6IFJlbENvbmQsIEluZGV4LCBUbXAKIAotQnJhbmNoVGVzdDggVTpHLCBV
OkcsIFU6RyAvYnJhbmNoCitCcmFuY2hUZXN0OCBVOkc6MzIsIFU6Rzo4LCBVOkc6OCAvYnJhbmNo
CiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBJbW0KICAgICB4ODY6IFJlc0NvbmQsIEluZGV4LCBJ
bW0KIAotQnJhbmNoVGVzdDMyIFU6RywgVTpHLCBVOkcgL2JyYW5jaAorQnJhbmNoVGVzdDMyIFU6
RzozMiwgVTpHOjMyLCBVOkc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAgICAg
UmVzQ29uZCwgVG1wLCBJbW0KICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbQpAQCAtNDY0LDk1
ICs0NjcsOTUgQEAgQnJhbmNoVGVzdDMyIFU6RywgVTpHLCBVOkcgL2JyYW5jaAogCiAjIFdhcm5p
bmc6IGZvcm1zIHRoYXQgdGFrZSBhbiBpbW1lZGlhdGUgd2lsbCBzaWduLWV4dGVuZCB0aGVpciBp
bW1lZGlhdGUuIFlvdSBwcm9iYWJseSB3YW50CiAjIEJyYW5jaFRlc3QzMiBpbiBtb3N0IGNhc2Vz
IHdoZXJlIHlvdSB1c2UgYW4gaW1tZWRpYXRlLgotNjQ6IEJyYW5jaFRlc3Q2NCBVOkcsIFU6Rywg
VTpHIC9icmFuY2gKKzY0OiBCcmFuY2hUZXN0NjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCAvYnJh
bmNoCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIEltbQogICAgIHg4
NjogUmVzQ29uZCwgQWRkciwgSW1tCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBUbXAKICAgICB4
ODY6IFJlc0NvbmQsIEluZGV4LCBJbW0KIAotQnJhbmNoRG91YmxlIFU6RywgVTpGLCBVOkYgL2Jy
YW5jaAorQnJhbmNoRG91YmxlIFU6RzozMiwgVTpGOjY0LCBVOkY6NjQgL2JyYW5jaAogICAgIERv
dWJsZUNvbmQsIFRtcCwgVG1wCiAKLUJyYW5jaEZsb2F0IFU6RywgVTpGLCBVOkYgL2JyYW5jaAor
QnJhbmNoRmxvYXQgVTpHOjMyLCBVOkY6MzIsIFU6RjozMiAvYnJhbmNoCiAgICAgRG91YmxlQ29u
ZCwgVG1wLCBUbXAKIAotQnJhbmNoQWRkMzIgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorQnJhbmNo
QWRkMzIgVTpHOjMyLCBVOkc6MzIsIFVaRDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAs
IFRtcAogICAgIFJlc0NvbmQsIEltbSwgVG1wCiAgICAgeDg2OiBSZXNDb25kLCBJbW0sIEFkZHIK
ICAgICB4ODY6IFJlc0NvbmQsIFRtcCwgQWRkcgogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1w
CiAKLTY0OiBCcmFuY2hBZGQ2NCBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCis2NDogQnJhbmNoQWRk
NjQgVTpHOjMyLCBVOkc6NjQsIFVEOkc6NjQgL2JyYW5jaAogICAgIFJlc0NvbmQsIEltbSwgVG1w
CiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKIAotQnJhbmNoTXVsMzIgVTpHLCBVOkcsIFVEOkcgL2Jy
YW5jaAorQnJhbmNoTXVsMzIgVTpHOjMyLCBVOkc6MzIsIFVaRDpHOjMyIC9icmFuY2gKICAgICBS
ZXNDb25kLCBUbXAsIFRtcAogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAKLUJyYW5jaE11
bDMyIFU6RywgVTpHLCBVOkcsIEQ6RyAvYnJhbmNoCitCcmFuY2hNdWwzMiBVOkc6MzIsIFU6Rzoz
MiwgVTpHOjMyLCBaRDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1wCiAK
LTY0OiBCcmFuY2hNdWw2NCBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCis2NDogQnJhbmNoTXVsNjQg
VTpHOjMyLCBVOkc6NjQsIFVaRDpHOjY0IC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRtcAog
Ci1CcmFuY2hTdWIzMiBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCitCcmFuY2hTdWIzMiBVOkc6MzIs
IFU6RzozMiwgVVpEOkc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAgICAgUmVz
Q29uZCwgSW1tLCBUbXAKICAgICB4ODY6IFJlc0NvbmQsIEltbSwgQWRkcgogICAgIHg4NjogUmVz
Q29uZCwgVG1wLCBBZGRyCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBUbXAKIAotNjQ6IEJyYW5j
aFN1YjY0IFU6RywgVTpHLCBVRDpHIC9icmFuY2gKKzY0OiBCcmFuY2hTdWI2NCBVOkc6MzIsIFU6
Rzo2NCwgVUQ6Rzo2NCAvYnJhbmNoCiAgICAgUmVzQ29uZCwgSW1tLCBUbXAKICAgICBSZXNDb25k
LCBUbXAsIFRtcAogCi1CcmFuY2hOZWczMiBVOkcsIFVEOkcgL2JyYW5jaAorQnJhbmNoTmVnMzIg
VTpHOjMyLCBVWkQ6RzozMiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wCiAKLTY0OiBCcmFuY2hO
ZWc2NCBVOkcsIFVEOkcgL2JyYW5jaAorNjQ6IEJyYW5jaE5lZzY0IFU6RzozMiwgVVpEOkc6NjQg
L2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcAogCi1Nb3ZlQ29uZGl0aW9uYWxseTMyIFU6RywgVTpH
LCBVOkcsIFU6RywgVUQ6RworTW92ZUNvbmRpdGlvbmFsbHkzMiBVOkc6MzIsIFU6RzozMiwgVTpH
OjMyLCBVOkc6UHRyLCBVRDpHOlB0cgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAog
Ci02NDogTW92ZUNvbmRpdGlvbmFsbHk2NCBVOkcsIFU6RywgVTpHLCBVOkcsIFVEOkcKKzY0OiBN
b3ZlQ29uZGl0aW9uYWxseTY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIsIFVEOkc6
UHRyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLU1vdmVDb25kaXRpb25hbGx5
VGVzdDMyIFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RworTW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIg
VTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpHOlB0ciwgVUQ6RzpQdHIKICAgICBSZXNDb25kLCBU
bXAsIFRtcCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1wLCBUbXAKIAotNjQ6
IE1vdmVDb25kaXRpb25hbGx5VGVzdDY0IFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RworNjQ6IE1v
dmVDb25kaXRpb25hbGx5VGVzdDY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIsIFVE
Okc6UHRyCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwgVG1w
LCBJbW0sIFRtcCwgVG1wCiAKLU1vdmVDb25kaXRpb25hbGx5RG91YmxlIFU6RywgVTpGLCBVOkYs
IFU6RywgVUQ6RworTW92ZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHOjMyLCBVOkY6NjQsIFU6Rjo2
NCwgVTpHOlB0ciwgVUQ6RzpQdHIKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAK
IAotTW92ZUNvbmRpdGlvbmFsbHlGbG9hdCBVOkcsIFU6RiwgVTpGLCBVOkcsIFVEOkcKK01vdmVD
b25kaXRpb25hbGx5RmxvYXQgVTpHOjMyLCBVOkY6MzIsIFU6RjozMiwgVTpHOlB0ciwgVUQ6RzpQ
dHIKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKIAotTW92ZURvdWJsZUNvbmRp
dGlvbmFsbHkzMiBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKK01vdmVEb3VibGVDb25kaXRpb25h
bGx5MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVsQ29u
ZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLTY0OiBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0IFU6
RywgVTpHLCBVOkcsIFU6RiwgVUQ6RgorNjQ6IE1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQgVTpH
OjMyLCBVOkc6NjQsIFU6Rzo2NCwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVsQ29uZCwgVG1wLCBU
bXAsIFRtcCwgVG1wCiAKLU1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyIFU6RywgVTpHLCBV
OkcsIFU6RiwgVUQ6RgorTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0MzIgVTpHOjMyLCBVOkc6
MzIsIFU6RzozMiwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwg
VG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcCwgVG1wCiAKLTY0OiBNb3ZlRG91YmxlQ29u
ZGl0aW9uYWxseVRlc3Q2NCBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKKzY0OiBNb3ZlRG91Ymxl
Q29uZGl0aW9uYWxseVRlc3Q2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBVOkY6NjQsIFVEOkY6
NjQKICAgICBSZXNDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIElt
bSwgVG1wLCBUbXAKIAotTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHLCBVOkYsIFU6
RiwgVTpGLCBVRDpGCitNb3ZlRG91YmxlQ29uZGl0aW9uYWxseURvdWJsZSBVOkc6MzIsIFU6Rjo2
NCwgVTpGOjY0LCBVOkY6NjQsIFVEOkY6NjQKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwgVG1w
LCBUbXAKIAotTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlGbG9hdCBVOkcsIFU6RiwgVTpGLCBVOkYs
IFVEOkYKK01vdmVEb3VibGVDb25kaXRpb25hbGx5RmxvYXQgVTpHOjMyLCBVOkY6MzIsIFU6Rjoz
MiwgVTpGOjY0LCBVRDpGOjY0CiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAK
IEp1bXAgL2JyYW5jaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
b3Bjb2RlX2dlbmVyYXRvci5yYgkocmV2aXNpb24gMTk0MTcxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC00NCwx
MSArNDQsMTIgQEAgY2xhc3MgT3Bjb2RlCiBlbmQKIAogY2xhc3MgQXJnCi0gICAgYXR0cl9yZWFk
ZXIgOnJvbGUsIDp0eXBlCisgICAgYXR0cl9yZWFkZXIgOnJvbGUsIDp0eXBlLCA6d2lkdGgKIAot
ICAgIGRlZiBpbml0aWFsaXplKHJvbGUsIHR5cGUpCisgICAgZGVmIGluaXRpYWxpemUocm9sZSwg
dHlwZSwgd2lkdGgpCiAgICAgICAgIEByb2xlID0gcm9sZQogICAgICAgICBAdHlwZSA9IHR5cGUK
KyAgICAgICAgQHdpZHRoID0gd2lkdGgKICAgICBlbmQKIGVuZAogCkBAIC0xNzMsNyArMTc0LDcg
QEAgZGVmIGxleChzdHIsIGZpbGVOYW1lKQogZW5kCiAKIGRlZiBpc1VEKHRva2VuKQotICAgIHRv
a2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFVBKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFUpfChE
KXwoVUQpfChaRCl8KFVaRCl8KFVBKSlcWi8KIGVuZAogCiBkZWYgaXNHRih0b2tlbikKQEAgLTE4
OCw4ICsxODksMTIgQEAgZGVmIGlzQXJjaCh0b2tlbikKICAgICB0b2tlbiA9fiAvXEEoKHg4Nil8
KHg4Nl8zMil8KHg4Nl82NCl8KGFybSl8KGFybXY3KXwoYXJtNjQpfCgzMil8KDY0KSlcWi8KIGVu
ZAogCitkZWYgaXNXaWR0aCh0b2tlbikKKyAgICB0b2tlbiA9fiAvXEEoKDgpfCgxNil8KDMyKXwo
NjQpfChQdHIpKVxaLworZW5kCisKIGRlZiBpc0tleXdvcmQodG9rZW4pCi0gICAgaXNVRCh0b2tl
bikgb3IgaXNHRih0b2tlbikgb3IgaXNLaW5kKHRva2VuKSBvciBpc0FyY2godG9rZW4pIG9yCisg
ICAgaXNVRCh0b2tlbikgb3IgaXNHRih0b2tlbikgb3IgaXNLaW5kKHRva2VuKSBvciBpc0FyY2go
dG9rZW4pIG9yIGlzV2lkdGgodG9rZW4pIG9yCiAgICAgICAgIHRva2VuID09ICJzcGVjaWFsIiBv
ciB0b2tlbiA9PSAiYXMiCiBlbmQKIApAQCAtMjU2LDYgKzI2MSwxMyBAQCBjbGFzcyBQYXJzZXIK
ICAgICAgICAgcmVzdWx0CiAgICAgZW5kCiAKKyAgICBkZWYgY29uc3VtZVdpZHRoCisgICAgICAg
IHJlc3VsdCA9IHRva2VuLnN0cmluZworICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCB3aWR0
aCAoOCwgMTYsIDMyLCBvciA2NCkiKSB1bmxlc3MgaXNXaWR0aChyZXN1bHQpCisgICAgICAgIGFk
dmFuY2UKKyAgICAgICAgcmVzdWx0CisgICAgZW5kCisKICAgICBkZWYgcGFyc2VBcmNocwogICAg
ICAgICByZXR1cm4gbmlsIHVubGVzcyBpc0FyY2godG9rZW4pCiAKQEAgLTM1MCw4ICszNjIsMTAg
QEAgY2xhc3MgUGFyc2VyCiAgICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gY29uc3VtZVJv
bGUKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoIjoiKQogICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZSA9IGNvbnN1bWVUeXBlCisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dW1lKCI6IikKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gY29uc3VtZVdpZHRoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVy
ZSA8PCBBcmcubmV3KHJvbGUsIHR5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1
cmUgPDwgQXJnLm5ldyhyb2xlLCB0eXBlLCB3aWR0aCkKICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdW5sZXNzIHRva2VuID09ICIsIgogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3VtZSgiLCIpCkBAIC02MDYsMjYgKzYyMCwzNyBAQCB3
cml0ZUgoIk9wY29kZVV0aWxzIikgewogICAgIG1hdGNoSW5zdE92ZXJsb2FkKG91dHAsIDpmYXN0
LCAidGhpcyIpIHsKICAgICAgICAgfCBvcGNvZGUsIG92ZXJsb2FkIHwKICAgICAgICAgaWYgb3Bj
b2RlLnNwZWNpYWwKLSAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3RvcihhcmdzWzBdLCBBcmc6
OlVzZSwgQXJnOjpHUCk7IC8vIFRoaXMgaXMgYmFzaWNhbGx5IGJvZ3VzLCBidXQgaXQgd29ya3Mg
ZiBhbmFseXNlcyBtb2RlbCBTcGVjaWFsIGFzIGFuIGltbWVkaWF0ZS4iCisgICAgICAgICAgICBv
dXRwLnB1dHMgImZ1bmN0b3IoYXJnc1swXSwgQXJnOjpVc2UsIEFyZzo6R1AsIEFyZzo6cG9pbnRl
cldpZHRoKCkpOyAvLyBUaGlzIGlzIGJhc2ljYWxseSBib2d1cywgYnV0IGl0IHdvcmtzIGZvciBh
bmFseXNlcyB0aGF0IG1vZGVsIFNwZWNpYWwgYXMgYW4gaW1tZWRpYXRlLiIKICAgICAgICAgICAg
IG91dHAucHV0cyAiYXJnc1swXS5zcGVjaWFsKCktPmZvckVhY2hBcmcoKnRoaXMsIHNjb3BlZExh
bWJkYTxFYWNoQXJnQ2FsbGJhY2s+KGZ1bmN0b3IpKTsiCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAg
IHwgYXJnLCBpbmRleCB8CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgcm9sZSA9
IG5pbAogICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKICAgICAgICAgICAgICAgICB3aGVu
ICJVIgogICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZSIKICAgICAgICAgICAgICAgICB3
aGVuICJEIgogICAgICAgICAgICAgICAgICAgICByb2xlID0gIkRlZiIKKyAgICAgICAgICAgICAg
ICB3aGVuICJaRCIKKyAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgogICAgICAgICAg
ICAgICAgIHdoZW4gIlVEIgogICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZURlZiIKKyAg
ICAgICAgICAgICAgICB3aGVuICJVWkQiCisgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNl
WkRlZiIKICAgICAgICAgICAgICAgICB3aGVuICJVQSIKICAgICAgICAgICAgICAgICAgICAgcm9s
ZSA9ICJVc2VBZGRyIgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
cmFpc2UKICAgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIGlmIGFyZy53aWR0
aCA9PSAiUHRyIgorICAgICAgICAgICAgICAgICAgICB3aWR0aCA9ICJBcmc6OnBvaW50ZXJXaWR0
aCgpIgorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAi
QXJnOjpXaWR0aCN7YXJnLndpZHRofSIKKyAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0s
IEFyZzo6I3tyb2xlfSwgQXJnOjoje2FyZy50eXBlfVApOyIKKyAgICAgICAgICAgICAgICBvdXRw
LnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6I3tyb2xlfSwgQXJnOjoje2FyZy50
eXBlfVAsICN7d2lkdGh9KTsiCiAgICAgICAgICAgICB9CiAgICAgICAgIGVuZAogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267652</attachid>
            <date>2015-12-18 15:27:19 -0800</date>
            <delta_ts>2015-12-18 19:52:13 -0800</delta_ts>
            <desc>probably ok</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>62688</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTQxNzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjkwLDYgKzY5MCw4IEBACiAJCTBGRTA1MDJDMUFBOTA5
NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZFMDUwMjMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5j
cHAgKi87IH07CiAJCTBGRTA1MDJEMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTA1MDI0MUFBOTA5
NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkUwNTAyRjFBQUE4MDY5MDBEMzNCMzMgLyogU2NvcGVkQXJn
dW1lbnRzVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZFMDUwMkUxQUFBODA2OTAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmNw
cCAqLzsgfTsKKwkJMEZFMEU0QUQxQzI0Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTBFNEFCMUMy
NEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5jcHAgKi87IH07CisJCTBGRTBFNEFFMUMyNEM5
NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZFMEU0QUMxQzI0Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRo
LmggKi87IH07CiAJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQjE0MzZBQjIz
MDAxOTZDNDggLyogT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQz
NkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLzsgfTsKIAkJMEZFMjU0RjYxQUJEREQyMjAw
QTdDNkQyIC8qIERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjU0RjQxQUJEREQyMjAwQTdDNkQyIC8q
IERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwICovOyB9OwpAQCAtMjgxNiw2ICsyODE4LDgg
QEAKIAkJMEZFMDUwMjMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYXJPZmZzZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkUwNTAyNDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhck9mZnNldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkUwNTAyRTFBQUE4MDY5MDBEMzNCMzMgLyogU2NvcGVkQXJn
dW1lbnRzVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nv
cGVkQXJndW1lbnRzVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUw
RTRBQjFDMjRDOTRBMDAyRTE3QjYgLyogQWlyVG1wV2lkdGguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyVG1wV2lkdGguY3BwOyBwYXRoID0gYjMvYWlyL0FpclRt
cFdpZHRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMEU0QUMxQzI0Qzk0
QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFpclRtcFdpZHRoLmg7IHBhdGggPSBiMy9haXIvQWlyVG1wV2lkdGguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3B0aW9ucy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBP
cHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFMjU0RjQxQUJEREQyMjAwQTdDNkQyIC8qIERG
R1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHVmFy
YXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
NzY1LDYgKzQ3NjksOCBAQAogCQkJCTBGRUM4NTY4MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXAu
Y3BwICovLAogCQkJCTBGRUM4NTY5MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXAuaCAqLywKIAkJ
CQkwRkVDODU2QTFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wSW5saW5lcy5oICovLAorCQkJCTBG
RTBFNEFCMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5jcHAgKi8sCisJCQkJMEZFMEU0
QUMxQzI0Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmggKi8sCiAJCQkJMEYzNzMwOTIxQzBE
NjdFRTAwMDUyQkZBIC8qIEFpclVzZUNvdW50cy5oICovLAogCQkJCTBGRUM4NTZCMUJEQUNEQzcw
MDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg1NkMxQkRBQ0RDNzAwODBG
Rjc0IC8qIEFpclZhbGlkYXRlLmggKi8sCkBAIC03MjU1LDYgKzcyNjEsNyBAQAogCQkJCTBGMjM1
QkQ5MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI5Q0Y3MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0VGltZU9iamVjdE1h
dGVyaWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREIxNzE3OEUxQzAwNjkw
QzdGIC8qIEZUTEV4aXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFMEU0QUUxQzI0Qzk0
QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0YyOTk2QzE3
QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMkMx
NzBCNjYxOTAwQkI3MjJDIC8qIEZUTEZvcm1hdHRlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQ4QTMxQTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NSRW50cnlKSVRDb2RlLmggaW4g
SGVhZGVycyAqLywKQEAgLTkxNTksNiArOTE2Niw3IEBACiAJCQkJMEY3NjZEMzgxNUFFNEExQzAw
OEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNDRjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTcwNUI0MUFCMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2wu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFMEU0QUQxQzI0Qzk0QTAwMkUxN0I2IC8qIEFpclRt
cFdpZHRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwNUI0MUFEMUE2RTUwMUUwMDcxNjc1NyAv
KiBTeW1ib2xDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDVCNDFBRjFBNkU1
MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwNUI0
MUIxMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTk0MTcxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDYgKzY3LDE1IEBAIGlubGluZSBib29sIGlzWDg2KCkKICNlbmRpZgogfQogCitp
bmxpbmUgYm9vbCBpc1g4Nl82NCgpCit7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gdHJ1
ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGlubGluZSBib29sIG9w
dGltaXplRm9yQVJNdjdJRElWU3VwcG9ydGVkKCkKIHsKICAgICByZXR1cm4gaXNBUk12N0lESVZT
dXBwb3J0ZWQoKSAmJiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlv
bnMoKTsKQEAgLTgyLDYgKzkxLDExIEBAIGlubGluZSBib29sIG9wdGltaXplRm9yWDg2KCkKICAg
ICByZXR1cm4gaXNYODYoKSAmJiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGlt
aXphdGlvbnMoKTsKIH0KIAoraW5saW5lIGJvb2wgb3B0aW1pemVGb3JYODZfNjQoKQoreworICAg
IHJldHVybiBpc1g4Nl82NCgpICYmIE9wdGlvbnM6OnVzZUFyY2hpdGVjdHVyZVNwZWNpZmljT3B0
aW1pemF0aW9ucygpOworfQorCiBjbGFzcyBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7
CiBjbGFzcyBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CiBjbGFzcyBMaW5rQnVm
ZmVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJl
dmlzaW9uIDE5NDE3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTYgKzE1OCwxMiBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgfQogCi0gICAgLy8gTk9URTogVGhpcyBlbnRpcmUgbWVjaGFuaXNtIGNvdWxkIGJl
IGRvbmUgb3ZlciBBaXIsIGlmIHdlIGZlbHQgdGhhdCB0aGlzIHdvdWxkIGJlIGZhc3QgZW5vdWdo
LgotICAgIC8vIEZvciBub3cgd2UncmUgYXNzdW1pbmcgdGhhdCBpdCdzIGZhc3RlciB0byBkbyB0
aGlzIGhlcmUsIHNpbmNlIGFuYWx5emluZyBCMyBpcyBzbyBjaGVhcC4KICAgICBib29sIHNob3Vs
ZENvcHlQcm9wYWdhdGUoVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh2YWx1
ZS0+b3Bjb2RlKCkpIHsKICAgICAgICAgY2FzZSBUcnVuYzoKICAgICAgICAgY2FzZSBJZGVudGl0
eToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIFpFeHQzMjoKLSAgICAg
ICAgICAgIHJldHVybiBoaWdoQml0c0FyZVplcm8odmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTc2Miwx
MSArMTc1OCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFpFeHQzMjog
ewotICAgICAgICAgICAgaWYgKGhpZ2hCaXRzQXJlWmVybyhtX3ZhbHVlLT5jaGlsZCgwKSkpIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQodG1wKG1fdmFsdWUtPmNoaWxkKDApKSA9PSB0bXAobV92
YWx1ZSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQogICAgICAg
ICAgICAgYXBwZW5kVW5PcDxNb3ZlMzIsIEFpcjo6T29wcz4obV92YWx1ZS0+Y2hpbGQoMCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCShyZXZpc2lvbiAxOTQxNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFj
aEFyZyhJbnN0JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbGJhY2soaW5zdC5h
cmdzWzFdLCBBcmc6OkRlZiwgaW5zdC5vcmlnaW4tPmFpclR5cGUoKSk7CisgICAgY2FsbGJhY2so
aW5zdC5hcmdzWzFdLCBBcmc6OkRlZiwgaW5zdC5vcmlnaW4tPmFpclR5cGUoKSwgaW5zdC5vcmln
aW4tPmFpcldpZHRoKCkpOwogICAgIGZvckVhY2hBcmdJbXBsKDAsIDIsIGluc3QsIFNhbWVBc1Jl
cCwgY2FsbGJhY2spOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFj
a21hcFNwZWNpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1N0YWNrbWFwU3BlY2lhbC5jcHAJKHJldmlzaW9uIDE5NDE3MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw4
ICsxMTEsOSBAQCB2b2lkIFN0YWNrbWFwU3BlY2lhbDo6Zm9yRWFjaEFyZ0ltcGwoCiAgICAgICAg
ICAgICByb2xlID0gQXJnOjpMYXRlVXNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGNhbGxiYWNrKGFyZywgcm9sZSwgQXJnOjp0eXBlRm9yQjNUeXBl
KGNoaWxkLnZhbHVlKCktPnR5cGUoKSkpOworCisgICAgICAgIFR5cGUgdHlwZSA9IGNoaWxkLnZh
bHVlKCktPnR5cGUoKTsKKyAgICAgICAgY2FsbGJhY2soYXJnLCByb2xlLCBBcmc6OnR5cGVGb3JC
M1R5cGUodHlwZSksIEFyZzo6d2lkdGhGb3JCM1R5cGUodHlwZSkpOwogICAgIH0KIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAxOTQxNzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3
Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoaXMgaXMgdXNlZnVsIHdoZW4gbG93ZXJpbmcuIE5v
dGUgdGhhdCB0aGlzIGlzIG9ubHkgdmFsaWQgZm9yIG5vbi12b2lkIHZhbHVlcy4KICAgICBBaXI6
OkFyZzo6VHlwZSBhaXJUeXBlKCkgY29uc3QgeyByZXR1cm4gQWlyOjpBcmc6OnR5cGVGb3JCM1R5
cGUodHlwZSgpKTsgfQorICAgIEFpcjo6QXJnOjpXaWR0aCBhaXJXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIEFpcjo6QXJnOjp3aWR0aEZvckIzVHlwZSh0eXBlKCkpOyB9CiAKICAgICBBZGphY2VuY3lM
aXN0JiBjaGlsZHJlbigpIHsgcmV0dXJuIG1fY2hpbGRyZW47IH0gCiAgICAgY29uc3QgQWRqYWNl
bmN5TGlzdCYgY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFjay5jcHAJ
KHJldmlzaW9uIDE5NDE3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIGFs
bG9jYXRlU3RhY2soQ29kZSYgY29kZSkKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29k
ZSkgewogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiAqYmxvY2spIHsKICAgICAgICAgICAgIGlu
c3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUg
cm9sZSwgQXJnOjpUeXBlKSB7CisgICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpS
b2xlIHJvbGUsIEFyZzo6VHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBp
ZiAocm9sZSA9PSBBcmc6OlVzZUFkZHIgJiYgYXJnLmlzU3RhY2soKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVzY2FwaW5nU3RhY2tTbG90cy5hZGQoYXJnLnN0YWNrU2xvdCgpKTsKICAgICAg
ICAgICAgICAgICB9KTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIGFsbG9jYXRlU3RhY2soQ29k
ZSYgY29kZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbnRlcmZlcmluZzogIiwgV1RGOjpw
b2ludGVyTGlzdER1bXAobG9jYWxDYWxjLmxpdmUoKSksICJcbiIpOwogCiAgICAgICAgICAgICBp
bnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xl
IHJvbGUsIEFyZzo6VHlwZSkgeworICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6
Um9sZSByb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFBcmc6OmlzRGVmKHJvbGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZy5pc1N0YWNrKCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHJldmlzaW9uIDE5NDE3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw5ICsxMDEs
MjggQEAgcHVibGljOgogICAgICAgICAvLyBMaWtlIFVzZSBvZiBhZGRyZXNzLCBEZWYgb2YgYWRk
cmVzcyBkb2VzIG5vdCBtZWFuIGVzY2FwZS4KICAgICAgICAgRGVmLAogCisgICAgICAgIC8vIFRo
aXMgaXMgYSBzcGVjaWFsIHZhcmlhbnQgb2YgRGVmIHRoYXQgaW1wbGllcyB0aGF0IHRoZSB1cHBl
ciBiaXRzIG9mIHRoZSB0YXJnZXQgcmVnaXN0ZXIgYXJlCisgICAgICAgIC8vIHplcm8tZmlsbGVk
LiBTcGVjaWZpY2FsbHksIGlmIHRoZSBXaWR0aCBvZiBhIFpEZWYgaXMgbGVzcyB0aGFuIHRoZSBs
YXJnZXN0IHBvc3NpYmxlIHdpZHRoIG9mCisgICAgICAgIC8vIHRoZSBhcmd1bWVudCAoZm9yIGV4
YW1wbGUsIHdlJ3JlIG9uIGEgNjQtYml0IG1hY2hpbmUgYW5kIHdlIGhhdmUgYSBXaWR0aDMyIFpE
ZWYgb2YgYSBHUFIpIHRoZW4KKyAgICAgICAgLy8gdGhpcyBoYXMgZGlmZmVyZW50IGltcGxpY2F0
aW9ucyBmb3IgdGhlIHVwcGVyIGJpdHMgKGkuZS4gdGhlIHRvcCAzMiBiaXRzIGluIG91ciBleGFt
cGxlKQorICAgICAgICAvLyBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgdGhlIGFyZ3VtZW50Ogor
ICAgICAgICAvLworICAgICAgICAvLyBGb3IgcmVnaXN0ZXI6IHRoZSB1cHBlciBiaXRzIGFyZSB6
ZXJvLWZpbGxlZC4KKyAgICAgICAgLy8gRm9yIGFkZHJlc3M6IHRoZSB1cHBlciBiaXRzIGFyZSBu
b3QgdG91Y2hlZCAoaS5lLiB3ZSBkbyBhIDMyLWJpdCBzdG9yZSBpbiBvdXIgZXhhbXBsZSkuCisg
ICAgICAgIC8vIEZvciB0bXA6IGVpdGhlciB0aGUgdXBwZXIgYml0cyBhcmUgbm90IHRvdWNoZWQg
b3IgdGhleSBhcmUgemVyby1maWxsZWQsIGFuZCB3ZSB3b24ndCBrbm93CisgICAgICAgIC8vIHdo
aWNoIHVudGlsIHdlIGxvd2VyIHRoZSB0bXAgdG8gZWl0aGVyIGEgU3RhY2tTbG90IG9yIGEgUmVn
LgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgYmVoYXZpb3Igb2YgWkRlZiBpcyBjb25zaXN0
ZW50IHdpdGggd2hhdCBoYXBwZW5zIHdoZW4geW91IHBlcmZvcm0gMzItYml0IG9wZXJhdGlvbnMg
b24gYQorICAgICAgICAvLyA2NC1iaXQgR1BSLiBJdCdzIG5vdCBjb25zaXN0ZW50IHdpdGggd2hh
dCBoYXBwZW5zIHdpdGggOC1iaXQgb3IgMTYtYml0IERlZnMgb24geDg2IEdQUnMsIG9yCisgICAg
ICAgIC8vIHdoYXQgaGFwcGVucyB3aXRoIGZsb2F0IERlZnMgaW4gQVJNIE5FT04gb3IgWDg2IFNT
RS4gSGVuY2Ugd2h5IHdlIGhhdmUgYm90aCBEZWYgYW5kIFpEZWYuCisgICAgICAgIFpEZWYsCisK
ICAgICAgICAgLy8gVGhpcyBpcyBhIGNvbWJpbmVkIFVzZSBhbmQgRGVmLiBJdCBtZWFucyB0aGF0
IGJvdGggdGhpbmdzIGhhcHBlbi4KICAgICAgICAgVXNlRGVmLAogCisgICAgICAgIC8vIFRoaXMg
aXMgYSBjb21iaW5lZCBVc2UgYW5kIFpEZWYuIEl0IG1lYW5zIHRoYXQgYm90aCB0aGluZ3MgaGFw
cGVuLgorICAgICAgICBVc2VaRGVmLAorCiAgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGtp
bmQgb2YgdXNlIHRoYXQgaXMgb25seSB2YWxpZCBmb3IgYWRkcmVzc2VzLiBJdCBtZWFucyB0aGF0
IHRoZQogICAgICAgICAvLyBpbnN0cnVjdGlvbiB3aWxsIGV2YWx1YXRlIHRoZSBhZGRyZXNzIGV4
cHJlc3Npb24gYW5kIGNvbnN1bWUgdGhlIGVmZmVjdGl2ZSBhZGRyZXNzLCBidXQgaXQKICAgICAg
ICAgLy8gd2lsbCBuZWl0aGVyIGxvYWQgbm9yIHN0b3JlLiBUaGlzIGlzIGFuIGVzY2FwaW5nIHVz
ZSwgYmVjYXVzZSBub3cgdGhlIGFkZHJlc3MgbWF5IGJlCkBAIC0xMjYsNiArMTQ1LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgV2lkdGg2NAogICAgIH07CiAKKyAgICBzdGF0aWMgV2lkdGggcG9pbnRl
cldpZHRoKCkKKyAgICB7CisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgpCisgICAgICAg
ICAgICByZXR1cm4gV2lkdGg2NDsKKyAgICAgICAgcmV0dXJuIFdpZHRoMzI7CisgICAgfQorCiAg
ICAgZW51bSBTaWduZWRuZXNzIDogaW50OF90IHsKICAgICAgICAgU2lnbmVkLAogICAgICAgICBV
bnNpZ25lZApAQCAtMTM5LDkgKzE2NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlOgog
ICAgICAgICBjYXNlIENvbGRVc2U6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNl
IFVzZVpEZWY6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIERlZjoKKyAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVz
ZUFkZHI6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE1NSw3ICsx
ODMsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBV
c2U6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAg
IGNhc2UgRGVmOgorICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTczLDggKzIwMywxMCBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICBjYXNlIENvbGRVc2U6CiAgICAgICAg
IGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgY2FzZSBEZWY6CisgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2Fz
ZSBVc2VBZGRyOgogICAgICAgICBjYXNlIExhdGVVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xOTgsNiArMjMwLDI1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgY2FzZSBEZWY6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNl
IFpEZWY6CisgICAgICAgIGNhc2UgVXNlWkRlZjoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBSb2xlIGltcGxp
ZXMgdGhhdCB0aGUgSW5zdCB3aWxsIFpEZWYgdGhlIEFyZy4KKyAgICBzdGF0aWMgYm9vbCBpc1pE
ZWYoUm9sZSByb2xlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChyb2xlKSB7CisgICAgICAgIGNh
c2UgVXNlOgorICAgICAgICBjYXNlIENvbGRVc2U6CisgICAgICAgIGNhc2UgVXNlQWRkcjoKKyAg
ICAgICAgY2FzZSBMYXRlVXNlOgorICAgICAgICBjYXNlIERlZjoKKyAgICAgICAgY2FzZSBVc2VE
ZWY6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgWkRlZjoKKyAgICAg
ICAgY2FzZSBVc2VaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yMzQsNiArMjg1LDM3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAg
IHN0YXRpYyBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChUeXBlIHR5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gdHlwZSA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2NDsKKyAgICB9CisK
KyAgICBzdGF0aWMgV2lkdGggbWluaW11bVdpZHRoKFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0eXBlID09IEdQID8gV2lkdGg4IDogV2lkdGgzMjsKKyAgICB9CisKKyAgICBzdGF0
aWMgdW5zaWduZWQgYnl0ZXMoV2lkdGggd2lkdGgpCisgICAgeworICAgICAgICByZXR1cm4gMSA8
PCB3aWR0aDsKKyAgICB9CisKKyAgICBzdGF0aWMgV2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25l
ZCBieXRlcykKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYnl0ZXMpIHsKKyAgICAgICAgY2FzZSAw
OgorICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1cm4gV2lkdGg4OworICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICByZXR1cm4gV2lkdGgxNjsKKyAgICAgICAgY2FzZSAzOgorICAg
ICAgICBjYXNlIDQ6CisgICAgICAgICAgICByZXR1cm4gV2lkdGgzMjsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBXaWR0aDY0OworICAgICAgICB9CisgICAgfQorCiAgICAg
QXJnKCkKICAgICAgICAgOiBtX2tpbmQoSW52YWxpZCkKICAgICB7CkBAIC03MTcsMTkgKzc5OSwx
OSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBUaGlzIGRlZnMgKCVyY3gpIGJ1dCB1c2VzICVy
Y3guCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIGZvckVhY2hUbXAo
Um9sZSBhcmdSb2xlLCBUeXBlIGFyZ1R5cGUsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAg
dm9pZCBmb3JFYWNoVG1wKFJvbGUgYXJnUm9sZSwgVHlwZSBhcmdUeXBlLCBXaWR0aCBhcmdXaWR0
aCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9raW5k
KSB7CiAgICAgICAgIGNhc2UgVG1wOgogICAgICAgICAgICAgQVNTRVJUKGlzQW55VXNlKGFyZ1Jv
bGUpIHx8IGlzRGVmKGFyZ1JvbGUpKTsKLSAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlLCBhcmdS
b2xlLCBhcmdUeXBlKTsKKyAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlLCBhcmdSb2xlLCBhcmdU
eXBlLCBhcmdXaWR0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBZGRyOgot
ICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIFVzZSwgR1ApOworICAgICAgICAgICAgZnVuY3Rv
cihtX2Jhc2UsIFVzZSwgR1AsIGFyZ1JvbGUgPT0gVXNlQWRkciA/IGFyZ1dpZHRoIDogcG9pbnRl
cldpZHRoKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW5kZXg6Ci0gICAg
ICAgICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCk7Ci0gICAgICAgICAgICBmdW5jdG9yKG1f
aW5kZXgsIFVzZSwgR1ApOworICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIFVzZSwgR1AsIGFy
Z1JvbGUgPT0gVXNlQWRkciA/IGFyZ1dpZHRoIDogcG9pbnRlcldpZHRoKCkpOworICAgICAgICAg
ICAgZnVuY3RvcihtX2luZGV4LCBVc2UsIEdQLCBhcmdSb2xlID09IFVzZUFkZHIgPyBhcmdXaWR0
aCA6IHBvaW50ZXJXaWR0aCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckNDYWxsU3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCShyZXZpc2lvbiAxOTQxNzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDE2ICs0NSwxNyBAQCBDQ2FsbFNwZWNpYWw6On5DQ2FsbFNwZWNpYWwoKQogdm9pZCBD
Q2FsbFNwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3QgU2NvcGVkTGFtYmRhPElu
c3Q6OkVhY2hBcmdDYWxsYmFjaz4mIGNhbGxiYWNrKQogewogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1DYWxsZWVBcmdzOyArK2kpCi0gICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1tj
YWxsZWVBcmdPZmZzZXQgKyBpXSwgQXJnOjpVc2UsIEFyZzo6R1ApOworICAgICAgICBjYWxsYmFj
ayhpbnN0LmFyZ3NbY2FsbGVlQXJnT2Zmc2V0ICsgaV0sIEFyZzo6VXNlLCBBcmc6OkdQLCBBcmc6
OnBvaW50ZXJXaWR0aCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUmV0dXJu
R1BBcmdzOyArK2kpCi0gICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1tyZXR1cm5HUEFyZ09mZnNl
dCArIGldLCBBcmc6OkRlZiwgQXJnOjpHUCk7CisgICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1ty
ZXR1cm5HUEFyZ09mZnNldCArIGldLCBBcmc6OkRlZiwgQXJnOjpHUCwgQXJnOjpwb2ludGVyV2lk
dGgoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVJldHVybkZQQXJnczsgKytp
KQotICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbcmV0dXJuRlBBcmdPZmZzZXQgKyBpXSwgQXJn
OjpEZWYsIEFyZzo6RlApOworICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbcmV0dXJuRlBBcmdP
ZmZzZXQgKyBpXSwgQXJnOjpEZWYsIEFyZzo6RlAsIEFyZzo6V2lkdGg2NCk7CiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gYXJnQXJnT2Zmc2V0OyBpIDwgaW5zdC5hcmdzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIC8vIEZvciB0aGUgdHlwZSwgd2UgY2FuIGp1c3QgcXVlcnkgdGhlIGFyZydz
IHR5cGUuIFRoZSBhcmcgd2lsbCBoYXZlIGEgdHlwZSwgYmVjYXVzZSB3ZQogICAgICAgICAvLyBy
ZXF1aXJlIHRoZXNlIGFyZ3MgdG8gYmUgYXJndW1lbnQgcmVnaXN0ZXJzLgotICAgICAgICBjYWxs
YmFjayhpbnN0LmFyZ3NbaV0sIEFyZzo6VXNlLCBpbnN0LmFyZ3NbaV0udHlwZSgpKTsKKyAgICAg
ICAgQXJnOjpUeXBlIHR5cGUgPSBpbnN0LmFyZ3NbaV0udHlwZSgpOworICAgICAgICBjYWxsYmFj
ayhpbnN0LmFyZ3NbaV0sIEFyZzo6VXNlLCB0eXBlLCBBcmc6OmNvbnNlcnZhdGl2ZVdpZHRoKHR5
cGUpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
RWxpbWluYXRlRGVhZENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCShyZXZpc2lvbiAxOTQxNzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBib29sIGVsaW1pbmF0ZURlYWRDb2RlKENvZGUm
IGNvZGUpCiAgICAgICAgIC8vIFRoaXMgaW5zdHJ1Y3Rpb24gc2hvdWxkIGJlIHByZXN1bWVkIGRl
YWQsIGlmIGl0cyBBcmdzIGFyZSBhbGwgZGVhZC4KICAgICAgICAgYm9vbCBzdG9yZXNUb0xpdmUg
PSBmYWxzZTsKICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAgICAgICAgICAgWyZdIChBcmcm
IGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgeworICAgICAgICAgICAgWyZdIChBcmcm
IGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAg
ICAgICAgIGlmICghQXJnOjppc0RlZihyb2xlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIHN0b3Jlc1RvTGl2ZSB8PSBpc0FyZ0xpdmUoYXJnKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBh
cnRpYWxSZWdpc3RlclN0YWxscy5jcHAJKHJldmlzaW9uIDE5NDE3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgdXBkYXRlRGlzdGFuY2VzKEluc3QmIGlu
c3QsIEZQRGVmRGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGluc3QuZm9yRWFjaFRt
cChbJl0gKFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAgaW5zdC5m
b3JFYWNoVG1wKFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUsIEFyZzo6
V2lkdGgpIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh0bXAuaXNSZWcoKSwgIlRoaXMg
cGhhc2UgbXVzdCBiZSBydW4gYWZ0ZXIgcmVnaXN0ZXIgYWxsb2NhdGlvbi4iKTsKIAogICAgICAg
ICBpZiAodG1wLmlzRlBSKCkgJiYgQXJnOjppc0RlZihyb2xlKSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCShyZXZpc2lvbiAxOTQxNzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsMjAgKzk4
LDIwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFyZy5mb3JFYWNoVG1wRmFzdChmdW5jdG9yKTsK
ICAgICB9CiAKLSAgICB0eXBlZGVmIHZvaWQgRWFjaEFyZ0NhbGxiYWNrKEFyZyYsIEFyZzo6Um9s
ZSwgQXJnOjpUeXBlKTsKKyAgICB0eXBlZGVmIHZvaWQgRWFjaEFyZ0NhbGxiYWNrKEFyZyYsIEFy
Zzo6Um9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRoKTsKICAgICAKLSAgICAvLyBDYWxscyB0aGUg
ZnVuY3RvciB3aXRoIChhcmcsIHJvbGUsIHR5cGUpLiBUaGlzIGZ1bmN0aW9uIGlzIGF1dG8tZ2Vu
ZXJhdGVkIGJ5CisgICAgLy8gQ2FsbHMgdGhlIGZ1bmN0b3Igd2l0aCAoYXJnLCByb2xlLCB0eXBl
LCB3aWR0aCkuIFRoaXMgZnVuY3Rpb24gaXMgYXV0by1nZW5lcmF0ZWQgYnkKICAgICAvLyBvcGNv
ZGVfZ2VuZXJhdG9yLnJiLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9p
ZCBmb3JFYWNoQXJnKGNvbnN0IEZ1bmN0b3ImKTsKIAotICAgIC8vIENhbGxzIHRoZSBmdW5jdG9y
IHdpdGggKHRtcCwgcm9sZSwgdHlwZSkuCisgICAgLy8gQ2FsbHMgdGhlIGZ1bmN0b3Igd2l0aCAo
dG1wLCByb2xlLCB0eXBlLCB3aWR0aCkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
ICAgICB2b2lkIGZvckVhY2hUbXAoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAg
ICAgIGZvckVhY2hBcmcoCi0gICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9s
ZSwgQXJnOjpUeXBlIHR5cGUpIHsKLSAgICAgICAgICAgICAgICBhcmcuZm9yRWFjaFRtcChyb2xl
LCB0eXBlLCBmdW5jdG9yKTsKKyAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSBy
b2xlLCBBcmc6OlR5cGUgdHlwZSwgQWlyOjpXaWR0aCB3aWR0aCkgeworICAgICAgICAgICAgICAg
IGFyZy5mb3JFYWNoVG1wKHJvbGUsIHR5cGUsIHdpZHRoLCBmdW5jdG9yKTsKICAgICAgICAgICAg
IH0pOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
SW5zdElubGluZXMuaAkocmV2aXNpb24gMTk0MTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEZvckVhY2g8U3RhY2tTbG90Kj4gewogICAgIHN0YXRpYyB2b2lk
IGZvckVhY2goSW5zdCYgaW5zdCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAg
ICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9s
ZSByb2xlLCBBcmc6OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJn
OjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRoIHdpZHRoKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFhcmcuaXNTdGFjaygpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgU3RhY2tTbG90KiBzdGFja1Nsb3QgPSBhcmcuc3RhY2tTbG90KCk7
CkBAIC02Niw3ICs2Niw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEZvckVhY2g8U3RhY2tTbG90Kj4g
ewogICAgICAgICAgICAgICAgIC8vIHNlbWFudGljcyBvZiAiQW5vbnltb3VzIi4KICAgICAgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMTI4
CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZnVuY3RvcihzdGFja1Nsb3QsIHJv
bGUsIHR5cGUpOworICAgICAgICAgICAgICAgIGZ1bmN0b3Ioc3RhY2tTbG90LCByb2xlLCB0eXBl
LCB3aWR0aCk7CiAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpzdGFjayhzdGFja1Nsb3QsIGFy
Zy5vZmZzZXQoKSk7CiAgICAgICAgICAgICB9KTsKICAgICB9CkBAIC05OSwxMiArOTksMTMgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIGlubGluZSB2b2lkIEluc3Q6OmZvckVhY2hUbXBX
aXRoRXh0cmFDbG9iYmVyZWRSZWdzKEluc3QqIG5leHRJbnN0LCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQogewogICAgIGZvckVhY2hUbXAoCi0gICAgICAgIFsmXSAoVG1wJiB0bXBBcmcsIEFyZzo6
Um9sZSByb2xlLCBBcmc6OlR5cGUgYXJnVHlwZSkgewotICAgICAgICAgICAgZnVuY3Rvcih0bXBB
cmcsIHJvbGUsIGFyZ1R5cGUpOworICAgICAgICBbJl0gKFRtcCYgdG1wQXJnLCBBcmc6OlJvbGUg
cm9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUsIEFyZzo6V2lkdGggYXJnV2lkdGgpIHsKKyAgICAgICAg
ICAgIGZ1bmN0b3IodG1wQXJnLCByb2xlLCBhcmdUeXBlLCBhcmdXaWR0aCk7CiAgICAgICAgIH0p
OwogCiAgICAgYXV0byByZXBvcnRSZWcgPSBbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgZnVuY3Rv
cihUbXAocmVnKSwgQXJnOjpEZWYsIHJlZy5pc0dQUigpID8gQXJnOjpHUCA6IEFyZzo6RlApOwor
ICAgICAgICBBcmc6OlR5cGUgdHlwZSA9IHJlZy5pc0dQUigpID8gQXJnOjpHUCA6IEFyZzo6RlA7
CisgICAgICAgIGZ1bmN0b3IoVG1wKHJlZyksIEFyZzo6RGVmLCB0eXBlLCBBcmc6OmNvbnNlcnZh
dGl2ZVdpZHRoKHR5cGUpKTsKICAgICB9OwogCiAgICAgaWYgKGhhc1NwZWNpYWwoKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2Np
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRl
cmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwCShyZXZpc2lvbiAxOTQxNzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNDAgKzQ4LDYgQEAgYm9vbCB0cmFjZURlYnVnID0gZmFsc2U7
CiBib29sIHJlcG9ydFN0YXRzID0gZmFsc2U7CiAKIHRlbXBsYXRlPEFyZzo6VHlwZSB0eXBlPgot
c3RydWN0IE1vdmVJbnN0SGVscGVyOwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTW92ZUluc3RIZWxw
ZXI8QXJnOjpHUD4gewotICAgIHN0YXRpYyBib29sIG1heUJlQ29hbGVzY2FibGUoY29uc3QgSW5z
dCYgaW5zdCkKLSAgICB7Ci0gICAgICAgIGJvb2wgaXNNb3ZlID0gaW5zdC5vcGNvZGUgPT0gTW92
ZTsKLSAgICAgICAgaWYgKCFpc01vdmUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpbnN0LmFyZ3Muc2l6ZSgpID09IDIsICJXZSBhc3N1
bWUgY29hbGVjYWJsZSBtb3ZlcyBvbmx5IGhhdmUgdHdvIGFyZ3VtZW50cyBpbiBhIGZldyBwbGFj
ZXMuIik7Ci0gICAgICAgIEFTU0VSVChpbnN0LmFyZ3NbMF0uaXNUeXBlKEFyZzo6R1ApKTsKLSAg
ICAgICAgQVNTRVJUKGluc3QuYXJnc1sxXS5pc1R5cGUoQXJnOjpHUCkpOwotCi0gICAgICAgIHJl
dHVybiBpbnN0LmFyZ3NbMF0uaXNUbXAoKSAmJiBpbnN0LmFyZ3NbMV0uaXNUbXAoKTsKLSAgICB9
Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTW92ZUluc3RIZWxwZXI8QXJnOjpGUD4gewotICAg
IHN0YXRpYyBib29sIG1heUJlQ29hbGVzY2FibGUoY29uc3QgSW5zdCYgaW5zdCkKLSAgICB7Ci0g
ICAgICAgIGlmIChpbnN0Lm9wY29kZSAhPSBNb3ZlRG91YmxlKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW5zdC5hcmdzLnNpemUoKSA9
PSAyLCAiV2UgYXNzdW1lIGNvYWxlY2FibGUgbW92ZXMgb25seSBoYXZlIHR3byBhcmd1bWVudHMg
aW4gYSBmZXcgcGxhY2VzLiIpOwotICAgICAgICBBU1NFUlQoaW5zdC5hcmdzWzBdLmlzVHlwZShB
cmc6OkZQKSk7Ci0gICAgICAgIEFTU0VSVChpbnN0LmFyZ3NbMV0uaXNUeXBlKEFyZzo6RlApKTsK
LQotICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLmlzVG1wKCkgJiYgaW5zdC5hcmdzWzFdLmlz
VG1wKCk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8QXJnOjpUeXBlIHR5cGU+CiBjbGFzcyBJdGVy
YXRlZFJlZ2lzdGVyQ29hbGVzY2luZ0FsbG9jYXRvciB7CiBwdWJsaWM6CiAgICAgSXRlcmF0ZWRS
ZWdpc3RlckNvYWxlc2NpbmdBbGxvY2F0b3IoCkBAIC05MCw2ICs1Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgLCBtX3VzZUNvdW50cyh1c2VDb3VudHMpCiAgICAgICAgICwgbV91bnNwaWxsYWJsZVRt
cCh1bnNwaWxsYWJsZVRtcCkKICAgICAgICAgLCBtX251bWJlck9mUmVnaXN0ZXJzKHJlZ3NJblBy
aW9yaXR5T3JkZXIodHlwZSkuc2l6ZSgpKQorICAgICAgICAsIG1fdG1wV2lkdGgoY29kZSkKICAg
ICB7CiAgICAgICAgIGluaXRpYWxpemVEZWdyZWVzKCk7CiAKQEAgLTEwMyw2ICs3MCwxMzQgQEAg
cHVibGljOgogICAgICAgICBhbGxvY2F0ZSgpOwogICAgIH0KIAorICAgIHZvaWQgcnVuKCkKKyAg
ICB7CisgICAgICAgIGlmIChzcGlsbGVkVG1wKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBh
c3NpZ25SZWdpc3RlclRvVG1wKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgYWRkU3BpbGxBbmRGaWxsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgYXNz
aWduUmVnaXN0ZXJUb1RtcCgpCisgICAgeworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2Nr
IDogbV9jb2RlKSB7CisgICAgICAgICAgICAvLyBHaXZlIFRtcCBhIHZhbGlkIHJlZ2lzdGVyLgor
ICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAg
Ly8gT24gWDg2XzY0LCBNb3ZlMzIgaXMgY2hlYXBlciBpZiB3ZSBrbm93IHRoYXQgaXQncyBlcXVp
dmFsZW50IHRvIGEgTW92ZS4gSXQncworICAgICAgICAgICAgICAgIC8vIGVxdWl2YWxlbnQgaWYg
dGhlIGRlc3RpbmF0aW9uJ3MgaGlnaCBiaXRzIGFyZSBub3Qgb2JzZXJ2YWJsZSBvciBpZiB0aGUg
c291cmNlJ3MgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJpdHMgYXJlIGFsbCB6ZXJvLgorICAg
ICAgICAgICAgICAgIGlmIChvcHRpbWl6ZUZvclg4Nl82NCgpICYmIGluc3Qub3Bjb2RlID09IE1v
dmUKKyAgICAgICAgICAgICAgICAgICAgJiYgaW5zdC5hcmdzWzBdLmlzVG1wKCkgJiYgaW5zdC5h
cmdzWzFdLmlzVG1wKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdG1wV2lkdGgudXNl
V2lkdGgoaW5zdC5hcmdzWzFdKSA8PSBBcmc6OldpZHRoMzIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHx8IG1fdG1wV2lkdGguZGVmV2lkdGgoaW5zdC5hcmdzWzBdKSA8PSBBcmc6OldpZHRoMzIp
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0Lm9wY29kZSA9IE1vdmUzMjsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0KAorICAgICAg
ICAgICAgICAgICAgICBbJl0gKFRtcCYgdG1wKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodG1wLmlzUmVnKCkgfHwgdG1wLmlzR1AoKSA9PSAodHlwZSAhPSBBcmc6OkdQKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgICAgIFRtcCBhbGlhc1RtcCA9IGdldEFsaWFzKHRtcCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBUbXAgYXNzaWduZWRUbXA7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoYWxpYXNUbXAuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhc3NpZ25lZFRtcCA9IFRtcChhbGlhc1RtcC5yZWcoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlZyA9IGFsbG9j
YXRlZFJlZyhhbGlhc1RtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJl
Zyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWduZWRUbXAgPSBUbXAocmVnKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChhc3NpZ25lZFRtcC5pc1JlZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IGFz
c2lnbmVkVG1wOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gUmVtb3ZlIGFsbCB0aGUgdXNlbGVzcyBtb3ZlcyB3ZSBjcmVhdGVkIGluIHRo
aXMgYmxvY2suCisgICAgICAgICAgICBibG9jay0+aW5zdHMoKS5yZW1vdmVBbGxNYXRjaGluZygK
KyAgICAgICAgICAgICAgICBbJl0gKEluc3QmIGluc3QpIC0+IGJvb2wgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gaXNVc2VsZXNzTW92ZShpbnN0KTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYWRkU3BpbGxBbmRGaWxsKCkKKyAgICB7Cisg
ICAgICAgIC8vIEFsbCB0aGUgc3BpbGxlZCB2YWx1ZXMgYmVjb21lIHVuc3BpbGxhYmxlLgorICAg
ICAgICBtX3Vuc3BpbGxhYmxlVG1wLmFkZChtX3NwaWxsZWRUbXAuYmVnaW4oKSwgbV9zcGlsbGVk
VG1wLmVuZCgpKTsKKworICAgICAgICAvLyBBbGxvY2F0ZSBzdGFjayBzbG90IGZvciBlYWNoIHNw
aWxsZWQgdmFsdWUuCisgICAgICAgIEhhc2hNYXA8VG1wLCBTdGFja1Nsb3QqPiBzdGFja1Nsb3Rz
OworICAgICAgICBmb3IgKFRtcCB0bXAgOiBtX3NwaWxsZWRUbXApIHsKKyAgICAgICAgICAgIFN0
YWNrU2xvdCogc3RhY2tTbG90ID0gbV9jb2RlLmFkZFN0YWNrU2xvdChBcmc6OmJ5dGVzKG1fdG1w
V2lkdGgud2lkdGgodG1wKSkpOworICAgICAgICAgICAgYm9vbCBpc05ld1RtcCA9IHN0YWNrU2xv
dHMuYWRkKHRtcCwgc3RhY2tTbG90LCBTdGFja1Nsb3RLaW5kOjpBbm9ueW1vdXMpKS5pc05ld0Vu
dHJ5OworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ld1RtcCwgaXNOZXdUbXApOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gUmV3cml0ZSB0aGUgcHJvZ3JhbSB0byBnZXQgcmlkIG9mIHRo
ZSBzcGlsbGVkIFRtcC4KKyAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChjb2RlKTsK
KyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKKyAgICAgICAgICAgIGJv
b2wgaGFzQWxpYXNlZFRtcHMgPSBmYWxzZTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnN0SW5kZXggPSAwOyBpbnN0SW5kZXggPCBibG9jay0+c2l6ZSgpOyArK2luc3RJbmRleCkgewor
ICAgICAgICAgICAgICAgIEluc3QmIGluc3QgPSBibG9jay0+YXQoaW5zdEluZGV4KTsKKworICAg
ICAgICAgICAgICAgIC8vIFRyeSB0byByZXBsYWNlIHRoZSByZWdpc3RlciB1c2UgYnkgbWVtb3J5
IHVzZSB3aGVuIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpbnN0LmFyZ3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgQXJnJiBh
cmcgPSBpbnN0LmFyZ3NbaV07CisgICAgICAgICAgICAgICAgICAgIGlmIChhcmcuaXNUbXAoKSAm
JiBhcmcudHlwZSgpID09IHR5cGUgJiYgIWFyZy5pc1JlZygpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIHN0YWNrU2xvdEVudHJ5ID0gc3RhY2tTbG90cy5maW5kKGFyZy50bXAoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2tTbG90RW50cnkgIT0gc3RhY2tTbG90
cy5lbmQoKSAmJiBpbnN0LmFkbWl0c1N0YWNrKGkpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZyA9IEFyZzo6c3RhY2soc3RhY2tTbG90RW50cnktPnZhbHVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEZvciBl
dmVyeSBvdGhlciBjYXNlLCBhZGQgTG9hZC9TdG9yZSBhcyBuZWVkZWQuCisgICAgICAgICAgICAg
ICAgaW5zdC5mb3JFYWNoVG1wKAorICAgICAgICAgICAgICAgICAgICBbJl0gKFRtcCYgdG1wLCBB
cmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUsIEFyZzo6V2lkdGggYXJnV2lkdGgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNSZWcoKSB8fCBhcmdUeXBlICE9IHR5
cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvIHN0YWNrU2xvdEVudHJ5ID0gc3RhY2tTbG90cy5maW5kKHRtcCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2tTbG90RW50cnkgPT0gc3RhY2tTbG90cy5l
bmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRtcCBhbGlhcyA9IGdldEFsaWFz
V2hlblNwaWxsaW5nKHRtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsaWFz
ICE9IHRtcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBhbGlhczsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQWxpYXNlZFRtcHMgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFyZyBhcmcgPSBBcmc6OnN0YWNrKHN0YWNrU2xvdEVudHJ5LT52YWx1ZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBPcGNvZGUgbW92ZSA9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZSA9PSBBcmc6OkdQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdGFj
a1Nsb3RFbnRyeS0+dmFsdWUtPmJ5dGVTaXplKCkgPD0gNCA/IE1vdmUzMiA6IE1vdmUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IHN0YWNrU2xvdEVudHJ5LT52YWx1ZS0+Ynl0ZVNpemUo
KSA8PSA0ID8gTW92ZUZsb2F0IDogTW92ZURvdWJsZTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKEFyZzo6aXNBbnlVc2Uocm9sZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUbXAgbmV3VG1wID0gY29kZS5uZXdUbXAodHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXgsIG1vdmUsIGluc3Qub3JpZ2luLCBh
cmcsIG5ld1RtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gbmV3VG1wOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW55IG5ldyBGaWxsKCkgc2hvdWxkIG5l
dmVyIGJlIHNwaWxsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zcGlsbGFibGVU
bXAuYWRkKHRtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoQXJnOjppc0RlZihyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCArIDEsIG1vdmUsIGluc3Qub3JpZ2luLCB0
bXAsIGFyZyk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOworCisgICAgICAgICAgICBpZiAoaGFz
QWxpYXNlZFRtcHMpIHsKKyAgICAgICAgICAgICAgICBibG9jay0+aW5zdHMoKS5yZW1vdmVBbGxN
YXRjaGluZygKKyAgICAgICAgICAgICAgICAgICAgWyZdIChJbnN0JiBpbnN0KSAtPiBib29sIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1VzZWxlc3NNb3ZlKGluc3QpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICBUbXAgZ2V0QWxpYXMoVG1wIHRtcCkgY29uc3QKICAgICB7CiAgICAgICAgIFRtcCBh
bGlhcyA9IHRtcDsKQEAgLTE0Myw3ICsyMzgsMzIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
cmVnOwogICAgIH0KIAotcHJpdmF0ZToKKyAgICBib29sIG1heUJlQ29hbGVzY2FibGUoY29uc3Qg
SW5zdCYgaW5zdCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoaW5zdC5vcGNvZGUpIHsKKyAgICAg
ICAgY2FzZSBNb3ZlMzI6CisgICAgICAgIGNhc2UgTW92ZToKKyAgICAgICAgY2FzZSBNb3ZlRmxv
YXQ6CisgICAgICAgIGNhc2UgTW92ZURvdWJsZToKKyAgICAgICAgICAgIGlmICghaW5zdC5hcmdz
WzBdLmlzVG1wKCkgfHwgIWluc3QuYXJnc1sxXS5pc1RtcCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGluc3Qub3Bjb2RlID09
IE1vdmUzMgorICAgICAgICAgICAgICAgICYmIG1fdG1wV2lkdGhzLmRlZldpZHRoKGluc3QuYXJn
c1swXSkgPiBBcmc6OldpZHRoMzIKKyAgICAgICAgICAgICAgICAmJiBtX3RtcFdpZHRocy51c2VX
aWR0aChpbnN0LmFyZ3NbMV0pID4gQXJnOjpXaWR0aDMyKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBib29sIGlzVXNlbGVzc01vdmUoY29uc3QgSW5zdCYgaW5zdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBtYXlCZUNvYWxlc2NhYmxlKGluc3QpICYmIGluc3QuYXJnc1swXS50bXAoKSA9PSBp
bnN0LmFyZ3NbMV0udG1wKCk7CisgICAgfQorCiAgICAgdW5zaWduZWQgdG1wQXJyYXlTaXplKCkK
ICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bVRtcHMgPSBtX2NvZGUubnVtVG1wcyh0eXBlKTsK
QEAgLTE4MSwxNCArMzAxLDE0IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpbnN0LmZvckVh
Y2hUbXBXaXRoRXh0cmFDbG9iYmVyZWRSZWdzKAogICAgICAgICAgICAgbmV4dEluc3QsCi0gICAg
ICAgICAgICBbJl0gKGNvbnN0IFRtcCYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIGFy
Z1R5cGUpIHsKKyAgICAgICAgICAgIFsmXSAoY29uc3QgVG1wJiBhcmcsIEFyZzo6Um9sZSByb2xl
LCBBcmc6OlR5cGUgYXJnVHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgIGlmICgh
QXJnOjppc0RlZihyb2xlKSB8fCBhcmdUeXBlICE9IHR5cGUpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBBbGwgdGhlIERl
ZigpcyBpbnRlcmZlcmUgd2l0aCBlYWNoIG90aGVyIGFuZCB3aXRoIGFsbCB0aGUgZXh0cmEgY2xv
YmJlcmVkIFRtcHMuCiAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCB1c2UgZm9yRWFj
aERlZkFuZEV4dHJhQ2xvYmJlcmVkVG1wKCkgaGVyZSBzaW5jZSBjb2xvcmVkIFRtcHMKICAgICAg
ICAgICAgICAgICAvLyBkbyBub3QgbmVlZCBpbnRlcmZlcmVuY2UgZWRnZXMgaW4gb3VyIGltcGxl
bWVudGF0aW9uLgotICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaFRtcChbJl0gKFRtcCYgb3Ro
ZXJBcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgYXJnVHlwZSkgeworICAgICAgICAgICAg
ICAgIGluc3QuZm9yRWFjaFRtcChbJl0gKFRtcCYgb3RoZXJBcmcsIEFyZzo6Um9sZSByb2xlLCBB
cmc6OlR5cGUgYXJnVHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFBcmc6OmlzRGVmKHJvbGUpIHx8IGFyZ1R5cGUgIT0gdHlwZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTE5Niwx
MyArMzE2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfSk7CiAKLSAgICAgICAgaWYgKE1vdmVJbnN0SGVscGVyPHR5cGU+OjptYXlCZUNvYWxlc2Nh
YmxlKGluc3QpKSB7CisgICAgICAgIGlmIChtYXlCZUNvYWxlc2NhYmxlKGluc3QpKSB7CiAgICAg
ICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0aGUgVXNlKCkgb2YgdGhpcyBtb3ZlIHRvIGludGVy
ZmVyZSB3aXRoIHRoZSBEZWYoKSwgZXZlbiBpZiBpdCBpcyBsaXZlCiAgICAgICAgICAgICAvLyBh
ZnRlciB0aGUgTW92ZS4gSWYgd2Ugd2VyZSB0byBhZGQgdGhlIGludGVyZmVyZW5jZSBlZGdlLCBp
dCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvCiAgICAgICAgICAgICAvLyBjb2FsZXNjZSB0aGUgTW92
ZSBldmVuIGlmIHRoZSB0d28gVG1wIG5ldmVyIGludGVyZmVyZSBhbnl3aGVyZS4KICAgICAgICAg
ICAgIFRtcCBkZWZUbXA7CiAgICAgICAgICAgICBUbXAgdXNlVG1wOwotICAgICAgICAgICAgaW5z
dC5mb3JFYWNoVG1wKFsmZGVmVG1wLCAmdXNlVG1wXSAoVG1wJiBhcmdUbXAsIEFyZzo6Um9sZSBy
b2xlLCBBcmc6OlR5cGUpIHsKKyAgICAgICAgICAgIGluc3QuZm9yRWFjaFRtcChbJmRlZlRtcCwg
JnVzZVRtcF0gKFRtcCYgYXJnVG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6Oldp
ZHRoKSB7CiAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkpCiAgICAgICAgICAg
ICAgICAgICAgIGRlZlRtcCA9IGFyZ1RtcDsKICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTI1
Miw3ICszNzIsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBBbGwgdGhlIERlZigpcyBpbnRlcmZl
cmUgd2l0aCBldmVydGhpbmcgbGl2ZS4KICAgICAgICAgaW5zdC5mb3JFYWNoVG1wV2l0aEV4dHJh
Q2xvYmJlcmVkUmVncygKICAgICAgICAgICAgIG5leHRJbnN0LAotICAgICAgICAgICAgWyZdIChj
b25zdCBUbXAmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSBhcmdUeXBlKSB7CisgICAg
ICAgICAgICBbJl0gKGNvbnN0IFRtcCYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIGFy
Z1R5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAgICAgICBpZiAoIUFyZzo6aXNEZWYocm9s
ZSkgfHwgYXJnVHlwZSAhPSB0eXBlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgCkBAIC05MjAsNiArMTA0MCw4IEBAIHByaXZhdGU6CiAgICAgLy8gTG93LWRl
Z3JlZSwgTW92ZSByZWxhdGVkLgogICAgIEhhc2hTZXQ8VG1wPiBtX2ZyZWV6ZVdvcmtsaXN0Owog
CisgICAgVG1wV2lkdGggbV90bXBXaWR0aDsKKwogICAgIGJvb2wgbV9oYXNTZWxlY3RlZFNwaWxs
IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzQ29hbGVzY2VkTm9uVHJpdmlhbE1vdmUgeyBmYWxz
ZSB9OwogCkBAIC05MjgsMTEyICsxMDUwLDYgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPEFy
Zzo6VHlwZSB0eXBlPgotYm9vbCBpc1VzZWxlc3NNb3ZlSW5zdChjb25zdCBJbnN0JiBpbnN0KQot
ewotICAgIHJldHVybiBNb3ZlSW5zdEhlbHBlcjx0eXBlPjo6bWF5QmVDb2FsZXNjYWJsZShpbnN0
KSAmJiBpbnN0LmFyZ3NbMF0udG1wKCkgPT0gaW5zdC5hcmdzWzFdLnRtcCgpOwotfQotCi10ZW1w
bGF0ZTxBcmc6OlR5cGUgdHlwZT4KLXZvaWQgYXNzaWduUmVnaXN0ZXJUb1RtcEluUHJvZ3JhbShD
b2RlJiBjb2RlLCBjb25zdCBJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZ0FsbG9jYXRvcjx0eXBl
PiYgYWxsb2NhdG9yKQotewotICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7Ci0g
ICAgICAgIC8vIEdpdmUgVG1wIGEgdmFsaWQgcmVnaXN0ZXIuCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaW5zdEluZGV4ID0gMDsgaW5zdEluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbnN0SW5kZXgp
IHsKLSAgICAgICAgICAgIEluc3QmIGluc3QgPSBibG9jay0+YXQoaW5zdEluZGV4KTsKLSAgICAg
ICAgICAgIGluc3QuZm9yRWFjaFRtcEZhc3QoWyZdIChUbXAmIHRtcCkgewotICAgICAgICAgICAg
ICAgIGlmICh0bXAuaXNSZWcoKSB8fCB0bXAuaXNHUCgpID09ICh0eXBlICE9IEFyZzo6R1ApKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBUbXAgYWxpYXNU
bXAgPSBhbGxvY2F0b3IuZ2V0QWxpYXModG1wKTsKLSAgICAgICAgICAgICAgICBUbXAgYXNzaWdu
ZWRUbXA7Ci0gICAgICAgICAgICAgICAgaWYgKGFsaWFzVG1wLmlzUmVnKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGFzc2lnbmVkVG1wID0gVG1wKGFsaWFzVG1wLnJlZygpKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byByZWcgPSBhbGxvY2F0b3IuYWxs
b2NhdGVkUmVnKGFsaWFzVG1wKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZyk7Ci0g
ICAgICAgICAgICAgICAgICAgIGFzc2lnbmVkVG1wID0gVG1wKHJlZyk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIEFTU0VSVChhc3NpZ25lZFRtcC5pc1JlZygpKTsKLSAgICAg
ICAgICAgICAgICB0bXAgPSBhc3NpZ25lZFRtcDsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gUmVtb3ZlIGFsbCB0aGUgdXNlbGVzcyBtb3ZlcyB3ZSBjcmVhdGVkIGlu
IHRoaXMgYmxvY2suCi0gICAgICAgIGJsb2NrLT5pbnN0cygpLnJlbW92ZUFsbE1hdGNoaW5nKGlz
VXNlbGVzc01vdmVJbnN0PHR5cGU+KTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPEFyZzo6VHlwZSB0
eXBlPgotdm9pZCBhZGRTcGlsbEFuZEZpbGxUb1Byb2dyYW0oQ29kZSYgY29kZSwgY29uc3QgSXRl
cmF0ZWRSZWdpc3RlckNvYWxlc2NpbmdBbGxvY2F0b3I8dHlwZT4mIGFsbG9jYXRvciwgSGFzaFNl
dDxUbXA+JiB1bnNwaWxsYWJsZVRtcCkKLXsKLSAgICBjb25zdCBIYXNoU2V0PFRtcD4mIHNwaWxs
ZWRUbXAgPSBhbGxvY2F0b3Iuc3BpbGxlZFRtcCgpOwotCi0gICAgLy8gQWxsIHRoZSBzcGlsbGVk
IHZhbHVlcyBiZWNvbWUgdW5zcGlsbGFibGUuCi0gICAgdW5zcGlsbGFibGVUbXAuYWRkKHNwaWxs
ZWRUbXAuYmVnaW4oKSwgc3BpbGxlZFRtcC5lbmQoKSk7Ci0KLSAgICAvLyBBbGxvY2F0ZSBzdGFj
ayBzbG90IGZvciBlYWNoIHNwaWxsZWQgdmFsdWUuCi0gICAgSGFzaE1hcDxUbXAsIFN0YWNrU2xv
dCo+IHN0YWNrU2xvdHM7Ci0gICAgZm9yIChUbXAgdG1wIDogc3BpbGxlZFRtcCkgewotICAgICAg
ICBib29sIGlzTmV3VG1wID0gc3RhY2tTbG90cy5hZGQodG1wLCBjb2RlLmFkZFN0YWNrU2xvdCg4
LCBTdGFja1Nsb3RLaW5kOjpBbm9ueW1vdXMpKS5pc05ld0VudHJ5OwotICAgICAgICBBU1NFUlRf
VU5VU0VEKGlzTmV3VG1wLCBpc05ld1RtcCk7Ci0gICAgfQotCi0gICAgLy8gUmV3cml0ZSB0aGUg
cHJvZ3JhbSB0byBnZXQgcmlkIG9mIHRoZSBzcGlsbGVkIFRtcC4KLSAgICBJbnNlcnRpb25TZXQg
aW5zZXJ0aW9uU2V0KGNvZGUpOwotICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7
Ci0gICAgICAgIGJvb2wgaGFzQWxpYXNlZFRtcHMgPSBmYWxzZTsKLQotICAgICAgICBmb3IgKHVu
c2lnbmVkIGluc3RJbmRleCA9IDA7IGluc3RJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsraW5zdElu
ZGV4KSB7Ci0gICAgICAgICAgICBJbnN0JiBpbnN0ID0gYmxvY2stPmF0KGluc3RJbmRleCk7Ci0K
LSAgICAgICAgICAgIC8vIFRyeSB0byByZXBsYWNlIHRoZSByZWdpc3RlciB1c2UgYnkgbWVtb3J5
IHVzZSB3aGVuIHBvc3NpYmxlLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGluc3QuYXJncy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIEFyZyYgYXJnID0gaW5z
dC5hcmdzW2ldOwotICAgICAgICAgICAgICAgIGlmIChhcmcuaXNUbXAoKSAmJiBhcmcudHlwZSgp
ID09IHR5cGUgJiYgIWFyZy5pc1JlZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc3Rh
Y2tTbG90RW50cnkgPSBzdGFja1Nsb3RzLmZpbmQoYXJnLnRtcCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0YWNrU2xvdEVudHJ5ICE9IHN0YWNrU2xvdHMuZW5kKCkgJiYgaW5zdC5hZG1p
dHNTdGFjayhpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IEFyZzo6c3RhY2soc3Rh
Y2tTbG90RW50cnktPnZhbHVlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIC8vIEZvciBldmVyeSBvdGhlciBjYXNlLCBhZGQgTG9hZC9TdG9yZSBhcyBu
ZWVkZWQuCi0gICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAmIHRtcCwgQXJnOjpS
b2xlIHJvbGUsIEFyZzo6VHlwZSBhcmdUeXBlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRtcC5p
c1JlZygpIHx8IGFyZ1R5cGUgIT0gdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICAgICAgYXV0byBzdGFja1Nsb3RFbnRyeSA9IHN0YWNrU2xvdHMuZmluZCh0
bXApOwotICAgICAgICAgICAgICAgIGlmIChzdGFja1Nsb3RFbnRyeSA9PSBzdGFja1Nsb3RzLmVu
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFRtcCBhbGlhcyA9IGFsbG9jYXRvci5nZXRBbGlh
c1doZW5TcGlsbGluZyh0bXApOwotICAgICAgICAgICAgICAgICAgICBpZiAoYWxpYXMgIT0gdG1w
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBhbGlhczsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGhhc0FsaWFzZWRUbXBzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgQXJnIGFyZyA9IEFyZzo6c3RhY2soc3RhY2tTbG90RW50cnktPnZhbHVlKTsKLSAg
ICAgICAgICAgICAgICBPcGNvZGUgbW92ZSA9IHR5cGUgPT0gQXJnOjpHUCA/IE1vdmUgOiBNb3Zl
RG91YmxlOwotCi0gICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNBbnlVc2Uocm9sZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgVG1wIG5ld1RtcCA9IGNvZGUubmV3VG1wKHR5cGUpOwotICAgICAg
ICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCwgbW92ZSwgaW5zdC5v
cmlnaW4sIGFyZywgbmV3VG1wKTsKLSAgICAgICAgICAgICAgICAgICAgdG1wID0gbmV3VG1wOwot
Ci0gICAgICAgICAgICAgICAgICAgIC8vIEFueSBuZXcgRmlsbCgpIHNob3VsZCBuZXZlciBiZSBz
cGlsbGVkLgotICAgICAgICAgICAgICAgICAgICB1bnNwaWxsYWJsZVRtcC5hZGQodG1wKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkpCi0g
ICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaW5zdEluZGV4ICsgMSwgbW92
ZSwgaW5zdC5vcmlnaW4sIHRtcCwgYXJnKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0g
ICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKLQotICAgICAgICBpZiAoaGFzQWxp
YXNlZFRtcHMpCi0gICAgICAgICAgICBibG9jay0+aW5zdHMoKS5yZW1vdmVBbGxNYXRjaGluZyhp
c1VzZWxlc3NNb3ZlSW5zdDx0eXBlPik7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTxBcmc6OlR5cGUg
dHlwZT4KIHZvaWQgaXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmdPblR5cGUoCiAgICAgQ29kZSYg
Y29kZSwgY29uc3QgVXNlQ291bnRzPFRtcD4mIHVzZUNvdW50cywgdW5zaWduZWQmIG51bUl0ZXJh
dGlvbnMpCiB7CkBAIC0xMDQxLDExICsxMDU3LDcgQEAgdm9pZCBpdGVyYXRlZFJlZ2lzdGVyQ29h
bGVzY2luZ09uVHlwZSgKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBudW1JdGVyYXRpb25z
Kys7CiAgICAgICAgIEl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nQWxsb2NhdG9yPHR5cGU+IGFs
bG9jYXRvcihjb2RlLCB1c2VDb3VudHMsIHVuc3BpbGxhYmxlVG1wcyk7Ci0gICAgICAgIGlmIChh
bGxvY2F0b3Iuc3BpbGxlZFRtcCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYXNzaWduUmVn
aXN0ZXJUb1RtcEluUHJvZ3JhbShjb2RlLCBhbGxvY2F0b3IpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGFkZFNwaWxsQW5kRmlsbFRvUHJvZ3JhbTx0eXBlPihjb2Rl
LCBhbGxvY2F0b3IsIHVuc3BpbGxhYmxlVG1wcyk7CisgICAgICAgIGFsbG9jYXRvci5ydW4oKTsK
ICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2RlcwkocmV2aXNpb24gMTk0MTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpAQCAtMjMsMTQgKzIzLDE3
IEBACiAKICMgU3lsbGFidXM6CiAjCi0jIFJvbGVzIGFuZCB0eXBlczoKLSMgVTpHID0+IHVzZSBv
ZiBhIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBvciB2YWx1ZQotIyBEOkcgPT4gZGVmIG9mIGEg
Z2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9yIHZhbHVlCi0jIFVEOkcgPT4gdXNlIGFuZCBkZWYg
b2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKLSMgVUE6RyA9PiBVc2VBZGRy
IChzZWUgY29tbWVudCBpbiBBcmcuaCkKLSMgVTpGID0+IHVzZSBvZiBhIGZsb2F0IHJlZ2lzdGVy
IG9yIHZhbHVlCi0jIEQ6RiA9PiBkZWYgb2YgYSBmbG9hdCByZWdpc3RlciBvciB2YWx1ZQotIyBV
RDpGID0+IHVzZSBhbmQgZGVmIG9mIGEgZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUKKyMgRXhhbXBs
ZXMgb2Ygc29tZSByb2xlcywgdHlwZXMsIGFuZCB3aWR0aHM6CisjIFU6RzozMiA9PiB1c2Ugb2Yg
dGhlIGxvdyAzMiBiaXRzIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9yIHZhbHVlCisj
IEQ6RzozMiA9PiBkZWYgb2YgdGhlIGxvdyAzMiBiaXRzIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJl
Z2lzdGVyIG9yIHZhbHVlCisjIFVEOkc6MzIgPT4gdXNlIGFuZCBkZWYgb2YgdGhlIGxvdyAzMiBi
aXRzIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9yIHZhbHVlCisjIFU6Rzo2NCA9PiB1
c2Ugb2YgdGhlIGxvdyA2NCBiaXRzIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9yIHZh
bHVlCisjIFpEOkc6MzIgPT4gZGVmIG9mIGFsbCBiaXRzIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJl
Z2lzdGVyLCB3aGVyZSBhbGwgYnV0IHRoZSBsb3cgMzIgYml0cyBhcmUgZ3VhcmFudGVlZCB0byBi
ZSB6ZXJvZWQuCisjIFVBOkc6UHRyID0+IFVzZUFkZHIgKHNlZSBjb21tZW50IGluIEFyZy5oKQor
IyBVOkY6MzIgPT4gdXNlIG9mIGEgZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUKKyMgVTpGOjY0ID0+
IHVzZSBvZiBhIGRvdWJsZSByZWdpc3RlciBvciB2YWx1ZQorIyBEOkY6MzIgPT4gZGVmIG9mIGEg
ZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUKKyMgVUQ6RjozMiA9PiB1c2UgYW5kIGRlZiBvZiBhIGZs
b2F0IHJlZ2lzdGVyIG9yIHZhbHVlCiAjCiAjIEFyZ3VtZW50IGtpbmRzOgogIyBUbXAgPT4gdGVt
cG9yYXJ5IG9yIHJlZ2lzdGVyCkBAIC00NCwxMSArNDcsMTEgQEAKICMgb2YgdGhpbmdzLiBTbywg
YWx0aG91Z2ggdGhpcyBmaWxlIHVzZXMgYSBwYXJ0aWN1bGFyIGluZGVudGF0aW9uIHN0eWxlLCBu
b25lIG9mIHRoZSB3aGl0ZXNwYWNlIG9yCiAjIGV2ZW4gbmV3bGluZXMgYXJlIG1lYW5pbmdmdWwg
dG8gdGhlIHBhcnNlci4gRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCB3cml0ZToKICMKLSMgRm9vNDIg
VTpHLCBVRDpGIEltbSwgVG1wIEFkZHIsIFRtcAorIyBGb280MiBVOkc6MzIsIFVEOkY6MzIgSW1t
LCBUbXAgQWRkciwgVG1wCiAjCiAjIEFuZCB0aGUgcGFyc2VyIHdvdWxkIGtub3cgdGhhdCB0aGlz
IGlzIHRoZSBzYW1lIGFzOgogIwotIyBGb280MiBVOkcsIFVEOkYKKyMgRm9vNDIgVTpHOjMyLCBV
RDpGOjMyCiAjICAgICBJbW0sIFRtcAogIyAgICAgQWRkciwgVG1wCiAjCkBAIC01OCwyMiArNjEs
MjIgQEAKICMgdW5pb24gb2YgdGhvc2UgYXJjaGl0ZWN0dXJlcy4gRm9yIGV4YW1wbGUsIGlmIHRo
aXMgaXMgdGhlIG9ubHkgb3ZlcmxvYWQgb2YgdGhlIG9wY29kZSwgdGhlbiBpdCBtYWtlcyB0aGUK
ICMgb3Bjb2RlIG9ubHkgYXZhaWxhYmxlIG9uIHg4Nl82NDoKICMKLSMgeDg2XzY0OiBGdXp6IFVE
OkcsIEQ6RworIyB4ODZfNjQ6IEZ1enogVUQ6Rzo2NCwgRDpHOjY0CiAjICAgICBUbXAsIFRtcAog
IyAgICAgVG1wLCBBZGRyCiAjCiAjIEJ1dCB0aGlzIG9ubHkgcmVzdHJpY3RzIHRoZSB0d28tb3Bl
cmFuZCBmb3JtLCB0aGUgb3RoZXIgZm9ybSBpcyBhbGxvd2VkIG9uIGFsbCBhcmNoaXRlY3R1cmVz
OgogIwotIyB4ODZfNjQ6IEZ1enogVUQ6RywgRDpHCisjIHg4Nl82NDogRnV6eiBVRDpHOjY0LCBE
Okc6NjQKICMgICAgIFRtcCwgVG1wCiAjICAgICBUbXAsIEFkZHIKLSMgRnV6eiBVRDpHLCBEOkcs
IFU6RgorIyBGdXp6IFVEOkc6UHRyLCBEOkc6UHRyLCBVOkY6UHRyCiAjICAgICBUbXAsIFRtcCwg
VG1wCiAjICAgICBUbXAsIEFkZHIsIFRtcAogIwogIyBBbmQgeW91IGNhbiBhbHNvIHJlc3RyaWN0
IGluZGl2aWR1YWwgZm9ybXM6CiAjCi0jIFRoaW5neSBVRDpHLCBEOkcKKyMgVGhpbmd5IFVEOkc6
MzIsIEQ6RzozMgogIyAgICAgVG1wLCBUbXAKICMgICAgIGFybTY0OiBUbXAsIEFkZHIKICMKQEAg
LTgxLDcgKzg0LDcgQEAKICMgZm9ybS4gSW4gdGhpcyBleGFtcGxlLCB0aGUgdmVyc2lvbiB0aGF0
IHRha2VzIGFuIGFkZHJlc3MgaXMgb25seSBhdmFpbGFibGUgb24gYXJtdjcgd2hpbGUgdGhlIG90
aGVyCiAjIHZlcnNpb25zIGFyZSBhdmFpbGFibGUgb24gYXJtdjcgb3IgeDg2XzY0OgogIwotIyB4
ODZfNjQgYXJtdjc6IEJ1enogVTpHLCBVRDpGCisjIHg4Nl82NCBhcm12NzogQnV6eiBVOkc6MzIs
IFVEOkY6MzIKICMgICAgIFRtcCwgVG1wCiAjICAgICBJbW0sIFRtcAogIyAgICAgYXJtdjc6IEFk
ZHIsIFRtcApAQCAtMTAzLDIxNCArMTA2LDIxNCBAQAogCiBOb3AKIAotQWRkMzIgVTpHLCBVRDpH
CitBZGQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRk
cgogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgog
Ci1BZGQzMiBVOkcsIFU6RywgRDpHCitBZGQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAg
IEltbSwgVG1wLCBUbXAKICAgICBUbXAsIFRtcCwgVG1wCiAKLTY0OiBBZGQ2NCBVOkcsIFVEOkcK
KzY0OiBBZGQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBB
ZGRyCiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4NjogVG1wLCBBZGRy
CiAKLTY0OiBBZGQ2NCBVOkcsIFU6RywgRDpHCis2NDogQWRkNjQgVTpHOjY0LCBVOkc6NjQsIEQ6
Rzo2NAogICAgIEltbSwgVG1wLCBUbXAKICAgICBUbXAsIFRtcCwgVG1wCiAKLUFkZERvdWJsZSBV
OkYsIFVEOkYKK0FkZERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIHg4
NjogQWRkciwgVG1wCiAKLUFkZEZsb2F0IFU6RiwgVUQ6RgorQWRkRmxvYXQgVTpGOjMyLCBVRDpG
OjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1TdWIzMiBVOkcsIFVEOkcK
K1N1YjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRy
CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAK
LTY0OiBTdWI2NCBVOkcsIFVEOkcKKzY0OiBTdWI2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAs
IFRtcAogICAgIHg4NjogSW1tLCBBZGRyCiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRt
cAogICAgIHg4NjogVG1wLCBBZGRyCiAKLVN1YkRvdWJsZSBVOkYsIFVEOkYKK1N1YkRvdWJsZSBV
OkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLVN1YkZs
b2F0IFU6RiwgVUQ6RgorU3ViRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAg
ICB4ODY6IEFkZHIsIFRtcAogCi1OZWczMiBVRDpHCitOZWczMiBVWkQ6RzozMgogICAgIFRtcAog
ICAgIEFkZHIKIAotNjQ6IE5lZzY0IFVEOkcKKzY0OiBOZWc2NCBVRDpHOjY0CiAgICAgVG1wCiAK
LU11bDMyIFU6RywgVUQ6RworTXVsMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAg
ICAgeDg2OiBBZGRyLCBUbXAKIAotTXVsMzIgVTpHLCBVOkcsIEQ6RworTXVsMzIgVTpHOjMyLCBV
Okc6MzIsIFpEOkc6MzIKICAgICBJbW0sIFRtcCwgVG1wCiAKLTY0OiBNdWw2NCBVOkcsIFVEOkcK
KzY0OiBNdWw2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogCi1NdWxEb3VibGUgVTpG
LCBVRDpGCitNdWxEb3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6
IEFkZHIsIFRtcAogCi1NdWxGbG9hdCBVOkYsIFVEOkYKK011bEZsb2F0IFU6RjozMiwgVUQ6Rjoz
MgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotRGl2RG91YmxlIFU6RiwgVUQ6
RgorRGl2RG91YmxlIFU6RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRy
LCBUbXAKIAotRGl2RmxvYXQgVTpGLCBVRDpGCitEaXZGbG9hdCBVOkY6MzIsIFVEOkY6MzIKICAg
ICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLXg4NjogWDg2Q29udmVydFRvRG91Ymxl
V29yZDMyIFU6RywgRDpHCit4ODY6IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMiBVOkc6MzIsIFpE
Okc6MzIKICAgICBUbXAqLCBUbXAqCiAKLXg4Nl82NDogWDg2Q29udmVydFRvUXVhZFdvcmQ2NCBV
OkcsIEQ6RworeDg2XzY0OiBYODZDb252ZXJ0VG9RdWFkV29yZDY0IFU6Rzo2NCwgRDpHOjY0CiAg
ICAgVG1wKiwgVG1wKgogCi14ODY6IFg4NkRpdjMyIFVEOkcsIFVEOkcsIFU6RworeDg2OiBYODZE
aXYzMiBVWkQ6RzozMiwgVVpEOkc6MzIsIFU6RzozMgogICAgIFRtcCosIFRtcCosIFRtcAogCi14
ODZfNjQ6IFg4NkRpdjY0IFVEOkcsIFVEOkcsIFU6RworeDg2XzY0OiBYODZEaXY2NCBVWkQ6Rzoz
MiwgVVpEOkc6MzIsIFU6RzozMgogICAgIFRtcCosIFRtcCosIFRtcAogCi1MZWEgVUE6RywgRDpH
CitMZWEgVUE6RzpQdHIsIEQ6RzpQdHIKICAgICBBZGRyLCBUbXAKIAotQW5kMzIgVTpHLCBVRDpH
CitBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBJbW0sIFRtcAogICAg
IHg4NjogVG1wLCBBZGRyCiAgICAgeDg2OiBBZGRyLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgog
Ci02NDogQW5kNjQgVTpHLCBVRDpHCis2NDogQW5kNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1w
LCBUbXAKICAgICBJbW0sIFRtcAogCi1BbmREb3VibGUgVTpGLCBVRDpGCitBbmREb3VibGUgVTpG
OjY0LCBVRDpGOjY0CiAgICAgVG1wLCBUbXAKIAotQW5kRmxvYXQgVTpGLCBVRDpGCitBbmRGbG9h
dCBVOkY6MzIsIFVEOkY6MzIKICAgICBUbXAsIFRtcAogCi1Mc2hpZnQzMiBVOkcsIFVEOkcKK0xz
aGlmdDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi02
NDogTHNoaWZ0NjQgVTpHLCBVRDpHCis2NDogTHNoaWZ0NjQgVTpHOjY0LCBVRDpHOjY0CiAgICAg
VG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKIAotUnNoaWZ0MzIgVTpHLCBVRDpHCitSc2hpZnQzMiBV
Okc6MzIsIFVaRDpHOjMyCiAgICAgVG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKIAotNjQ6IFJzaGlm
dDY0IFU6RywgVUQ6RworNjQ6IFJzaGlmdDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCosIFRt
cAogICAgIEltbSwgVG1wCiAKLVVyc2hpZnQzMiBVOkcsIFVEOkcKK1Vyc2hpZnQzMiBVOkc6MzIs
IFVaRDpHOjMyCiAgICAgVG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKIAotNjQ6IFVyc2hpZnQ2NCBV
OkcsIFVEOkcKKzY0OiBVcnNoaWZ0NjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wKiwgVG1wCiAg
ICAgSW1tLCBUbXAKIAotT3IzMiBVOkcsIFVEOkcKK09yMzIgVTpHOjMyLCBVWkQ6RzozMgogICAg
IFRtcCwgVG1wCiAgICAgSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIHg4NjogQWRk
ciwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKIAotNjQ6IE9yNjQgVTpHLCBVRDpHCis2NDogT3I2
NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIEltbSwgVG1wCiAKLVhvcjMyIFU6
RywgVUQ6RworWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgSW1tLCBU
bXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIHg4NjogQWRkciwgVG1wCiAgICAgeDg2OiBJbW0s
IEFkZHIKIAotNjQ6IFhvcjY0IFU6RywgVUQ6RworNjQ6IFhvcjY0IFU6Rzo2NCwgVUQ6Rzo2NAog
ICAgIFRtcCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKICAgICBJbW0sIFRtcAogCi1Ob3QzMiBV
RDpHCitOb3QzMiBVWkQ6RzozMgogICAgIFRtcAogICAgIHg4NjogQWRkcgogCi02NDogTm90NjQg
VUQ6RworNjQ6IE5vdDY0IFVEOkc6NjQKICAgICBUbXAKICAgICB4ODY6IEFkZHIKIAotQ2VpbERv
dWJsZSBVOkYsIFVEOkYKK0NlaWxEb3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1wLCBUbXAK
ICAgICBBZGRyLCBUbXAKIAotQ2VpbEZsb2F0IFU6RiwgVUQ6RgorQ2VpbEZsb2F0IFU6RjozMiwg
VUQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCiAKLVNxcnREb3VibGUgVTpGLCBV
RDpGCitTcXJ0RG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBB
ZGRyLCBUbXAKIAotU3FydEZsb2F0IFU6RiwgVUQ6RgorU3FydEZsb2F0IFU6RjozMiwgVUQ6Rjoz
MgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotQ29udmVydEludDMyVG9Eb3Vi
bGUgVTpHLCBEOkYKK0NvbnZlcnRJbnQzMlRvRG91YmxlIFU6RzozMiwgRDpGOjY0CiAgICAgVG1w
LCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi02NDogQ29udmVydEludDY0VG9Eb3VibGUgVTpH
LCBEOkYKKzY0OiBDb252ZXJ0SW50NjRUb0RvdWJsZSBVOkc6NjQsIEQ6Rjo2NAogICAgIFRtcCwg
VG1wCiAKLUNvdW50TGVhZGluZ1plcm9zMzIgVTpHLCBEOkcKK0NvdW50TGVhZGluZ1plcm9zMzIg
VTpHOjMyLCBaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi02NDog
Q291bnRMZWFkaW5nWmVyb3M2NCBVOkcsIEQ6RworNjQ6IENvdW50TGVhZGluZ1plcm9zNjQgVTpH
OjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLUNvbnZlcnRE
b3VibGVUb0Zsb2F0IFU6RiwgRDpGCitDb252ZXJ0RG91YmxlVG9GbG9hdCBVOkY6NjQsIEQ6Rjoz
MgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotQ29udmVydEZsb2F0VG9Eb3Vi
bGUgVTpGLCBEOkYKK0NvbnZlcnRGbG9hdFRvRG91YmxlIFU6RjozMiwgRDpGOjY0CiAgICAgVG1w
LCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCkBAIC0zMTgsNyArMzIxLDcgQEAgQ29udmVydEZs
b2F0VG9Eb3VibGUgVTpGLCBEOkYKICMgdGhlIHBsYXRmb3JtLiBJJ20gbm90IGVudGlyZWx5IHN1
cmUgdGhhdCB0aGlzIGlzIGEgZ29vZCB0aGluZzsgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1c3Qg
aGF2ZSBhCiAjIE1vdmU2NCBpbnN0cnVjdGlvbi4gT1RPSCwgb3VyIE1hY3JvQXNzZW1ibGVycyBh
bHJlYWR5IGhhdmUgdGhpcyBub3Rpb24gb2YgIm1vdmUoKSIgdGhhdCBiYXNpY2FsbHkKICMgbWVh
bnMgbW92ZVB0ci4KLU1vdmUgVTpHLCBEOkcKK01vdmUgVTpHOlB0ciwgRDpHOlB0cgogICAgIFRt
cCwgVG1wCiAgICAgSW1tLCBUbXAgYXMgc2lnbkV4dGVuZDMyVG9QdHIKICAgICBJbW02NCwgVG1w
CkBAIC0zMjgsNyArMzMxLDcgQEAgTW92ZSBVOkcsIEQ6RwogICAgIFRtcCwgSW5kZXggYXMgc3Rv
cmVQdHIKICAgICBJbW0sIEFkZHIgYXMgc3RvcmVQdHIKIAotTW92ZTMyIFU6RywgRDpHCitNb3Zl
MzIgVTpHOjMyLCBaRDpHOjMyCiAgICAgVG1wLCBUbXAgYXMgemVyb0V4dGVuZDMyVG9QdHIKICAg
ICBBZGRyLCBUbXAgYXMgbG9hZDMyCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkMzIKQEAgLTMzNywx
MDggKzM0MCwxMDggQEAgTW92ZTMyIFU6RywgRDpHCiAgICAgSW1tLCBBZGRyIGFzIHN0b3JlMzIK
ICAgICBJbW0sIEluZGV4IGFzIHN0b3JlMzIKIAotU2lnbkV4dGVuZDMyVG9QdHIgVTpHLCBEOkcK
K1NpZ25FeHRlbmQzMlRvUHRyIFU6RzozMiwgRDpHOlB0cgogICAgIFRtcCwgVG1wCiAKLVplcm9F
eHRlbmQ4VG8zMiBVOkcsIEQ6RworWmVyb0V4dGVuZDhUbzMyIFU6Rzo4LCBaRDpHOjMyCiAgICAg
VG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDgKICAgICBJbmRleCwgVG1wIGFzIGxvYWQ4
CiAKLVNpZ25FeHRlbmQ4VG8zMiBVOkcsIEQ6RworU2lnbkV4dGVuZDhUbzMyIFU6Rzo4LCBaRDpH
OjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcCBhcyBsb2FkOFNpZ25lZEV4dGVu
ZFRvMzIKICAgICBJbmRleCwgVG1wIGFzIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMgogCi1aZXJvRXh0
ZW5kMTZUbzMyIFU6RywgRDpHCitaZXJvRXh0ZW5kMTZUbzMyIFU6RzoxNiwgWkQ6RzozMgogICAg
IFRtcCwgVG1wCiAgICAgQWRkciwgVG1wIGFzIGxvYWQxNgogICAgIEluZGV4LCBUbXAgYXMgbG9h
ZDE2CiAKLVNpZ25FeHRlbmQxNlRvMzIgVTpHLCBEOkcKK1NpZ25FeHRlbmQxNlRvMzIgVTpHOjE2
LCBaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDE2U2lnbmVkRXh0
ZW5kVG8zMgogICAgIEluZGV4LCBUbXAgYXMgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMgogCi1Nb3Zl
RmxvYXQgVTpGLCBEOkYKK01vdmVGbG9hdCBVOkY6MzIsIEQ6RjozMgogICAgIFRtcCwgVG1wIGFz
IG1vdmVEb3VibGUKICAgICBBZGRyLCBUbXAgYXMgbG9hZEZsb2F0CiAgICAgSW5kZXgsIFRtcCBh
cyBsb2FkRmxvYXQKICAgICBUbXAsIEFkZHIgYXMgc3RvcmVGbG9hdAogICAgIFRtcCwgSW5kZXgg
YXMgc3RvcmVGbG9hdAogCi1Nb3ZlRG91YmxlIFU6RiwgRDpGCitNb3ZlRG91YmxlIFU6Rjo2NCwg
RDpGOjY0CiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZERvdWJsZQogICAgIElu
ZGV4LCBUbXAgYXMgbG9hZERvdWJsZQogICAgIFRtcCwgQWRkciBhcyBzdG9yZURvdWJsZQogICAg
IFRtcCwgSW5kZXggYXMgc3RvcmVEb3VibGUKIAotTW92ZVplcm9Ub0RvdWJsZSBEOkYKK01vdmVa
ZXJvVG9Eb3VibGUgRDpGOjY0CiAgICAgVG1wCiAKLTY0OiBNb3ZlNjRUb0RvdWJsZSBVOkcsIEQ6
RgorNjQ6IE1vdmU2NFRvRG91YmxlIFU6Rzo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKICAgICBB
ZGRyLCBUbXAgYXMgbG9hZERvdWJsZQogCi1Nb3ZlSW50MzJUb1BhY2tlZCBVOkcsIEQ6RgorTW92
ZUludDMyVG9QYWNrZWQgVTpHOjMyLCBEOkY6MzIKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRt
cCBhcyBsb2FkRmxvYXQKIAotNjQ6IE1vdmVEb3VibGVUbzY0IFU6RiwgRDpHCis2NDogTW92ZURv
dWJsZVRvNjQgVTpGOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBs
b2FkNjQKIAotTW92ZVBhY2tlZFRvSW50MzIgVTpGLCBEOkcKK01vdmVQYWNrZWRUb0ludDMyIFU6
RjozMiwgRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDMyCiAKLUxv
YWQ4IFU6RywgRDpHCitMb2FkOCBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIElu
ZGV4LCBUbXAKIAotU3RvcmU4IFU6RywgRDpHCitTdG9yZTggVTpHOjgsIEQ6Rzo4CiAgICAgVG1w
LCBJbmRleAogICAgIFRtcCwgQWRkcgogICAgIEltbSwgSW5kZXgKICAgICBJbW0sIEFkZHIKIAot
TG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6RywgRDpHCitMb2FkOFNpZ25lZEV4dGVuZFRvMzIgVTpH
OjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKLUxvYWQxNiBVOkcs
IEQ6RworTG9hZDE2IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBU
bXAKIAotTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiBVOkcsIEQ6RworTG9hZDE2U2lnbmVkRXh0ZW5k
VG8zMiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKLUNv
bXBhcmUzMiBVOkcsIFU6RywgVTpHLCBEOkcKK0NvbXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpH
OjMyLCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcAogICAgIFJlbENvbmQsIFRt
cCwgSW1tLCBUbXAKIAotNjQ6IENvbXBhcmU2NCBVOkcsIFU6RywgVTpHLCBEOkcKKzY0OiBDb21w
YXJlNjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCwgWkQ6RzozMgogICAgIFJlbENvbmQsIFRtcCwg
SW1tLCBUbXAKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCiAKLVRlc3QzMiBVOkcsIFU6Rywg
VTpHLCBEOkcKK1Rlc3QzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgeDg2
OiBSZXNDb25kLCBBZGRyLCBJbW0sIFRtcAogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAKIAot
NjQ6IFRlc3Q2NCBVOkcsIFU6RywgVTpHLCBEOkcKKzY0OiBUZXN0NjQgVTpHOjMyLCBVOkc6NjQs
IFU6Rzo2NCwgWkQ6RzozMgogICAgIFJlc0NvbmQsIFRtcCwgSW1tLCBUbXAKICAgICBSZXNDb25k
LCBUbXAsIFRtcCwgVG1wCiAKICMgTm90ZSB0aGF0IGJyYW5jaGVzIGhhdmUgc29tZSBsb2dpYyBp
biBBaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwLiBJZiB5b3UgYWRkIG5ldyBicmFuY2hlcywgcGxl
YXNlIG1ha2Ugc3VyZQogIyB5b3Ugb3B0IHRoZW0gaW50byB0aGUgYmxvY2sgb3JkZXIgb3B0aW1p
emF0aW9ucy4KIAotQnJhbmNoOCBVOkcsIFU6RywgVTpHIC9icmFuY2gKK0JyYW5jaDggVTpHOjMy
LCBVOkc6OCwgVTpHOjggL2JyYW5jaAogICAgIHg4NjogUmVsQ29uZCwgQWRkciwgSW1tCiAgICAg
eDg2OiBSZWxDb25kLCBJbmRleCwgSW1tCiAKLUJyYW5jaDMyIFU6RywgVTpHLCBVOkcgL2JyYW5j
aAorQnJhbmNoMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiAvYnJhbmNoCiAgICAgeDg2OiBSZWxD
b25kLCBBZGRyLCBJbW0KICAgICBSZWxDb25kLCBUbXAsIFRtcAogICAgIFJlbENvbmQsIFRtcCwg
SW1tCkBAIC00NDYsMTcgKzQ0OSwxNyBAQCBCcmFuY2gzMiBVOkcsIFU6RywgVTpHIC9icmFuY2gK
ICAgICB4ODY6IFJlbENvbmQsIEFkZHIsIFRtcAogICAgIHg4NjogUmVsQ29uZCwgSW5kZXgsIElt
bQogCi02NDogQnJhbmNoNjQgVTpHLCBVOkcsIFU6RyAvYnJhbmNoCis2NDogQnJhbmNoNjQgVTpH
OjMyLCBVOkc6NjQsIFU6Rzo2NCAvYnJhbmNoCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAKICAgICB4
ODY6IFJlbENvbmQsIFRtcCwgQWRkcgogICAgIHg4NjogUmVsQ29uZCwgQWRkciwgVG1wCiAgICAg
eDg2OiBSZWxDb25kLCBJbmRleCwgVG1wCiAKLUJyYW5jaFRlc3Q4IFU6RywgVTpHLCBVOkcgL2Jy
YW5jaAorQnJhbmNoVGVzdDggVTpHOjMyLCBVOkc6OCwgVTpHOjggL2JyYW5jaAogICAgIHg4Njog
UmVzQ29uZCwgQWRkciwgSW1tCiAgICAgeDg2OiBSZXNDb25kLCBJbmRleCwgSW1tCiAKLUJyYW5j
aFRlc3QzMiBVOkcsIFU6RywgVTpHIC9icmFuY2gKK0JyYW5jaFRlc3QzMiBVOkc6MzIsIFU6Rzoz
MiwgVTpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRtcAogICAgIFJlc0NvbmQsIFRt
cCwgSW1tCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBJbW0KQEAgLTQ2NCw5NSArNDY3LDk1IEBA
IEJyYW5jaFRlc3QzMiBVOkcsIFU6RywgVTpHIC9icmFuY2gKIAogIyBXYXJuaW5nOiBmb3JtcyB0
aGF0IHRha2UgYW4gaW1tZWRpYXRlIHdpbGwgc2lnbi1leHRlbmQgdGhlaXIgaW1tZWRpYXRlLiBZ
b3UgcHJvYmFibHkgd2FudAogIyBCcmFuY2hUZXN0MzIgaW4gbW9zdCBjYXNlcyB3aGVyZSB5b3Ug
dXNlIGFuIGltbWVkaWF0ZS4KLTY0OiBCcmFuY2hUZXN0NjQgVTpHLCBVOkcsIFU6RyAvYnJhbmNo
Cis2NDogQnJhbmNoVGVzdDY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQgL2JyYW5jaAogICAgIFJl
c0NvbmQsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0KICAgICB4ODY6IFJlc0NvbmQs
IEFkZHIsIEltbQogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAgICAgeDg2OiBSZXNDb25k
LCBJbmRleCwgSW1tCiAKLUJyYW5jaERvdWJsZSBVOkcsIFU6RiwgVTpGIC9icmFuY2gKK0JyYW5j
aERvdWJsZSBVOkc6MzIsIFU6Rjo2NCwgVTpGOjY0IC9icmFuY2gKICAgICBEb3VibGVDb25kLCBU
bXAsIFRtcAogCi1CcmFuY2hGbG9hdCBVOkcsIFU6RiwgVTpGIC9icmFuY2gKK0JyYW5jaEZsb2F0
IFU6RzozMiwgVTpGOjMyLCBVOkY6MzIgL2JyYW5jaAogICAgIERvdWJsZUNvbmQsIFRtcCwgVG1w
CiAKLUJyYW5jaEFkZDMyIFU6RywgVTpHLCBVRDpHIC9icmFuY2gKK0JyYW5jaEFkZDMyIFU6Rzoz
MiwgVTpHOjMyLCBVWkQ6RzozMiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKICAgICBS
ZXNDb25kLCBJbW0sIFRtcAogICAgIHg4NjogUmVzQ29uZCwgSW1tLCBBZGRyCiAgICAgeDg2OiBS
ZXNDb25kLCBUbXAsIEFkZHIKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIFRtcAogCi02NDogQnJh
bmNoQWRkNjQgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorNjQ6IEJyYW5jaEFkZDY0IFU6RzozMiwg
VTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKICAgICBSZXNDb25kLCBJbW0sIFRtcAogICAgIFJlc0Nv
bmQsIFRtcCwgVG1wCiAKLUJyYW5jaE11bDMyIFU6RywgVTpHLCBVRDpHIC9icmFuY2gKK0JyYW5j
aE11bDMyIFU6RzozMiwgVTpHOjMyLCBVWkQ6RzozMiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1w
LCBUbXAKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIFRtcAogCi1CcmFuY2hNdWwzMiBVOkcsIFU6
RywgVTpHLCBEOkcgL2JyYW5jaAorQnJhbmNoTXVsMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwg
WkQ6RzozMiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcAogCi02NDogQnJhbmNo
TXVsNjQgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorNjQ6IEJyYW5jaE11bDY0IFU6RzozMiwgVTpH
OjY0LCBVWkQ6Rzo2NCAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKIAotQnJhbmNoU3Vi
MzIgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorQnJhbmNoU3ViMzIgVTpHOjMyLCBVOkc6MzIsIFVa
RDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRtcAogICAgIFJlc0NvbmQsIEltbSwg
VG1wCiAgICAgeDg2OiBSZXNDb25kLCBJbW0sIEFkZHIKICAgICB4ODY6IFJlc0NvbmQsIFRtcCwg
QWRkcgogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAKLTY0OiBCcmFuY2hTdWI2NCBVOkcs
IFU6RywgVUQ6RyAvYnJhbmNoCis2NDogQnJhbmNoU3ViNjQgVTpHOjMyLCBVOkc6NjQsIFVEOkc6
NjQgL2JyYW5jaAogICAgIFJlc0NvbmQsIEltbSwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAK
IAotQnJhbmNoTmVnMzIgVTpHLCBVRDpHIC9icmFuY2gKK0JyYW5jaE5lZzMyIFU6RzozMiwgVVpE
Okc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcAogCi02NDogQnJhbmNoTmVnNjQgVTpHLCBV
RDpHIC9icmFuY2gKKzY0OiBCcmFuY2hOZWc2NCBVOkc6MzIsIFVaRDpHOjY0IC9icmFuY2gKICAg
ICBSZXNDb25kLCBUbXAKIAotTW92ZUNvbmRpdGlvbmFsbHkzMiBVOkcsIFU6RywgVTpHLCBVOkcs
IFVEOkcKK01vdmVDb25kaXRpb25hbGx5MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpHOlB0
ciwgVUQ6RzpQdHIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKIAotNjQ6IE1vdmVD
b25kaXRpb25hbGx5NjQgVTpHLCBVOkcsIFU6RywgVTpHLCBVRDpHCis2NDogTW92ZUNvbmRpdGlv
bmFsbHk2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBVOkc6UHRyLCBVRDpHOlB0cgogICAgIFJl
bENvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogCi1Nb3ZlQ29uZGl0aW9uYWxseVRlc3QzMiBVOkcs
IFU6RywgVTpHLCBVOkcsIFVEOkcKK01vdmVDb25kaXRpb25hbGx5VGVzdDMyIFU6RzozMiwgVTpH
OjMyLCBVOkc6MzIsIFU6RzpQdHIsIFVEOkc6UHRyCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRt
cCwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcCwgVG1wCiAKLTY0OiBNb3ZlQ29uZGl0
aW9uYWxseVRlc3Q2NCBVOkcsIFU6RywgVTpHLCBVOkcsIFVEOkcKKzY0OiBNb3ZlQ29uZGl0aW9u
YWxseVRlc3Q2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBVOkc6UHRyLCBVRDpHOlB0cgogICAg
IFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogICAgIFJlc0NvbmQsIFRtcCwgSW1tLCBUbXAs
IFRtcAogCi1Nb3ZlQ29uZGl0aW9uYWxseURvdWJsZSBVOkcsIFU6RiwgVTpGLCBVOkcsIFVEOkcK
K01vdmVDb25kaXRpb25hbGx5RG91YmxlIFU6RzozMiwgVTpGOjY0LCBVOkY6NjQsIFU6RzpQdHIs
IFVEOkc6UHRyCiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLU1vdmVDb25k
aXRpb25hbGx5RmxvYXQgVTpHLCBVOkYsIFU6RiwgVTpHLCBVRDpHCitNb3ZlQ29uZGl0aW9uYWxs
eUZsb2F0IFU6RzozMiwgVTpGOjMyLCBVOkY6MzIsIFU6RzpQdHIsIFVEOkc6UHRyCiAgICAgRG91
YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLU1vdmVEb3VibGVDb25kaXRpb25hbGx5MzIg
VTpHLCBVOkcsIFU6RywgVTpGLCBVRDpGCitNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTMyIFU6Rzoz
MiwgVTpHOjMyLCBVOkc6MzIsIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFJlbENvbmQsIFRtcCwgVG1w
LCBUbXAsIFRtcAogCi02NDogTW92ZURvdWJsZUNvbmRpdGlvbmFsbHk2NCBVOkcsIFU6RywgVTpH
LCBVOkYsIFVEOkYKKzY0OiBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0IFU6RzozMiwgVTpHOjY0
LCBVOkc6NjQsIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAsIFRt
cAogCi1Nb3ZlRG91YmxlQ29uZGl0aW9uYWxseVRlc3QzMiBVOkcsIFU6RywgVTpHLCBVOkYsIFVE
OkYKK01vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIs
IFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogICAgIFJl
c0NvbmQsIFRtcCwgSW1tLCBUbXAsIFRtcAogCi02NDogTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlU
ZXN0NjQgVTpHLCBVOkcsIFU6RywgVTpGLCBVRDpGCis2NDogTW92ZURvdWJsZUNvbmRpdGlvbmFs
bHlUZXN0NjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVz
Q29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcCwgVG1w
CiAKLU1vdmVEb3VibGVDb25kaXRpb25hbGx5RG91YmxlIFU6RywgVTpGLCBVOkYsIFU6RiwgVUQ6
RgorTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHOjMyLCBVOkY6NjQsIFU6Rjo2NCwg
VTpGOjY0LCBVRDpGOjY0CiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLU1v
dmVEb3VibGVDb25kaXRpb25hbGx5RmxvYXQgVTpHLCBVOkYsIFU6RiwgVTpGLCBVRDpGCitNb3Zl
RG91YmxlQ29uZGl0aW9uYWxseUZsb2F0IFU6RzozMiwgVTpGOjMyLCBVOkY6MzIsIFU6Rjo2NCwg
VUQ6Rjo2NAogICAgIERvdWJsZUNvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogCiBKdW1wIC9icmFu
Y2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxs
RXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDE5NDE3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgLy8g
Y29kZSBpcyBzdWJvcHRpbWFsLgogICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wV2l0aEV4dHJh
Q2xvYmJlcmVkUmVncygKICAgICAgICAgICAgICAgICBpbmRleCA8IGJsb2NrLT5zaXplKCkgPyAm
YmxvY2stPmF0KGluZGV4KSA6IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgWyZyZWdpc3RlclNl
dF0gKGNvbnN0IFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAgICAg
ICAgICAgICAgWyZyZWdpc3RlclNldF0gKGNvbnN0IFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwg
QXJnOjpUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNS
ZWcoKSAmJiBBcmc6OmlzRGVmKHJvbGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0
ZXJTZXQuc2V0KHRtcC5yZWcoKSk7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKIAogICAgICAgICAgICAgLy8g
Tm93IGZhbGwgYmFjayBvbiBzcGlsbGluZyB1c2luZyBzZXBhcmF0ZSBNb3ZlJ3MgdG8gbG9hZC9z
dG9yZSB0aGUgdG1wLgogICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKAotICAgICAgICAgICAg
ICAgIFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSkgeworICAg
ICAgICAgICAgICAgIFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlw
ZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0aC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0aC5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcFdpZHRoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpclRt
cFdpZHRoLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK1RtcFdpZHRoOjpUbXBXaWR0aChDb2RlJiBjb2Rl
KQoreworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7CisgICAgICAgIGZvciAo
SW5zdCYgaW5zdCA6ICpibG9jaykgeworICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKAorICAg
ICAgICAgICAgICAgIFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlw
ZSwgQXJnOjpXaWR0aCB3aWR0aCkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IG1fd2lkdGguYWRkKHRtcCwgV2lkdGhzKCkpOworICAgICAgICAgICAgICAgICAgICBXaWR0aHMm
IHdpZHRocyA9IHJlc3VsdC0+aXRlcmF0b3IudmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhzLnVz
ZSA9IEFyZzo6bWluaW11bVdpZHRoKHR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgd2lk
dGhzLmRlZiA9IEFyZzo6bWluaW11bVdpZHRoKHR5cGUpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc1Vz
ZShyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRocy51c2UgPSBzdGQ6Om1heCh3
aWR0aHMudXNlLCB3aWR0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNaRGVm
KHJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmRlZiA9IHN0ZDo6bWF4KHdp
ZHRocy5kZWYsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJnOjppc0Rl
Zihyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRocy5kZWYgPSBBcmc6OmNvbnNl
cnZhdGl2ZVdpZHRoKHR5cGUpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAg
fQorfQorCitUbXBXaWR0aDo6flRtcFdpZHRoKCkKK3sKK30KKworfSB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0aC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wV2lkdGguaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wV2lkdGguaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBBaXJUbXBXaWR0aF9oCisjZGVmaW5lIEFpclRtcFdpZHRoX2gKKworI2lm
IEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJBcmcuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7
CisKK2NsYXNzIFRtcFdpZHRoIHsKK3B1YmxpYzoKKyAgICBUbXBXaWR0aChDb2RlJik7CisgICAg
flRtcFdpZHRoKCk7CisKKyAgICAvLyBUaGUgd2lkdGggb2YgYSBUbXAgaXMgdGhlIG51bWJlciBv
ZiBiaXRzIHRoYXQgeW91IG5lZWQgdG8gYmUgYWJsZSB0byB0cmFjayB3aXRob3V0IHNvbWUgdHJp
dmlhbAorICAgIC8vIHJlY292ZXJ5LiBBIFRtcCBtYXkgaGF2ZSBhICJzdWJ3aWR0aCIgKHNheSwg
V2lkdGgzMiBvbiBhIDY0LWJpdCBzeXN0ZW0pIGlmIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nCisg
ICAgLy8gaXMgdHJ1ZToKKyAgICAvLworICAgIC8vIC0gVGhlIGhpZ2ggYml0cyBhcmUgbmV2ZXIg
cmVhZC4KKyAgICAvLyAtIFRoZSBoaWdoIGJpdHMgYXJlIGFsd2F5cyB6ZXJvLgorICAgIC8vCisg
ICAgLy8gVGhpcyBkb2Vzbid0IHRlbGwgeW91IHdoaWNoIG9mIHRob3NlIHByb3BlcnRpZXMgaG9s
ZHMsIGJ1dCB5b3UgY2FuIHF1ZXJ5IHRoYXQgdXNpbmcgdGhlIG90aGVyCisgICAgLy8gbWV0aG9k
cy4KKyAgICBXaWR0aCB3aWR0aChUbXAgdG1wKSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byBp
dGVyID0gbV93aWR0aC5maW5kKHRtcCk7CisgICAgICAgIGlmIChpdGVyID09IG1fd2lkdGguZW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gQXJnOjptaW5pbXVtV2lkdGgoQXJnKHRtcCkudHlwZSgp
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGl0ZXItPnZhbHVlLnVzZSwgaXRlci0+dmFsdWUu
ZGVmKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGluZGlyZWN0bHkgdGVsbHMgeW91IGhvdyBtdWNo
IG9mIHRoZSB0bXAncyBoaWdoIGJpdHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgemVyby4gVGhlIG51
bWJlciBvZgorICAgIC8vIGhpZ2ggYml0cyB0aGF0IGFyZSB6ZXJvIGFyZToKKyAgICAvLworICAg
IC8vICAgICBUb3RhbEJpdHMgLSBkZWZXaWR0aCh0bXApCisgICAgLy8KKyAgICAvLyBXaGVyZSBU
b3RhbEJpdHMgYXJlIHRoZSB0b3RhbCBudW1iZXIgb2YgYml0cyBpbiB0aGUgcmVnaXN0ZXIsIHNv
IDY0IG9uIGEgNjQtYml0IHN5c3RlbS4KKyAgICBXaWR0aCBkZWZXaWR0aChUbXAgdG1wKSBjb25z
dAorICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV93aWR0aC5maW5kKHRtcCk7CisgICAgICAg
IGlmIChpdGVyID09IG1fd2lkdGguZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnOjptaW5p
bXVtV2lkdGgoQXJnKHRtcCkudHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLmRl
ZjsKKyAgICB9CisKKyAgICAvLyBUaGlzIHRlbGxzIHlvdSBob3cgbXVjaCBvZiBUbXAgaXMgZ29p
bmcgdG8gYmUgcmVhZC4KKyAgICBXaWR0aCB1c2VXaWR0aChUbXAgdG1wKSBjb25zdAorICAgIHsK
KyAgICAgICAgYXV0byBpdGVyID0gbV93aWR0aC5maW5kKHRtcCk7CisgICAgICAgIGlmIChpdGVy
ID09IG1fd2lkdGguZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnOjptaW5pbXVtV2lkdGgo
QXJnKHRtcCkudHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnVzZTsKKyAgICB9
CisgICAgCitwcml2YXRlOgorICAgIHN0cnVjdCBXaWR0aHMgeworICAgICAgICBBcmc6OldpZHRo
IHVzZTsKKyAgICAgICAgQXJnOjpXaWR0aCBkZWY7CisgICAgfTsKKyAgICAKKyAgICBIYXNoTWFw
PFRtcCwgV2lkdGhzPiBtX3dpZHRoOworfTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6
OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEFpclRtcFdpZHRo
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9y
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dl
bmVyYXRvci5yYgkocmV2aXNpb24gMTk0MTcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsMTIg
QEAgY2xhc3MgT3Bjb2RlCiBlbmQKIAogY2xhc3MgQXJnCi0gICAgYXR0cl9yZWFkZXIgOnJvbGUs
IDp0eXBlCisgICAgYXR0cl9yZWFkZXIgOnJvbGUsIDp0eXBlLCA6d2lkdGgKIAotICAgIGRlZiBp
bml0aWFsaXplKHJvbGUsIHR5cGUpCisgICAgZGVmIGluaXRpYWxpemUocm9sZSwgdHlwZSwgd2lk
dGgpCiAgICAgICAgIEByb2xlID0gcm9sZQogICAgICAgICBAdHlwZSA9IHR5cGUKKyAgICAgICAg
QHdpZHRoID0gd2lkdGgKICAgICBlbmQKIGVuZAogCkBAIC0xNzMsNyArMTc0LDcgQEAgZGVmIGxl
eChzdHIsIGZpbGVOYW1lKQogZW5kCiAKIGRlZiBpc1VEKHRva2VuKQotICAgIHRva2VuID1+IC9c
QSgoVSl8KEQpfChVRCl8KFVBKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfCha
RCl8KFVaRCl8KFVBKSlcWi8KIGVuZAogCiBkZWYgaXNHRih0b2tlbikKQEAgLTE4OCw4ICsxODks
MTIgQEAgZGVmIGlzQXJjaCh0b2tlbikKICAgICB0b2tlbiA9fiAvXEEoKHg4Nil8KHg4Nl8zMil8
KHg4Nl82NCl8KGFybSl8KGFybXY3KXwoYXJtNjQpfCgzMil8KDY0KSlcWi8KIGVuZAogCitkZWYg
aXNXaWR0aCh0b2tlbikKKyAgICB0b2tlbiA9fiAvXEEoKDgpfCgxNil8KDMyKXwoNjQpfChQdHIp
KVxaLworZW5kCisKIGRlZiBpc0tleXdvcmQodG9rZW4pCi0gICAgaXNVRCh0b2tlbikgb3IgaXNH
Rih0b2tlbikgb3IgaXNLaW5kKHRva2VuKSBvciBpc0FyY2godG9rZW4pIG9yCisgICAgaXNVRCh0
b2tlbikgb3IgaXNHRih0b2tlbikgb3IgaXNLaW5kKHRva2VuKSBvciBpc0FyY2godG9rZW4pIG9y
IGlzV2lkdGgodG9rZW4pIG9yCiAgICAgICAgIHRva2VuID09ICJzcGVjaWFsIiBvciB0b2tlbiA9
PSAiYXMiCiBlbmQKIApAQCAtMjU2LDYgKzI2MSwxMyBAQCBjbGFzcyBQYXJzZXIKICAgICAgICAg
cmVzdWx0CiAgICAgZW5kCiAKKyAgICBkZWYgY29uc3VtZVdpZHRoCisgICAgICAgIHJlc3VsdCA9
IHRva2VuLnN0cmluZworICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCB3aWR0aCAoOCwgMTYs
IDMyLCBvciA2NCkiKSB1bmxlc3MgaXNXaWR0aChyZXN1bHQpCisgICAgICAgIGFkdmFuY2UKKyAg
ICAgICAgcmVzdWx0CisgICAgZW5kCisKICAgICBkZWYgcGFyc2VBcmNocwogICAgICAgICByZXR1
cm4gbmlsIHVubGVzcyBpc0FyY2godG9rZW4pCiAKQEAgLTM1MCw4ICszNjIsMTAgQEAgY2xhc3Mg
UGFyc2VyCiAgICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gY29uc3VtZVJvbGUKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoIjoiKQogICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZSA9IGNvbnN1bWVUeXBlCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lKCI6IikK
KyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gY29uc3VtZVdpZHRoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA8PCBBcmcu
bmV3KHJvbGUsIHR5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUgPDwgQXJn
Lm5ldyhyb2xlLCB0eXBlLCB3aWR0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWsgdW5sZXNzIHRva2VuID09ICIsIgogICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3VtZSgiLCIpCkBAIC02MDYsMjYgKzYyMCwzNyBAQCB3cml0ZUgoIk9w
Y29kZVV0aWxzIikgewogICAgIG1hdGNoSW5zdE92ZXJsb2FkKG91dHAsIDpmYXN0LCAidGhpcyIp
IHsKICAgICAgICAgfCBvcGNvZGUsIG92ZXJsb2FkIHwKICAgICAgICAgaWYgb3Bjb2RlLnNwZWNp
YWwKLSAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3RvcihhcmdzWzBdLCBBcmc6OlVzZSwgQXJn
OjpHUCk7IC8vIFRoaXMgaXMgYmFzaWNhbGx5IGJvZ3VzLCBidXQgaXQgd29ya3MgZiBhbmFseXNl
cyBtb2RlbCBTcGVjaWFsIGFzIGFuIGltbWVkaWF0ZS4iCisgICAgICAgICAgICBvdXRwLnB1dHMg
ImZ1bmN0b3IoYXJnc1swXSwgQXJnOjpVc2UsIEFyZzo6R1AsIEFyZzo6cG9pbnRlcldpZHRoKCkp
OyAvLyBUaGlzIGlzIGJhc2ljYWxseSBib2d1cywgYnV0IGl0IHdvcmtzIGZvciBhbmFseXNlcyB0
aGF0IG1vZGVsIFNwZWNpYWwgYXMgYW4gaW1tZWRpYXRlLiIKICAgICAgICAgICAgIG91dHAucHV0
cyAiYXJnc1swXS5zcGVjaWFsKCktPmZvckVhY2hBcmcoKnRoaXMsIHNjb3BlZExhbWJkYTxFYWNo
QXJnQ2FsbGJhY2s+KGZ1bmN0b3IpKTsiCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG92ZXJs
b2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgIHwgYXJnLCBp
bmRleCB8CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgcm9sZSA9IG5pbAogICAg
ICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKICAgICAgICAgICAgICAgICB3aGVuICJVIgogICAg
ICAgICAgICAgICAgICAgICByb2xlID0gIlVzZSIKICAgICAgICAgICAgICAgICB3aGVuICJEIgog
ICAgICAgICAgICAgICAgICAgICByb2xlID0gIkRlZiIKKyAgICAgICAgICAgICAgICB3aGVuICJa
RCIKKyAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgogICAgICAgICAgICAgICAgIHdo
ZW4gIlVEIgogICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZURlZiIKKyAgICAgICAgICAg
ICAgICB3aGVuICJVWkQiCisgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKICAg
ICAgICAgICAgICAgICB3aGVuICJVQSIKICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VB
ZGRyIgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAg
ICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIGlmIGFyZy53aWR0aCA9PSAiUHRy
IgorICAgICAgICAgICAgICAgICAgICB3aWR0aCA9ICJBcmc6OnBvaW50ZXJXaWR0aCgpIgorICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAiQXJnOjpXaWR0
aCN7YXJnLndpZHRofSIKKyAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6I3ty
b2xlfSwgQXJnOjoje2FyZy50eXBlfVApOyIKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1
bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6I3tyb2xlfSwgQXJnOjoje2FyZy50eXBlfVAsICN7
d2lkdGh9KTsiCiAgICAgICAgICAgICB9CiAgICAgICAgIGVuZAogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267677</attachid>
            <date>2015-12-18 19:52:13 -0800</date>
            <delta_ts>2015-12-18 21:34:35 -0800</delta_ts>
            <desc>starting to work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8029</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDE1LTEyLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IGNvbXBhcmVEb3VibGUgaW4gQjMvQWlyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA5MDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGhvbGUgaW4gb3VyIGNvdmVyYWdlIGlzIHRoYXQg
d2UgZG9uJ3QgZnVzZSBhIGRvdWJsZSBjb21wYXJpc29uIGludG8gYSBicmFuY2gsIHRoZW4gd2Ug
d2lsbAorICAgICAgICBjcmFzaCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IuIE9idmlvdXNs
eSwgd2UgKnJlYWxseSogd2FudCB0byBmdXNlIGRvdWJsZSBjb21wYXJpc29ucywKKyAgICAgICAg
YnV0IHdlIGNhbid0IGd1YXJhbnRlZSB0aGF0IHRoaXMgd2lsbCBhbHdheXMgaGFwcGVuLgorCisg
ICAgICAgIFRoaXMgYWxzbyByZW1vdmVzIGFsbCB1c2VzIG9mIFdURjo6RG9taW5hdG9ycyB2ZXJp
ZmljYXRpb24sIHNpbmNlIGl0J3MgZXh0cmVtZWx5IHNsb3cgZXZlbiBpbgorICAgICAgICBhIHJl
bGVhc2UgYnVpbGQuIFRoaXMgc3BlZWRzIHVwIHRlc3RiMyB3aXRoIHZhbGlkYXRlR3JhcGhBdEVh
Y2hQaGFzZT10cnVlIGJ5IGFuIG9yZGVyIG9mCisgICAgICAgIG1hZ25pdHVkZS4KKworICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6bW92ZURvdWJsZUNvbmRpdGlvbmFsbHlGbG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyOjpjb21wYXJlRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6
OmNvbXBhcmVGbG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpsZWEpOgorICAg
ICAgICAqIGIzL0IzRG9taW5hdG9ycy5oOgorICAgICAgICAoSlNDOjpCMzo6RG9taW5hdG9yczo6
RG9taW5hdG9ycyk6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9w
Y29kZXM6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RD
b21wYXJlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RFcXVhbERvdWJsZSk6CisgICAgICAgIChK
U0M6OkIzOjpzaW1wbGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorICAgICAg
ICAqIGRmZy9ERkdEb21pbmF0b3JzLmg6CisgICAgICAgIChKU0M6OkRGRzo6RG9taW5hdG9yczo6
RG9taW5hdG9ycyk6CisKIDIwMTUtMTItMTggIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hMZXhpY2FsU2NvcGVJbnRlcm5h
bCBhbmQgcHVzaExleGljYWxTY29wZSBzaG91bGQgdXNlIGVudW1zIGluc3RlYWQgb2YgYm9vbHMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgJKHJldmlzaW9uIDE5NDE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2NSw2ICsxMzY1LDIzIEBA
IHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAgIC8vIFdlIHNob3VsZCBpbXBsZW1lbnQgdGhp
cyB0aGUgcmlnaHQgd2F5IGV2ZW50dWFsbHksIGJ1dCBmb3Igbm93LCBpdCdzIGZpbmUgYmVjYXVz
ZSBpdCBhcmlzZXMgc28KKyAgICAvLyBpbmZyZXF1ZW50bHkuCisgICAgdm9pZCBjb21wYXJlRG91
YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklE
IHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
MigwKSwgZGVzdCk7CisgICAgICAgIEp1bXAgZmFsc2VDYXNlID0gYnJhbmNoRG91YmxlKGludmVy
dChjb25kKSwgbGVmdCwgcmlnaHQpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgZGVz
dCk7CisgICAgICAgIGZhbHNlQ2FzZS5saW5rKHRoaXMpOworICAgIH0KKyAgICB2b2lkIGNvbXBh
cmVGbG9hdChEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0
ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoMCksIGRlc3QpOworICAgICAgICBKdW1wIGZhbHNlQ2FzZSA9IGJyYW5jaEZsb2F0KGlu
dmVydChjb25kKSwgbGVmdCwgcmlnaHQpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwg
ZGVzdCk7CisgICAgICAgIGZhbHNlQ2FzZS5saW5rKHRoaXMpOworICAgIH0KKwogICAgIHZvaWQg
bGVhKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGFkZHJlc3MuYmFzZSwgZGVzdCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEb21pbmF0b3JzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRG9taW5hdG9ycy5oCShyZXZpc2lvbiAxOTQx
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEb21pbmF0b3JzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAi
QjNDRkcuaCIKLSNpbmNsdWRlICJCM0NvbW1vbi5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgi
CiAjaW5jbHVkZSA8d3RmL0RvbWluYXRvcnMuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgpAQCAtNDIsNyArNDEsNyBAQCBjbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdURjo6RG9taW5h
dG9yCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9taW5hdG9y
cyhQcm9jZWR1cmUmIHByb2MpCi0gICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENGRz4ocHJvYy5j
ZmcoKSwgc2hvdWxkVmFsaWRhdGVJUigpKQorICAgICAgICA6IFdURjo6RG9taW5hdG9yczxDRkc+
KHByb2MuY2ZnKCkpCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMTk0MTc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MjIsMTMg
KzE0MjIsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3QoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LAotICAgICAgICAgICAgW3RoaXNdIChj
b25zdCBBcmcmLCBjb25zdCBBcmdQcm9taXNlJiwgY29uc3QgQXJnUHJvbWlzZSYpIC0+IEluc3Qg
ewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICAgICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTAzCisg
ICAgICAgICAgICBbdGhpc10gKGNvbnN0IEFyZyYgZG91YmxlQ29uZCwgY29uc3QgQXJnUHJvbWlz
ZSYgbGVmdCwgY29uc3QgQXJnUHJvbWlzZSYgcmlnaHQpIC0+IEluc3QgeworICAgICAgICAgICAg
ICAgIGlmIChpc1ZhbGlkRm9ybShDb21wYXJlRG91YmxlLCBBcmc6OkRvdWJsZUNvbmQsIGxlZnQu
a2luZCgpLCByaWdodC5raW5kKCksIEFyZzo6VG1wKSkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSW5zdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhcmVEb3VibGUsIG1fdmFs
dWUsIGRvdWJsZUNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0LmNvbnN1bWUoKnRo
aXMpLCByaWdodC5jb25zdW1lKCp0aGlzKSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3QoKTsKICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICBbdGhpc10gKGNvbnN0IEFyZyYsIGNvbnN0IEFyZ1Byb21pc2UmLCBjb25zdCBBcmdQ
cm9taXNlJikgLT4gSW5zdCB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzLgorICAgICAgICAgICAgW3RoaXNdIChjb25zdCBBcmcmIGRvdWJsZUNvbmQsIGNvbnN0IEFy
Z1Byb21pc2UmIGxlZnQsIGNvbnN0IEFyZ1Byb21pc2UmIHJpZ2h0KSAtPiBJbnN0IHsKKyAgICAg
ICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0oQ29tcGFyZUZsb2F0LCBBcmc6OkRvdWJsZUNvbmQs
IGxlZnQua2luZCgpLCByaWdodC5raW5kKCksIEFyZzo6VG1wKSkgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSW5zdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhcmVGbG9hdCwg
bV92YWx1ZSwgZG91YmxlQ29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQuY29uc3Vt
ZSgqdGhpcyksIHJpZ2h0LmNvbnN1bWUoKnRoaXMpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgpOwogICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgIGludmVydGVkKTsKQEAgLTE2NDksNiArMTY1Niw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KIAogICAgICAgICBjYXNlIEJpdFhvcjogeworICAgICAgICAgICAgLy8gRklYTUU6
IElmIGNhbkJlSW50ZXJuYWwoY2hpbGQpLCB3ZSBzaG91bGQgZ2VuZXJhdGUgdGhpcyB1c2luZyB0
aGUgY29tcGFyaXNvbiBwYXRoLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjM2NworICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KC0xKSkgewogICAgICAgICAgICAgICAgIGFwcGVuZFVu
T3A8Tm90MzIsIE5vdDY0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDE5NDE3
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MTM3LDYgKzcxMzcsMjAgQEAgdm9pZCB0ZXN0Q29tcGFyZShCMzo6T3Bjb2RlIG9wY29k
ZSwgaW50IAogICAgIHZhcmlhbnRzKC1sZWZ0LCAtcmlnaHQpOwogfQogCit2b2lkIHRlc3RFcXVh
bERvdWJsZShkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0LCBib29sIHJlc3VsdCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGJv
b2w+KHByb2MsIGxlZnQsIHJpZ2h0KSA9PSByZXN1bHQpOworfQorCiBpbnQgc2ltcGxlRnVuY3Rp
b24oaW50IGEsIGludCBiKQogewogICAgIHJldHVybiBhICsgYjsKQEAgLTkxNjcsNiArOTE4MSwx
MiBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RDb21wYXJlKEJp
dEFuZCwgNDIsIDQyKSk7CiAgICAgUlVOKHRlc3RDb21wYXJlKEJpdEFuZCwgNDIsIDApKTsKIAor
ICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoNDIsIDQyLCB0cnVlKSk7CisgICAgUlVOKHRlc3RFcXVh
bERvdWJsZSg0MiwgNDMsIGZhbHNlKSk7CisgICAgUlVOKHRlc3RFcXVhbERvdWJsZShQTmFOLCA0
MiwgZmFsc2UpKTsKKyAgICBSVU4odGVzdEVxdWFsRG91YmxlKDQyLCBQTmFOLCBmYWxzZSkpOwor
ICAgIFJVTih0ZXN0RXF1YWxEb3VibGUoUE5hTiwgUE5hTiwgZmFsc2UpKTsKKwogICAgIFJVTih0
ZXN0TG9hZDxJbnQzMj4oNjApKTsKICAgICBSVU4odGVzdExvYWQ8SW50MzI+KC02MCkpOwogICAg
IFJVTih0ZXN0TG9hZDxJbnQzMj4oMTAwMCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAxOTQxNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkp
CkBAIC00MzEsNiArNDMxLDEyIEBAIFRlc3QzMiBVOkcsIFU6RywgVTpHLCBEOkcKICAgICBSZXND
b25kLCBUbXAsIEltbSwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcAogCitDb21wYXJl
RG91YmxlIFU6RywgVTpGLCBVOkYsIEQ6RworICAgIERvdWJsZUNvbmQsIFRtcCwgVG1wLCBUbXAK
KworQ29tcGFyZUZsb2F0IFU6RywgVTpGLCBVOkYsIEQ6RworICAgIERvdWJsZUNvbmQsIFRtcCwg
VG1wLCBUbXAKKwogIyBOb3RlIHRoYXQgYnJhbmNoZXMgaGF2ZSBzb21lIGxvZ2ljIGluIEFpck9w
dGltaXplQmxvY2tPcmRlci5jcHAuIElmIHlvdSBhZGQgbmV3IGJyYW5jaGVzLCBwbGVhc2UgbWFr
ZSBzdXJlCiAjIHlvdSBvcHQgdGhlbSBpbnRvIHRoZSBibG9jayBvcmRlciBvcHRpbWl6YXRpb25z
LgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAkocmV2
aXNpb24gMTk0MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3Jz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgRG9taW5hdG9ycyA6IHB1
YmxpYyBXVEY6OkRvbWluYXRvcgogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFdURjo6RG9taW5hdG9y
czxDRkc+KCpncmFwaC5tX2NmZywgdmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgOiBXVEY6
OkRvbWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9jZmcpCiAgICAgewogICAgIH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267681</attachid>
            <date>2015-12-18 21:34:35 -0800</date>
            <delta_ts>2015-12-19 13:32:24 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>83695</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNyBA
QAorMjAxNS0xMi0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzLT5BaXIgbG93ZXJpbmcgaW5jb3JyZWN0bHkgY29weS1wcm9wYWdhdGVzIG92ZXIgWkV4dDMy
J3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjM2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBp
bnN0cnVjdGlvbiBzZWxlY3RvciB0aGlua3MgdGhhdCBWYWx1ZSdzIHRoYXQgcmV0dXJuIEludDMy
J3MgYXJlIGdvaW5nIHRvIGFsd2F5cyBiZSBsb3dlcmVkCisgICAgICAgIHRvIGluc3RydWN0aW9u
cyB0aGF0IHplcm8tZXh0ZW5kIHRoZSBkZXN0aW5hdGlvbi4gQnV0IHRoaXMgaXNuJ3QgYWN0dWFs
bHkgdHJ1ZS4gSWYgeW91IGhhdmUgYW4KKyAgICAgICAgQWRkMzIgd2l0aCBhIGRlc3RpbmF0aW9u
IG9uIHRoZSBzdGFjayAoaS5lLiBzcGlsbGVkKSB0aGVuIGl0IG9ubHkgd3JpdGVzIDQgYnl0ZXMu
IFRoZW4sIHRoZQorICAgICAgICBmaWxsZXIgd2lsbCBsb2FkIDggYnl0ZXMgZnJvbSB0aGUgc3Rh
Y2sgYXQgdGhlIHBvaW50IG9mIHVzZS4gU28sIHRoZSB1c2Ugb2YgdGhlIEFkZDMyIHdpbGwgc2Vl
CisgICAgICAgIGdhcmJhZ2UgaW4gdGhlIGhpZ2ggYml0cy4KKworICAgICAgICBUaGUgZmFjdCB0
aGF0IHRoZSBzcGlsbGVyIGNob3NlIHRvIHVzZSA4IGJ5dGVzIGZvciBhIFRtcCB0aGF0IGdldHMg
ZGVmaW5lZCBieSBhbiBBZGQzMiBpcyBhCisgICAgICAgIHByZXR0eSBzYWQgYnVnLCBidXQ6CisK
KyAgICAgICAgLSBJdCdzIGVudGlyZWx5IHVwIHRvIHRoZSBzcGlsbGVyIHRvIGRlY2lkZSBob3cg
bWFueSBieXRlcyB0byB1c2UgZm9yIGEgVG1wLCBzaW5jZSB3ZSBkbyBub3QKKyAgICAgICAgICBh
c2NyaWJlIGEgdHlwZSB0byBUbXAncy4gV2UgY291bGQgYXNjcmliZSB0eXBlcyB0byBUbXAncywg
YnV0IHRoZW4gY29hbGVzY2luZyB3b3VsZCBiZWNvbWUKKyAgICAgICAgICBoYXJkZXIuIE91ciBn
b2FsIGlzIHRvIGZpeCB0aGUgYnVnIHdoaWxlIHN0aWxsIGVuYWJsaW5nIGNvYWxlc2NpbmcgaW4g
Y2FzZXMgbGlrZSAiYVtpXSIgd2hlcmUKKyAgICAgICAgICAiaSIgaXMgYSAzMi1iaXQgaW50ZWdl
ciB0aGF0IGlzIGNvbXB1dGVkIHVzaW5nIG9wZXJhdGlvbnMgdGhhdCBhbHJlYWR5IGRvIHplcm8t
ZXh0ZW5zaW9uLgorICAgICAgICAKKyAgICAgICAgLSBNb3JlIGJyb2FkbHksIGl0J3Mgc3RyYW5n
ZSB0aGF0IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvciBkZWNpZGVzIHdoZXRoZXIgYSBWYWx1ZSB3
aWxsIGJlCisgICAgICAgICAgbG93ZXJlZCB0byBzb21ldGhpbmcgdGhhdCB6ZXJvLWV4dGVuZHMu
IFRoYXQncyB0b28gY29uc3RyYWluaW5nLCBzaW5jZSB0aGUgbW9zdCBvcHRpbWFsCisgICAgICAg
ICAgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIG1pZ2h0IGludm9sdmUgc29tZXRoaW5nIHRoYXQgZG9l
c24ndCB6ZXJvLWV4dGVuZCBpbiBjYXNlcyBvZiBzcGlsbGluZywgc28KKyAgICAgICAgICB0aGUg
emVyby1leHRlbnNpb24gc2hvdWxkIG9ubHkgaGFwcGVuIGlmIGl0J3MgYWN0dWFsbHkgbmVlZGVk
LiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0bworICAgICAgICAgIHVuZGVyc3RhbmQgd2hpY2gg
QWlyIGluc3RydWN0aW9ucyBjYXVzZSB6ZXJvLWV4dGVuc2lvbnMuCisKKyAgICAgICAgLSBJZiB3
ZSBrbm93IHdoaWNoIEFpciBpbnN0cnVjdGlvbnMgY2F1c2UgemVyby1leHRlbnNpb25zLCB0aGVu
IHdlIGRvbid0IG5lZWQgdGhlIGluc3RydWN0aW9uCisgICAgICAgICAgc2VsZWN0b3IgdG8gY29w
eS1wcm9wYWdhdGUgWkV4dDMyJ3MuIFdlIGhhdmUgY29weS1wcm9wYWdhdGlvbiBpbiBBaXIgdGhh
bmtzIHRvIHRoZSByZWdpc3RlcgorICAgICAgICAgIGFsbG9jYXRvci4KKworICAgICAgICBJbiBm
YWN0LCB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGlzIGV4YWN0bHkgd2hlcmUgYWxsIG9mIHRoZSBw
aWVjZXMgY29tZSB0b2dldGhlci4gSXQncyB0aGVyZSB0aGF0CisgICAgICAgIHdlIHdhbnQgdG8g
a25vdyB3aGljaCBvcGVyYXRpb25zIHplcm8tZXh0ZW5kIGFuZCB3aGljaCBkb24ndC4gSXQgYWxz
byB3YW50cyB0byBrbm93IGhvdyBtYW55IGJpdHMKKyAgICAgICAgb2YgYSBUbXAgZWFjaCBpbnN0
cnVjdGlvbiByZWFkcy4gQXJtZWQgd2l0aCB0aGF0IGluZm9ybWF0aW9uLCB0aGUgcmVnaXN0ZXIg
YWxsb2NhdG9yIGNhbiBlbWl0CisgICAgICAgIG1vcmUgb3B0aW1hbCBzcGlsbCBjb2RlLCB1c2Ug
bGVzcyBzdGFjayBzcGFjZSBmb3Igc3BpbGwgc2xvdHMsIGFuZCBjb2FsZXNjZSBNb3ZlMzIncy4g
QXMgYSBib251cywKKyAgICAgICAgb24gWDg2LCBpdCByZXBsYWNlcyBNb3ZlJ3Mgd2l0aCBNb3Zl
MzIncyB3aGVuZXZlciBpdCBjYW4uIE9uIFg4NiwgTW92ZTMyIGlzIGNoZWFwZXIuCisKKyAgICAg
ICAgVGhpcyBmaXhlcyBhIGNyYXNoIGJ1ZyBpbiBWOC9lbmNyeXB0LiBWOC9lbmNyeXB0IHN0aWxs
IGNyYXNoZXMsIGJ1dCBhdCBhIGRpZmZlcmVudCBzaWduYXR1cmUuCisKKyAgICAgICAgSSB0cmll
ZCB3cml0aW5nIGEgcmVncmVzc2lvbiB0ZXN0LiBUaGUgcHJvYmxlbSBpcyB0aGF0IHlvdSBuZWVk
IGdhcmJhZ2Ugb24gdGhlIHN0YWNrIGZvciB0aGlzIHRvCisgICAgICAgIHdvcmssIGFuZCBJIGRp
ZG4ndCBmZWVsIGxpa2Ugd3JpdGluZyBhIGZsYWt5IHRlc3QuIEl0IGFwcGVhcnMgdGhhdCBydW5u
aW5nIEpTQyB0ZXN0cyB3aWxsIGNvdmVyCisgICAgICAgIHRoaXMuCisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OmlzWDg2KToKKyAgICAg
ICAgKEpTQzo6aXNYODZfNjQpOgorICAgICAgICAoSlNDOjpvcHRpbWl6ZUZvckFSTXY3SURJVlN1
cHBvcnRlZCk6CisgICAgICAgIChKU0M6Om9wdGltaXplRm9yWDg2KToKKyAgICAgICAgKEpTQzo6
b3B0aW1pemVGb3JYODZfNjQpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmhpZ2hCaXRzQXJlWmVybyk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNob3VsZENvcHlQcm9wYWdhdGUpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dlcik6CisgICAgICAgICogYjMvQjNQYXRj
aHBvaW50U3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6
Zm9yRWFjaEFyZyk6CisgICAgICAgICogYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCk6CisgICAgICAgICog
YjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6YWxsb2NhdGVTdGFjayk6CisgICAgICAgICogYjMvYWlyL0Fp
ckFyZy5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpwb2ludGVyV2lkdGgpOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzQW55VXNlKToKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6QXJnOjppc0NvbGRVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRWFy
bHlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRGVmKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1pEZWYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Ondp
ZHRoRm9yQjNUeXBlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpjb25zZXJ2YXRpdmVX
aWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6bWluaW11bVdpZHRoKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpieXRlcyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFy
Zzo6d2lkdGhGb3JCeXRlcyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6QXJnKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpmb3JFYWNoVG1wKToKKyAgICAgICAgKiBiMy9haXIv
QWlyQ0NhbGxTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q0NhbGxTcGVjaWFs
Ojpmb3JFYWNoQXJnKToKKyAgICAgICAgKiBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjplbGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICog
YjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OmZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyk6CisgICAgICAgICogYjMvYWlyL0Fpcklu
c3QuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0OjpoYXNBcmdFZmZlY3RzKToKKyAg
ICAgICAgKiBiMy9haXIvQWlySW5zdC5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0Ojpm
b3JFYWNoVG1wRmFzdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okluc3Q6OmZvckVhY2hUbXAp
OgorICAgICAgICAqIGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpJbnN0Ojpmb3JFYWNoVG1wV2l0aEV4dHJhQ2xvYmJlcmVkUmVncyk6CisgICAgICAgICog
YjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcDoKKyAgICAgICAgKiBiMy9h
aXIvQWlyTGl2ZW5lc3MuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QWJzdHJhY3RMaXZlbmVz
czo6QWJzdHJhY3RMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFic3RyYWN0TGl2
ZW5lc3M6OkxvY2FsQ2FsYzo6ZXhlY3V0ZSk6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzOgorICAgICAgICAqIGIzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpzcGlsbEV2ZXJ5dGhpbmcpOgorICAgICAgICAqIGIzL2Fpci9BaXJU
bXBXaWR0aC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpUbXBXaWR0aDo6VG1w
V2lkdGgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpUbXBXaWR0aDo6flRtcFdpZHRoKToKKyAg
ICAgICAgKiBiMy9haXIvQWlyVG1wV2lkdGguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6OlRtcFdpZHRoOjp3aWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlRtcFdpZHRoOjpk
ZWZXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlRtcFdpZHRoOjp1c2VXaWR0aCk6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6OlRtcFdpZHRoOjpXaWR0aHM6OldpZHRocyk6CisgICAgICAg
ICogYjMvYWlyL0FpclVzZUNvdW50cy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpVc2VDb3Vu
dHM6OlVzZUNvdW50cyk6CisgICAgICAgICogYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmI6Cisg
ICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja01lZ2FD
b21ibyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tUcmlja3lNZWdhQ29tYm8pOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdENoZWNrVHdvTWVnYUNvbWJvcyk6CisgICAgICAgIChKU0M6OkIz
OjpydW4pOgorCiAyMDE1LTEyLTE4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIEpTU3RyaW5nOjpTYWZlVmlldyBsZXNzIG9mIGEgZm9vdGd1bi4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTQzMTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNjk1LDYgKzY5NSw4IEBACiAJCTBGRTA1MDJDMUFBOTA5NTYw
MEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFMDUwMjMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAg
Ki87IH07CiAJCTBGRTA1MDJEMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTA1MDI0MUFBOTA5NTYw
MEQzM0IzMyAvKiBWYXJPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRkUwNTAyRjFBQUE4MDY5MDBEMzNCMzMgLyogU2NvcGVkQXJndW1l
bnRzVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZFMDUwMkUxQUFBODA2OTAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmNwcCAq
LzsgfTsKKwkJMEZFMEU0QUQxQzI0Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTBFNEFCMUMyNEM5
NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5jcHAgKi87IH07CisJCTBGRTBFNEFFMUMyNEM5NEEw
MDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFMEU0QUMxQzI0Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmgg
Ki87IH07CiAJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQjE0MzZBQjIzMDAx
OTZDNDggLyogT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFC
MjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLzsgfTsKIAkJMEZFMjU0RjYxQUJEREQyMjAwQTdD
NkQyIC8qIERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjU0RjQxQUJEREQyMjAwQTdDNkQyIC8qIERG
R1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwICovOyB9OwpAQCAtMjgzNSw2ICsyODM3LDggQEAK
IAkJMEZFMDUwMjMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYXJPZmZzZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkUwNTAyNDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhck9mZnNldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkUwNTAyRTFBQUE4MDY5MDBEMzNCMzMgLyogU2NvcGVkQXJndW1l
bnRzVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NvcGVk
QXJndW1lbnRzVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUwRTRB
QjFDMjRDOTRBMDAyRTE3QjYgLyogQWlyVG1wV2lkdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQWlyVG1wV2lkdGguY3BwOyBwYXRoID0gYjMvYWlyL0FpclRtcFdp
ZHRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMEU0QUMxQzI0Qzk0QTAw
MkUxN0I2IC8qIEFpclRtcFdpZHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEFpclRtcFdpZHRoLmg7IHBhdGggPSBiMy9haXIvQWlyVG1wV2lkdGguaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3B0aW9ucy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFMjU0RjQxQUJEREQyMjAwQTdDNkQyIC8qIERGR1Zh
cmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzk5
LDYgKzQ4MDMsOCBAQAogCQkJCTBGRUM4NTY4MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXAuY3Bw
ICovLAogCQkJCTBGRUM4NTY5MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXAuaCAqLywKIAkJCQkw
RkVDODU2QTFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wSW5saW5lcy5oICovLAorCQkJCTBGRTBF
NEFCMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5jcHAgKi8sCisJCQkJMEZFMEU0QUMx
QzI0Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmggKi8sCiAJCQkJMEYzNzMwOTIxQzBENjdF
RTAwMDUyQkZBIC8qIEFpclVzZUNvdW50cy5oICovLAogCQkJCTBGRUM4NTZCMUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJWYWxpZGF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg1NkMxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpclZhbGlkYXRlLmggKi8sCkBAIC03Mjk0LDYgKzczMDAsNyBAQAogCQkJCTBGMjM1QkQ5
MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkI5Q0Y3MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0VGltZU9iamVjdE1hdGVy
aWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREIxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTEV4aXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFMEU0QUUxQzI0Qzk0QTAw
MkUxN0I2IC8qIEFpclRtcFdpZHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0YyOTk2QzE3QTBC
QjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMkMxNzBC
NjYxOTAwQkI3MjJDIC8qIEZUTEZvcm1hdHRlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkQ4QTMxQTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NSRW50cnlKSVRDb2RlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTkyMjcsNiArOTIzNCw3IEBACiAJCQkJMEY3NjZEMzgxNUFFNEExQzAwOEYz
NjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNDRjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcwNUI0MUFCMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2wuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEZFMEU0QUQxQzI0Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdp
ZHRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwNUI0MUFEMUE2RTUwMUUwMDcxNjc1NyAvKiBT
eW1ib2xDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDVCNDFBRjFBNkU1MDFF
MDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwNUI0MUIx
MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTk0MzEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDYgKzY3LDE1IEBAIGlubGluZSBib29sIGlzWDg2KCkKICNlbmRpZgogfQogCitpbmxp
bmUgYm9vbCBpc1g4Nl82NCgpCit7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gdHJ1ZTsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGlubGluZSBib29sIG9wdGlt
aXplRm9yQVJNdjdJRElWU3VwcG9ydGVkKCkKIHsKICAgICByZXR1cm4gaXNBUk12N0lESVZTdXBw
b3J0ZWQoKSAmJiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnMo
KTsKQEAgLTgyLDYgKzkxLDExIEBAIGlubGluZSBib29sIG9wdGltaXplRm9yWDg2KCkKICAgICBy
ZXR1cm4gaXNYODYoKSAmJiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXph
dGlvbnMoKTsKIH0KIAoraW5saW5lIGJvb2wgb3B0aW1pemVGb3JYODZfNjQoKQoreworICAgIHJl
dHVybiBpc1g4Nl82NCgpICYmIE9wdGlvbnM6OnVzZUFyY2hpdGVjdHVyZVNwZWNpZmljT3B0aW1p
emF0aW9ucygpOworfQorCiBjbGFzcyBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CiBj
bGFzcyBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CiBjbGFzcyBMaW5rQnVmZmVy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlz
aW9uIDE5NDMxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTYgKzE1OCwxMiBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgfQogCi0gICAgLy8gTk9URTogVGhpcyBlbnRpcmUgbWVjaGFuaXNtIGNvdWxkIGJlIGRv
bmUgb3ZlciBBaXIsIGlmIHdlIGZlbHQgdGhhdCB0aGlzIHdvdWxkIGJlIGZhc3QgZW5vdWdoLgot
ICAgIC8vIEZvciBub3cgd2UncmUgYXNzdW1pbmcgdGhhdCBpdCdzIGZhc3RlciB0byBkbyB0aGlz
IGhlcmUsIHNpbmNlIGFuYWx5emluZyBCMyBpcyBzbyBjaGVhcC4KICAgICBib29sIHNob3VsZENv
cHlQcm9wYWdhdGUoVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh2YWx1ZS0+
b3Bjb2RlKCkpIHsKICAgICAgICAgY2FzZSBUcnVuYzoKICAgICAgICAgY2FzZSBJZGVudGl0eToK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIFpFeHQzMjoKLSAgICAgICAg
ICAgIHJldHVybiBoaWdoQml0c0FyZVplcm8odmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTc2MiwxMSAr
MTc1OCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFpFeHQzMjogewot
ICAgICAgICAgICAgaWYgKGhpZ2hCaXRzQXJlWmVybyhtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQodG1wKG1fdmFsdWUtPmNoaWxkKDApKSA9PSB0bXAobV92YWx1
ZSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAg
ICAgYXBwZW5kVW5PcDxNb3ZlMzIsIEFpcjo6T29wcz4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCShyZXZpc2lvbiAxOTQzMTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFy
ZyhJbnN0JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbGJhY2soaW5zdC5hcmdz
WzFdLCBBcmc6OkRlZiwgaW5zdC5vcmlnaW4tPmFpclR5cGUoKSk7CisgICAgY2FsbGJhY2soaW5z
dC5hcmdzWzFdLCBBcmc6OkRlZiwgaW5zdC5vcmlnaW4tPmFpclR5cGUoKSwgaW5zdC5vcmlnaW4t
PmFpcldpZHRoKCkpOwogICAgIGZvckVhY2hBcmdJbXBsKDAsIDIsIGluc3QsIFNhbWVBc1JlcCwg
Y2FsbGJhY2spOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21h
cFNwZWNpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0
YWNrbWFwU3BlY2lhbC5jcHAJKHJldmlzaW9uIDE5NDMxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw4ICsx
MTEsOSBAQCB2b2lkIFN0YWNrbWFwU3BlY2lhbDo6Zm9yRWFjaEFyZ0ltcGwoCiAgICAgICAgICAg
ICByb2xlID0gQXJnOjpMYXRlVXNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGNhbGxiYWNrKGFyZywgcm9sZSwgQXJnOjp0eXBlRm9yQjNUeXBlKGNo
aWxkLnZhbHVlKCktPnR5cGUoKSkpOworCisgICAgICAgIFR5cGUgdHlwZSA9IGNoaWxkLnZhbHVl
KCktPnR5cGUoKTsKKyAgICAgICAgY2FsbGJhY2soYXJnLCByb2xlLCBBcmc6OnR5cGVGb3JCM1R5
cGUodHlwZSksIEFyZzo6d2lkdGhGb3JCM1R5cGUodHlwZSkpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAxOTQzMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoaXMgaXMgdXNlZnVsIHdoZW4gbG93ZXJpbmcuIE5vdGUg
dGhhdCB0aGlzIGlzIG9ubHkgdmFsaWQgZm9yIG5vbi12b2lkIHZhbHVlcy4KICAgICBBaXI6OkFy
Zzo6VHlwZSBhaXJUeXBlKCkgY29uc3QgeyByZXR1cm4gQWlyOjpBcmc6OnR5cGVGb3JCM1R5cGUo
dHlwZSgpKTsgfQorICAgIEFpcjo6QXJnOjpXaWR0aCBhaXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IEFpcjo6QXJnOjp3aWR0aEZvckIzVHlwZSh0eXBlKCkpOyB9CiAKICAgICBBZGphY2VuY3lMaXN0
JiBjaGlsZHJlbigpIHsgcmV0dXJuIG1fY2hpbGRyZW47IH0gCiAgICAgY29uc3QgQWRqYWNlbmN5
TGlzdCYgY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24gMTk0MzEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNTAsNiArNjA1
MCw2MSBAQCB2b2lkIHRlc3RDaGVja01lZ2FDb21ibygpCiAgICAgQ0hFQ0soaW52b2tlPGludD4o
KmNvZGUsICZ2YWx1ZSAtIDIsIDEpID09IDQyKTsKIH0KIAordm9pZCB0ZXN0Q2hlY2tUcmlja3lN
ZWdhQ29tYm8oKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgVmFsdWUqIGluZGV4ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywg
WkV4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7CisKKyAgICBWYWx1ZSogcHRyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwg
T3JpZ2luKCksIGluZGV4LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7CisgICAgCisgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBy
b290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4oCisgICAgICAgIHByb2MsIENoZWNrLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExl
c3NUaGFuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgTG9hZDhTLCBPcmlnaW4oKSwgcHRyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0MikpKTsKKyAgICBjaGVjay0+c2V0
R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgQ0hFQ0soIXBh
cmFtcy5zaXplKCkpOworCisgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBi
ZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCisg
ICAgICAgICAgICAvLyBzYXZlcy4KKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAg
aml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAg
ICAgIH0pOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKworICAgIGlu
dDhfdCB2YWx1ZTsKKyAgICB2YWx1ZSA9IDQyOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2Rl
LCAmdmFsdWUgLSAyLCAwKSA9PSAwKTsKKyAgICB2YWx1ZSA9IDEyNzsKKyAgICBDSEVDSyhpbnZv
a2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMCkgPT0gMCk7CisgICAgdmFsdWUgPSA0MTsKKyAg
ICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMCkgPT0gNDIpOworICAgIHZh
bHVlID0gMDsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMCkgPT0g
NDIpOworICAgIHZhbHVlID0gLTE7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1
ZSAtIDIsIDApID09IDQyKTsKK30KKwogdm9pZCB0ZXN0Q2hlY2tUd29NZWdhQ29tYm9zKCkKIHsK
ICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTkxMjksNiArOTE4NCw3IEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFNpbXBsZUNoZWNrKCkpOwogICAgIFJVTih0ZXN0
Q2hlY2tMZXNzVGhhbigpKTsKICAgICBSVU4odGVzdENoZWNrTWVnYUNvbWJvKCkpOworICAgIFJV
Tih0ZXN0Q2hlY2tUcmlja3lNZWdhQ29tYm8oKSk7CiAgICAgUlVOKHRlc3RDaGVja1R3b01lZ2FD
b21ib3MoKSk7CiAgICAgUlVOKHRlc3RDaGVja1R3b05vblJlZHVuZGFudE1lZ2FDb21ib3MoKSk7
CiAgICAgUlVOKHRlc3RDaGVja0FkZEltbSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrLmNwcAkocmV2aXNpb24gMTk0MzEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgYWxsb2NhdGVTdGFjayhDb2RlJiBj
b2RlKQogICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7CiAgICAgICAgIGZvciAo
SW5zdCYgaW5zdCA6ICpibG9jaykgewogICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAg
ICAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsK
KyAgICAgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBl
LCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyb2xlID09IEFyZzo6VXNl
QWRkciAmJiBhcmcuaXNTdGFjaygpKQogICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBpbmdT
dGFja1Nsb3RzLmFkZChhcmcuc3RhY2tTbG90KCkpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAt
MTQ4LDcgKzE0OCw3IEBAIHZvaWQgYWxsb2NhdGVTdGFjayhDb2RlJiBjb2RlKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkludGVyZmVyaW5nOiAiLCBXVEY6OnBvaW50ZXJMaXN0RHVtcChsb2Nh
bENhbGMubGl2ZSgpKSwgIlxuIik7CiAKICAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAg
ICAgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7
CisgICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlw
ZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZzo6aXNEZWYocm9s
ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAg
IGlmICghYXJnLmlzU3RhY2soKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQXJnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFyZy5jcHAJKHJldmlzaW9uIDE5NDMxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDYgKzE3OCwxMiBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OlVzZURlZjoK
ICAgICAgICAgb3V0LnByaW50KCJVc2VEZWYiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
QXJnOjpaRGVmOgorICAgICAgICBvdXQucHJpbnQoIlpEZWYiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQXJnOjpVc2VaRGVmOgorICAgICAgICBvdXQucHJpbnQoIlVzZVpEZWYiKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpVc2VBZGRyOgogICAgICAgICBvdXQucHJpbnQo
IlVzZUFkZHIiKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFyZy5oCShyZXZpc2lvbiAxOTQzMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOSArMTAxLDI4IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gTGlrZSBVc2Ugb2YgYWRkcmVzcywgRGVmIG9mIGFkZHJlc3MgZG9lcyBu
b3QgbWVhbiBlc2NhcGUuCiAgICAgICAgIERlZiwKIAorICAgICAgICAvLyBUaGlzIGlzIGEgc3Bl
Y2lhbCB2YXJpYW50IG9mIERlZiB0aGF0IGltcGxpZXMgdGhhdCB0aGUgdXBwZXIgYml0cyBvZiB0
aGUgdGFyZ2V0IHJlZ2lzdGVyIGFyZQorICAgICAgICAvLyB6ZXJvLWZpbGxlZC4gU3BlY2lmaWNh
bGx5LCBpZiB0aGUgV2lkdGggb2YgYSBaRGVmIGlzIGxlc3MgdGhhbiB0aGUgbGFyZ2VzdCBwb3Nz
aWJsZSB3aWR0aCBvZgorICAgICAgICAvLyB0aGUgYXJndW1lbnQgKGZvciBleGFtcGxlLCB3ZSdy
ZSBvbiBhIDY0LWJpdCBtYWNoaW5lIGFuZCB3ZSBoYXZlIGEgV2lkdGgzMiBaRGVmIG9mIGEgR1BS
KSB0aGVuCisgICAgICAgIC8vIHRoaXMgaGFzIGRpZmZlcmVudCBpbXBsaWNhdGlvbnMgZm9yIHRo
ZSB1cHBlciBiaXRzIChpLmUuIHRoZSB0b3AgMzIgYml0cyBpbiBvdXIgZXhhbXBsZSkKKyAgICAg
ICAgLy8gZGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mIHRoZSBhcmd1bWVudDoKKyAgICAgICAgLy8K
KyAgICAgICAgLy8gRm9yIHJlZ2lzdGVyOiB0aGUgdXBwZXIgYml0cyBhcmUgemVyby1maWxsZWQu
CisgICAgICAgIC8vIEZvciBhZGRyZXNzOiB0aGUgdXBwZXIgYml0cyBhcmUgbm90IHRvdWNoZWQg
KGkuZS4gd2UgZG8gYSAzMi1iaXQgc3RvcmUgaW4gb3VyIGV4YW1wbGUpLgorICAgICAgICAvLyBG
b3IgdG1wOiBlaXRoZXIgdGhlIHVwcGVyIGJpdHMgYXJlIG5vdCB0b3VjaGVkIG9yIHRoZXkgYXJl
IHplcm8tZmlsbGVkLCBhbmQgd2Ugd29uJ3Qga25vdworICAgICAgICAvLyB3aGljaCB1bnRpbCB3
ZSBsb3dlciB0aGUgdG1wIHRvIGVpdGhlciBhIFN0YWNrU2xvdCBvciBhIFJlZy4KKyAgICAgICAg
Ly8KKyAgICAgICAgLy8gVGhlIGJlaGF2aW9yIG9mIFpEZWYgaXMgY29uc2lzdGVudCB3aXRoIHdo
YXQgaGFwcGVucyB3aGVuIHlvdSBwZXJmb3JtIDMyLWJpdCBvcGVyYXRpb25zIG9uIGEKKyAgICAg
ICAgLy8gNjQtYml0IEdQUi4gSXQncyBub3QgY29uc2lzdGVudCB3aXRoIHdoYXQgaGFwcGVucyB3
aXRoIDgtYml0IG9yIDE2LWJpdCBEZWZzIG9uIHg4NiBHUFJzLCBvcgorICAgICAgICAvLyB3aGF0
IGhhcHBlbnMgd2l0aCBmbG9hdCBEZWZzIGluIEFSTSBORU9OIG9yIFg4NiBTU0UuIEhlbmNlIHdo
eSB3ZSBoYXZlIGJvdGggRGVmIGFuZCBaRGVmLgorICAgICAgICBaRGVmLAorCiAgICAgICAgIC8v
IFRoaXMgaXMgYSBjb21iaW5lZCBVc2UgYW5kIERlZi4gSXQgbWVhbnMgdGhhdCBib3RoIHRoaW5n
cyBoYXBwZW4uCiAgICAgICAgIFVzZURlZiwKIAorICAgICAgICAvLyBUaGlzIGlzIGEgY29tYmlu
ZWQgVXNlIGFuZCBaRGVmLiBJdCBtZWFucyB0aGF0IGJvdGggdGhpbmdzIGhhcHBlbi4KKyAgICAg
ICAgVXNlWkRlZiwKKwogICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBraW5kIG9mIHVzZSB0
aGF0IGlzIG9ubHkgdmFsaWQgZm9yIGFkZHJlc3Nlcy4gSXQgbWVhbnMgdGhhdCB0aGUKICAgICAg
ICAgLy8gaW5zdHJ1Y3Rpb24gd2lsbCBldmFsdWF0ZSB0aGUgYWRkcmVzcyBleHByZXNzaW9uIGFu
ZCBjb25zdW1lIHRoZSBlZmZlY3RpdmUgYWRkcmVzcywgYnV0IGl0CiAgICAgICAgIC8vIHdpbGwg
bmVpdGhlciBsb2FkIG5vciBzdG9yZS4gVGhpcyBpcyBhbiBlc2NhcGluZyB1c2UsIGJlY2F1c2Ug
bm93IHRoZSBhZGRyZXNzIG1heSBiZQpAQCAtMTI2LDYgKzE0NSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIFdpZHRoNjQKICAgICB9OwogCisgICAgc3RhdGljIFdpZHRoIHBvaW50ZXJXaWR0aCgpCisg
ICAgeworICAgICAgICBpZiAoc2l6ZW9mKHZvaWQqKSA9PSA4KQorICAgICAgICAgICAgcmV0dXJu
IFdpZHRoNjQ7CisgICAgICAgIHJldHVybiBXaWR0aDMyOworICAgIH0KKwogICAgIGVudW0gU2ln
bmVkbmVzcyA6IGludDhfdCB7CiAgICAgICAgIFNpZ25lZCwKICAgICAgICAgVW5zaWduZWQKQEAg
LTEzOSw5ICsxNjUsMTEgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZToKICAgICAgICAgY2Fz
ZSBDb2xkVXNlOgogICAgICAgICBjYXNlIFVzZURlZjoKKyAgICAgICAgY2FzZSBVc2VaRGVmOgog
ICAgICAgICBjYXNlIExhdGVVc2U6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Y2FzZSBEZWY6CisgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xNTUsNyArMTgzLDkgQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAg
ICBjYXNlIFVzZURlZjoKKyAgICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICBjYXNlIERlZjoK
KyAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE3Myw4ICsyMDMsMTAgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFVzZToKICAgICAgICAgY2FzZSBDb2xkVXNlOgogICAgICAgICBjYXNlIFVzZURl
ZjoKKyAgICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGNhc2UgRGVmOgorICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoK
ICAgICAgICAgY2FzZSBMYXRlVXNlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk4
LDYgKzIzMCwyNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGNhc2UgRGVmOgogICAgICAgICBjYXNlIFVzZURlZjoKKyAgICAgICAgY2FzZSBaRGVmOgorICAg
ICAgICBjYXNlIFVzZVpEZWY6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgUm9sZSBpbXBsaWVzIHRoYXQgdGhl
IEluc3Qgd2lsbCBaRGVmIHRoZSBBcmcuCisgICAgc3RhdGljIGJvb2wgaXNaRGVmKFJvbGUgcm9s
ZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAocm9sZSkgeworICAgICAgICBjYXNlIFVzZToKKyAg
ICAgICAgY2FzZSBDb2xkVXNlOgorICAgICAgICBjYXNlIFVzZUFkZHI6CisgICAgICAgIGNhc2Ug
TGF0ZVVzZToKKyAgICAgICAgY2FzZSBEZWY6CisgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIFpEZWY6CisgICAgICAgIGNhc2UgVXNl
WkRlZjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjM0
LDYgKzI4NSwzNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzdGF0aWMgV2lk
dGggY29uc2VydmF0aXZlV2lkdGgoVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5
cGUgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRoNjQ7CisgICAgfQorCisgICAgc3RhdGlj
IFdpZHRoIG1pbmltdW1XaWR0aChUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gdHlw
ZSA9PSBHUCA/IFdpZHRoOCA6IFdpZHRoMzI7CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVk
IGJ5dGVzKFdpZHRoIHdpZHRoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDEgPDwgd2lkdGg7Cisg
ICAgfQorCisgICAgc3RhdGljIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZXMpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKGJ5dGVzKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAg
Y2FzZSAxOgorICAgICAgICAgICAgcmV0dXJuIFdpZHRoODsKKyAgICAgICAgY2FzZSAyOgorICAg
ICAgICAgICAgcmV0dXJuIFdpZHRoMTY7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgY2FzZSA0
OgorICAgICAgICAgICAgcmV0dXJuIFdpZHRoMzI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gV2lkdGg2NDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEFyZygpCiAgICAg
ICAgIDogbV9raW5kKEludmFsaWQpCiAgICAgewpAQCAtNzE3LDE5ICs3OTksMTkgQEAgcHVibGlj
OgogICAgIC8vCiAgICAgLy8gVGhpcyBkZWZzICglcmN4KSBidXQgdXNlcyAlcmN4LgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JFYWNoVG1wKFJvbGUgYXJnUm9s
ZSwgVHlwZSBhcmdUeXBlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHZvaWQgZm9yRWFj
aFRtcChSb2xlIGFyZ1JvbGUsIFR5cGUgYXJnVHlwZSwgV2lkdGggYXJnV2lkdGgsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgICAg
ICBjYXNlIFRtcDoKICAgICAgICAgICAgIEFTU0VSVChpc0FueVVzZShhcmdSb2xlKSB8fCBpc0Rl
ZihhcmdSb2xlKSk7Ci0gICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgYXJnUm9sZSwgYXJnVHlw
ZSk7CisgICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgYXJnUm9sZSwgYXJnVHlwZSwgYXJnV2lk
dGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWRkcjoKLSAgICAgICAgICAg
IGZ1bmN0b3IobV9iYXNlLCBVc2UsIEdQKTsKKyAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlLCBV
c2UsIEdQLCBhcmdSb2xlID09IFVzZUFkZHIgPyBhcmdXaWR0aCA6IHBvaW50ZXJXaWR0aCgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluZGV4OgotICAgICAgICAgICAgZnVu
Y3RvcihtX2Jhc2UsIFVzZSwgR1ApOwotICAgICAgICAgICAgZnVuY3RvcihtX2luZGV4LCBVc2Us
IEdQKTsKKyAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlLCBVc2UsIEdQLCBhcmdSb2xlID09IFVz
ZUFkZHIgPyBhcmdXaWR0aCA6IHBvaW50ZXJXaWR0aCgpKTsKKyAgICAgICAgICAgIGZ1bmN0b3Io
bV9pbmRleCwgVXNlLCBHUCwgYXJnUm9sZSA9PSBVc2VBZGRyID8gYXJnV2lkdGggOiBwb2ludGVy
V2lkdGgoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNw
ZWNpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Q0NhbGxTcGVjaWFsLmNwcAkocmV2aXNpb24gMTk0MzEwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNiAr
NDUsMTcgQEAgQ0NhbGxTcGVjaWFsOjp+Q0NhbGxTcGVjaWFsKCkKIHZvaWQgQ0NhbGxTcGVjaWFs
Ojpmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IFNjb3BlZExhbWJkYTxJbnN0OjpFYWNoQXJn
Q2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
Q2FsbGVlQXJnczsgKytpKQotICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbY2FsbGVlQXJnT2Zm
c2V0ICsgaV0sIEFyZzo6VXNlLCBBcmc6OkdQKTsKKyAgICAgICAgY2FsbGJhY2soaW5zdC5hcmdz
W2NhbGxlZUFyZ09mZnNldCArIGldLCBBcmc6OlVzZSwgQXJnOjpHUCwgQXJnOjpwb2ludGVyV2lk
dGgoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVJldHVybkdQQXJnczsgKytp
KQotICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbcmV0dXJuR1BBcmdPZmZzZXQgKyBpXSwgQXJn
OjpEZWYsIEFyZzo6R1ApOworICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbcmV0dXJuR1BBcmdP
ZmZzZXQgKyBpXSwgQXJnOjpEZWYsIEFyZzo6R1AsIEFyZzo6cG9pbnRlcldpZHRoKCkpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1SZXR1cm5GUEFyZ3M7ICsraSkKLSAgICAgICAg
Y2FsbGJhY2soaW5zdC5hcmdzW3JldHVybkZQQXJnT2Zmc2V0ICsgaV0sIEFyZzo6RGVmLCBBcmc6
OkZQKTsKKyAgICAgICAgY2FsbGJhY2soaW5zdC5hcmdzW3JldHVybkZQQXJnT2Zmc2V0ICsgaV0s
IEFyZzo6RGVmLCBBcmc6OkZQLCBBcmc6OldpZHRoNjQpOwogICAgIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IGFyZ0FyZ09mZnNldDsgaSA8IGluc3QuYXJncy5zaXplKCk7ICsraSkgewogICAgICAg
ICAvLyBGb3IgdGhlIHR5cGUsIHdlIGNhbiBqdXN0IHF1ZXJ5IHRoZSBhcmcncyB0eXBlLiBUaGUg
YXJnIHdpbGwgaGF2ZSBhIHR5cGUsIGJlY2F1c2Ugd2UKICAgICAgICAgLy8gcmVxdWlyZSB0aGVz
ZSBhcmdzIHRvIGJlIGFyZ3VtZW50IHJlZ2lzdGVycy4KLSAgICAgICAgY2FsbGJhY2soaW5zdC5h
cmdzW2ldLCBBcmc6OlVzZSwgaW5zdC5hcmdzW2ldLnR5cGUoKSk7CisgICAgICAgIEFyZzo6VHlw
ZSB0eXBlID0gaW5zdC5hcmdzW2ldLnR5cGUoKTsKKyAgICAgICAgY2FsbGJhY2soaW5zdC5hcmdz
W2ldLCBBcmc6OlVzZSwgdHlwZSwgQXJnOjpjb25zZXJ2YXRpdmVXaWR0aCh0eXBlKSk7CiAgICAg
fQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURl
YWRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmNwcAkocmV2aXNpb24gMTk0MzEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBlbGltaW5hdGVEZWFkQ29kZShDb2RlJiBjb2RlKQogICAg
ICAgICAvLyBUaGlzIGluc3RydWN0aW9uIHNob3VsZCBiZSBwcmVzdW1lZCBkZWFkLCBpZiBpdHMg
QXJncyBhcmUgYWxsIGRlYWQuCiAgICAgICAgIGJvb2wgc3RvcmVzVG9MaXZlID0gZmFsc2U7CiAg
ICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6
Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6
Um9sZSByb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAgICAgICBpZiAo
IUFyZzo6aXNEZWYocm9sZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICBzdG9yZXNUb0xpdmUgfD0gaXNBcmdMaXZlKGFyZyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0
ZXJTdGFsbHMuY3BwCShyZXZpc2lvbiAxOTQzMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExMyw3ICsxMTMsNyBAQCB2b2lkIHVwZGF0ZURpc3RhbmNlcyhJbnN0JiBpbnN0LCBGUERlZkRp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAm
IHRtcCwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgeworICAgIGluc3QuZm9yRWFjaFRtcChb
Jl0gKFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRoKSB7CiAg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UodG1wLmlzUmVnKCksICJUaGlzIHBoYXNlIG11c3Qg
YmUgcnVuIGFmdGVyIHJlZ2lzdGVyIGFsbG9jYXRpb24uIik7CiAKICAgICAgICAgaWYgKHRtcC5p
c0ZQUigpICYmIEFyZzo6aXNEZWYocm9sZSkpCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBmaXhQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbHMoQ29kZSYgY29kZQogICAgICAgICAgICAgaWYgKGhhc1BhcnRp
YWxYbW1SZWdVcGRhdGUoaW5zdCkpIHsKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBkZWZz
OwogICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZXM7Ci0gICAgICAgICAgICAgICAgaW5z
dC5mb3JFYWNoVG1wKFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsK
KyAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xl
IHJvbGUsIEFyZzo6VHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
dG1wLmlzRlBSKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzRGVmKHJv
bGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMuc2V0KHRtcC5mcHIoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5jcHAJKHJldmlzaW9uIDE5
NDMxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgYm9vbCBJbnN0OjpoYXNBcmdFZmZlY3RzKCkKIHsK
ICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGZvckVhY2hBcmcoCi0gICAgICAgIFsmXSAo
QXJnJiwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgeworICAgICAgICBbJl0gKEFyZyYsIEFy
Zzo6Um9sZSByb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAgIGlmIChB
cmc6OmlzRGVmKHJvbGUpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAg
IH0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgJKHJldmlzaW9u
IDE5NDMxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OCwyMCArOTgsMjAgQEAgcHVibGljOgogICAgICAgICAgICAgYXJnLmZv
ckVhY2hUbXBGYXN0KGZ1bmN0b3IpOwogICAgIH0KIAotICAgIHR5cGVkZWYgdm9pZCBFYWNoQXJn
Q2FsbGJhY2soQXJnJiwgQXJnOjpSb2xlLCBBcmc6OlR5cGUpOworICAgIHR5cGVkZWYgdm9pZCBF
YWNoQXJnQ2FsbGJhY2soQXJnJiwgQXJnOjpSb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpOwog
ICAgIAotICAgIC8vIENhbGxzIHRoZSBmdW5jdG9yIHdpdGggKGFyZywgcm9sZSwgdHlwZSkuIFRo
aXMgZnVuY3Rpb24gaXMgYXV0by1nZW5lcmF0ZWQgYnkKKyAgICAvLyBDYWxscyB0aGUgZnVuY3Rv
ciB3aXRoIChhcmcsIHJvbGUsIHR5cGUsIHdpZHRoKS4gVGhpcyBmdW5jdGlvbiBpcyBhdXRvLWdl
bmVyYXRlZCBieQogICAgIC8vIG9wY29kZV9nZW5lcmF0b3IucmIuCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckVhY2hBcmcoY29uc3QgRnVuY3RvciYpOwogCi0g
ICAgLy8gQ2FsbHMgdGhlIGZ1bmN0b3Igd2l0aCAodG1wLCByb2xlLCB0eXBlKS4KKyAgICAvLyBD
YWxscyB0aGUgZnVuY3RvciB3aXRoICh0bXAsIHJvbGUsIHR5cGUsIHdpZHRoKS4KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yRWFjaFRtcChjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgZm9yRWFjaEFyZygKLSAgICAgICAgICAgIFsmXSAo
QXJnJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSkgewotICAgICAgICAgICAg
ICAgIGFyZy5mb3JFYWNoVG1wKHJvbGUsIHR5cGUsIGZ1bmN0b3IpOworICAgICAgICAgICAgWyZd
IChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRoIHdp
ZHRoKSB7CisgICAgICAgICAgICAgICAgYXJnLmZvckVhY2hUbXAocm9sZSwgdHlwZSwgd2lkdGgs
IGZ1bmN0b3IpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAxOTQzMTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRm9yRWFjaDxTdGFja1Ns
b3QqPiB7CiAgICAgc3RhdGljIHZvaWQgZm9yRWFjaChJbnN0JiBpbnN0LCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAgICAgICAgICAg
WyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlKSB7CisgICAgICAg
ICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIHR5cGUsIEFyZzo6
V2lkdGggd2lkdGgpIHsKICAgICAgICAgICAgICAgICBpZiAoIWFyZy5pc1N0YWNrKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBTdGFja1Nsb3QqIHN0YWNr
U2xvdCA9IGFyZy5zdGFja1Nsb3QoKTsKQEAgLTY2LDcgKzY2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRm9yRWFjaDxTdGFja1Nsb3QqPiB7CiAgICAgICAgICAgICAgICAgLy8gc2VtYW50aWNzIG9m
ICJBbm9ueW1vdXMiLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTExMjgKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBmdW5jdG9yKHN0YWNrU2xvdCwgcm9sZSwgdHlwZSk7CisgICAgICAgICAgICAgICAgZnVuY3Rv
cihzdGFja1Nsb3QsIHJvbGUsIHR5cGUsIHdpZHRoKTsKICAgICAgICAgICAgICAgICBhcmcgPSBB
cmc6OnN0YWNrKHN0YWNrU2xvdCwgYXJnLm9mZnNldCgpKTsKICAgICAgICAgICAgIH0pOwogICAg
IH0KQEAgLTk5LDEyICs5OSwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5l
IHZvaWQgSW5zdDo6Zm9yRWFjaFRtcFdpdGhFeHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCogbmV4dElu
c3QsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgZm9yRWFjaFRtcCgKLSAgICAgICAg
WyZdIChUbXAmIHRtcEFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSBhcmdUeXBlKSB7Ci0g
ICAgICAgICAgICBmdW5jdG9yKHRtcEFyZywgcm9sZSwgYXJnVHlwZSk7CisgICAgICAgIFsmXSAo
VG1wJiB0bXBBcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgYXJnVHlwZSwgQXJnOjpXaWR0
aCBhcmdXaWR0aCkgeworICAgICAgICAgICAgZnVuY3Rvcih0bXBBcmcsIHJvbGUsIGFyZ1R5cGUs
IGFyZ1dpZHRoKTsKICAgICAgICAgfSk7CiAKICAgICBhdXRvIHJlcG9ydFJlZyA9IFsmXSAoUmVn
IHJlZykgewotICAgICAgICBmdW5jdG9yKFRtcChyZWcpLCBBcmc6OkRlZiwgcmVnLmlzR1BSKCkg
PyBBcmc6OkdQIDogQXJnOjpGUCk7CisgICAgICAgIEFyZzo6VHlwZSB0eXBlID0gcmVnLmlzR1BS
KCkgPyBBcmc6OkdQIDogQXJnOjpGUDsKKyAgICAgICAgZnVuY3RvcihUbXAocmVnKSwgQXJnOjpE
ZWYsIHR5cGUsIEFyZzo6Y29uc2VydmF0aXZlV2lkdGgodHlwZSkpOwogICAgIH07CiAKICAgICBp
ZiAoaGFzU3BlY2lhbCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
dGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAJKHJldmlz
aW9uIDE5NDMxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRS
ZWdpc3RlckNvYWxlc2NpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJpb3JpdHku
aCIKICNpbmNsdWRlICJBaXJUbXBJbmxpbmVzLmgiCisjaW5jbHVkZSAiQWlyVG1wV2lkdGguaCIK
ICNpbmNsdWRlICJBaXJVc2VDb3VudHMuaCIKICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTQ4LDQ4ICs0OSwxNSBAQCBib29sIHRyYWNl
RGVidWcgPSBmYWxzZTsKIGJvb2wgcmVwb3J0U3RhdHMgPSBmYWxzZTsKIAogdGVtcGxhdGU8QXJn
OjpUeXBlIHR5cGU+Ci1zdHJ1Y3QgTW92ZUluc3RIZWxwZXI7Ci0KLXRlbXBsYXRlPD4KLXN0cnVj
dCBNb3ZlSW5zdEhlbHBlcjxBcmc6OkdQPiB7Ci0gICAgc3RhdGljIGJvb2wgbWF5QmVDb2FsZXNj
YWJsZShjb25zdCBJbnN0JiBpbnN0KQotICAgIHsKLSAgICAgICAgYm9vbCBpc01vdmUgPSBpbnN0
Lm9wY29kZSA9PSBNb3ZlOwotICAgICAgICBpZiAoIWlzTW92ZSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGluc3QuYXJncy5zaXplKCkg
PT0gMiwgIldlIGFzc3VtZSBjb2FsZWNhYmxlIG1vdmVzIG9ubHkgaGF2ZSB0d28gYXJndW1lbnRz
IGluIGEgZmV3IHBsYWNlcy4iKTsKLSAgICAgICAgQVNTRVJUKGluc3QuYXJnc1swXS5pc1R5cGUo
QXJnOjpHUCkpOwotICAgICAgICBBU1NFUlQoaW5zdC5hcmdzWzFdLmlzVHlwZShBcmc6OkdQKSk7
Ci0KLSAgICAgICAgcmV0dXJuIGluc3QuYXJnc1swXS5pc1RtcCgpICYmIGluc3QuYXJnc1sxXS5p
c1RtcCgpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBNb3ZlSW5zdEhlbHBlcjxB
cmc6OkZQPiB7Ci0gICAgc3RhdGljIGJvb2wgbWF5QmVDb2FsZXNjYWJsZShjb25zdCBJbnN0JiBp
bnN0KQotICAgIHsKLSAgICAgICAgaWYgKGluc3Qub3Bjb2RlICE9IE1vdmVEb3VibGUpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpbnN0
LmFyZ3Muc2l6ZSgpID09IDIsICJXZSBhc3N1bWUgY29hbGVjYWJsZSBtb3ZlcyBvbmx5IGhhdmUg
dHdvIGFyZ3VtZW50cyBpbiBhIGZldyBwbGFjZXMuIik7Ci0gICAgICAgIEFTU0VSVChpbnN0LmFy
Z3NbMF0uaXNUeXBlKEFyZzo6RlApKTsKLSAgICAgICAgQVNTRVJUKGluc3QuYXJnc1sxXS5pc1R5
cGUoQXJnOjpGUCkpOwotCi0gICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0uaXNUbXAoKSAmJiBp
bnN0LmFyZ3NbMV0uaXNUbXAoKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTxBcmc6OlR5cGUgdHlw
ZT4KIGNsYXNzIEl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nQWxsb2NhdG9yIHsKIHB1YmxpYzoK
ICAgICBJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZ0FsbG9jYXRvcigKLSAgICAgICAgQ29kZSYg
Y29kZSwgY29uc3QgVXNlQ291bnRzPFRtcD4mIHVzZUNvdW50cywgY29uc3QgSGFzaFNldDxUbXA+
JiB1bnNwaWxsYWJsZVRtcCkKKyAgICAgICAgQ29kZSYgY29kZSwgY29uc3QgVXNlQ291bnRzPFRt
cD4mIHVzZUNvdW50cywgSGFzaFNldDxUbXA+JiB1bnNwaWxsYWJsZVRtcCkKICAgICAgICAgOiBt
X2NvZGUoY29kZSkKICAgICAgICAgLCBtX3VzZUNvdW50cyh1c2VDb3VudHMpCiAgICAgICAgICwg
bV91bnNwaWxsYWJsZVRtcCh1bnNwaWxsYWJsZVRtcCkKICAgICAgICAgLCBtX251bWJlck9mUmVn
aXN0ZXJzKHJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkuc2l6ZSgpKQorICAgICAgICAsIG1fdG1w
V2lkdGgoY29kZSkKICAgICB7CiAgICAgICAgIGluaXRpYWxpemVEZWdyZWVzKCk7CiAKQEAgLTEw
Myw2ICs3MSwxNjcgQEAgcHVibGljOgogICAgICAgICBhbGxvY2F0ZSgpOwogICAgIH0KIAorICAg
IGJvb2wgcnVuKCkKKyAgICB7CisgICAgICAgIGlmIChzcGlsbGVkVG1wKCkuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBhc3NpZ25SZWdpc3RlclRvVG1wKCk7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBhZGRTcGlsbEFuZEZpbGwoKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGFzc2lnblJlZ2lzdGVyVG9U
bXAoKQorICAgIHsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fY29kZSkgewor
ICAgICAgICAgICAgLy8gR2l2ZSBUbXAgYSB2YWxpZCByZWdpc3Rlci4KKyAgICAgICAgICAgIGZv
ciAoSW5zdCYgaW5zdCA6ICpibG9jaykgeworICAgICAgICAgICAgICAgIC8vIFRoZSBtYXlCZUNv
YWxlc2NhYmxlKCkgbWV0aG9kIHdpbGwgY2hhbmdlIGl0cyBtaW5kIGZvciBzb21lIG9wZXJhdGlv
bnMgYWZ0ZXIgd2UKKyAgICAgICAgICAgICAgICAvLyBjb21wbGV0ZSByZWdpc3RlciBhbGxvY2F0
aW9uLiBTbywgd2UgcmVjb3JkIHRoaXMgYmVmb3JlIHN0YXJ0aW5nLgorICAgICAgICAgICAgICAg
IGJvb2wgbWF5QmVDb2FsZXNjYWJsZSA9IHRoaXMtPm1heUJlQ29hbGVzY2FibGUoaW5zdCk7CisK
KyAgICAgICAgICAgICAgICAvLyBPbiBYODZfNjQsIE1vdmUzMiBpcyBjaGVhcGVyIGlmIHdlIGtu
b3cgdGhhdCBpdCdzIGVxdWl2YWxlbnQgdG8gYSBNb3ZlLiBJdCdzCisgICAgICAgICAgICAgICAg
Ly8gZXF1aXZhbGVudCBpZiB0aGUgZGVzdGluYXRpb24ncyBoaWdoIGJpdHMgYXJlIG5vdCBvYnNl
cnZhYmxlIG9yIGlmIHRoZSBzb3VyY2UncyBoaWdoCisgICAgICAgICAgICAgICAgLy8gYml0cyBh
cmUgYWxsIHplcm8uIE5vdGUgdGhhdCB3ZSBkb24ndCBoYXZlIHRoZSBvcHBvc2l0ZSBvcHRpbWl6
YXRpb24gZm9yIG90aGVyCisgICAgICAgICAgICAgICAgLy8gYXJjaGl0ZWN0dXJlcywgd2hpY2gg
bWF5IHByZWZlciBNb3ZlIG92ZXIgTW92ZTMyLCBiZWNhdXNlIE1vdmUgaXMgY2Fub25pY2FsIGFs
cmVhZHkuCisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQXJnOjpHUCAmJiBvcHRpbWl6ZUZv
clg4Nl82NCgpICYmIGluc3Qub3Bjb2RlID09IE1vdmUKKyAgICAgICAgICAgICAgICAgICAgJiYg
aW5zdC5hcmdzWzBdLmlzVG1wKCkgJiYgaW5zdC5hcmdzWzFdLmlzVG1wKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fdG1wV2lkdGgudXNlV2lkdGgoaW5zdC5hcmdzWzFdLnRtcCgpKSA8
PSBBcmc6OldpZHRoMzIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1fdG1wV2lkdGguZGVm
V2lkdGgoaW5zdC5hcmdzWzBdLnRtcCgpKSA8PSBBcmc6OldpZHRoMzIpCisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnN0Lm9wY29kZSA9IE1vdmUzMjsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0KAorICAgICAgICAgICAgICAgICAgICBb
Jl0gKFRtcCYgdG1wKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkg
fHwgdG1wLmlzR1AoKSA9PSAodHlwZSAhPSBBcmc6OkdQKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFRtcCBhbGlhc1RtcCA9IGdldEFsaWFzKHRtcCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBUbXAgYXNzaWduZWRUbXA7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxp
YXNUbXAuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZFRtcCA9
IFRtcChhbGlhc1RtcC5yZWcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlZyA9IGFsbG9jYXRlZFJlZyhhbGlhc1Rt
cCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXNzaWduZWRUbXAgPSBUbXAocmVnKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChhc3NpZ25lZFRtcC5p
c1JlZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IGFzc2lnbmVkVG1wOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmIChtYXlCZUNvYWxlc2Nh
YmxlICYmIGluc3QuYXJnc1swXS5pc1RtcCgpICYmIGluc3QuYXJnc1sxXS5pc1RtcCgpCisgICAg
ICAgICAgICAgICAgICAgICYmIGluc3QuYXJnc1swXS50bXAoKSA9PSBpbnN0LmFyZ3NbMV0udG1w
KCkpCisgICAgICAgICAgICAgICAgICAgIGluc3QgPSBJbnN0KCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBwcmV2aW91cyBsb29wIG1heSBoYXZlIGNyZWF0ZWQgYmxhbmsg
aW5zdHJ1Y3Rpb25zLiBSZW1vdmUgdGhvc2Ugbm93LgorICAgICAgICAgICAgYmxvY2stPmluc3Rz
KCkucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICAgICAgWyZdIChJbnN0JiBpbnN0KSAt
PiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpbnN0OworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhZGRTcGlsbEFuZEZpbGwoKQor
ICAgIHsKKyAgICAgICAgLy8gQWxsIHRoZSBzcGlsbGVkIHZhbHVlcyBiZWNvbWUgdW5zcGlsbGFi
bGUuCisgICAgICAgIG1fdW5zcGlsbGFibGVUbXAuYWRkKG1fc3BpbGxlZFRtcC5iZWdpbigpLCBt
X3NwaWxsZWRUbXAuZW5kKCkpOworCisgICAgICAgIC8vIEFsbG9jYXRlIHN0YWNrIHNsb3QgZm9y
IGVhY2ggc3BpbGxlZCB2YWx1ZS4KKyAgICAgICAgSGFzaE1hcDxUbXAsIFN0YWNrU2xvdCo+IHN0
YWNrU2xvdHM7CisgICAgICAgIGZvciAoVG1wIHRtcCA6IG1fc3BpbGxlZFRtcCkgeworICAgICAg
ICAgICAgU3RhY2tTbG90KiBzdGFja1Nsb3QgPSBtX2NvZGUuYWRkU3RhY2tTbG90KAorICAgICAg
ICAgICAgICAgIG1fdG1wV2lkdGgud2lkdGgodG1wKSA8PSBBcmc6OldpZHRoMzIgPyA0IDogOCwg
U3RhY2tTbG90S2luZDo6QW5vbnltb3VzKTsKKyAgICAgICAgICAgIGJvb2wgaXNOZXdUbXAgPSBz
dGFja1Nsb3RzLmFkZCh0bXAsIHN0YWNrU2xvdCkuaXNOZXdFbnRyeTsKKyAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQoaXNOZXdUbXAsIGlzTmV3VG1wKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFJld3JpdGUgdGhlIHByb2dyYW0gdG8gZ2V0IHJpZCBvZiB0aGUgc3BpbGxlZCBUbXAuCisgICAg
ICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9jb2RlKTsKKyAgICAgICAgZm9yIChCYXNp
Y0Jsb2NrKiBibG9jayA6IG1fY29kZSkgeworICAgICAgICAgICAgYm9vbCBoYXNBbGlhc2VkVG1w
cyA9IGZhbHNlOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluc3RJbmRleCA9IDA7IGlu
c3RJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsraW5zdEluZGV4KSB7CisgICAgICAgICAgICAgICAg
SW5zdCYgaW5zdCA9IGJsb2NrLT5hdChpbnN0SW5kZXgpOworCisgICAgICAgICAgICAgICAgLy8g
VGhlIFRtcFdpZHRoIGFuYWx5c2lzIHdpbGwgc2F5IHRoYXQgYSBNb3ZlIG9ubHkgc3RvcmVzIDMy
IGJpdHMgaW50byB0aGUgZGVzdGluYXRpb24sCisgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHNv
dXJjZSBvbmx5IGhhZCAzMiBiaXRzIHdvcnRoIG9mIG5vbi16ZXJvIGJpdHMuIFNhbWUgZm9yIHRo
ZSBzb3VyY2U6IGl0IHdpbGwKKyAgICAgICAgICAgICAgICAvLyBvbmx5IGNsYWltIHRvIHJlYWQg
MzIgYml0cyBmcm9tIHRoZSBzb3VyY2UgaWYgb25seSAzMiBiaXRzIG9mIHRoZSBkZXN0aW5hdGlv
biBhcmUKKyAgICAgICAgICAgICAgICAvLyByZWFkLiBOb3RlIHRoYXQgd2Ugb25seSBhcHBseSB0
aGlzIGxvZ2ljIGlmIHRoaXMgdHVybnMgaW50byBhIGxvYWQgb3Igc3RvcmUsIHNpbmNlCisgICAg
ICAgICAgICAgICAgLy8gTW92ZSBpcyB0aGUgY2Fub25pY2FsIHdheSB0byBtb3ZlIGRhdGEgYmV0
d2VlbiBHUFJzLgorICAgICAgICAgICAgICAgIGJvb2wgZm9yY2VNb3ZlMzJJZkRpZFNwaWxsID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgYm9vbCBkaWRTcGlsbCA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIGlmICh0eXBlID09IEFyZzo6R1AgJiYgaW5zdC5vcGNvZGUgPT0gTW92ZSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAobV90bXBXaWR0aC5kZWZXaWR0aChpbnN0LmFyZ3NbMF0udG1w
KCkpIDw9IEFyZzo6V2lkdGgzMgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbV90bXBXaWR0
aC51c2VXaWR0aChpbnN0LmFyZ3NbMV0udG1wKCkpIDw9IEFyZzo6V2lkdGgzMikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZvcmNlTW92ZTMySWZEaWRTcGlsbCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVHJ5IHRvIHJlcGxhY2UgdGhlIHJlZ2lzdGVy
IHVzZSBieSBtZW1vcnkgdXNlIHdoZW4gcG9zc2libGUuCisgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGluc3QuYXJncy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
ICAgICAgICBBcmcmIGFyZyA9IGluc3QuYXJnc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGFyZy5pc1RtcCgpICYmIGFyZy50eXBlKCkgPT0gdHlwZSAmJiAhYXJnLmlzUmVnKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8gc3RhY2tTbG90RW50cnkgPSBzdGFja1Nsb3RzLmZp
bmQoYXJnLnRtcCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFja1Nsb3RFbnRy
eSAhPSBzdGFja1Nsb3RzLmVuZCgpICYmIGluc3QuYWRtaXRzU3RhY2soaSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmcgPSBBcmc6OnN0YWNrKHN0YWNrU2xvdEVudHJ5LT52YWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU3BpbGwgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGRpZFNwaWxsICYmIGZvcmNlTW92ZTMySWZEaWRT
cGlsbCkKKyAgICAgICAgICAgICAgICAgICAgaW5zdC5vcGNvZGUgPSBNb3ZlMzI7CisKKyAgICAg
ICAgICAgICAgICAvLyBGb3IgZXZlcnkgb3RoZXIgY2FzZSwgYWRkIExvYWQvU3RvcmUgYXMgbmVl
ZGVkLgorICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaFRtcCgKKyAgICAgICAgICAgICAgICAg
ICAgWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSBhcmdUeXBlLCBBcmc6
OldpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkgfHwgYXJn
VHlwZSAhPSB0eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBzdGFja1Nsb3RFbnRyeSA9IHN0YWNrU2xvdHMuZmlu
ZCh0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrU2xvdEVudHJ5ID09IHN0
YWNrU2xvdHMuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbXAgYWxpYXMg
PSBnZXRBbGlhc1doZW5TcGlsbGluZyh0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhbGlhcyAhPSB0bXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1w
ID0gYWxpYXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0FsaWFzZWRUbXBz
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBBcmcgYXJnID0gQXJnOjpz
dGFjayhzdGFja1Nsb3RFbnRyeS0+dmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBJdCdzIHNsaWdodGx5IHByb2ZpdGFibGUg
dG8gdXNlIGEgc21hbGxlciBtb3ZlIGluc3RydWN0aW9uIGZvciBzcGlsbGluZy4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIElmIHdlIHJlYWxseSBjYXJlZCwgd2UnZCB1c2Ugc29tZSBjb21i
aW5hdGlvbiBvZiB0aGUgc3BpbGwgc2xvdCdzIHdpZHRoIGFuZAorICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhlIHdpZHRoIG9mIHRoaXMgcGFydGljdWxhciB1c2Ugb2YgdGhlIFRtcC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIE9wY29kZSBtb3ZlID0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlID09IEFyZzo6R1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN0
YWNrU2xvdEVudHJ5LT52YWx1ZS0+Ynl0ZVNpemUoKSA9PSA0ID8gTW92ZTMyIDogTW92ZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RhY2tTbG90RW50cnktPnZhbHVlLT5ieXRlU2l6
ZSgpID09IDQgPyBNb3ZlRmxvYXQgOiBNb3ZlRG91YmxlOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoQXJnOjppc0FueVVzZShyb2xlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRtcCBuZXdUbXAgPSBtX2NvZGUubmV3VG1wKHR5cGUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaW5zdEluZGV4LCBtb3ZlLCBpbnN0Lm9yaWdp
biwgYXJnLCBuZXdUbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IG5ld1Rt
cDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFueSBuZXcgRmlsbCgpIHNob3Vs
ZCBuZXZlciBiZSBzcGlsbGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdW5zcGls
bGFibGVUbXAuYWRkKHRtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoQXJnOjppc0RlZihyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGluc3RJbmRleCArIDEsIG1vdmUsIGluc3Qub3Jp
Z2luLCB0bXAsIGFyZyk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOworCisgICAgICAgICAgICBp
ZiAoaGFzQWxpYXNlZFRtcHMpIHsKKyAgICAgICAgICAgICAgICBibG9jay0+aW5zdHMoKS5yZW1v
dmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgICAgICAgICAgWyZdIChJbnN0JiBpbnN0KSAtPiBi
b29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1VzZWxlc3NNb3ZlKGluc3Qp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKyAgICAKICAgICBUbXAgZ2V0QWxpYXMoVG1wIHRtcCkgY29uc3QKICAgICB7CiAgICAgICAg
IFRtcCBhbGlhcyA9IHRtcDsKQEAgLTE0Myw3ICsyNzIsNTIgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gcmVnOwogICAgIH0KIAotcHJpdmF0ZToKKyAgICBib29sIG1heUJlQ29hbGVzY2FibGUo
Y29uc3QgSW5zdCYgaW5zdCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAg
ICBjYXNlIEFyZzo6R1A6CisgICAgICAgICAgICBzd2l0Y2ggKGluc3Qub3Bjb2RlKSB7CisgICAg
ICAgICAgICBjYXNlIE1vdmUzMjoKKyAgICAgICAgICAgIGNhc2UgTW92ZToKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QXJnOjpGUDoKKyAgICAgICAgICAgIHN3aXRjaCAoaW5zdC5vcGNvZGUpIHsKKyAgICAgICAgICAg
IGNhc2UgTW92ZUZsb2F0OgorICAgICAgICAgICAgY2FzZSBNb3ZlRG91YmxlOgorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKCFpbnN0LmFyZ3NbMF0uaXNUbXAoKSB8fCAhaW5zdC5hcmdz
WzFdLmlzVG1wKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAg
ICAvLyBXZSBjYW4gY29hbGVzY2UgYSBNb3ZlMzIgc28gbG9uZyBhcyBlaXRoZXIgb2YgdGhlIGZv
bGxvd2luZyBob2xkczoKKyAgICAgICAgLy8gLSBUaGUgaW5wdXQgaXMgYWxyZWFkeSB6ZXJvLWZp
bGxlZC4KKyAgICAgICAgLy8gLSBUaGUgb3V0cHV0IG9ubHkgY2FyZXMgYWJvdXQgdGhlIGxvdyAz
MiBiaXRzLgorICAgICAgICAvLworICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIGlucHV0IHByb3Bl
cnR5IHJlcXVpcmVzIGFuIGFuYWx5c2lzIG92ZXIgWkRlZidzLCBzbyBpdCdzIG9ubHkgdmFsaWQg
c28gbG9uZworICAgICAgICAvLyBhcyB0aGUgaW5wdXQgZ2V0cyBhIHJlZ2lzdGVyLiBXZSBkb24n
dCBrbm93IGlmIHRoZSBpbnB1dCBnZXRzIGEgcmVnaXN0ZXIsIGJ1dCB3ZSBkbyBrbm93CisgICAg
ICAgIC8vIHRoYXQgaWYgaXQgZG9lc24ndCBnZXQgYSByZWdpc3RlciB0aGVuIHdlIHdpbGwgc3Rp
bGwgZW1pdCB0aGlzIE1vdmUzMi4KKyAgICAgICAgaWYgKGluc3Qub3Bjb2RlID09IE1vdmUzMgor
ICAgICAgICAgICAgJiYgbV90bXBXaWR0aC5kZWZXaWR0aChpbnN0LmFyZ3NbMF0udG1wKCkpID4g
QXJnOjpXaWR0aDMyCisgICAgICAgICAgICAmJiBtX3RtcFdpZHRoLnVzZVdpZHRoKGluc3QuYXJn
c1sxXS50bXAoKSkgPiBBcmc6OldpZHRoMzIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGlzVXNlbGVz
c01vdmUoY29uc3QgSW5zdCYgaW5zdCkKKyAgICB7CisgICAgICAgIHJldHVybiBtYXlCZUNvYWxl
c2NhYmxlKGluc3QpICYmIGluc3QuYXJnc1swXS50bXAoKSA9PSBpbnN0LmFyZ3NbMV0udG1wKCk7
CisgICAgfQorCiAgICAgdW5zaWduZWQgdG1wQXJyYXlTaXplKCkKICAgICB7CiAgICAgICAgIHVu
c2lnbmVkIG51bVRtcHMgPSBtX2NvZGUubnVtVG1wcyh0eXBlKTsKQEAgLTE4MSwxNCArMzU1LDE0
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpbnN0LmZvckVhY2hUbXBXaXRoRXh0cmFDbG9i
YmVyZWRSZWdzKAogICAgICAgICAgICAgbmV4dEluc3QsCi0gICAgICAgICAgICBbJl0gKGNvbnN0
IFRtcCYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUpIHsKKyAgICAgICAg
ICAgIFsmXSAoY29uc3QgVG1wJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgYXJnVHlw
ZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgIGlmICghQXJnOjppc0RlZihyb2xlKSB8
fCBhcmdUeXBlICE9IHR5cGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBBbGwgdGhlIERlZigpcyBpbnRlcmZlcmUgd2l0
aCBlYWNoIG90aGVyIGFuZCB3aXRoIGFsbCB0aGUgZXh0cmEgY2xvYmJlcmVkIFRtcHMuCiAgICAg
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCB1c2UgZm9yRWFjaERlZkFuZEV4dHJhQ2xvYmJl
cmVkVG1wKCkgaGVyZSBzaW5jZSBjb2xvcmVkIFRtcHMKICAgICAgICAgICAgICAgICAvLyBkbyBu
b3QgbmVlZCBpbnRlcmZlcmVuY2UgZWRnZXMgaW4gb3VyIGltcGxlbWVudGF0aW9uLgotICAgICAg
ICAgICAgICAgIGluc3QuZm9yRWFjaFRtcChbJl0gKFRtcCYgb3RoZXJBcmcsIEFyZzo6Um9sZSBy
b2xlLCBBcmc6OlR5cGUgYXJnVHlwZSkgeworICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaFRt
cChbJl0gKFRtcCYgb3RoZXJBcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgYXJnVHlwZSwg
QXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBcmc6OmlzRGVmKHJv
bGUpIHx8IGFyZ1R5cGUgIT0gdHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTE5NiwxMyArMzcwLDEzIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAg
aWYgKE1vdmVJbnN0SGVscGVyPHR5cGU+OjptYXlCZUNvYWxlc2NhYmxlKGluc3QpKSB7CisgICAg
ICAgIGlmIChtYXlCZUNvYWxlc2NhYmxlKGluc3QpKSB7CiAgICAgICAgICAgICAvLyBXZSBkbyBu
b3Qgd2FudCB0aGUgVXNlKCkgb2YgdGhpcyBtb3ZlIHRvIGludGVyZmVyZSB3aXRoIHRoZSBEZWYo
KSwgZXZlbiBpZiBpdCBpcyBsaXZlCiAgICAgICAgICAgICAvLyBhZnRlciB0aGUgTW92ZS4gSWYg
d2Ugd2VyZSB0byBhZGQgdGhlIGludGVyZmVyZW5jZSBlZGdlLCBpdCB3b3VsZCBiZSBpbXBvc3Np
YmxlIHRvCiAgICAgICAgICAgICAvLyBjb2FsZXNjZSB0aGUgTW92ZSBldmVuIGlmIHRoZSB0d28g
VG1wIG5ldmVyIGludGVyZmVyZSBhbnl3aGVyZS4KICAgICAgICAgICAgIFRtcCBkZWZUbXA7CiAg
ICAgICAgICAgICBUbXAgdXNlVG1wOwotICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKFsmZGVm
VG1wLCAmdXNlVG1wXSAoVG1wJiBhcmdUbXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsK
KyAgICAgICAgICAgIGluc3QuZm9yRWFjaFRtcChbJmRlZlRtcCwgJnVzZVRtcF0gKFRtcCYgYXJn
VG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkpCiAgICAgICAgICAgICAgICAgICAgIGRlZlRtcCA9
IGFyZ1RtcDsKICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTI1Miw3ICs0MjYsNyBAQCBwcml2
YXRlOgogICAgICAgICAvLyBBbGwgdGhlIERlZigpcyBpbnRlcmZlcmUgd2l0aCBldmVydGhpbmcg
bGl2ZS4KICAgICAgICAgaW5zdC5mb3JFYWNoVG1wV2l0aEV4dHJhQ2xvYmJlcmVkUmVncygKICAg
ICAgICAgICAgIG5leHRJbnN0LAotICAgICAgICAgICAgWyZdIChjb25zdCBUbXAmIGFyZywgQXJn
OjpSb2xlIHJvbGUsIEFyZzo6VHlwZSBhcmdUeXBlKSB7CisgICAgICAgICAgICBbJl0gKGNvbnN0
IFRtcCYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUsIEFyZzo6V2lkdGgp
IHsKICAgICAgICAgICAgICAgICBpZiAoIUFyZzo6aXNEZWYocm9sZSkgfHwgYXJnVHlwZSAhPSB0
eXBlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgCkBAIC04
MDUsNyArOTc5LDcgQEAgcHJpdmF0ZToKICAgICBDb2RlJiBtX2NvZGU7CiAgICAgY29uc3QgVXNl
Q291bnRzPFRtcD4mIG1fdXNlQ291bnRzOwogCi0gICAgY29uc3QgSGFzaFNldDxUbXA+JiBtX3Vu
c3BpbGxhYmxlVG1wOworICAgIEhhc2hTZXQ8VG1wPiYgbV91bnNwaWxsYWJsZVRtcDsKICAgICB1
bnNpZ25lZCBtX251bWJlck9mUmVnaXN0ZXJzIHsgMCB9OwogCiAgICAgLy8gVGhlIGludGVyZmVy
ZW5jZSBncmFwaC4KQEAgLTkyMCw2ICsxMDk0LDggQEAgcHJpdmF0ZToKICAgICAvLyBMb3ctZGVn
cmVlLCBNb3ZlIHJlbGF0ZWQuCiAgICAgSGFzaFNldDxUbXA+IG1fZnJlZXplV29ya2xpc3Q7CiAK
KyAgICBUbXBXaWR0aCBtX3RtcFdpZHRoOworCiAgICAgYm9vbCBtX2hhc1NlbGVjdGVkU3BpbGwg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNDb2FsZXNjZWROb25Ucml2aWFsTW92ZSB7IGZhbHNl
IH07CiAKQEAgLTkyOCwxMTIgKzExMDQsNiBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8QXJn
OjpUeXBlIHR5cGU+Ci1ib29sIGlzVXNlbGVzc01vdmVJbnN0KGNvbnN0IEluc3QmIGluc3QpCi17
Ci0gICAgcmV0dXJuIE1vdmVJbnN0SGVscGVyPHR5cGU+OjptYXlCZUNvYWxlc2NhYmxlKGluc3Qp
ICYmIGluc3QuYXJnc1swXS50bXAoKSA9PSBpbnN0LmFyZ3NbMV0udG1wKCk7Ci19Ci0KLXRlbXBs
YXRlPEFyZzo6VHlwZSB0eXBlPgotdm9pZCBhc3NpZ25SZWdpc3RlclRvVG1wSW5Qcm9ncmFtKENv
ZGUmIGNvZGUsIGNvbnN0IEl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nQWxsb2NhdG9yPHR5cGU+
JiBhbGxvY2F0b3IpCi17Ci0gICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKLSAg
ICAgICAgLy8gR2l2ZSBUbXAgYSB2YWxpZCByZWdpc3Rlci4KLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnN0SW5kZXggPSAwOyBpbnN0SW5kZXggPCBibG9jay0+c2l6ZSgpOyArK2luc3RJbmRleCkg
ewotICAgICAgICAgICAgSW5zdCYgaW5zdCA9IGJsb2NrLT5hdChpbnN0SW5kZXgpOwotICAgICAg
ICAgICAgaW5zdC5mb3JFYWNoVG1wRmFzdChbJl0gKFRtcCYgdG1wKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRtcC5pc1JlZygpIHx8IHRtcC5pc0dQKCkgPT0gKHR5cGUgIT0gQXJnOjpHUCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIFRtcCBhbGlhc1Rt
cCA9IGFsbG9jYXRvci5nZXRBbGlhcyh0bXApOwotICAgICAgICAgICAgICAgIFRtcCBhc3NpZ25l
ZFRtcDsKLSAgICAgICAgICAgICAgICBpZiAoYWxpYXNUbXAuaXNSZWcoKSkKLSAgICAgICAgICAg
ICAgICAgICAgYXNzaWduZWRUbXAgPSBUbXAoYWxpYXNUbXAucmVnKCkpOwotICAgICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHJlZyA9IGFsbG9jYXRvci5hbGxv
Y2F0ZWRSZWcoYWxpYXNUbXApOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVnKTsKLSAg
ICAgICAgICAgICAgICAgICAgYXNzaWduZWRUbXAgPSBUbXAocmVnKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGFzc2lnbmVkVG1wLmlzUmVnKCkpOwotICAgICAg
ICAgICAgICAgIHRtcCA9IGFzc2lnbmVkVG1wOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBSZW1vdmUgYWxsIHRoZSB1c2VsZXNzIG1vdmVzIHdlIGNyZWF0ZWQgaW4g
dGhpcyBibG9jay4KLSAgICAgICAgYmxvY2stPmluc3RzKCkucmVtb3ZlQWxsTWF0Y2hpbmcoaXNV
c2VsZXNzTW92ZUluc3Q8dHlwZT4pOwotICAgIH0KLX0KLQotdGVtcGxhdGU8QXJnOjpUeXBlIHR5
cGU+Ci12b2lkIGFkZFNwaWxsQW5kRmlsbFRvUHJvZ3JhbShDb2RlJiBjb2RlLCBjb25zdCBJdGVy
YXRlZFJlZ2lzdGVyQ29hbGVzY2luZ0FsbG9jYXRvcjx0eXBlPiYgYWxsb2NhdG9yLCBIYXNoU2V0
PFRtcD4mIHVuc3BpbGxhYmxlVG1wKQotewotICAgIGNvbnN0IEhhc2hTZXQ8VG1wPiYgc3BpbGxl
ZFRtcCA9IGFsbG9jYXRvci5zcGlsbGVkVG1wKCk7Ci0KLSAgICAvLyBBbGwgdGhlIHNwaWxsZWQg
dmFsdWVzIGJlY29tZSB1bnNwaWxsYWJsZS4KLSAgICB1bnNwaWxsYWJsZVRtcC5hZGQoc3BpbGxl
ZFRtcC5iZWdpbigpLCBzcGlsbGVkVG1wLmVuZCgpKTsKLQotICAgIC8vIEFsbG9jYXRlIHN0YWNr
IHNsb3QgZm9yIGVhY2ggc3BpbGxlZCB2YWx1ZS4KLSAgICBIYXNoTWFwPFRtcCwgU3RhY2tTbG90
Kj4gc3RhY2tTbG90czsKLSAgICBmb3IgKFRtcCB0bXAgOiBzcGlsbGVkVG1wKSB7Ci0gICAgICAg
IGJvb2wgaXNOZXdUbXAgPSBzdGFja1Nsb3RzLmFkZCh0bXAsIGNvZGUuYWRkU3RhY2tTbG90KDgs
IFN0YWNrU2xvdEtpbmQ6OkFub255bW91cykpLmlzTmV3RW50cnk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQoaXNOZXdUbXAsIGlzTmV3VG1wKTsKLSAgICB9Ci0KLSAgICAvLyBSZXdyaXRlIHRoZSBw
cm9ncmFtIHRvIGdldCByaWQgb2YgdGhlIHNwaWxsZWQgVG1wLgotICAgIEluc2VydGlvblNldCBp
bnNlcnRpb25TZXQoY29kZSk7Ci0gICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsK
LSAgICAgICAgYm9vbCBoYXNBbGlhc2VkVG1wcyA9IGZhbHNlOwotCi0gICAgICAgIGZvciAodW5z
aWduZWQgaW5zdEluZGV4ID0gMDsgaW5zdEluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbnN0SW5k
ZXgpIHsKLSAgICAgICAgICAgIEluc3QmIGluc3QgPSBibG9jay0+YXQoaW5zdEluZGV4KTsKLQot
ICAgICAgICAgICAgLy8gVHJ5IHRvIHJlcGxhY2UgdGhlIHJlZ2lzdGVyIHVzZSBieSBtZW1vcnkg
dXNlIHdoZW4gcG9zc2libGUuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
aW5zdC5hcmdzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgQXJnJiBhcmcgPSBpbnN0
LmFyZ3NbaV07Ci0gICAgICAgICAgICAgICAgaWYgKGFyZy5pc1RtcCgpICYmIGFyZy50eXBlKCkg
PT0gdHlwZSAmJiAhYXJnLmlzUmVnKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzdGFj
a1Nsb3RFbnRyeSA9IHN0YWNrU2xvdHMuZmluZChhcmcudG1wKCkpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RhY2tTbG90RW50cnkgIT0gc3RhY2tTbG90cy5lbmQoKSAmJiBpbnN0LmFkbWl0
c1N0YWNrKGkpKQotICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpzdGFjayhzdGFj
a1Nsb3RFbnRyeS0+dmFsdWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gRm9yIGV2ZXJ5IG90aGVyIGNhc2UsIGFkZCBMb2FkL1N0b3JlIGFzIG5l
ZWRlZC4KLSAgICAgICAgICAgIGluc3QuZm9yRWFjaFRtcChbJl0gKFRtcCYgdG1wLCBBcmc6OlJv
bGUgcm9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUpIHsKLSAgICAgICAgICAgICAgICBpZiAodG1wLmlz
UmVnKCkgfHwgYXJnVHlwZSAhPSB0eXBlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgICAgICBhdXRvIHN0YWNrU2xvdEVudHJ5ID0gc3RhY2tTbG90cy5maW5kKHRt
cCk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YWNrU2xvdEVudHJ5ID09IHN0YWNrU2xvdHMuZW5k
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgVG1wIGFsaWFzID0gYWxsb2NhdG9yLmdldEFsaWFz
V2hlblNwaWxsaW5nKHRtcCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhbGlhcyAhPSB0bXAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IGFsaWFzOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaGFzQWxpYXNlZFRtcHMgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBBcmcgYXJnID0gQXJnOjpzdGFjayhzdGFja1Nsb3RFbnRyeS0+dmFsdWUpOwotICAg
ICAgICAgICAgICAgIE9wY29kZSBtb3ZlID0gdHlwZSA9PSBBcmc6OkdQID8gTW92ZSA6IE1vdmVE
b3VibGU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0FueVVzZShyb2xlKSkgewotICAg
ICAgICAgICAgICAgICAgICBUbXAgbmV3VG1wID0gY29kZS5uZXdUbXAodHlwZSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaW5zdEluZGV4LCBtb3ZlLCBpbnN0Lm9y
aWdpbiwgYXJnLCBuZXdUbXApOwotICAgICAgICAgICAgICAgICAgICB0bXAgPSBuZXdUbXA7Ci0K
LSAgICAgICAgICAgICAgICAgICAgLy8gQW55IG5ldyBGaWxsKCkgc2hvdWxkIG5ldmVyIGJlIHNw
aWxsZWQuCi0gICAgICAgICAgICAgICAgICAgIHVuc3BpbGxhYmxlVG1wLmFkZCh0bXApOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0RlZihyb2xlKSkKLSAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydChpbnN0SW5kZXggKyAxLCBtb3Zl
LCBpbnN0Lm9yaWdpbiwgdG1wLCBhcmcpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwotCi0gICAgICAgIGlmIChoYXNBbGlh
c2VkVG1wcykKLSAgICAgICAgICAgIGJsb2NrLT5pbnN0cygpLnJlbW92ZUFsbE1hdGNoaW5nKGlz
VXNlbGVzc01vdmVJbnN0PHR5cGU+KTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPEFyZzo6VHlwZSB0
eXBlPgogdm9pZCBpdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZ09uVHlwZSgKICAgICBDb2RlJiBj
b2RlLCBjb25zdCBVc2VDb3VudHM8VG1wPiYgdXNlQ291bnRzLCB1bnNpZ25lZCYgbnVtSXRlcmF0
aW9ucykKIHsKQEAgLTEwNDEsMTEgKzExMTEsOCBAQCB2b2lkIGl0ZXJhdGVkUmVnaXN0ZXJDb2Fs
ZXNjaW5nT25UeXBlKAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIG51bUl0ZXJhdGlvbnMr
KzsKICAgICAgICAgSXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmdBbGxvY2F0b3I8dHlwZT4gYWxs
b2NhdG9yKGNvZGUsIHVzZUNvdW50cywgdW5zcGlsbGFibGVUbXBzKTsKLSAgICAgICAgaWYgKGFs
bG9jYXRvci5zcGlsbGVkVG1wKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBhc3NpZ25SZWdp
c3RlclRvVG1wSW5Qcm9ncmFtKGNvZGUsIGFsbG9jYXRvcik7CisgICAgICAgIGlmIChhbGxvY2F0
b3IucnVuKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYWRkU3Bp
bGxBbmRGaWxsVG9Qcm9ncmFtPHR5cGU+KGNvZGUsIGFsbG9jYXRvciwgdW5zcGlsbGFibGVUbXBz
KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2
ZW5lc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxp
dmVuZXNzLmgJKHJldmlzaW9uIDE5NDMxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyTGl2ZW5lc3MuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICB0eXBlbmFtZSBBZGFwdGVyOjpJbmRleFNldCYgbGl2ZUF0VGFpbCA9IG1f
bGl2ZUF0VGFpbFtibG9ja107CiAKICAgICAgICAgICAgIGJsb2NrLT5sYXN0KCkuZm9yRWFjaDx0
eXBlbmFtZSBBZGFwdGVyOjpUaGluZz4oCi0gICAgICAgICAgICAgICAgWyZdICh0eXBlbmFtZSBB
ZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSkgewor
ICAgICAgICAgICAgICAgIFsmXSAodHlwZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBBcmc6
OlJvbGUgcm9sZSwgQXJnOjpUeXBlIHR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKEFyZzo6aXNMYXRlVXNlKHJvbGUpICYmIEFkYXB0ZXI6OmFjY2VwdHNUeXBlKHR5
cGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZUF0VGFpbC5hZGQoQWRhcHRlcjo6dmFs
dWVUb0luZGV4KHRoaW5nKSk7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0yMTYsMTQgKzIxNiwx
NCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhdXRvJiB3b3Jrc2V0ID0gbV9saXZlbmVzcy5tX3dv
cmtzZXQ7CiAgICAgICAgICAgICAvLyBGaXJzdCBoYW5kbGUgZGVmJ3MuCiAgICAgICAgICAgICBp
bnN0LmZvckVhY2g8dHlwZW5hbWUgQWRhcHRlcjo6VGhpbmc+KAotICAgICAgICAgICAgICAgIFsm
XSAodHlwZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpU
eXBlIHR5cGUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5n
JiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRoKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzRGVmKHJvbGUpICYmIEFkYXB0ZXI6OmFjY2Vw
dHNUeXBlKHR5cGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NldC5yZW1vdmUoQWRh
cHRlcjo6dmFsdWVUb0luZGV4KHRoaW5nKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAKICAgICAg
ICAgICAgIC8vIFRoZW4gaGFuZGxlIHVzZSdzLgogICAgICAgICAgICAgaW5zdC5mb3JFYWNoPHR5
cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKLSAgICAgICAgICAgICAgICBbJl0gKHR5cGVuYW1lIEFk
YXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlKSB7Cisg
ICAgICAgICAgICAgICAgWyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFyZzo6
Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoQXJnOjppc0Vhcmx5VXNlKHJvbGUpICYmIEFkYXB0ZXI6OmFjY2VwdHNUeXBlKHR5
cGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NldC5hZGQoQWRhcHRlcjo6dmFsdWVU
b0luZGV4KHRoaW5nKSk7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0yMzIsNyArMjMyLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgaWYgKGluc3RJbmRleCkgewogICAgICAgICAgICAgICAgIElu
c3QmIHByZXZJbnN0ID0gbV9ibG9jay0+YXQoaW5zdEluZGV4IC0gMSk7CiAgICAgICAgICAgICAg
ICAgcHJldkluc3QuZm9yRWFjaDx0eXBlbmFtZSBBZGFwdGVyOjpUaGluZz4oCi0gICAgICAgICAg
ICAgICAgICAgIFsmXSAodHlwZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJvbGUg
cm9sZSwgQXJnOjpUeXBlIHR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgWyZdICh0eXBlbmFt
ZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSwg
QXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNMYXRlVXNl
KHJvbGUpICYmIEFkYXB0ZXI6OmFjY2VwdHNUeXBlKHR5cGUpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdvcmtzZXQuYWRkKEFkYXB0ZXI6OnZhbHVlVG9JbmRleCh0aGluZykpOwogICAg
ICAgICAgICAgICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3Bjb2RlLm9wY29kZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2RlcwkocmV2aXNpb24gMTk0MzEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTQgKzIzLDE3IEBACiAKICMgU3lsbGFidXM6CiAjCi0jIFJvbGVzIGFuZCB0eXBlczoKLSMgVTpH
ID0+IHVzZSBvZiBhIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBvciB2YWx1ZQotIyBEOkcgPT4g
ZGVmIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9yIHZhbHVlCi0jIFVEOkcgPT4gdXNl
IGFuZCBkZWYgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKLSMgVUE6RyA9
PiBVc2VBZGRyIChzZWUgY29tbWVudCBpbiBBcmcuaCkKLSMgVTpGID0+IHVzZSBvZiBhIGZsb2F0
IHJlZ2lzdGVyIG9yIHZhbHVlCi0jIEQ6RiA9PiBkZWYgb2YgYSBmbG9hdCByZWdpc3RlciBvciB2
YWx1ZQotIyBVRDpGID0+IHVzZSBhbmQgZGVmIG9mIGEgZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUK
KyMgRXhhbXBsZXMgb2Ygc29tZSByb2xlcywgdHlwZXMsIGFuZCB3aWR0aHM6CisjIFU6RzozMiA9
PiB1c2Ugb2YgdGhlIGxvdyAzMiBiaXRzIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9y
IHZhbHVlCisjIEQ6RzozMiA9PiBkZWYgb2YgdGhlIGxvdyAzMiBiaXRzIG9mIGEgZ2VuZXJhbC1w
dXJwb3NlIHJlZ2lzdGVyIG9yIHZhbHVlCisjIFVEOkc6MzIgPT4gdXNlIGFuZCBkZWYgb2YgdGhl
IGxvdyAzMiBiaXRzIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9yIHZhbHVlCisjIFU6
Rzo2NCA9PiB1c2Ugb2YgdGhlIGxvdyA2NCBiaXRzIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lz
dGVyIG9yIHZhbHVlCisjIFpEOkc6MzIgPT4gZGVmIG9mIGFsbCBiaXRzIG9mIGEgZ2VuZXJhbC1w
dXJwb3NlIHJlZ2lzdGVyLCB3aGVyZSBhbGwgYnV0IHRoZSBsb3cgMzIgYml0cyBhcmUgZ3VhcmFu
dGVlZCB0byBiZSB6ZXJvZWQuCisjIFVBOkc6UHRyID0+IFVzZUFkZHIgKHNlZSBjb21tZW50IGlu
IEFyZy5oKQorIyBVOkY6MzIgPT4gdXNlIG9mIGEgZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUKKyMg
VTpGOjY0ID0+IHVzZSBvZiBhIGRvdWJsZSByZWdpc3RlciBvciB2YWx1ZQorIyBEOkY6MzIgPT4g
ZGVmIG9mIGEgZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUKKyMgVUQ6RjozMiA9PiB1c2UgYW5kIGRl
ZiBvZiBhIGZsb2F0IHJlZ2lzdGVyIG9yIHZhbHVlCiAjCiAjIEFyZ3VtZW50IGtpbmRzOgogIyBU
bXAgPT4gdGVtcG9yYXJ5IG9yIHJlZ2lzdGVyCkBAIC00NCwxMSArNDcsMTEgQEAKICMgb2YgdGhp
bmdzLiBTbywgYWx0aG91Z2ggdGhpcyBmaWxlIHVzZXMgYSBwYXJ0aWN1bGFyIGluZGVudGF0aW9u
IHN0eWxlLCBub25lIG9mIHRoZSB3aGl0ZXNwYWNlIG9yCiAjIGV2ZW4gbmV3bGluZXMgYXJlIG1l
YW5pbmdmdWwgdG8gdGhlIHBhcnNlci4gRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCB3cml0ZToKICMK
LSMgRm9vNDIgVTpHLCBVRDpGIEltbSwgVG1wIEFkZHIsIFRtcAorIyBGb280MiBVOkc6MzIsIFVE
OkY6MzIgSW1tLCBUbXAgQWRkciwgVG1wCiAjCiAjIEFuZCB0aGUgcGFyc2VyIHdvdWxkIGtub3cg
dGhhdCB0aGlzIGlzIHRoZSBzYW1lIGFzOgogIwotIyBGb280MiBVOkcsIFVEOkYKKyMgRm9vNDIg
VTpHOjMyLCBVRDpGOjMyCiAjICAgICBJbW0sIFRtcAogIyAgICAgQWRkciwgVG1wCiAjCkBAIC01
OCwyMiArNjEsMjIgQEAKICMgdW5pb24gb2YgdGhvc2UgYXJjaGl0ZWN0dXJlcy4gRm9yIGV4YW1w
bGUsIGlmIHRoaXMgaXMgdGhlIG9ubHkgb3ZlcmxvYWQgb2YgdGhlIG9wY29kZSwgdGhlbiBpdCBt
YWtlcyB0aGUKICMgb3Bjb2RlIG9ubHkgYXZhaWxhYmxlIG9uIHg4Nl82NDoKICMKLSMgeDg2XzY0
OiBGdXp6IFVEOkcsIEQ6RworIyB4ODZfNjQ6IEZ1enogVUQ6Rzo2NCwgRDpHOjY0CiAjICAgICBU
bXAsIFRtcAogIyAgICAgVG1wLCBBZGRyCiAjCiAjIEJ1dCB0aGlzIG9ubHkgcmVzdHJpY3RzIHRo
ZSB0d28tb3BlcmFuZCBmb3JtLCB0aGUgb3RoZXIgZm9ybSBpcyBhbGxvd2VkIG9uIGFsbCBhcmNo
aXRlY3R1cmVzOgogIwotIyB4ODZfNjQ6IEZ1enogVUQ6RywgRDpHCisjIHg4Nl82NDogRnV6eiBV
RDpHOjY0LCBEOkc6NjQKICMgICAgIFRtcCwgVG1wCiAjICAgICBUbXAsIEFkZHIKLSMgRnV6eiBV
RDpHLCBEOkcsIFU6RgorIyBGdXp6IFVEOkc6UHRyLCBEOkc6UHRyLCBVOkY6UHRyCiAjICAgICBU
bXAsIFRtcCwgVG1wCiAjICAgICBUbXAsIEFkZHIsIFRtcAogIwogIyBBbmQgeW91IGNhbiBhbHNv
IHJlc3RyaWN0IGluZGl2aWR1YWwgZm9ybXM6CiAjCi0jIFRoaW5neSBVRDpHLCBEOkcKKyMgVGhp
bmd5IFVEOkc6MzIsIEQ6RzozMgogIyAgICAgVG1wLCBUbXAKICMgICAgIGFybTY0OiBUbXAsIEFk
ZHIKICMKQEAgLTgxLDcgKzg0LDcgQEAKICMgZm9ybS4gSW4gdGhpcyBleGFtcGxlLCB0aGUgdmVy
c2lvbiB0aGF0IHRha2VzIGFuIGFkZHJlc3MgaXMgb25seSBhdmFpbGFibGUgb24gYXJtdjcgd2hp
bGUgdGhlIG90aGVyCiAjIHZlcnNpb25zIGFyZSBhdmFpbGFibGUgb24gYXJtdjcgb3IgeDg2XzY0
OgogIwotIyB4ODZfNjQgYXJtdjc6IEJ1enogVTpHLCBVRDpGCisjIHg4Nl82NCBhcm12NzogQnV6
eiBVOkc6MzIsIFVEOkY6MzIKICMgICAgIFRtcCwgVG1wCiAjICAgICBJbW0sIFRtcAogIyAgICAg
YXJtdjc6IEFkZHIsIFRtcApAQCAtMTAzLDIxNCArMTA2LDIxNCBAQAogCiBOb3AKIAotQWRkMzIg
VTpHLCBVRDpHCitBZGQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6
IEltbSwgQWRkcgogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKICAgICB4ODY6IFRt
cCwgQWRkcgogCi1BZGQzMiBVOkcsIFU6RywgRDpHCitBZGQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6
RzozMgogICAgIEltbSwgVG1wLCBUbXAKICAgICBUbXAsIFRtcCwgVG1wCiAKLTY0OiBBZGQ2NCBV
OkcsIFVEOkcKKzY0OiBBZGQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4
NjogSW1tLCBBZGRyCiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4Njog
VG1wLCBBZGRyCiAKLTY0OiBBZGQ2NCBVOkcsIFU6RywgRDpHCis2NDogQWRkNjQgVTpHOjY0LCBV
Okc6NjQsIEQ6Rzo2NAogICAgIEltbSwgVG1wLCBUbXAKICAgICBUbXAsIFRtcCwgVG1wCiAKLUFk
ZERvdWJsZSBVOkYsIFVEOkYKK0FkZERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRt
cAogICAgIHg4NjogQWRkciwgVG1wCiAKLUFkZEZsb2F0IFU6RiwgVUQ6RgorQWRkRmxvYXQgVTpG
OjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1TdWIzMiBV
OkcsIFVEOkcKK1N1YjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4Njog
SW1tLCBBZGRyCiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4NjogVG1w
LCBBZGRyCiAKLTY0OiBTdWI2NCBVOkcsIFVEOkcKKzY0OiBTdWI2NCBVOkc6NjQsIFVEOkc6NjQK
ICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCiAgICAgSW1tLCBUbXAKICAgICB4ODY6
IEFkZHIsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAKLVN1YkRvdWJsZSBVOkYsIFVEOkYKK1N1
YkRvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1w
CiAKLVN1YkZsb2F0IFU6RiwgVUQ6RgorU3ViRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1w
LCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1OZWczMiBVRDpHCitOZWczMiBVWkQ6RzozMgog
ICAgIFRtcAogICAgIEFkZHIKIAotNjQ6IE5lZzY0IFVEOkcKKzY0OiBOZWc2NCBVRDpHOjY0CiAg
ICAgVG1wCiAKLU11bDMyIFU6RywgVUQ6RworTXVsMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRt
cCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotTXVsMzIgVTpHLCBVOkcsIEQ6RworTXVsMzIg
VTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBJbW0sIFRtcCwgVG1wCiAKLTY0OiBNdWw2NCBV
OkcsIFVEOkcKKzY0OiBNdWw2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogCi1NdWxE
b3VibGUgVTpGLCBVRDpGCitNdWxEb3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1wLCBUbXAK
ICAgICB4ODY6IEFkZHIsIFRtcAogCi1NdWxGbG9hdCBVOkYsIFVEOkYKK011bEZsb2F0IFU6Rjoz
MiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotRGl2RG91Ymxl
IFU6RiwgVUQ6RgorRGl2RG91YmxlIFU6RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAg
eDg2OiBBZGRyLCBUbXAKIAotRGl2RmxvYXQgVTpGLCBVRDpGCitEaXZGbG9hdCBVOkY6MzIsIFVE
OkY6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLXg4NjogWDg2Q29udmVy
dFRvRG91YmxlV29yZDMyIFU6RywgRDpHCit4ODY6IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMiBV
Okc6MzIsIFpEOkc6MzIKICAgICBUbXAqLCBUbXAqCiAKLXg4Nl82NDogWDg2Q29udmVydFRvUXVh
ZFdvcmQ2NCBVOkcsIEQ6RworeDg2XzY0OiBYODZDb252ZXJ0VG9RdWFkV29yZDY0IFU6Rzo2NCwg
RDpHOjY0CiAgICAgVG1wKiwgVG1wKgogCi14ODY6IFg4NkRpdjMyIFVEOkcsIFVEOkcsIFU6Rwor
eDg2OiBYODZEaXYzMiBVWkQ6RzozMiwgVVpEOkc6MzIsIFU6RzozMgogICAgIFRtcCosIFRtcCos
IFRtcAogCi14ODZfNjQ6IFg4NkRpdjY0IFVEOkcsIFVEOkcsIFU6RworeDg2XzY0OiBYODZEaXY2
NCBVWkQ6Rzo2NCwgVVpEOkc6NjQsIFU6Rzo2NAogICAgIFRtcCosIFRtcCosIFRtcAogCi1MZWEg
VUE6RywgRDpHCitMZWEgVUE6RzpQdHIsIEQ6RzpQdHIKICAgICBBZGRyLCBUbXAKIAotQW5kMzIg
VTpHLCBVRDpHCitBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBJbW0s
IFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAgICAgeDg2OiBBZGRyLCBUbXAKICAgICB4ODY6IElt
bSwgQWRkcgogCi02NDogQW5kNjQgVTpHLCBVRDpHCis2NDogQW5kNjQgVTpHOjY0LCBVRDpHOjY0
CiAgICAgVG1wLCBUbXAKICAgICBJbW0sIFRtcAogCi1BbmREb3VibGUgVTpGLCBVRDpGCitBbmRE
b3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1wLCBUbXAKIAotQW5kRmxvYXQgVTpGLCBVRDpG
CitBbmRGbG9hdCBVOkY6MzIsIFVEOkY6MzIKICAgICBUbXAsIFRtcAogCi1Mc2hpZnQzMiBVOkcs
IFVEOkcKK0xzaGlmdDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0s
IFRtcAogCi02NDogTHNoaWZ0NjQgVTpHLCBVRDpHCis2NDogTHNoaWZ0NjQgVTpHOjY0LCBVRDpH
OjY0CiAgICAgVG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKIAotUnNoaWZ0MzIgVTpHLCBVRDpHCitS
c2hpZnQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKIAot
NjQ6IFJzaGlmdDY0IFU6RywgVUQ6RworNjQ6IFJzaGlmdDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAg
IFRtcCosIFRtcAogICAgIEltbSwgVG1wCiAKLVVyc2hpZnQzMiBVOkcsIFVEOkcKK1Vyc2hpZnQz
MiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKIAotNjQ6IFVy
c2hpZnQ2NCBVOkcsIFVEOkcKKzY0OiBVcnNoaWZ0NjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1w
KiwgVG1wCiAgICAgSW1tLCBUbXAKIAotT3IzMiBVOkcsIFVEOkcKK09yMzIgVTpHOjMyLCBVWkQ6
RzozMgogICAgIFRtcCwgVG1wCiAgICAgSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAg
IHg4NjogQWRkciwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKIAotNjQ6IE9yNjQgVTpHLCBVRDpH
Cis2NDogT3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIEltbSwgVG1wCiAK
LVhvcjMyIFU6RywgVUQ6RworWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAg
ICAgSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIHg4NjogQWRkciwgVG1wCiAgICAg
eDg2OiBJbW0sIEFkZHIKIAotNjQ6IFhvcjY0IFU6RywgVUQ6RworNjQ6IFhvcjY0IFU6Rzo2NCwg
VUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKICAgICBJbW0sIFRtcAog
Ci1Ob3QzMiBVRDpHCitOb3QzMiBVWkQ6RzozMgogICAgIFRtcAogICAgIHg4NjogQWRkcgogCi02
NDogTm90NjQgVUQ6RworNjQ6IE5vdDY0IFVEOkc6NjQKICAgICBUbXAKICAgICB4ODY6IEFkZHIK
IAotQ2VpbERvdWJsZSBVOkYsIFVEOkYKK0NlaWxEb3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAg
VG1wLCBUbXAKICAgICBBZGRyLCBUbXAKIAotQ2VpbEZsb2F0IFU6RiwgVUQ6RgorQ2VpbEZsb2F0
IFU6RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCiAKLVNxcnREb3Vi
bGUgVTpGLCBVRDpGCitTcXJ0RG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAg
ICAgeDg2OiBBZGRyLCBUbXAKIAotU3FydEZsb2F0IFU6RiwgVUQ6RgorU3FydEZsb2F0IFU6Rjoz
MiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotQ29udmVydElu
dDMyVG9Eb3VibGUgVTpHLCBEOkYKK0NvbnZlcnRJbnQzMlRvRG91YmxlIFU6RzozMiwgRDpGOjY0
CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi02NDogQ29udmVydEludDY0VG9E
b3VibGUgVTpHLCBEOkYKKzY0OiBDb252ZXJ0SW50NjRUb0RvdWJsZSBVOkc6NjQsIEQ6Rjo2NAog
ICAgIFRtcCwgVG1wCiAKLUNvdW50TGVhZGluZ1plcm9zMzIgVTpHLCBEOkcKK0NvdW50TGVhZGlu
Z1plcm9zMzIgVTpHOjMyLCBaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRt
cAogCi02NDogQ291bnRMZWFkaW5nWmVyb3M2NCBVOkcsIEQ6RworNjQ6IENvdW50TGVhZGluZ1pl
cm9zNjQgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAK
LUNvbnZlcnREb3VibGVUb0Zsb2F0IFU6RiwgRDpGCitDb252ZXJ0RG91YmxlVG9GbG9hdCBVOkY6
NjQsIEQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotQ29udmVydEZs
b2F0VG9Eb3VibGUgVTpGLCBEOkYKK0NvbnZlcnRGbG9hdFRvRG91YmxlIFU6RjozMiwgRDpGOjY0
CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCkBAIC0zMTgsNyArMzIxLDcgQEAg
Q29udmVydEZsb2F0VG9Eb3VibGUgVTpGLCBEOkYKICMgdGhlIHBsYXRmb3JtLiBJJ20gbm90IGVu
dGlyZWx5IHN1cmUgdGhhdCB0aGlzIGlzIGEgZ29vZCB0aGluZzsgaXQgbWlnaHQgYmUgYmV0dGVy
IHRvIGp1c3QgaGF2ZSBhCiAjIE1vdmU2NCBpbnN0cnVjdGlvbi4gT1RPSCwgb3VyIE1hY3JvQXNz
ZW1ibGVycyBhbHJlYWR5IGhhdmUgdGhpcyBub3Rpb24gb2YgIm1vdmUoKSIgdGhhdCBiYXNpY2Fs
bHkKICMgbWVhbnMgbW92ZVB0ci4KLU1vdmUgVTpHLCBEOkcKK01vdmUgVTpHOlB0ciwgRDpHOlB0
cgogICAgIFRtcCwgVG1wCiAgICAgSW1tLCBUbXAgYXMgc2lnbkV4dGVuZDMyVG9QdHIKICAgICBJ
bW02NCwgVG1wCkBAIC0zMjgsNyArMzMxLDcgQEAgTW92ZSBVOkcsIEQ6RwogICAgIFRtcCwgSW5k
ZXggYXMgc3RvcmVQdHIKICAgICBJbW0sIEFkZHIgYXMgc3RvcmVQdHIKIAotTW92ZTMyIFU6Rywg
RDpHCitNb3ZlMzIgVTpHOjMyLCBaRDpHOjMyCiAgICAgVG1wLCBUbXAgYXMgemVyb0V4dGVuZDMy
VG9QdHIKICAgICBBZGRyLCBUbXAgYXMgbG9hZDMyCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkMzIK
QEAgLTMzNywxMDggKzM0MCwxMDggQEAgTW92ZTMyIFU6RywgRDpHCiAgICAgSW1tLCBBZGRyIGFz
IHN0b3JlMzIKICAgICBJbW0sIEluZGV4IGFzIHN0b3JlMzIKIAotU2lnbkV4dGVuZDMyVG9QdHIg
VTpHLCBEOkcKK1NpZ25FeHRlbmQzMlRvUHRyIFU6RzozMiwgRDpHOlB0cgogICAgIFRtcCwgVG1w
CiAKLVplcm9FeHRlbmQ4VG8zMiBVOkcsIEQ6RworWmVyb0V4dGVuZDhUbzMyIFU6Rzo4LCBaRDpH
OjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDgKICAgICBJbmRleCwgVG1w
IGFzIGxvYWQ4CiAKLVNpZ25FeHRlbmQ4VG8zMiBVOkcsIEQ6RworU2lnbkV4dGVuZDhUbzMyIFU6
Rzo4LCBaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcCBhcyBsb2FkOFNp
Z25lZEV4dGVuZFRvMzIKICAgICBJbmRleCwgVG1wIGFzIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMgog
Ci1aZXJvRXh0ZW5kMTZUbzMyIFU6RywgRDpHCitaZXJvRXh0ZW5kMTZUbzMyIFU6RzoxNiwgWkQ6
RzozMgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wIGFzIGxvYWQxNgogICAgIEluZGV4LCBU
bXAgYXMgbG9hZDE2CiAKLVNpZ25FeHRlbmQxNlRvMzIgVTpHLCBEOkcKK1NpZ25FeHRlbmQxNlRv
MzIgVTpHOjE2LCBaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDE2
U2lnbmVkRXh0ZW5kVG8zMgogICAgIEluZGV4LCBUbXAgYXMgbG9hZDE2U2lnbmVkRXh0ZW5kVG8z
MgogCi1Nb3ZlRmxvYXQgVTpGLCBEOkYKK01vdmVGbG9hdCBVOkY6MzIsIEQ6RjozMgogICAgIFRt
cCwgVG1wIGFzIG1vdmVEb3VibGUKICAgICBBZGRyLCBUbXAgYXMgbG9hZEZsb2F0CiAgICAgSW5k
ZXgsIFRtcCBhcyBsb2FkRmxvYXQKICAgICBUbXAsIEFkZHIgYXMgc3RvcmVGbG9hdAogICAgIFRt
cCwgSW5kZXggYXMgc3RvcmVGbG9hdAogCi1Nb3ZlRG91YmxlIFU6RiwgRDpGCitNb3ZlRG91Ymxl
IFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZERvdWJs
ZQogICAgIEluZGV4LCBUbXAgYXMgbG9hZERvdWJsZQogICAgIFRtcCwgQWRkciBhcyBzdG9yZURv
dWJsZQogICAgIFRtcCwgSW5kZXggYXMgc3RvcmVEb3VibGUKIAotTW92ZVplcm9Ub0RvdWJsZSBE
OkYKK01vdmVaZXJvVG9Eb3VibGUgRDpGOjY0CiAgICAgVG1wCiAKLTY0OiBNb3ZlNjRUb0RvdWJs
ZSBVOkcsIEQ6RgorNjQ6IE1vdmU2NFRvRG91YmxlIFU6Rzo2NCwgRDpGOjY0CiAgICAgVG1wLCBU
bXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZERvdWJsZQogCi1Nb3ZlSW50MzJUb1BhY2tlZCBVOkcs
IEQ6RgorTW92ZUludDMyVG9QYWNrZWQgVTpHOjMyLCBEOkY6MzIKICAgICBUbXAsIFRtcAogICAg
IEFkZHIsIFRtcCBhcyBsb2FkRmxvYXQKIAotNjQ6IE1vdmVEb3VibGVUbzY0IFU6RiwgRDpHCis2
NDogTW92ZURvdWJsZVRvNjQgVTpGOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIEFkZHIs
IFRtcCBhcyBsb2FkNjQKIAotTW92ZVBhY2tlZFRvSW50MzIgVTpGLCBEOkcKK01vdmVQYWNrZWRU
b0ludDMyIFU6RjozMiwgRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9h
ZDMyCiAKLUxvYWQ4IFU6RywgRDpHCitMb2FkOCBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRt
cAogICAgIEluZGV4LCBUbXAKIAotU3RvcmU4IFU6RywgRDpHCitTdG9yZTggVTpHOjgsIEQ6Rzo4
CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgogICAgIEltbSwgSW5kZXgKICAgICBJbW0s
IEFkZHIKIAotTG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6RywgRDpHCitMb2FkOFNpZ25lZEV4dGVu
ZFRvMzIgVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKLUxv
YWQxNiBVOkcsIEQ6RworTG9hZDE2IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAg
IEluZGV4LCBUbXAKIAotTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiBVOkcsIEQ6RworTG9hZDE2U2ln
bmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwg
VG1wCiAKLUNvbXBhcmUzMiBVOkcsIFU6RywgVTpHLCBEOkcKK0NvbXBhcmUzMiBVOkc6MzIsIFU6
RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcAogICAgIFJl
bENvbmQsIFRtcCwgSW1tLCBUbXAKIAotNjQ6IENvbXBhcmU2NCBVOkcsIFU6RywgVTpHLCBEOkcK
KzY0OiBDb21wYXJlNjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCwgWkQ6RzozMgogICAgIFJlbENv
bmQsIFRtcCwgSW1tLCBUbXAKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCiAKLVRlc3QzMiBV
OkcsIFU6RywgVTpHLCBEOkcKK1Rlc3QzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMy
CiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBJbW0sIFRtcAogICAgIFJlc0NvbmQsIFRtcCwgVG1w
LCBUbXAKIAotNjQ6IFRlc3Q2NCBVOkcsIFU6RywgVTpHLCBEOkcKKzY0OiBUZXN0NjQgVTpHOjMy
LCBVOkc6NjQsIFU6Rzo2NCwgWkQ6RzozMgogICAgIFJlc0NvbmQsIFRtcCwgSW1tLCBUbXAKICAg
ICBSZXNDb25kLCBUbXAsIFRtcCwgVG1wCiAKICMgTm90ZSB0aGF0IGJyYW5jaGVzIGhhdmUgc29t
ZSBsb2dpYyBpbiBBaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwLiBJZiB5b3UgYWRkIG5ldyBicmFu
Y2hlcywgcGxlYXNlIG1ha2Ugc3VyZQogIyB5b3Ugb3B0IHRoZW0gaW50byB0aGUgYmxvY2sgb3Jk
ZXIgb3B0aW1pemF0aW9ucy4KIAotQnJhbmNoOCBVOkcsIFU6RywgVTpHIC9icmFuY2gKK0JyYW5j
aDggVTpHOjMyLCBVOkc6OCwgVTpHOjggL2JyYW5jaAogICAgIHg4NjogUmVsQ29uZCwgQWRkciwg
SW1tCiAgICAgeDg2OiBSZWxDb25kLCBJbmRleCwgSW1tCiAKLUJyYW5jaDMyIFU6RywgVTpHLCBV
OkcgL2JyYW5jaAorQnJhbmNoMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiAvYnJhbmNoCiAgICAg
eDg2OiBSZWxDb25kLCBBZGRyLCBJbW0KICAgICBSZWxDb25kLCBUbXAsIFRtcAogICAgIFJlbENv
bmQsIFRtcCwgSW1tCkBAIC00NDYsMTcgKzQ0OSwxNyBAQCBCcmFuY2gzMiBVOkcsIFU6RywgVTpH
IC9icmFuY2gKICAgICB4ODY6IFJlbENvbmQsIEFkZHIsIFRtcAogICAgIHg4NjogUmVsQ29uZCwg
SW5kZXgsIEltbQogCi02NDogQnJhbmNoNjQgVTpHLCBVOkcsIFU6RyAvYnJhbmNoCis2NDogQnJh
bmNoNjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCAvYnJhbmNoCiAgICAgUmVsQ29uZCwgVG1wLCBU
bXAKICAgICB4ODY6IFJlbENvbmQsIFRtcCwgQWRkcgogICAgIHg4NjogUmVsQ29uZCwgQWRkciwg
VG1wCiAgICAgeDg2OiBSZWxDb25kLCBJbmRleCwgVG1wCiAKLUJyYW5jaFRlc3Q4IFU6RywgVTpH
LCBVOkcgL2JyYW5jaAorQnJhbmNoVGVzdDggVTpHOjMyLCBVOkc6OCwgVTpHOjggL2JyYW5jaAog
ICAgIHg4NjogUmVzQ29uZCwgQWRkciwgSW1tCiAgICAgeDg2OiBSZXNDb25kLCBJbmRleCwgSW1t
CiAKLUJyYW5jaFRlc3QzMiBVOkcsIFU6RywgVTpHIC9icmFuY2gKK0JyYW5jaFRlc3QzMiBVOkc6
MzIsIFU6RzozMiwgVTpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRtcAogICAgIFJl
c0NvbmQsIFRtcCwgSW1tCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBJbW0KQEAgLTQ2NCw5NSAr
NDY3LDk1IEBAIEJyYW5jaFRlc3QzMiBVOkcsIFU6RywgVTpHIC9icmFuY2gKIAogIyBXYXJuaW5n
OiBmb3JtcyB0aGF0IHRha2UgYW4gaW1tZWRpYXRlIHdpbGwgc2lnbi1leHRlbmQgdGhlaXIgaW1t
ZWRpYXRlLiBZb3UgcHJvYmFibHkgd2FudAogIyBCcmFuY2hUZXN0MzIgaW4gbW9zdCBjYXNlcyB3
aGVyZSB5b3UgdXNlIGFuIGltbWVkaWF0ZS4KLTY0OiBCcmFuY2hUZXN0NjQgVTpHLCBVOkcsIFU6
RyAvYnJhbmNoCis2NDogQnJhbmNoVGVzdDY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQgL2JyYW5j
aAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0KICAgICB4ODY6
IFJlc0NvbmQsIEFkZHIsIEltbQogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAgICAgeDg2
OiBSZXNDb25kLCBJbmRleCwgSW1tCiAKLUJyYW5jaERvdWJsZSBVOkcsIFU6RiwgVTpGIC9icmFu
Y2gKK0JyYW5jaERvdWJsZSBVOkc6MzIsIFU6Rjo2NCwgVTpGOjY0IC9icmFuY2gKICAgICBEb3Vi
bGVDb25kLCBUbXAsIFRtcAogCi1CcmFuY2hGbG9hdCBVOkcsIFU6RiwgVTpGIC9icmFuY2gKK0Jy
YW5jaEZsb2F0IFU6RzozMiwgVTpGOjMyLCBVOkY6MzIgL2JyYW5jaAogICAgIERvdWJsZUNvbmQs
IFRtcCwgVG1wCiAKLUJyYW5jaEFkZDMyIFU6RywgVTpHLCBVRDpHIC9icmFuY2gKK0JyYW5jaEFk
ZDMyIFU6RzozMiwgVTpHOjMyLCBVWkQ6RzozMiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBU
bXAKICAgICBSZXNDb25kLCBJbW0sIFRtcAogICAgIHg4NjogUmVzQ29uZCwgSW1tLCBBZGRyCiAg
ICAgeDg2OiBSZXNDb25kLCBUbXAsIEFkZHIKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIFRtcAog
Ci02NDogQnJhbmNoQWRkNjQgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorNjQ6IEJyYW5jaEFkZDY0
IFU6RzozMiwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKICAgICBSZXNDb25kLCBJbW0sIFRtcAog
ICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAKLUJyYW5jaE11bDMyIFU6RywgVTpHLCBVRDpHIC9icmFu
Y2gKK0JyYW5jaE11bDMyIFU6RzozMiwgVTpHOjMyLCBVWkQ6RzozMiAvYnJhbmNoCiAgICAgUmVz
Q29uZCwgVG1wLCBUbXAKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIFRtcAogCi1CcmFuY2hNdWwz
MiBVOkcsIFU6RywgVTpHLCBEOkcgL2JyYW5jaAorQnJhbmNoTXVsMzIgVTpHOjMyLCBVOkc6MzIs
IFU6RzozMiwgWkQ6RzozMiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcAogCi02
NDogQnJhbmNoTXVsNjQgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorNjQ6IEJyYW5jaE11bDY0IFU6
RzozMiwgVTpHOjY0LCBVWkQ6Rzo2NCAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKIAot
QnJhbmNoU3ViMzIgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorQnJhbmNoU3ViMzIgVTpHOjMyLCBV
Okc6MzIsIFVaRDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRtcAogICAgIFJlc0Nv
bmQsIEltbSwgVG1wCiAgICAgeDg2OiBSZXNDb25kLCBJbW0sIEFkZHIKICAgICB4ODY6IFJlc0Nv
bmQsIFRtcCwgQWRkcgogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAKLTY0OiBCcmFuY2hT
dWI2NCBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCis2NDogQnJhbmNoU3ViNjQgVTpHOjMyLCBVOkc6
NjQsIFVEOkc6NjQgL2JyYW5jaAogICAgIFJlc0NvbmQsIEltbSwgVG1wCiAgICAgUmVzQ29uZCwg
VG1wLCBUbXAKIAotQnJhbmNoTmVnMzIgVTpHLCBVRDpHIC9icmFuY2gKK0JyYW5jaE5lZzMyIFU6
RzozMiwgVVpEOkc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcAogCi02NDogQnJhbmNoTmVn
NjQgVTpHLCBVRDpHIC9icmFuY2gKKzY0OiBCcmFuY2hOZWc2NCBVOkc6MzIsIFVaRDpHOjY0IC9i
cmFuY2gKICAgICBSZXNDb25kLCBUbXAKIAotTW92ZUNvbmRpdGlvbmFsbHkzMiBVOkcsIFU6Rywg
VTpHLCBVOkcsIFVEOkcKK01vdmVDb25kaXRpb25hbGx5MzIgVTpHOjMyLCBVOkc6MzIsIFU6Rzoz
MiwgVTpHOlB0ciwgVUQ6RzpQdHIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKIAot
NjQ6IE1vdmVDb25kaXRpb25hbGx5NjQgVTpHLCBVOkcsIFU6RywgVTpHLCBVRDpHCis2NDogTW92
ZUNvbmRpdGlvbmFsbHk2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBVOkc6UHRyLCBVRDpHOlB0
cgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogCi1Nb3ZlQ29uZGl0aW9uYWxseVRl
c3QzMiBVOkcsIFU6RywgVTpHLCBVOkcsIFVEOkcKK01vdmVDb25kaXRpb25hbGx5VGVzdDMyIFU6
RzozMiwgVTpHOjMyLCBVOkc6MzIsIFU6RzpQdHIsIFVEOkc6UHRyCiAgICAgUmVzQ29uZCwgVG1w
LCBUbXAsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcCwgVG1wCiAKLTY0OiBN
b3ZlQ29uZGl0aW9uYWxseVRlc3Q2NCBVOkcsIFU6RywgVTpHLCBVOkcsIFVEOkcKKzY0OiBNb3Zl
Q29uZGl0aW9uYWxseVRlc3Q2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBVOkc6UHRyLCBVRDpH
OlB0cgogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogICAgIFJlc0NvbmQsIFRtcCwg
SW1tLCBUbXAsIFRtcAogCi1Nb3ZlQ29uZGl0aW9uYWxseURvdWJsZSBVOkcsIFU6RiwgVTpGLCBV
OkcsIFVEOkcKK01vdmVDb25kaXRpb25hbGx5RG91YmxlIFU6RzozMiwgVTpGOjY0LCBVOkY6NjQs
IFU6RzpQdHIsIFVEOkc6UHRyCiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAK
LU1vdmVDb25kaXRpb25hbGx5RmxvYXQgVTpHLCBVOkYsIFU6RiwgVTpHLCBVRDpHCitNb3ZlQ29u
ZGl0aW9uYWxseUZsb2F0IFU6RzozMiwgVTpGOjMyLCBVOkY6MzIsIFU6RzpQdHIsIFVEOkc6UHRy
CiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLU1vdmVEb3VibGVDb25kaXRp
b25hbGx5MzIgVTpHLCBVOkcsIFU6RywgVTpGLCBVRDpGCitNb3ZlRG91YmxlQ29uZGl0aW9uYWxs
eTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFJlbENvbmQs
IFRtcCwgVG1wLCBUbXAsIFRtcAogCi02NDogTW92ZURvdWJsZUNvbmRpdGlvbmFsbHk2NCBVOkcs
IFU6RywgVTpHLCBVOkYsIFVEOkYKKzY0OiBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0IFU6Rzoz
MiwgVTpHOjY0LCBVOkc6NjQsIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFJlbENvbmQsIFRtcCwgVG1w
LCBUbXAsIFRtcAogCi1Nb3ZlRG91YmxlQ29uZGl0aW9uYWxseVRlc3QzMiBVOkcsIFU6RywgVTpH
LCBVOkYsIFVEOkYKK01vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyIFU6RzozMiwgVTpHOjMy
LCBVOkc6MzIsIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAsIFRt
cAogICAgIFJlc0NvbmQsIFRtcCwgSW1tLCBUbXAsIFRtcAogCi02NDogTW92ZURvdWJsZUNvbmRp
dGlvbmFsbHlUZXN0NjQgVTpHLCBVOkcsIFU6RywgVTpGLCBVRDpGCis2NDogTW92ZURvdWJsZUNv
bmRpdGlvbmFsbHlUZXN0NjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCwgVTpGOjY0LCBVRDpGOjY0
CiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0s
IFRtcCwgVG1wCiAKLU1vdmVEb3VibGVDb25kaXRpb25hbGx5RG91YmxlIFU6RywgVTpGLCBVOkYs
IFU6RiwgVUQ6RgorTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHOjMyLCBVOkY6NjQs
IFU6Rjo2NCwgVTpGOjY0LCBVRDpGOjY0CiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwg
VG1wCiAKLU1vdmVEb3VibGVDb25kaXRpb25hbGx5RmxvYXQgVTpHLCBVOkYsIFU6RiwgVTpGLCBV
RDpGCitNb3ZlRG91YmxlQ29uZGl0aW9uYWxseUZsb2F0IFU6RzozMiwgVTpGOjMyLCBVOkY6MzIs
IFU6Rjo2NCwgVUQ6Rjo2NAogICAgIERvdWJsZUNvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogCiBK
dW1wIC9icmFuY2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDE5NDMxMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjcsNyArNjcsNyBAQCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAg
ICAgICAgLy8gY29kZSBpcyBzdWJvcHRpbWFsLgogICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1w
V2l0aEV4dHJhQ2xvYmJlcmVkUmVncygKICAgICAgICAgICAgICAgICBpbmRleCA8IGJsb2NrLT5z
aXplKCkgPyAmYmxvY2stPmF0KGluZGV4KSA6IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgWyZy
ZWdpc3RlclNldF0gKGNvbnN0IFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7
CisgICAgICAgICAgICAgICAgWyZyZWdpc3RlclNldF0gKGNvbnN0IFRtcCYgdG1wLCBBcmc6OlJv
bGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICh0bXAuaXNSZWcoKSAmJiBBcmc6OmlzRGVmKHJvbGUpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJTZXQuc2V0KHRtcC5yZWcoKSk7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0x
MTksNyArMTE5LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKIAogICAgICAg
ICAgICAgLy8gTm93IGZhbGwgYmFjayBvbiBzcGlsbGluZyB1c2luZyBzZXBhcmF0ZSBNb3ZlJ3Mg
dG8gbG9hZC9zdG9yZSB0aGUgdG1wLgogICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKAotICAg
ICAgICAgICAgICAgIFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlw
ZSkgeworICAgICAgICAgICAgICAgIFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6
OlR5cGUgdHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBpZiAodG1wLmlz
UmVnKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
ICAgIApAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUp
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkRlZjoKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OlpEZWY6CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFJlZyByZWcg
OiByZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFzZXRBZnRlci5nZXQocmVnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRBZnRlci5zZXQocmVnKTsKQEAgLTE0OSw2ICsxNTAsNyBAQCB2b2lkIHNwaWxsRXZl
cnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpVc2VE
ZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpVc2VaRGVmOgogICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFyZzo6TGF0ZVVzZToKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
UmVnIHJlZyA6IHJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIXNldEJlZm9yZS5nZXQocmVnKSAmJiAhc2V0QWZ0ZXIuZ2V0KHJlZykp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wV2lkdGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wV2lkdGguY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0
aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQWlyVG1wV2lkdGguaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJD
b2RlLmgiCisjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitUbXBXaWR0aDo6VG1wV2lkdGgoQ29kZSYg
Y29kZSkKK3sKKyAgICAvLyBBc3N1bWUgdGhlIHdvcnN0IGZvciByZWdpc3RlcnMuCisgICAgUmVn
aXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpLmZvckVhY2goCisgICAgICAgIFsmXSAoUmVnIHJlZykg
eworICAgICAgICAgICAgV2lkdGhzJiB3aWR0aHMgPSBtX3dpZHRoLmFkZChUbXAocmVnKSwgV2lk
dGhzKCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIEFyZzo6VHlwZSB0eXBlID0gQXJn
KFRtcChyZWcpKS50eXBlKCk7CisgICAgICAgICAgICB3aWR0aHMudXNlID0gQXJnOjpjb25zZXJ2
YXRpdmVXaWR0aCh0eXBlKTsKKyAgICAgICAgICAgIHdpZHRocy5kZWYgPSBBcmc6OmNvbnNlcnZh
dGl2ZVdpZHRoKHR5cGUpOworICAgICAgICB9KTsKKyAgICAKKyAgICAvLyBOb3cgcmVhbGx5IGFu
YWx5emUgZXZlcnl0aGluZyBidXQgTW92ZSdzIG92ZXIgVG1wJ3MsIGJ1dCBzZXQgYXNpZGUgdGhv
c2UgTW92ZSdzIHNvIHdlIGNhbiBmaW5kCisgICAgLy8gdGhlbSBxdWlja2x5IGR1cmluZyB0aGUg
Zml4cG9pbnQgYmVsb3cuIE5vdGUgdGhhdCB3ZSBjYW4gbWFrZSB0aGlzIGFuYWx5c2lzIHN0cm9u
Z2VyIGJ5CisgICAgLy8gcmVjb2duaXppbmcgbW9yZSBraW5kcyBvZiBNb3ZlJ3Mgb3IgYW55dGhp
bmcgdGhhdCBoYXMgTW92ZS1saWtlIGJlaGF2aW9yLCB0aG91Z2ggaXQncyBwcm9iYWJseSBub3QK
KyAgICAvLyB3b3J0aCBpdC4KKyAgICBWZWN0b3I8SW5zdCo+IG1vdmVzOworICAgIGZvciAoQmFz
aWNCbG9jayogYmxvY2sgOiBjb2RlKSB7CisgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpibG9j
aykgeworICAgICAgICAgICAgaWYgKGluc3Qub3Bjb2RlID09IE1vdmUgJiYgaW5zdC5hcmdzWzFd
LmlzVG1wKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5hcmdzWzBdLmlzVG1wKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgbW92ZXMuYXBwZW5kKCZpbnN0KTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChp
bnN0LmFyZ3NbMF0uaXNJbW0oKQorICAgICAgICAgICAgICAgICAgICAmJiBpbnN0LmFyZ3NbMF0u
dmFsdWUoKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFRtcCB0bXAgPSBpbnN0LmFyZ3Nb
MV0udG1wKCk7CisgICAgICAgICAgICAgICAgICAgIFdpZHRocyYgd2lkdGhzID0gbV93aWR0aC5h
ZGQodG1wLCBXaWR0aHMoQXJnOjpHUCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0LmFyZ3NbMF0udmFsdWUoKSA8PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDhfdD46Om1heCgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGhzLmRlZiA9IHN0ZDo6bWF4KHdpZHRocy5kZWYsIEFyZzo6V2lkdGg4KTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5zdC5hcmdzWzBdLnZhbHVlKCkgPD0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQxNl90Pjo6bWF4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0
aHMuZGVmID0gc3RkOjptYXgod2lkdGhzLmRlZiwgQXJnOjpXaWR0aDE2KTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoaW5zdC5hcmdzWzBdLnZhbHVlKCkgPD0gc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMuZGVm
ID0gc3RkOjptYXgod2lkdGhzLmRlZiwgQXJnOjpXaWR0aDMyKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmRlZiA9IHN0ZDo6bWF4KHdp
ZHRocy5kZWYsIEFyZzo6V2lkdGg2NCk7CisKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5zdC5mb3JF
YWNoVG1wKAorICAgICAgICAgICAgICAgIFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBB
cmc6OlR5cGUgdHlwZSwgQXJnOjpXaWR0aCB3aWR0aCkgeworICAgICAgICAgICAgICAgICAgICBX
aWR0aHMmIHdpZHRocyA9IG1fd2lkdGguYWRkKHRtcCwgV2lkdGhzKHR5cGUpKS5pdGVyYXRvci0+
dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoQXJn
Ojppc0FueVVzZShyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRocy51c2UgPSBz
dGQ6Om1heCh3aWR0aHMudXNlLCB3aWR0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFy
Zzo6aXNaRGVmKHJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmRlZiA9IHN0
ZDo6bWF4KHdpZHRocy5kZWYsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
QXJnOjppc0RlZihyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRocy5kZWYgPSBB
cmc6OmNvbnNlcnZhdGl2ZVdpZHRoKHR5cGUpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gRmluYWxseSwgZml4cG9pbnQgb3ZlciB0aGUgTW92ZSdzLgor
ICAgIGJvb2wgY2hhbmdlZCA9IHRydWU7CisgICAgd2hpbGUgKGNoYW5nZWQpIHsKKyAgICAgICAg
Y2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKEluc3QqIG1vdmUgOiBtb3ZlcykgeworICAg
ICAgICAgICAgQVNTRVJUKG1vdmUtPm9wY29kZSA9PSBNb3ZlKTsKKyAgICAgICAgICAgIEFTU0VS
VChtb3ZlLT5hcmdzWzBdLmlzVG1wKCkpOworICAgICAgICAgICAgQVNTRVJUKG1vdmUtPmFyZ3Nb
MV0uaXNUbXAoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFdpZHRocyYgc3JjV2lkdGhz
ID0gbV93aWR0aC5hZGQobW92ZS0+YXJnc1swXS50bXAoKSwgV2lkdGhzKEFyZzo6R1ApKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgICAgICAgICBXaWR0aHMmIGRzdFdpZHRocyA9IG1fd2lkdGguYWRk
KG1vdmUtPmFyZ3NbMV0udG1wKCksIFdpZHRocyhBcmc6OkdQKSkuaXRlcmF0b3ItPnZhbHVlOwor
CisgICAgICAgICAgICAvLyBMZWdlbmQ6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8g
ICAgIE1vdmUgJXNyYywgJWRzdAorCisgICAgICAgICAgICAvLyBkZWZXaWR0aCglZHN0KSBpcyBh
IHByb21pc2UgYWJvdXQgaG93IG1hbnkgaGlnaCBiaXRzIGFyZSB6ZXJvLiBUaGUgc21hbGxlciB0
aGUgd2lkdGgsIHRoZQorICAgICAgICAgICAgLy8gc3Ryb25nZXIgdGhlIHByb21pc2UuIFRoaXMg
TW92ZSBtYXkgd2Vha2VuIHRoYXQgcHJvbWlzZSBpZiB3ZSBrbm93IHRoYXQgJXNyYyBpcyBtYWtp
bmcgYQorICAgICAgICAgICAgLy8gd2Vha2VyIHByb21pc2UuIFN1Y2ggZm9yd2FyZCBmbG93IGlz
IHRoZSBvbmx5IHRoaW5nIHRoYXQgZGV0ZXJtaW5lcyBkZWZXaWR0aCgpLgorICAgICAgICAgICAg
aWYgKGRzdFdpZHRocy5kZWYgPCBzcmNXaWR0aHMuZGVmKSB7CisgICAgICAgICAgICAgICAgZHN0
V2lkdGhzLmRlZiA9IHNyY1dpZHRocy5kZWY7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHNyY1dpZHRoKCVzcmMpIGlzIGEg
cHJvbWlzZSBhYm91dCBob3cgbWFueSBoaWdoIGJpdHMgYXJlIGlnbm9yZWQuIFRoZSBzbWFsbGVy
IHRoZSB3aWR0aCwKKyAgICAgICAgICAgIC8vIHRoZSBzdHJvbmdlciB0aGUgcHJvbWlzZS4gVGhp
cyBNb3ZlIG1heSB3ZWFrZW4gdGhhdCBwcm9taXNlIGlmIHdlIGtub3cgdGhhdCAlZHN0IGlzIG1h
a2luZworICAgICAgICAgICAgLy8gYSB3ZWFrZXIgcHJvbWlzZS4gU3VjaCBiYWNrd2FyZCBmbG93
IGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgZGV0ZXJtaW5lcyBzcmNXaWR0aCgpLgorICAgICAgICAg
ICAgaWYgKHNyY1dpZHRocy51c2UgPCBkc3RXaWR0aHMudXNlKSB7CisgICAgICAgICAgICAgICAg
c3JjV2lkdGhzLnVzZSA9IGRzdFdpZHRocy51c2U7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RtcFdpZHRoOjp+
VG1wV2lkdGgoKQoreworfQorCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclRtcFdpZHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJUbXBXaWR0aC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJUbXBXaWR0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBaXJU
bXBXaWR0aF9oCisjZGVmaW5lIEFpclRtcFdpZHRoX2gKKworI2lmIEVOQUJMRShCM19KSVQpCisK
KyNpbmNsdWRlICJBaXJBcmcuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK2NsYXNzIENvZGU7CisK
K2NsYXNzIFRtcFdpZHRoIHsKK3B1YmxpYzoKKyAgICBUbXBXaWR0aChDb2RlJik7CisgICAgflRt
cFdpZHRoKCk7CisKKyAgICAvLyBUaGUgd2lkdGggb2YgYSBUbXAgaXMgdGhlIG51bWJlciBvZiBi
aXRzIHRoYXQgeW91IG5lZWQgdG8gYmUgYWJsZSB0byB0cmFjayB3aXRob3V0IHNvbWUgdHJpdmlh
bAorICAgIC8vIHJlY292ZXJ5LiBBIFRtcCBtYXkgaGF2ZSBhICJzdWJ3aWR0aCIgKHNheSwgV2lk
dGgzMiBvbiBhIDY0LWJpdCBzeXN0ZW0pIGlmIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nCisgICAg
Ly8gaXMgdHJ1ZToKKyAgICAvLworICAgIC8vIC0gVGhlIGhpZ2ggYml0cyBhcmUgbmV2ZXIgcmVh
ZC4KKyAgICAvLyAtIFRoZSBoaWdoIGJpdHMgYXJlIGFsd2F5cyB6ZXJvLgorICAgIC8vCisgICAg
Ly8gVGhpcyBkb2Vzbid0IHRlbGwgeW91IHdoaWNoIG9mIHRob3NlIHByb3BlcnRpZXMgaG9sZHMs
IGJ1dCB5b3UgY2FuIHF1ZXJ5IHRoYXQgdXNpbmcgdGhlIG90aGVyCisgICAgLy8gbWV0aG9kcy4K
KyAgICBBcmc6OldpZHRoIHdpZHRoKFRtcCB0bXApIGNvbnN0CisgICAgeworICAgICAgICBhdXRv
IGl0ZXIgPSBtX3dpZHRoLmZpbmQodG1wKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV93aWR0aC5l
bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBBcmc6Om1pbmltdW1XaWR0aChBcmcodG1wKS50eXBl
KCkpOworICAgICAgICByZXR1cm4gc3RkOjptaW4oaXRlci0+dmFsdWUudXNlLCBpdGVyLT52YWx1
ZS5kZWYpOworICAgIH0KKworICAgIC8vIFRoaXMgaW5kaXJlY3RseSB0ZWxscyB5b3UgaG93IG11
Y2ggb2YgdGhlIHRtcCdzIGhpZ2ggYml0cyBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLiBUaGUg
bnVtYmVyIG9mCisgICAgLy8gaGlnaCBiaXRzIHRoYXQgYXJlIHplcm8gYXJlOgorICAgIC8vCisg
ICAgLy8gICAgIFRvdGFsQml0cyAtIGRlZldpZHRoKHRtcCkKKyAgICAvLworICAgIC8vIFdoZXJl
IFRvdGFsQml0cyBhcmUgdGhlIHRvdGFsIG51bWJlciBvZiBiaXRzIGluIHRoZSByZWdpc3Rlciwg
c28gNjQgb24gYSA2NC1iaXQgc3lzdGVtLgorICAgIEFyZzo6V2lkdGggZGVmV2lkdGgoVG1wIHRt
cCkgY29uc3QKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fd2lkdGguZmluZCh0bXApOwor
ICAgICAgICBpZiAoaXRlciA9PSBtX3dpZHRoLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIEFy
Zzo6bWluaW11bVdpZHRoKEFyZyh0bXApLnR5cGUoKSk7CisgICAgICAgIHJldHVybiBpdGVyLT52
YWx1ZS5kZWY7CisgICAgfQorCisgICAgLy8gVGhpcyB0ZWxscyB5b3UgaG93IG11Y2ggb2YgVG1w
IGlzIGdvaW5nIHRvIGJlIHJlYWQuCisgICAgQXJnOjpXaWR0aCB1c2VXaWR0aChUbXAgdG1wKSBj
b25zdAorICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV93aWR0aC5maW5kKHRtcCk7CisgICAg
ICAgIGlmIChpdGVyID09IG1fd2lkdGguZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnOjpt
aW5pbXVtV2lkdGgoQXJnKHRtcCkudHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVl
LnVzZTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHN0cnVjdCBXaWR0aHMgeworICAgICAg
ICBXaWR0aHMoKSB7IH0KKworICAgICAgICBXaWR0aHMoQXJnOjpUeXBlIHR5cGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHVzZSA9IEFyZzo6bWluaW11bVdpZHRoKHR5cGUpOworICAgICAgICAg
ICAgZGVmID0gQXJnOjptaW5pbXVtV2lkdGgodHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIEFyZzo6V2lkdGggdXNlOworICAgICAgICBBcmc6OldpZHRoIGRlZjsKKyAgICB9Owor
ICAgIAorICAgIEhhc2hNYXA8VG1wLCBXaWR0aHM+IG1fd2lkdGg7Cit9OworCit9IH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCisjZW5k
aWYgLy8gQWlyVG1wV2lkdGhfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclVzZUNvdW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyVXNlQ291bnRzLmgJKHJldmlzaW9uIDE5NDMxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyVXNlQ291bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGZyZXF1ZW5jeSAqPSBPcHRpb25zOjpyYXJlQmxv
Y2tQZW5hbHR5KCk7CiAgICAgICAgICAgICBmb3IgKEluc3QmIGluc3QgOiAqYmxvY2spIHsKICAg
ICAgICAgICAgICAgICBpbnN0LmZvckVhY2g8VGhpbmc+KAotICAgICAgICAgICAgICAgICAgICBb
Jl0gKFRoaW5nJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgWyZdIChUaGluZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6
OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudHMmIGNvdW50cyA9IG1fY291
bnRzLmFkZChhcmcsIENvdW50cygpKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChBcmc6OmlzV2FybVVzZShyb2xlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDE5NDMx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgko
d29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDEyIEBAIGNsYXNzIE9wY29kZQogZW5kCiAKIGNs
YXNzIEFyZwotICAgIGF0dHJfcmVhZGVyIDpyb2xlLCA6dHlwZQorICAgIGF0dHJfcmVhZGVyIDpy
b2xlLCA6dHlwZSwgOndpZHRoCiAKLSAgICBkZWYgaW5pdGlhbGl6ZShyb2xlLCB0eXBlKQorICAg
IGRlZiBpbml0aWFsaXplKHJvbGUsIHR5cGUsIHdpZHRoKQogICAgICAgICBAcm9sZSA9IHJvbGUK
ICAgICAgICAgQHR5cGUgPSB0eXBlCisgICAgICAgIEB3aWR0aCA9IHdpZHRoCiAgICAgZW5kCiBl
bmQKIApAQCAtMTczLDcgKzE3NCw3IEBAIGRlZiBsZXgoc3RyLCBmaWxlTmFtZSkKIGVuZAogCiBk
ZWYgaXNVRCh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChVQSkpXFovCisg
ICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoWkQpfChVWkQpfChVQSkpXFovCiBlbmQKIAog
ZGVmIGlzR0YodG9rZW4pCkBAIC0xODgsOCArMTg5LDEyIEBAIGRlZiBpc0FyY2godG9rZW4pCiAg
ICAgdG9rZW4gPX4gL1xBKCh4ODYpfCh4ODZfMzIpfCh4ODZfNjQpfChhcm0pfChhcm12Nyl8KGFy
bTY0KXwoMzIpfCg2NCkpXFovCiBlbmQKIAorZGVmIGlzV2lkdGgodG9rZW4pCisgICAgdG9rZW4g
PX4gL1xBKCg4KXwoMTYpfCgzMil8KDY0KXwoUHRyKSlcWi8KK2VuZAorCiBkZWYgaXNLZXl3b3Jk
KHRva2VuKQotICAgIGlzVUQodG9rZW4pIG9yIGlzR0YodG9rZW4pIG9yIGlzS2luZCh0b2tlbikg
b3IgaXNBcmNoKHRva2VuKSBvcgorICAgIGlzVUQodG9rZW4pIG9yIGlzR0YodG9rZW4pIG9yIGlz
S2luZCh0b2tlbikgb3IgaXNBcmNoKHRva2VuKSBvciBpc1dpZHRoKHRva2VuKSBvcgogICAgICAg
ICB0b2tlbiA9PSAic3BlY2lhbCIgb3IgdG9rZW4gPT0gImFzIgogZW5kCiAKQEAgLTI1Niw2ICsy
NjEsMTMgQEAgY2xhc3MgUGFyc2VyCiAgICAgICAgIHJlc3VsdAogICAgIGVuZAogCisgICAgZGVm
IGNvbnN1bWVXaWR0aAorICAgICAgICByZXN1bHQgPSB0b2tlbi5zdHJpbmcKKyAgICAgICAgcGFy
c2VFcnJvcigiRXhwZWN0ZWQgd2lkdGggKDgsIDE2LCAzMiwgb3IgNjQpIikgdW5sZXNzIGlzV2lk
dGgocmVzdWx0KQorICAgICAgICBhZHZhbmNlCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorCiAg
ICAgZGVmIHBhcnNlQXJjaHMKICAgICAgICAgcmV0dXJuIG5pbCB1bmxlc3MgaXNBcmNoKHRva2Vu
KQogCkBAIC0zNTAsOCArMzYyLDEwIEBAIGNsYXNzIFBhcnNlcgogICAgICAgICAgICAgICAgICAg
ICAgICAgcm9sZSA9IGNvbnN1bWVSb2xlCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1l
KCI6IikKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBjb25zdW1lVHlwZQorICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3VtZSgiOiIpCisgICAgICAgICAgICAgICAgICAgICAgICB3
aWR0aCA9IGNvbnN1bWVXaWR0aAogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzaWduYXR1cmUgPDwgQXJnLm5ldyhyb2xlLCB0eXBlKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc2lnbmF0dXJlIDw8IEFyZy5uZXcocm9sZSwgdHlwZSwgd2lkdGgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHVu
bGVzcyB0b2tlbiA9PSAiLCIKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoIiwiKQpA
QCAtNjA2LDI2ICs2MjAsMzcgQEAgd3JpdGVIKCJPcGNvZGVVdGlscyIpIHsKICAgICBtYXRjaElu
c3RPdmVybG9hZChvdXRwLCA6ZmFzdCwgInRoaXMiKSB7CiAgICAgICAgIHwgb3Bjb2RlLCBvdmVy
bG9hZCB8CiAgICAgICAgIGlmIG9wY29kZS5zcGVjaWFsCi0gICAgICAgICAgICBvdXRwLnB1dHMg
ImZ1bmN0b3IoYXJnc1swXSwgQXJnOjpVc2UsIEFyZzo6R1ApOyAvLyBUaGlzIGlzIGJhc2ljYWxs
eSBib2d1cywgYnV0IGl0IHdvcmtzIGYgYW5hbHlzZXMgbW9kZWwgU3BlY2lhbCBhcyBhbiBpbW1l
ZGlhdGUuIgorICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbMF0sIEFyZzo6VXNl
LCBBcmc6OkdQLCBBcmc6OnBvaW50ZXJXaWR0aCgpKTsgLy8gVGhpcyBpcyBiYXNpY2FsbHkgYm9n
dXMsIGJ1dCBpdCB3b3JrcyBmb3IgYW5hbHlzZXMgdGhhdCBtb2RlbCBTcGVjaWFsIGFzIGFuIGlt
bWVkaWF0ZS4iCiAgICAgICAgICAgICBvdXRwLnB1dHMgImFyZ3NbMF0uc3BlY2lhbCgpLT5mb3JF
YWNoQXJnKCp0aGlzLCBzY29wZWRMYW1iZGE8RWFjaEFyZ0NhbGxiYWNrPihmdW5jdG9yKSk7Igog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdmVybG9hZC5zaWduYXR1cmUuZWFjaF93aXRoX2lu
ZGV4IHsKICAgICAgICAgICAgICAgICB8IGFyZywgaW5kZXggfAorICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIHJvbGUgPSBuaWwKICAgICAgICAgICAgICAgICBjYXNlIGFyZy5yb2xl
CiAgICAgICAgICAgICAgICAgd2hlbiAiVSIKICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJV
c2UiCiAgICAgICAgICAgICAgICAgd2hlbiAiRCIKICAgICAgICAgICAgICAgICAgICAgcm9sZSA9
ICJEZWYiCisgICAgICAgICAgICAgICAgd2hlbiAiWkQiCisgICAgICAgICAgICAgICAgICAgIHJv
bGUgPSAiWkRlZiIKICAgICAgICAgICAgICAgICB3aGVuICJVRCIKICAgICAgICAgICAgICAgICAg
ICAgcm9sZSA9ICJVc2VEZWYiCisgICAgICAgICAgICAgICAgd2hlbiAiVVpEIgorICAgICAgICAg
ICAgICAgICAgICByb2xlID0gIlVzZVpEZWYiCiAgICAgICAgICAgICAgICAgd2hlbiAiVUEiCiAg
ICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlQWRkciIKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgZW5kCisKKyAgICAg
ICAgICAgICAgICBpZiBhcmcud2lkdGggPT0gIlB0ciIKKyAgICAgICAgICAgICAgICAgICAgd2lk
dGggPSAiQXJnOjpwb2ludGVyV2lkdGgoKSIKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIHdpZHRoID0gIkFyZzo6V2lkdGgje2FyZy53aWR0aH0iCisgICAgICAgICAg
ICAgICAgZW5kCiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cC5wdXRzICJm
dW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7cm9sZX0sIEFyZzo6I3thcmcudHlwZX1QKTsi
CisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6
OiN7cm9sZX0sIEFyZzo6I3thcmcudHlwZX1QLCAje3dpZHRofSk7IgogICAgICAgICAgICAgfQog
ICAgICAgICBlbmQKICAgICB9Cg==
</data>
<flag name="review"
          id="292699"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267703</attachid>
            <date>2015-12-19 13:32:24 -0800</date>
            <delta_ts>2015-12-19 14:06:42 -0800</delta_ts>
            <desc>rebased</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>75371</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNyBA
QAorMjAxNS0xMi0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzLT5BaXIgbG93ZXJpbmcgaW5jb3JyZWN0bHkgY29weS1wcm9wYWdhdGVzIG92ZXIgWkV4dDMy
J3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjM2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBp
bnN0cnVjdGlvbiBzZWxlY3RvciB0aGlua3MgdGhhdCBWYWx1ZSdzIHRoYXQgcmV0dXJuIEludDMy
J3MgYXJlIGdvaW5nIHRvIGFsd2F5cyBiZSBsb3dlcmVkCisgICAgICAgIHRvIGluc3RydWN0aW9u
cyB0aGF0IHplcm8tZXh0ZW5kIHRoZSBkZXN0aW5hdGlvbi4gQnV0IHRoaXMgaXNuJ3QgYWN0dWFs
bHkgdHJ1ZS4gSWYgeW91IGhhdmUgYW4KKyAgICAgICAgQWRkMzIgd2l0aCBhIGRlc3RpbmF0aW9u
IG9uIHRoZSBzdGFjayAoaS5lLiBzcGlsbGVkKSB0aGVuIGl0IG9ubHkgd3JpdGVzIDQgYnl0ZXMu
IFRoZW4sIHRoZQorICAgICAgICBmaWxsZXIgd2lsbCBsb2FkIDggYnl0ZXMgZnJvbSB0aGUgc3Rh
Y2sgYXQgdGhlIHBvaW50IG9mIHVzZS4gU28sIHRoZSB1c2Ugb2YgdGhlIEFkZDMyIHdpbGwgc2Vl
CisgICAgICAgIGdhcmJhZ2UgaW4gdGhlIGhpZ2ggYml0cy4KKworICAgICAgICBUaGUgZmFjdCB0
aGF0IHRoZSBzcGlsbGVyIGNob3NlIHRvIHVzZSA4IGJ5dGVzIGZvciBhIFRtcCB0aGF0IGdldHMg
ZGVmaW5lZCBieSBhbiBBZGQzMiBpcyBhCisgICAgICAgIHByZXR0eSBzYWQgYnVnLCBidXQ6CisK
KyAgICAgICAgLSBJdCdzIGVudGlyZWx5IHVwIHRvIHRoZSBzcGlsbGVyIHRvIGRlY2lkZSBob3cg
bWFueSBieXRlcyB0byB1c2UgZm9yIGEgVG1wLCBzaW5jZSB3ZSBkbyBub3QKKyAgICAgICAgICBh
c2NyaWJlIGEgdHlwZSB0byBUbXAncy4gV2UgY291bGQgYXNjcmliZSB0eXBlcyB0byBUbXAncywg
YnV0IHRoZW4gY29hbGVzY2luZyB3b3VsZCBiZWNvbWUKKyAgICAgICAgICBoYXJkZXIuIE91ciBn
b2FsIGlzIHRvIGZpeCB0aGUgYnVnIHdoaWxlIHN0aWxsIGVuYWJsaW5nIGNvYWxlc2NpbmcgaW4g
Y2FzZXMgbGlrZSAiYVtpXSIgd2hlcmUKKyAgICAgICAgICAiaSIgaXMgYSAzMi1iaXQgaW50ZWdl
ciB0aGF0IGlzIGNvbXB1dGVkIHVzaW5nIG9wZXJhdGlvbnMgdGhhdCBhbHJlYWR5IGRvIHplcm8t
ZXh0ZW5zaW9uLgorICAgICAgICAKKyAgICAgICAgLSBNb3JlIGJyb2FkbHksIGl0J3Mgc3RyYW5n
ZSB0aGF0IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvciBkZWNpZGVzIHdoZXRoZXIgYSBWYWx1ZSB3
aWxsIGJlCisgICAgICAgICAgbG93ZXJlZCB0byBzb21ldGhpbmcgdGhhdCB6ZXJvLWV4dGVuZHMu
IFRoYXQncyB0b28gY29uc3RyYWluaW5nLCBzaW5jZSB0aGUgbW9zdCBvcHRpbWFsCisgICAgICAg
ICAgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIG1pZ2h0IGludm9sdmUgc29tZXRoaW5nIHRoYXQgZG9l
c24ndCB6ZXJvLWV4dGVuZCBpbiBjYXNlcyBvZiBzcGlsbGluZywgc28KKyAgICAgICAgICB0aGUg
emVyby1leHRlbnNpb24gc2hvdWxkIG9ubHkgaGFwcGVuIGlmIGl0J3MgYWN0dWFsbHkgbmVlZGVk
LiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0bworICAgICAgICAgIHVuZGVyc3RhbmQgd2hpY2gg
QWlyIGluc3RydWN0aW9ucyBjYXVzZSB6ZXJvLWV4dGVuc2lvbnMuCisKKyAgICAgICAgLSBJZiB3
ZSBrbm93IHdoaWNoIEFpciBpbnN0cnVjdGlvbnMgY2F1c2UgemVyby1leHRlbnNpb25zLCB0aGVu
IHdlIGRvbid0IG5lZWQgdGhlIGluc3RydWN0aW9uCisgICAgICAgICAgc2VsZWN0b3IgdG8gY29w
eS1wcm9wYWdhdGUgWkV4dDMyJ3MuIFdlIGhhdmUgY29weS1wcm9wYWdhdGlvbiBpbiBBaXIgdGhh
bmtzIHRvIHRoZSByZWdpc3RlcgorICAgICAgICAgIGFsbG9jYXRvci4KKworICAgICAgICBJbiBm
YWN0LCB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGlzIGV4YWN0bHkgd2hlcmUgYWxsIG9mIHRoZSBw
aWVjZXMgY29tZSB0b2dldGhlci4gSXQncyB0aGVyZSB0aGF0CisgICAgICAgIHdlIHdhbnQgdG8g
a25vdyB3aGljaCBvcGVyYXRpb25zIHplcm8tZXh0ZW5kIGFuZCB3aGljaCBkb24ndC4gSXQgYWxz
byB3YW50cyB0byBrbm93IGhvdyBtYW55IGJpdHMKKyAgICAgICAgb2YgYSBUbXAgZWFjaCBpbnN0
cnVjdGlvbiByZWFkcy4gQXJtZWQgd2l0aCB0aGF0IGluZm9ybWF0aW9uLCB0aGUgcmVnaXN0ZXIg
YWxsb2NhdG9yIGNhbiBlbWl0CisgICAgICAgIG1vcmUgb3B0aW1hbCBzcGlsbCBjb2RlLCB1c2Ug
bGVzcyBzdGFjayBzcGFjZSBmb3Igc3BpbGwgc2xvdHMsIGFuZCBjb2FsZXNjZSBNb3ZlMzIncy4g
QXMgYSBib251cywKKyAgICAgICAgb24gWDg2LCBpdCByZXBsYWNlcyBNb3ZlJ3Mgd2l0aCBNb3Zl
MzIncyB3aGVuZXZlciBpdCBjYW4uIE9uIFg4NiwgTW92ZTMyIGlzIGNoZWFwZXIuCisKKyAgICAg
ICAgVGhpcyBmaXhlcyBhIGNyYXNoIGJ1ZyBpbiBWOC9lbmNyeXB0LiBWOC9lbmNyeXB0IHN0aWxs
IGNyYXNoZXMsIGJ1dCBhdCBhIGRpZmZlcmVudCBzaWduYXR1cmUuCisKKyAgICAgICAgSSB0cmll
ZCB3cml0aW5nIGEgcmVncmVzc2lvbiB0ZXN0LiBUaGUgcHJvYmxlbSBpcyB0aGF0IHlvdSBuZWVk
IGdhcmJhZ2Ugb24gdGhlIHN0YWNrIGZvciB0aGlzIHRvCisgICAgICAgIHdvcmssIGFuZCBJIGRp
ZG4ndCBmZWVsIGxpa2Ugd3JpdGluZyBhIGZsYWt5IHRlc3QuIEl0IGFwcGVhcnMgdGhhdCBydW5u
aW5nIEpTQyB0ZXN0cyB3aWxsIGNvdmVyCisgICAgICAgIHRoaXMuCisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OmlzWDg2KToKKyAgICAg
ICAgKEpTQzo6aXNYODZfNjQpOgorICAgICAgICAoSlNDOjpvcHRpbWl6ZUZvckFSTXY3SURJVlN1
cHBvcnRlZCk6CisgICAgICAgIChKU0M6Om9wdGltaXplRm9yWDg2KToKKyAgICAgICAgKEpTQzo6
b3B0aW1pemVGb3JYODZfNjQpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmhpZ2hCaXRzQXJlWmVybyk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNob3VsZENvcHlQcm9wYWdhdGUpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dlcik6CisgICAgICAgICogYjMvQjNQYXRj
aHBvaW50U3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6
Zm9yRWFjaEFyZyk6CisgICAgICAgICogYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCk6CisgICAgICAgICog
YjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6YWxsb2NhdGVTdGFjayk6CisgICAgICAgICogYjMvYWlyL0Fp
ckFyZy5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpwb2ludGVyV2lkdGgpOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzQW55VXNlKToKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6QXJnOjppc0NvbGRVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRWFy
bHlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRGVmKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1pEZWYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Ondp
ZHRoRm9yQjNUeXBlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpjb25zZXJ2YXRpdmVX
aWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6bWluaW11bVdpZHRoKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpieXRlcyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFy
Zzo6d2lkdGhGb3JCeXRlcyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6QXJnKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpmb3JFYWNoVG1wKToKKyAgICAgICAgKiBiMy9haXIv
QWlyQ0NhbGxTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q0NhbGxTcGVjaWFs
Ojpmb3JFYWNoQXJnKToKKyAgICAgICAgKiBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjplbGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICog
YjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OmZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyk6CisgICAgICAgICogYjMvYWlyL0Fpcklu
c3QuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0OjpoYXNBcmdFZmZlY3RzKToKKyAg
ICAgICAgKiBiMy9haXIvQWlySW5zdC5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0Ojpm
b3JFYWNoVG1wRmFzdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okluc3Q6OmZvckVhY2hUbXAp
OgorICAgICAgICAqIGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpJbnN0Ojpmb3JFYWNoVG1wV2l0aEV4dHJhQ2xvYmJlcmVkUmVncyk6CisgICAgICAgICog
YjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcDoKKyAgICAgICAgKiBiMy9h
aXIvQWlyTGl2ZW5lc3MuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QWJzdHJhY3RMaXZlbmVz
czo6QWJzdHJhY3RMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFic3RyYWN0TGl2
ZW5lc3M6OkxvY2FsQ2FsYzo6ZXhlY3V0ZSk6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzOgorICAgICAgICAqIGIzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpzcGlsbEV2ZXJ5dGhpbmcpOgorICAgICAgICAqIGIzL2Fpci9BaXJU
bXBXaWR0aC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpUbXBXaWR0aDo6VG1w
V2lkdGgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpUbXBXaWR0aDo6flRtcFdpZHRoKToKKyAg
ICAgICAgKiBiMy9haXIvQWlyVG1wV2lkdGguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6OlRtcFdpZHRoOjp3aWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlRtcFdpZHRoOjpk
ZWZXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlRtcFdpZHRoOjp1c2VXaWR0aCk6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6OlRtcFdpZHRoOjpXaWR0aHM6OldpZHRocyk6CisgICAgICAg
ICogYjMvYWlyL0FpclVzZUNvdW50cy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpVc2VDb3Vu
dHM6OlVzZUNvdW50cyk6CisgICAgICAgICogYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmI6Cisg
ICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja01lZ2FD
b21ibyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tUcmlja3lNZWdhQ29tYm8pOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdENoZWNrVHdvTWVnYUNvbWJvcyk6CisgICAgICAgIChKU0M6OkIz
OjpydW4pOgorCiAyMDE1LTEyLTE5ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtKU0NdIFN0cmVhbWxpbmUgVG1wIGluZGV4aW5nIGluc2lkZSB0aGUg
cmVnaXN0ZXIgYWxsb2NhdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY5NSw2ICs2OTUsOCBA
QAogCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTA1MDIzMUFBOTA5NTYwMEQz
M0IzMyAvKiBWYXJPZmZzZXQuY3BwICovOyB9OwogCQkwRkUwNTAyRDFBQTkwOTU2MDBEMzNCMzMg
LyogVmFyT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkUwNTAyNDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFMDUwMkYxQUFBODA2OTAw
RDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTA1MDJFMUFBQTgwNjkwMEQzM0IzMyAvKiBTY29w
ZWRBcmd1bWVudHNUYWJsZS5jcHAgKi87IH07CisJCTBGRTBFNEFEMUMyNEM5NEEwMDJFMTdCNiAv
KiBBaXJUbXBXaWR0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkUwRTRBQjFDMjRDOTRBMDAyRTE3QjYgLyogQWlyVG1wV2lkdGguY3BwICovOyB9
OworCQkwRkUwRTRBRTFDMjRDOTRBMDAyRTE3QjYgLyogQWlyVG1wV2lkdGguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTBFNEFDMUMyNEM5NEEwMDJF
MTdCNiAvKiBBaXJUbXBXaWR0aC5oICovOyB9OwogCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDgg
LyogT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZD
NDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi87IH07CiAJ
CTBGRTI1NEY2MUFCREREMjIwMEE3QzZEMiAvKiBERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTI1NEY0
MUFCREREMjIwMEE3QzZEMiAvKiBERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcCAqLzsgfTsK
QEAgLTI4MzUsNiArMjgzNyw4IEBACiAJCTBGRTA1MDIzMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJP
ZmZzZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFyT2Zmc2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFMDUwMjQxQUE5MDk1NjAwRDMz
QjMzIC8qIFZhck9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYXJP
ZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFMDUwMkUxQUFBODA2OTAw
RDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjb3BlZEFyZ3VtZW50c1RhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZFMEU0QUIxQzI0Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclRtcFdpZHRoLmNwcDsg
cGF0aCA9IGIzL2Fpci9BaXJUbXBXaWR0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRTBFNEFDMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJUbXBXaWR0aC5oOyBwYXRoID0gYjMvYWlyL0FpclRt
cFdpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTIyOEVBMTQzNkFCMjMw
MDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkUyMjhFQjE0
MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTI1NEY0MUFC
REREMjIwMEE3QzZEMiAvKiBERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3Bw
OyBwYXRoID0gZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDc5OSw2ICs0ODAzLDggQEAKIAkJCQkwRkVDODU2ODFCREFDREM3
MDA4MEZGNzQgLyogQWlyVG1wLmNwcCAqLywKIAkJCQkwRkVDODU2OTFCREFDREM3MDA4MEZGNzQg
LyogQWlyVG1wLmggKi8sCiAJCQkJMEZFQzg1NkExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclRtcElu
bGluZXMuaCAqLywKKwkJCQkwRkUwRTRBQjFDMjRDOTRBMDAyRTE3QjYgLyogQWlyVG1wV2lkdGgu
Y3BwICovLAorCQkJCTBGRTBFNEFDMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5oICov
LAogCQkJCTBGMzczMDkyMUMwRDY3RUUwMDA1MkJGQSAvKiBBaXJVc2VDb3VudHMuaCAqLywKIAkJ
CQkwRkVDODU2QjFCREFDREM3MDA4MEZGNzQgLyogQWlyVmFsaWRhdGUuY3BwICovLAogCQkJCTBG
RUM4NTZDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oICovLApAQCAtNzI5NCw2ICs3
MzAwLDcgQEAKIAkJCQkwRjIzNUJEOTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNGNzE5RDBCQUMxMDBCMUQxQjUgLyog
RlRMRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MjM1QkRCMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VmFsdWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGRTBFNEFFMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdGMjk5NkMxN0EwQkI2NzAwMTA0MTdBIC8qIEZUTEZhaWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRUEwQTJDMTcwQjY2MTkwMEJCNzIyQyAvKiBGVExGb3JtYXR0ZWRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMUExN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9T
UkVudHJ5SklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjI3LDYgKzkyMzQsNyBAQAogCQkJ
CTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQ0YwRDBDMEVGMEI4QTUwMDQxM0M4RiAvKiBT
dHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDVCNDFBQjFBNkU1MDFF
MDA3MTY3NTcgLyogU3ltYm9sLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRTBFNEFEMUMyNEM5
NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDVCNDFB
RDFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzA1QjQxQUYxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbE9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3MDVCNDFCMTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE5NDMx
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxNSBAQCBpbmxpbmUgYm9vbCBpc1g4
NigpCiAjZW5kaWYKIH0KIAoraW5saW5lIGJvb2wgaXNYODZfNjQoKQoreworI2lmIENQVShYODZf
NjQpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
fQorCiBpbmxpbmUgYm9vbCBvcHRpbWl6ZUZvckFSTXY3SURJVlN1cHBvcnRlZCgpCiB7CiAgICAg
cmV0dXJuIGlzQVJNdjdJRElWU3VwcG9ydGVkKCkgJiYgT3B0aW9uczo6dXNlQXJjaGl0ZWN0dXJl
U3BlY2lmaWNPcHRpbWl6YXRpb25zKCk7CkBAIC04Miw2ICs5MSwxMSBAQCBpbmxpbmUgYm9vbCBv
cHRpbWl6ZUZvclg4NigpCiAgICAgcmV0dXJuIGlzWDg2KCkgJiYgT3B0aW9uczo6dXNlQXJjaGl0
ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zKCk7CiB9CiAKK2lubGluZSBib29sIG9wdGltaXpl
Rm9yWDg2XzY0KCkKK3sKKyAgICByZXR1cm4gaXNYODZfNjQoKSAmJiBPcHRpb25zOjp1c2VBcmNo
aXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnMoKTsKK30KKwogY2xhc3MgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlOwogY2xhc3MgRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlOwogY2xhc3MgTGlua0J1ZmZlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDE2ICsxNTgsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIE5PVEU6IFRoaXMgZW50aXJl
IG1lY2hhbmlzbSBjb3VsZCBiZSBkb25lIG92ZXIgQWlyLCBpZiB3ZSBmZWx0IHRoYXQgdGhpcyB3
b3VsZCBiZSBmYXN0IGVub3VnaC4KLSAgICAvLyBGb3Igbm93IHdlJ3JlIGFzc3VtaW5nIHRoYXQg
aXQncyBmYXN0ZXIgdG8gZG8gdGhpcyBoZXJlLCBzaW5jZSBhbmFseXppbmcgQjMgaXMgc28gY2hl
YXAuCiAgICAgYm9vbCBzaG91bGRDb3B5UHJvcGFnYXRlKFZhbHVlKiB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAodmFsdWUtPm9wY29kZSgpKSB7CiAgICAgICAgIGNhc2UgVHJ1bmM6CiAg
ICAgICAgIGNhc2UgSWRlbnRpdHk6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
Y2FzZSBaRXh0MzI6Ci0gICAgICAgICAgICByZXR1cm4gaGlnaEJpdHNBcmVaZXJvKHZhbHVlLT5j
aGlsZCgwKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KQEAgLTE3NjUsMTEgKzE3NjEsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBaRXh0MzI6IHsKLSAgICAgICAgICAgIGlmIChoaWdoQml0c0FyZVplcm8obV92
YWx1ZS0+Y2hpbGQoMCkpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHRtcChtX3ZhbHVlLT5j
aGlsZCgwKSkgPT0gdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0KICAgICAgICAgICAgIGFwcGVuZFVuT3A8TW92ZTMyLCBBaXI6Ok9vcHM+KG1f
dmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcAko
cmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2lu
dFNwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgUGF0Y2hw
b2ludFNwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGNhbGxiYWNrKGluc3QuYXJnc1sxXSwgQXJnOjpEZWYsIGluc3Qub3JpZ2luLT5haXJUeXBl
KCkpOworICAgIGNhbGxiYWNrKGluc3QuYXJnc1sxXSwgQXJnOjpEZWYsIGluc3Qub3JpZ2luLT5h
aXJUeXBlKCksIGluc3Qub3JpZ2luLT5haXJXaWR0aCgpKTsKICAgICBmb3JFYWNoQXJnSW1wbCgw
LCAyLCBpbnN0LCBTYW1lQXNSZXAsIGNhbGxiYWNrKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCShyZXZpc2lvbiAxOTQzMTYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsOCArMTExLDkgQEAgdm9pZCBTdGFja21hcFNwZWNpYWw6OmZvckVh
Y2hBcmdJbXBsKAogICAgICAgICAgICAgcm9sZSA9IEFyZzo6TGF0ZVVzZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjYWxsYmFjayhhcmcsIHJvbGUs
IEFyZzo6dHlwZUZvckIzVHlwZShjaGlsZC52YWx1ZSgpLT50eXBlKCkpKTsKKworICAgICAgICBU
eXBlIHR5cGUgPSBjaGlsZC52YWx1ZSgpLT50eXBlKCk7CisgICAgICAgIGNhbGxiYWNrKGFyZywg
cm9sZSwgQXJnOjp0eXBlRm9yQjNUeXBlKHR5cGUpLCBBcmc6OndpZHRoRm9yQjNUeXBlKHR5cGUp
KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNp
b24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIGlzIHVzZWZ1
bCB3aGVuIGxvd2VyaW5nLiBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHZhbGlkIGZvciBub24tdm9p
ZCB2YWx1ZXMuCiAgICAgQWlyOjpBcmc6OlR5cGUgYWlyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFp
cjo6QXJnOjp0eXBlRm9yQjNUeXBlKHR5cGUoKSk7IH0KKyAgICBBaXI6OkFyZzo6V2lkdGggYWly
V2lkdGgoKSBjb25zdCB7IHJldHVybiBBaXI6OkFyZzo6d2lkdGhGb3JCM1R5cGUodHlwZSgpKTsg
fQogCiAgICAgQWRqYWNlbmN5TGlzdCYgY2hpbGRyZW4oKSB7IHJldHVybiBtX2NoaWxkcmVuOyB9
IAogICAgIGNvbnN0IEFkamFjZW5jeUxpc3QmIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9j
aGlsZHJlbjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9u
IDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MzY4LDYgKzYzNjgsNjEgQEAgdm9pZCB0ZXN0Q2hlY2tNZWdhQ29tYm8oKQog
ICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAxKSA9PSA0Mik7CiB9CiAK
K3ZvaWQgdGVzdENoZWNrVHJpY2t5TWVnYUNvbWJvKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBiYXNl
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBpbmRleCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSkpOwor
CisgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2Ms
IEFkZCwgT3JpZ2luKCksIGJhc2UsCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleCwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSkpOworICAgIAorICAg
IENoZWNrVmFsdWUqIGNoZWNrID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KAorICAgICAg
ICBwcm9jLCBDaGVjaywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQ4UywgT3JpZ2luKCksIHB0ciksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
NDIpKSk7CisgICAgY2hlY2stPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
KyAgICAgICAgICAgIENIRUNLKCFwYXJhbXMuc2l6ZSgpKTsKKworICAgICAgICAgICAgLy8gVGhp
cyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3Vs
ZCBuZXZlciBoYXZlIGNhbGxlZQorICAgICAgICAgICAgLy8gc2F2ZXMuCisgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAg
ICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNv
bXBpbGUocHJvYyk7CisKKyAgICBpbnQ4X3QgdmFsdWU7CisgICAgdmFsdWUgPSA0MjsKKyAgICBD
SEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMCkgPT0gMCk7CisgICAgdmFsdWUg
PSAxMjc7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDApID09IDAp
OworICAgIHZhbHVlID0gNDE7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAt
IDIsIDApID09IDQyKTsKKyAgICB2YWx1ZSA9IDA7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNv
ZGUsICZ2YWx1ZSAtIDIsIDApID09IDQyKTsKKyAgICB2YWx1ZSA9IC0xOworICAgIENIRUNLKGlu
dm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAwKSA9PSA0Mik7Cit9CisKIHZvaWQgdGVzdENo
ZWNrVHdvTWVnYUNvbWJvcygpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC05NDYwLDYgKzk1
MTUsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RTaW1wbGVD
aGVjaygpKTsKICAgICBSVU4odGVzdENoZWNrTGVzc1RoYW4oKSk7CiAgICAgUlVOKHRlc3RDaGVj
a01lZ2FDb21ibygpKTsKKyAgICBSVU4odGVzdENoZWNrVHJpY2t5TWVnYUNvbWJvKCkpOwogICAg
IFJVTih0ZXN0Q2hlY2tUd29NZWdhQ29tYm9zKCkpOwogICAgIFJVTih0ZXN0Q2hlY2tUd29Ob25S
ZWR1bmRhbnRNZWdhQ29tYm9zKCkpOwogICAgIFJVTih0ZXN0Q2hlY2tBZGRJbW0oKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFjay5j
cHAJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QWxsb2NhdGVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lk
IGFsbG9jYXRlU3RhY2soQ29kZSYgY29kZSkKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
Y29kZSkgewogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiAqYmxvY2spIHsKICAgICAgICAgICAg
IGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJv
bGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJn
OjpSb2xlIHJvbGUsIEFyZzo6VHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAocm9sZSA9PSBBcmc6OlVzZUFkZHIgJiYgYXJnLmlzU3RhY2soKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGVzY2FwaW5nU3RhY2tTbG90cy5hZGQoYXJnLnN0YWNrU2xvdCgpKTsKICAg
ICAgICAgICAgICAgICB9KTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIGFsbG9jYXRlU3RhY2so
Q29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbnRlcmZlcmluZzogIiwgV1RG
Ojpwb2ludGVyTGlzdER1bXAobG9jYWxDYWxjLmxpdmUoKSksICJcbiIpOwogCiAgICAgICAgICAg
ICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpS
b2xlIHJvbGUsIEFyZzo6VHlwZSkgeworICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFy
Zzo6Um9sZSByb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFBcmc6OmlzRGVmKHJvbGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZy5pc1N0YWNrKCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
OCw2ICsxNzgsMTIgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwog
ICAgIGNhc2UgQXJnOjpVc2VEZWY6CiAgICAgICAgIG91dC5wcmludCgiVXNlRGVmIik7CiAgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6WkRlZjoKKyAgICAgICAgb3V0LnByaW50KCJaRGVm
Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6VXNlWkRlZjoKKyAgICAgICAgb3V0
LnByaW50KCJVc2VaRGVmIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6VXNlQWRk
cjoKICAgICAgICAgb3V0LnByaW50KCJVc2VBZGRyIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkocmV2aXNpb24gMTk0MzE2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkod29ya2luZyBjb3B5KQpAQCAt
MTAxLDkgKzEwMSwyOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIExpa2UgVXNlIG9mIGFkZHJlc3Ms
IERlZiBvZiBhZGRyZXNzIGRvZXMgbm90IG1lYW4gZXNjYXBlLgogICAgICAgICBEZWYsCiAKKyAg
ICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgdmFyaWFudCBvZiBEZWYgdGhhdCBpbXBsaWVzIHRo
YXQgdGhlIHVwcGVyIGJpdHMgb2YgdGhlIHRhcmdldCByZWdpc3RlciBhcmUKKyAgICAgICAgLy8g
emVyby1maWxsZWQuIFNwZWNpZmljYWxseSwgaWYgdGhlIFdpZHRoIG9mIGEgWkRlZiBpcyBsZXNz
IHRoYW4gdGhlIGxhcmdlc3QgcG9zc2libGUgd2lkdGggb2YKKyAgICAgICAgLy8gdGhlIGFyZ3Vt
ZW50IChmb3IgZXhhbXBsZSwgd2UncmUgb24gYSA2NC1iaXQgbWFjaGluZSBhbmQgd2UgaGF2ZSBh
IFdpZHRoMzIgWkRlZiBvZiBhIEdQUikgdGhlbgorICAgICAgICAvLyB0aGlzIGhhcyBkaWZmZXJl
bnQgaW1wbGljYXRpb25zIGZvciB0aGUgdXBwZXIgYml0cyAoaS5lLiB0aGUgdG9wIDMyIGJpdHMg
aW4gb3VyIGV4YW1wbGUpCisgICAgICAgIC8vIGRlcGVuZGluZyBvbiB0aGUga2luZCBvZiB0aGUg
YXJndW1lbnQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEZvciByZWdpc3RlcjogdGhlIHVwcGVy
IGJpdHMgYXJlIHplcm8tZmlsbGVkLgorICAgICAgICAvLyBGb3IgYWRkcmVzczogdGhlIHVwcGVy
IGJpdHMgYXJlIG5vdCB0b3VjaGVkIChpLmUuIHdlIGRvIGEgMzItYml0IHN0b3JlIGluIG91ciBl
eGFtcGxlKS4KKyAgICAgICAgLy8gRm9yIHRtcDogZWl0aGVyIHRoZSB1cHBlciBiaXRzIGFyZSBu
b3QgdG91Y2hlZCBvciB0aGV5IGFyZSB6ZXJvLWZpbGxlZCwgYW5kIHdlIHdvbid0IGtub3cKKyAg
ICAgICAgLy8gd2hpY2ggdW50aWwgd2UgbG93ZXIgdGhlIHRtcCB0byBlaXRoZXIgYSBTdGFja1Ns
b3Qgb3IgYSBSZWcuCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoZSBiZWhhdmlvciBvZiBaRGVm
IGlzIGNvbnNpc3RlbnQgd2l0aCB3aGF0IGhhcHBlbnMgd2hlbiB5b3UgcGVyZm9ybSAzMi1iaXQg
b3BlcmF0aW9ucyBvbiBhCisgICAgICAgIC8vIDY0LWJpdCBHUFIuIEl0J3Mgbm90IGNvbnNpc3Rl
bnQgd2l0aCB3aGF0IGhhcHBlbnMgd2l0aCA4LWJpdCBvciAxNi1iaXQgRGVmcyBvbiB4ODYgR1BS
cywgb3IKKyAgICAgICAgLy8gd2hhdCBoYXBwZW5zIHdpdGggZmxvYXQgRGVmcyBpbiBBUk0gTkVP
TiBvciBYODYgU1NFLiBIZW5jZSB3aHkgd2UgaGF2ZSBib3RoIERlZiBhbmQgWkRlZi4KKyAgICAg
ICAgWkRlZiwKKwogICAgICAgICAvLyBUaGlzIGlzIGEgY29tYmluZWQgVXNlIGFuZCBEZWYuIEl0
IG1lYW5zIHRoYXQgYm90aCB0aGluZ3MgaGFwcGVuLgogICAgICAgICBVc2VEZWYsCiAKKyAgICAg
ICAgLy8gVGhpcyBpcyBhIGNvbWJpbmVkIFVzZSBhbmQgWkRlZi4gSXQgbWVhbnMgdGhhdCBib3Ro
IHRoaW5ncyBoYXBwZW4uCisgICAgICAgIFVzZVpEZWYsCisKICAgICAgICAgLy8gVGhpcyBpcyBh
IHNwZWNpYWwga2luZCBvZiB1c2UgdGhhdCBpcyBvbmx5IHZhbGlkIGZvciBhZGRyZXNzZXMuIEl0
IG1lYW5zIHRoYXQgdGhlCiAgICAgICAgIC8vIGluc3RydWN0aW9uIHdpbGwgZXZhbHVhdGUgdGhl
IGFkZHJlc3MgZXhwcmVzc2lvbiBhbmQgY29uc3VtZSB0aGUgZWZmZWN0aXZlIGFkZHJlc3MsIGJ1
dCBpdAogICAgICAgICAvLyB3aWxsIG5laXRoZXIgbG9hZCBub3Igc3RvcmUuIFRoaXMgaXMgYW4g
ZXNjYXBpbmcgdXNlLCBiZWNhdXNlIG5vdyB0aGUgYWRkcmVzcyBtYXkgYmUKQEAgLTEyNiw2ICsx
NDUsMTMgQEAgcHVibGljOgogICAgICAgICBXaWR0aDY0CiAgICAgfTsKIAorICAgIHN0YXRpYyBX
aWR0aCBwb2ludGVyV2lkdGgoKQorICAgIHsKKyAgICAgICAgaWYgKHNpemVvZih2b2lkKikgPT0g
OCkKKyAgICAgICAgICAgIHJldHVybiBXaWR0aDY0OworICAgICAgICByZXR1cm4gV2lkdGgzMjsK
KyAgICB9CisKICAgICBlbnVtIFNpZ25lZG5lc3MgOiBpbnQ4X3QgewogICAgICAgICBTaWduZWQs
CiAgICAgICAgIFVuc2lnbmVkCkBAIC0xMzksOSArMTY1LDExIEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBVc2U6CiAgICAgICAgIGNhc2UgQ29sZFVzZToKICAgICAgICAgY2FzZSBVc2VEZWY6Cisg
ICAgICAgIGNhc2UgVXNlWkRlZjoKICAgICAgICAgY2FzZSBMYXRlVXNlOgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgRGVmOgorICAgICAgICBjYXNlIFpEZWY6CiAgICAg
ICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpA
QCAtMTU1LDcgKzE4Myw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICBjYXNlIFVzZToKICAgICAgICAgY2FzZSBVc2VEZWY6CisgICAgICAgIGNhc2UgVXNlWkRl
ZjoKICAgICAgICAgY2FzZSBEZWY6CisgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBV
c2VBZGRyOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xNzMsOCAr
MjAzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2U6CiAgICAgICAgIGNhc2UgQ29sZFVz
ZToKICAgICAgICAgY2FzZSBVc2VEZWY6CisgICAgICAgIGNhc2UgVXNlWkRlZjoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIERlZjoKKyAgICAgICAgY2FzZSBaRGVmOgog
ICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE5OCw2ICsyMzAsMjUgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIERlZjoKICAgICAgICAgY2FzZSBVc2VEZWY6Cisg
ICAgICAgIGNhc2UgWkRlZjoKKyAgICAgICAgY2FzZSBVc2VaRGVmOgorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IFJvbGUgaW1wbGllcyB0aGF0IHRoZSBJbnN0IHdpbGwgWkRlZiB0aGUgQXJnLgorICAgIHN0YXRp
YyBib29sIGlzWkRlZihSb2xlIHJvbGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHJvbGUpIHsK
KyAgICAgICAgY2FzZSBVc2U6CisgICAgICAgIGNhc2UgQ29sZFVzZToKKyAgICAgICAgY2FzZSBV
c2VBZGRyOgorICAgICAgICBjYXNlIExhdGVVc2U6CisgICAgICAgIGNhc2UgRGVmOgorICAgICAg
ICBjYXNlIFVzZURlZjoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBa
RGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTIzNCw2ICsyODUsMzcgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgfQogCisgICAgc3RhdGljIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKFR5cGUgdHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0eXBlID09IEdQID8gcG9pbnRlcldpZHRoKCkgOiBXaWR0aDY0
OworICAgIH0KKworICAgIHN0YXRpYyBXaWR0aCBtaW5pbXVtV2lkdGgoVHlwZSB0eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gR1AgPyBXaWR0aDggOiBXaWR0aDMyOworICAgIH0K
KworICAgIHN0YXRpYyB1bnNpZ25lZCBieXRlcyhXaWR0aCB3aWR0aCkKKyAgICB7CisgICAgICAg
IHJldHVybiAxIDw8IHdpZHRoOworICAgIH0KKworICAgIHN0YXRpYyBXaWR0aCB3aWR0aEZvckJ5
dGVzKHVuc2lnbmVkIGJ5dGVzKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChieXRlcykgeworICAg
ICAgICBjYXNlIDA6CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJldHVybiBXaWR0aDg7
CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHJldHVybiBXaWR0aDE2OworICAgICAgICBj
YXNlIDM6CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIHJldHVybiBXaWR0aDMyOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFdpZHRoNjQ7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBBcmcoKQogICAgICAgICA6IG1fa2luZChJbnZhbGlkKQogICAgIHsKQEAgLTcx
NywxOSArNzk5LDE5IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIFRoaXMgZGVmcyAoJXJjeCkg
YnV0IHVzZXMgJXJjeC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQg
Zm9yRWFjaFRtcChSb2xlIGFyZ1JvbGUsIFR5cGUgYXJnVHlwZSwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKKyAgICB2b2lkIGZvckVhY2hUbXAoUm9sZSBhcmdSb2xlLCBUeXBlIGFyZ1R5cGUsIFdp
ZHRoIGFyZ1dpZHRoLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgc3dp
dGNoIChtX2tpbmQpIHsKICAgICAgICAgY2FzZSBUbXA6CiAgICAgICAgICAgICBBU1NFUlQoaXNB
bnlVc2UoYXJnUm9sZSkgfHwgaXNEZWYoYXJnUm9sZSkpOwotICAgICAgICAgICAgZnVuY3Rvciht
X2Jhc2UsIGFyZ1JvbGUsIGFyZ1R5cGUpOworICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIGFy
Z1JvbGUsIGFyZ1R5cGUsIGFyZ1dpZHRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEFkZHI6Ci0gICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCk7CisgICAgICAg
ICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCwgYXJnUm9sZSA9PSBVc2VBZGRyID8gYXJnV2lk
dGggOiBwb2ludGVyV2lkdGgoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJ
bmRleDoKLSAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlLCBVc2UsIEdQKTsKLSAgICAgICAgICAg
IGZ1bmN0b3IobV9pbmRleCwgVXNlLCBHUCk7CisgICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwg
VXNlLCBHUCwgYXJnUm9sZSA9PSBVc2VBZGRyID8gYXJnV2lkdGggOiBwb2ludGVyV2lkdGgoKSk7
CisgICAgICAgICAgICBmdW5jdG9yKG1faW5kZXgsIFVzZSwgR1AsIGFyZ1JvbGUgPT0gVXNlQWRk
ciA/IGFyZ1dpZHRoIDogcG9pbnRlcldpZHRoKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAJKHJldmlzaW9uIDE5NDMxNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTYgKzQ1LDE3IEBAIENDYWxsU3BlY2lhbDo6fkNDYWxsU3BlY2lh
bCgpCiB2b2lkIENDYWxsU3BlY2lhbDo6Zm9yRWFjaEFyZyhJbnN0JiBpbnN0LCBjb25zdCBTY29w
ZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYgY2FsbGJhY2spCiB7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bUNhbGxlZUFyZ3M7ICsraSkKLSAgICAgICAgY2FsbGJhY2so
aW5zdC5hcmdzW2NhbGxlZUFyZ09mZnNldCArIGldLCBBcmc6OlVzZSwgQXJnOjpHUCk7CisgICAg
ICAgIGNhbGxiYWNrKGluc3QuYXJnc1tjYWxsZWVBcmdPZmZzZXQgKyBpXSwgQXJnOjpVc2UsIEFy
Zzo6R1AsIEFyZzo6cG9pbnRlcldpZHRoKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1SZXR1cm5HUEFyZ3M7ICsraSkKLSAgICAgICAgY2FsbGJhY2soaW5zdC5hcmdzW3JldHVy
bkdQQXJnT2Zmc2V0ICsgaV0sIEFyZzo6RGVmLCBBcmc6OkdQKTsKKyAgICAgICAgY2FsbGJhY2so
aW5zdC5hcmdzW3JldHVybkdQQXJnT2Zmc2V0ICsgaV0sIEFyZzo6RGVmLCBBcmc6OkdQLCBBcmc6
OnBvaW50ZXJXaWR0aCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUmV0dXJu
RlBBcmdzOyArK2kpCi0gICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1tyZXR1cm5GUEFyZ09mZnNl
dCArIGldLCBBcmc6OkRlZiwgQXJnOjpGUCk7CisgICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1ty
ZXR1cm5GUEFyZ09mZnNldCArIGldLCBBcmc6OkRlZiwgQXJnOjpGUCwgQXJnOjpXaWR0aDY0KTsK
ICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmdBcmdPZmZzZXQ7IGkgPCBpbnN0LmFyZ3Mu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgLy8gRm9yIHRoZSB0eXBlLCB3ZSBjYW4ganVzdCBxdWVy
eSB0aGUgYXJnJ3MgdHlwZS4gVGhlIGFyZyB3aWxsIGhhdmUgYSB0eXBlLCBiZWNhdXNlIHdlCiAg
ICAgICAgIC8vIHJlcXVpcmUgdGhlc2UgYXJncyB0byBiZSBhcmd1bWVudCByZWdpc3RlcnMuCi0g
ICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1tpXSwgQXJnOjpVc2UsIGluc3QuYXJnc1tpXS50eXBl
KCkpOworICAgICAgICBBcmc6OlR5cGUgdHlwZSA9IGluc3QuYXJnc1tpXS50eXBlKCk7CisgICAg
ICAgIGNhbGxiYWNrKGluc3QuYXJnc1tpXSwgQXJnOjpVc2UsIHR5cGUsIEFyZzo6Y29uc2VydmF0
aXZlV2lkdGgodHlwZSkpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAJKHJldmlzaW9uIDE5
NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENv
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgZWxpbWluYXRlRGVh
ZENvZGUoQ29kZSYgY29kZSkKICAgICAgICAgLy8gVGhpcyBpbnN0cnVjdGlvbiBzaG91bGQgYmUg
cHJlc3VtZWQgZGVhZCwgaWYgaXRzIEFyZ3MgYXJlIGFsbCBkZWFkLgogICAgICAgICBib29sIHN0
b3Jlc1RvTGl2ZSA9IGZhbHNlOwogICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAg
ICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAgICAgICAg
ICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRoKSB7
CiAgICAgICAgICAgICAgICAgaWYgKCFBcmc6OmlzRGVmKHJvbGUpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgc3RvcmVzVG9MaXZlIHw9IGlzQXJnTGl2ZShh
cmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVn
aXN0ZXJTdGFsbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCB1cGRhdGVEaXN0YW5j
ZXMoSW5zdCYgaW5zdCwgRlBEZWZEaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW5z
dC5mb3JFYWNoVG1wKFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsK
KyAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6
VHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHRtcC5pc1Jl
ZygpLCAiVGhpcyBwaGFzZSBtdXN0IGJlIHJ1biBhZnRlciByZWdpc3RlciBhbGxvY2F0aW9uLiIp
OwogCiAgICAgICAgIGlmICh0bXAuaXNGUFIoKSAmJiBBcmc6OmlzRGVmKHJvbGUpKQpAQCAtMjAz
LDcgKzIwMyw3IEBAIHZvaWQgZml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKENvZGUmIGNvZGUKICAg
ICAgICAgICAgIGlmIChoYXNQYXJ0aWFsWG1tUmVnVXBkYXRlKGluc3QpKSB7CiAgICAgICAgICAg
ICAgICAgUmVnaXN0ZXJTZXQgZGVmczsKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCB1c2Vz
OwotICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaFRtcChbJl0gKFRtcCYgdG1wLCBBcmc6OlJv
bGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKFsm
XSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRtcC5pc0ZQUigpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoQXJnOjppc0RlZihyb2xlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZzLnNldCh0bXAuZnByKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJJbnN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckluc3QuY3BwCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpckluc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGJvb2wgSW5z
dDo6aGFzQXJnRWZmZWN0cygpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBmb3JF
YWNoQXJnKAotICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsK
KyAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRo
KSB7CiAgICAgICAgICAgICBpZiAoQXJnOjppc0RlZihyb2xlKSkKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSB0cnVlOwogICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlySW5zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlySW5zdC5oCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpckluc3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsMjAgKzk4LDIwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGFyZy5mb3JFYWNoVG1wRmFzdChmdW5jdG9yKTsKICAgICB9CiAKLSAg
ICB0eXBlZGVmIHZvaWQgRWFjaEFyZ0NhbGxiYWNrKEFyZyYsIEFyZzo6Um9sZSwgQXJnOjpUeXBl
KTsKKyAgICB0eXBlZGVmIHZvaWQgRWFjaEFyZ0NhbGxiYWNrKEFyZyYsIEFyZzo6Um9sZSwgQXJn
OjpUeXBlLCBBcmc6OldpZHRoKTsKICAgICAKLSAgICAvLyBDYWxscyB0aGUgZnVuY3RvciB3aXRo
IChhcmcsIHJvbGUsIHR5cGUpLiBUaGlzIGZ1bmN0aW9uIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5Cisg
ICAgLy8gQ2FsbHMgdGhlIGZ1bmN0b3Igd2l0aCAoYXJnLCByb2xlLCB0eXBlLCB3aWR0aCkuIFRo
aXMgZnVuY3Rpb24gaXMgYXV0by1nZW5lcmF0ZWQgYnkKICAgICAvLyBvcGNvZGVfZ2VuZXJhdG9y
LnJiLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBmb3JFYWNoQXJn
KGNvbnN0IEZ1bmN0b3ImKTsKIAotICAgIC8vIENhbGxzIHRoZSBmdW5jdG9yIHdpdGggKHRtcCwg
cm9sZSwgdHlwZSkuCisgICAgLy8gQ2FsbHMgdGhlIGZ1bmN0b3Igd2l0aCAodG1wLCByb2xlLCB0
eXBlLCB3aWR0aCkuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZv
ckVhY2hUbXAoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGZvckVhY2hB
cmcoCi0gICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBl
IHR5cGUpIHsKLSAgICAgICAgICAgICAgICBhcmcuZm9yRWFjaFRtcChyb2xlLCB0eXBlLCBmdW5j
dG9yKTsKKyAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5
cGUgdHlwZSwgQXJnOjpXaWR0aCB3aWR0aCkgeworICAgICAgICAgICAgICAgIGFyZy5mb3JFYWNo
VG1wKHJvbGUsIHR5cGUsIHdpZHRoLCBmdW5jdG9yKTsKICAgICAgICAgICAgIH0pOwogICAgIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMu
aAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
bnN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEZvckVhY2g8U3RhY2tTbG90Kj4gewogICAgIHN0YXRpYyB2b2lkIGZvckVhY2goSW5z
dCYgaW5zdCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGluc3QuZm9y
RWFjaEFyZygKLSAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6
OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUs
IEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRoIHdpZHRoKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFhcmcuaXNTdGFjaygpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgU3RhY2tTbG90KiBzdGFja1Nsb3QgPSBhcmcuc3RhY2tTbG90KCk7CkBAIC02Niw3ICs2
Niw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEZvckVhY2g8U3RhY2tTbG90Kj4gewogICAgICAgICAg
ICAgICAgIC8vIHNlbWFudGljcyBvZiAiQW5vbnltb3VzIi4KICAgICAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMTI4CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgZnVuY3RvcihzdGFja1Nsb3QsIHJvbGUsIHR5cGUpOwor
ICAgICAgICAgICAgICAgIGZ1bmN0b3Ioc3RhY2tTbG90LCByb2xlLCB0eXBlLCB3aWR0aCk7CiAg
ICAgICAgICAgICAgICAgYXJnID0gQXJnOjpzdGFjayhzdGFja1Nsb3QsIGFyZy5vZmZzZXQoKSk7
CiAgICAgICAgICAgICB9KTsKICAgICB9CkBAIC05OSwxMiArOTksMTMgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KIGlubGluZSB2b2lkIEluc3Q6OmZvckVhY2hUbXBXaXRoRXh0cmFDbG9i
YmVyZWRSZWdzKEluc3QqIG5leHRJbnN0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAg
IGZvckVhY2hUbXAoCi0gICAgICAgIFsmXSAoVG1wJiB0bXBBcmcsIEFyZzo6Um9sZSByb2xlLCBB
cmc6OlR5cGUgYXJnVHlwZSkgewotICAgICAgICAgICAgZnVuY3Rvcih0bXBBcmcsIHJvbGUsIGFy
Z1R5cGUpOworICAgICAgICBbJl0gKFRtcCYgdG1wQXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpU
eXBlIGFyZ1R5cGUsIEFyZzo6V2lkdGggYXJnV2lkdGgpIHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
dG1wQXJnLCByb2xlLCBhcmdUeXBlLCBhcmdXaWR0aCk7CiAgICAgICAgIH0pOwogCiAgICAgYXV0
byByZXBvcnRSZWcgPSBbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgZnVuY3RvcihUbXAocmVnKSwg
QXJnOjpEZWYsIHJlZy5pc0dQUigpID8gQXJnOjpHUCA6IEFyZzo6RlApOworICAgICAgICBBcmc6
OlR5cGUgdHlwZSA9IHJlZy5pc0dQUigpID8gQXJnOjpHUCA6IEFyZzo6RlA7CisgICAgICAgIGZ1
bmN0b3IoVG1wKHJlZyksIEFyZzo6RGVmLCB0eXBlLCBBcmc6OmNvbnNlcnZhdGl2ZVdpZHRoKHR5
cGUpKTsKICAgICB9OwogCiAgICAgaWYgKGhhc1NwZWNpYWwoKSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3Rl
ckNvYWxlc2NpbmcuY3BwCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjMwLDkgKzYzMCwxMCBAQCBwcm90ZWN0ZWQ6CiB0ZW1wbGF0ZTxBcmc6OlR5cGUgdHlw
ZT4KIGNsYXNzIENvbG9yaW5nQWxsb2NhdG9yIDogcHVibGljIEFic3RyYWN0Q29sb3JpbmdBbGxv
Y2F0b3I8dW5zaWduZWQ+IHsKIHB1YmxpYzoKLSAgICBDb2xvcmluZ0FsbG9jYXRvcihDb2RlJiBj
b2RlLCBjb25zdCBVc2VDb3VudHM8VG1wPiYgdXNlQ291bnRzLCBjb25zdCBIYXNoU2V0PHVuc2ln
bmVkPiYgdW5zcGlsbGFibGVUbXApCisgICAgQ29sb3JpbmdBbGxvY2F0b3IoQ29kZSYgY29kZSwg
VG1wV2lkdGgmIHRtcFdpZHRoLCBjb25zdCBVc2VDb3VudHM8VG1wPiYgdXNlQ291bnRzLCBjb25z
dCBIYXNoU2V0PHVuc2lnbmVkPiYgdW5zcGlsbGFibGVUbXApCiAgICAgICAgIDogQWJzdHJhY3RD
b2xvcmluZ0FsbG9jYXRvcjx1bnNpZ25lZD4ocmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSwgQWJz
b2x1dGVUbXBNYXBwZXI8dHlwZT46Omxhc3RNYWNoaW5lUmVnaXN0ZXJJbmRleCgpLCB0bXBBcnJh
eVNpemUoY29kZSkpCiAgICAgICAgICwgbV9jb2RlKGNvZGUpCisgICAgICAgICwgbV90bXBXaWR0
aCh0bXBXaWR0aCkKICAgICAgICAgLCBtX3VzZUNvdW50cyh1c2VDb3VudHMpCiAgICAgICAgICwg
bV91bnNwaWxsYWJsZVRtcHModW5zcGlsbGFibGVUbXApCiAgICAgewpAQCAtNjQ2LDkgKzY0Nywx
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6dG1w
RnJvbUFic29sdXRlSW5kZXgoZ2V0QWxpYXMoQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29s
dXRlSW5kZXgodG1wKSkpOwogICAgIH0KIAorICAgIC8vIFRoaXMgdGVsbHMgeW91IGlmIGEgTW92
ZSB3aWxsIGJlIGNvYWxlc2NhYmxlIGlmIHRoZSBzcmMgYW5kIGRzdCBlbmQgdXAgbWF0Y2hpbmcu
IFRoaXMgbWV0aG9kCisgICAgLy8gcmVsaWVzIG9uIGFuIGFuYWx5c2lzIHRoYXQgaXMgaW52YWxp
ZGF0ZWQgYnkgcmVnaXN0ZXIgYWxsb2NhdGlvbiwgc28geW91IGl0J3Mgb25seSBtZWFuaW5nZnVs
IHRvCisgICAgLy8gY2FsbCB0aGlzICpiZWZvcmUqIHJlcGxhY2luZyB0aGUgVG1wJ3MgaW4gdGhp
cyBJbnN0IHdpdGggcmVnaXN0ZXJzIG9yIHNwaWxsIHNsb3RzLgorICAgIGJvb2wgbWF5QmVDb2Fs
ZXNjYWJsZShjb25zdCBJbnN0JiBpbnN0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1h
eUJlQ29hbGVzY2FibGVJbXBsKGluc3QsICZtX3RtcFdpZHRoKTsKKyAgICB9CisKICAgICBib29s
IGlzVXNlbGVzc01vdmUoY29uc3QgSW5zdCYgaW5zdCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtYXlCZUNvYWxlc2NhYmxlKGluc3QpICYmIGluc3QuYXJnc1swXS50bXAoKSA9PSBpbnN0
LmFyZ3NbMV0udG1wKCk7CisgICAgICAgIHJldHVybiBtYXlCZUNvYWxlc2NhYmxlSW1wbChpbnN0
LCBudWxscHRyKSAmJiBpbnN0LmFyZ3NbMF0udG1wKCkgPT0gaW5zdC5hcmdzWzFdLnRtcCgpOwog
ICAgIH0KIAogICAgIFRtcCBnZXRBbGlhc1doZW5TcGlsbGluZyhUbXAgdG1wKSBjb25zdApAQCAt
ODU3LDEyICs4NjYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgYWRkRWRnZShBYnNvbHV0ZVRtcE1h
cHBlcjx0eXBlPjo6YWJzb2x1dGVJbmRleChhKSwgQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFi
c29sdXRlSW5kZXgoYikpOwogICAgIH0KIAotICAgIGJvb2wgbWF5QmVDb2FsZXNjYWJsZShjb25z
dCBJbnN0JiBpbnN0KSBjb25zdAorICAgIC8vIENhbGxpbmcgdGhpcyB3aXRob3V0IGEgdG1wV2lk
dGggd2lsbCBwZXJmb3JtIGEgbW9yZSBjb25zZXJ2YXRpdmUgY29hbGVzY2luZyBhbmFseXNpcyB0
aGF0IGFzc3VtZXMKKyAgICAvLyB0aGF0IE1vdmUzMidzIGFyZSBub3QgY29hbGVzY2FibGUuCisg
ICAgc3RhdGljIGJvb2wgbWF5QmVDb2FsZXNjYWJsZUltcGwoY29uc3QgSW5zdCYgaW5zdCwgVG1w
V2lkdGgqIHRtcFdpZHRoKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAg
IGNhc2UgQXJnOjpHUDoKICAgICAgICAgICAgIHN3aXRjaCAoaW5zdC5vcGNvZGUpIHsKICAgICAg
ICAgICAgIGNhc2UgTW92ZToKKyAgICAgICAgICAgIGNhc2UgTW92ZTMyOgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC04ODcsNiArODk5LDIyIEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChpbnN0
LmFyZ3NbMF0udHlwZSgpID09IHR5cGUpOwogICAgICAgICBBU1NFUlQoaW5zdC5hcmdzWzFdLnR5
cGUoKSA9PSB0eXBlKTsKIAorICAgICAgICAvLyBXZSBjYW4gY29hbGVzY2UgYSBNb3ZlMzIgc28g
bG9uZyBhcyBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyBob2xkczoKKyAgICAgICAgLy8gLSBUaGUg
aW5wdXQgaXMgYWxyZWFkeSB6ZXJvLWZpbGxlZC4KKyAgICAgICAgLy8gLSBUaGUgb3V0cHV0IG9u
bHkgY2FyZXMgYWJvdXQgdGhlIGxvdyAzMiBiaXRzLgorICAgICAgICAvLworICAgICAgICAvLyBO
b3RlIHRoYXQgdGhlIGlucHV0IHByb3BlcnR5IHJlcXVpcmVzIGFuIGFuYWx5c2lzIG92ZXIgWkRl
ZidzLCBzbyBpdCdzIG9ubHkgdmFsaWQgc28gbG9uZworICAgICAgICAvLyBhcyB0aGUgaW5wdXQg
Z2V0cyBhIHJlZ2lzdGVyLiBXZSBkb24ndCBrbm93IGlmIHRoZSBpbnB1dCBnZXRzIGEgcmVnaXN0
ZXIsIGJ1dCB3ZSBkbyBrbm93CisgICAgICAgIC8vIHRoYXQgaWYgaXQgZG9lc24ndCBnZXQgYSBy
ZWdpc3RlciB0aGVuIHdlIHdpbGwgc3RpbGwgZW1pdCB0aGlzIE1vdmUzMi4KKyAgICAgICAgaWYg
KGluc3Qub3Bjb2RlID09IE1vdmUzMikgeworICAgICAgICAgICAgaWYgKCF0bXBXaWR0aCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmICh0bXBXaWR0aC0+
ZGVmV2lkdGgoaW5zdC5hcmdzWzBdLnRtcCgpKSA+IEFyZzo6V2lkdGgzMgorICAgICAgICAgICAg
ICAgICYmIHRtcFdpZHRoLT51c2VXaWR0aChpbnN0LmFyZ3NbMV0udG1wKCkpID4gQXJnOjpXaWR0
aDMyKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xMDUzLDcgKzEwODEsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgSGFzaFNldDx1bnNpZ25lZD4gdW5zcGlsbGFibGVUbXBzOwogICAgICAg
ICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgKyttX251bUl0ZXJhdGlvbnM7Ci0gICAgICAg
ICAgICBDb2xvcmluZ0FsbG9jYXRvcjx0eXBlPiBhbGxvY2F0b3IobV9jb2RlLCBtX3VzZUNvdW50
cywgdW5zcGlsbGFibGVUbXBzKTsKKworICAgICAgICAgICAgLy8gRklYTUU6IE9uZSB3YXkgdG8g
b3B0aW1pemUgdGhpcyBjb2RlIGlzIHRvIHJlbW92ZSB0aGUgcmVjb21wdXRhdGlvbiBpbnNpZGUg
dGhlIGZpeHBvaW50LgorICAgICAgICAgICAgLy8gV2UgbmVlZCB0byByZWNvbXB1dGUgYmVjYXVz
ZSBzcGlsbGluZyBhZGRzIHRtcHMsIGJ1dCB3ZSBjb3VsZCBqdXN0IHVwZGF0ZSB0bXBXaWR0aCB3
aGVuIHdlCisgICAgICAgICAgICAvLyBhZGQgdGhvc2UgdG1wcy4KKyAgICAgICAgICAgIG1fdG1w
V2lkdGgucmVjb21wdXRlKG1fY29kZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIENvbG9y
aW5nQWxsb2NhdG9yPHR5cGU+IGFsbG9jYXRvcihtX2NvZGUsIG1fdG1wV2lkdGgsIG1fdXNlQ291
bnRzLCB1bnNwaWxsYWJsZVRtcHMpOwogICAgICAgICAgICAgaWYgKCFhbGxvY2F0b3IucmVxdWly
ZXNTcGlsbGluZygpKSB7CiAgICAgICAgICAgICAgICAgYXNzaWduUmVnaXN0ZXJzVG9UbXAoYWxs
b2NhdG9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDY5LDYgKzExMDMsMjIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIC8vIEdpdmUgVG1wIGEgdmFsaWQgcmVnaXN0ZXIuCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluc3RJbmRleCA9IDA7IGluc3RJbmRleCA8IGJsb2NrLT5z
aXplKCk7ICsraW5zdEluZGV4KSB7CiAgICAgICAgICAgICAgICAgSW5zdCYgaW5zdCA9IGJsb2Nr
LT5hdChpbnN0SW5kZXgpOworCisgICAgICAgICAgICAgICAgLy8gVGhlIG1heUJlQ29hbGVzY2Fi
bGUoKSBtZXRob2Qgd2lsbCBjaGFuZ2UgaXRzIG1pbmQgZm9yIHNvbWUgb3BlcmF0aW9ucyBhZnRl
ciB3ZQorICAgICAgICAgICAgICAgIC8vIGNvbXBsZXRlIHJlZ2lzdGVyIGFsbG9jYXRpb24uIFNv
LCB3ZSByZWNvcmQgdGhpcyBiZWZvcmUgc3RhcnRpbmcuCisgICAgICAgICAgICAgICAgYm9vbCBt
YXlCZUNvYWxlc2NhYmxlID0gYWxsb2NhdG9yLm1heUJlQ29hbGVzY2FibGUoaW5zdCk7CisKKyAg
ICAgICAgICAgICAgICAvLyBPbiBYODZfNjQsIE1vdmUzMiBpcyBjaGVhcGVyIGlmIHdlIGtub3cg
dGhhdCBpdCdzIGVxdWl2YWxlbnQgdG8gYSBNb3ZlLiBJdCdzCisgICAgICAgICAgICAgICAgLy8g
ZXF1aXZhbGVudCBpZiB0aGUgZGVzdGluYXRpb24ncyBoaWdoIGJpdHMgYXJlIG5vdCBvYnNlcnZh
YmxlIG9yIGlmIHRoZSBzb3VyY2UncyBoaWdoCisgICAgICAgICAgICAgICAgLy8gYml0cyBhcmUg
YWxsIHplcm8uIE5vdGUgdGhhdCB3ZSBkb24ndCBoYXZlIHRoZSBvcHBvc2l0ZSBvcHRpbWl6YXRp
b24gZm9yIG90aGVyCisgICAgICAgICAgICAgICAgLy8gYXJjaGl0ZWN0dXJlcywgd2hpY2ggbWF5
IHByZWZlciBNb3ZlIG92ZXIgTW92ZTMyLCBiZWNhdXNlIE1vdmUgaXMgY2Fub25pY2FsIGFscmVh
ZHkuCisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQXJnOjpHUCAmJiBvcHRpbWl6ZUZvclg4
Nl82NCgpICYmIGluc3Qub3Bjb2RlID09IE1vdmUKKyAgICAgICAgICAgICAgICAgICAgJiYgaW5z
dC5hcmdzWzBdLmlzVG1wKCkgJiYgaW5zdC5hcmdzWzFdLmlzVG1wKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fdG1wV2lkdGgudXNlV2lkdGgoaW5zdC5hcmdzWzFdLnRtcCgpKSA8PSBB
cmc6OldpZHRoMzIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1fdG1wV2lkdGguZGVmV2lk
dGgoaW5zdC5hcmdzWzBdLnRtcCgpKSA8PSBBcmc6OldpZHRoMzIpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbnN0Lm9wY29kZSA9IE1vdmUzMjsKKyAgICAgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0KFsmXSAoVG1wJiB0bXApIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRtcC5pc1JlZygpIHx8IHRtcC5pc0dQKCkgPT0gKHR5cGUgIT0gQXJn
OjpHUCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDg1LDExICsxMTM1
LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChhc3NpZ25lZFRtcC5p
c1JlZygpKTsKICAgICAgICAgICAgICAgICAgICAgdG1wID0gYXNzaWduZWRUbXA7CiAgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAobWF5QmVDb2FsZXNjYWJsZSAmJiBp
bnN0LmFyZ3NbMF0uaXNUbXAoKSAmJiBpbnN0LmFyZ3NbMV0uaXNUbXAoKQorICAgICAgICAgICAg
ICAgICAgICAmJiBpbnN0LmFyZ3NbMF0udG1wKCkgPT0gaW5zdC5hcmdzWzFdLnRtcCgpKQorICAg
ICAgICAgICAgICAgICAgICBpbnN0ID0gSW5zdCgpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAvLyBSZW1vdmUgYWxsIHRoZSB1c2VsZXNzIG1vdmVzIHdlIGNyZWF0ZWQgaW4gdGhpcyBi
bG9jay4KICAgICAgICAgICAgIGJsb2NrLT5pbnN0cygpLnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAo
Y29uc3QgSW5zdCYgaW5zdCkgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IuaXNV
c2VsZXNzTW92ZShpbnN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIWluc3Q7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTExMDMsNyArMTE1Nyw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICB1bnNwaWxsYWJsZVRtcHMuYWRkKEFic29sdXRlVG1wTWFwcGVyPHR5cGU+
OjphYnNvbHV0ZUluZGV4KHRtcCkpOwogCiAgICAgICAgICAgICAvLyBBbGxvY2F0ZSBzdGFjayBz
bG90IGZvciBlYWNoIHNwaWxsZWQgdmFsdWUuCi0gICAgICAgICAgICBib29sIGlzTmV3VG1wID0g
c3RhY2tTbG90cy5hZGQodG1wLCBtX2NvZGUuYWRkU3RhY2tTbG90KDgsIFN0YWNrU2xvdEtpbmQ6
OkFub255bW91cykpLmlzTmV3RW50cnk7CisgICAgICAgICAgICBTdGFja1Nsb3QqIHN0YWNrU2xv
dCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoCisgICAgICAgICAgICAgICAgbV90bXBXaWR0aC53aWR0
aCh0bXApIDw9IEFyZzo6V2lkdGgzMiA/IDQgOiA4LCBTdGFja1Nsb3RLaW5kOjpBbm9ueW1vdXMp
OworICAgICAgICAgICAgYm9vbCBpc05ld1RtcCA9IHN0YWNrU2xvdHMuYWRkKHRtcCwgc3RhY2tT
bG90KS5pc05ld0VudHJ5OwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ld1RtcCwgaXNO
ZXdUbXApOwogICAgICAgICB9CiAKQEAgLTExMTUsMTYgKzExNzEsMzQgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4ID0gMDsgaW5zdEluZGV4IDwgYmxvY2st
PnNpemUoKTsgKytpbnN0SW5kZXgpIHsKICAgICAgICAgICAgICAgICBJbnN0JiBpbnN0ID0gYmxv
Y2stPmF0KGluc3RJbmRleCk7CiAKKyAgICAgICAgICAgICAgICAvLyBUaGUgVG1wV2lkdGggYW5h
bHlzaXMgd2lsbCBzYXkgdGhhdCBhIE1vdmUgb25seSBzdG9yZXMgMzIgYml0cyBpbnRvIHRoZSBk
ZXN0aW5hdGlvbiwKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc291cmNlIG9ubHkgaGFkIDMy
IGJpdHMgd29ydGggb2Ygbm9uLXplcm8gYml0cy4gU2FtZSBmb3IgdGhlIHNvdXJjZTogaXQgd2ls
bAorICAgICAgICAgICAgICAgIC8vIG9ubHkgY2xhaW0gdG8gcmVhZCAzMiBiaXRzIGZyb20gdGhl
IHNvdXJjZSBpZiBvbmx5IDMyIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZQorICAgICAgICAg
ICAgICAgIC8vIHJlYWQuIE5vdGUgdGhhdCB3ZSBvbmx5IGFwcGx5IHRoaXMgbG9naWMgaWYgdGhp
cyB0dXJucyBpbnRvIGEgbG9hZCBvciBzdG9yZSwgc2luY2UKKyAgICAgICAgICAgICAgICAvLyBN
b3ZlIGlzIHRoZSBjYW5vbmljYWwgd2F5IHRvIG1vdmUgZGF0YSBiZXR3ZWVuIEdQUnMuCisgICAg
ICAgICAgICAgICAgYm9vbCBmb3JjZU1vdmUzMklmRGlkU3BpbGwgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBib29sIGRpZFNwaWxsID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUg
PT0gQXJnOjpHUCAmJiBpbnN0Lm9wY29kZSA9PSBNb3ZlKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChtX3RtcFdpZHRoLmRlZldpZHRoKGluc3QuYXJnc1swXS50bXAoKSkgPD0gQXJnOjpXaWR0
aDMyCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBtX3RtcFdpZHRoLnVzZVdpZHRoKGluc3Qu
YXJnc1sxXS50bXAoKSkgPD0gQXJnOjpXaWR0aDMyKQorICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yY2VNb3ZlMzJJZkRpZFNwaWxsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgICAgICAvLyBUcnkgdG8gcmVwbGFjZSB0aGUgcmVnaXN0ZXIgdXNlIGJ5IG1lbW9yeSB1
c2Ugd2hlbiBwb3NzaWJsZS4KICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgaW5zdC5hcmdzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFyZyYgYXJn
ID0gaW5zdC5hcmdzW2ldOwogICAgICAgICAgICAgICAgICAgICBpZiAoYXJnLmlzVG1wKCkgJiYg
YXJnLnR5cGUoKSA9PSB0eXBlICYmICFhcmcuaXNSZWcoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBzdGFja1Nsb3RFbnRyeSA9IHN0YWNrU2xvdHMuZmluZChhcmcudG1wKCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrU2xvdEVudHJ5ICE9IHN0YWNrU2xvdHMu
ZW5kKCkgJiYgaW5zdC5hZG1pdHNTdGFjayhpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChzdGFja1Nsb3RFbnRyeSAhPSBzdGFja1Nsb3RzLmVuZCgpICYmIGluc3QuYWRtaXRzU3RhY2so
aSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBBcmc6OnN0YWNrKHN0YWNr
U2xvdEVudHJ5LT52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU3BpbGwg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgaWYgKGRpZFNwaWxsICYmIGZv
cmNlTW92ZTMySWZEaWRTcGlsbCkKKyAgICAgICAgICAgICAgICAgICAgaW5zdC5vcGNvZGUgPSBN
b3ZlMzI7CisKICAgICAgICAgICAgICAgICAvLyBGb3IgZXZlcnkgb3RoZXIgY2FzZSwgYWRkIExv
YWQvU3RvcmUgYXMgbmVlZGVkLgogICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaFRtcChbJl0g
KFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRtcC5pc1JlZygpIHx8IGFyZ1R5cGUgIT0gdHlwZSkKQEAgLTExNDEs
NyArMTIxNSwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICAgICAgQXJnIGFyZyA9IEFyZzo6c3RhY2soc3RhY2tTbG90RW50cnktPnZhbHVlKTsK
LSAgICAgICAgICAgICAgICAgICAgT3Bjb2RlIG1vdmUgPSB0eXBlID09IEFyZzo6R1AgPyBNb3Zl
IDogTW92ZURvdWJsZTsKKyAgICAgICAgICAgICAgICAgICAgT3Bjb2RlIG1vdmUgPSBPb3BzOwor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YWNrU2xvdEVudHJ5LT52YWx1ZS0+Ynl0ZVNp
emUoKSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICBtb3ZlID0gdHlwZSA9PSBBcmc6OkdQID8gTW92ZTMyIDogTW92ZUZsb2F0OworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgODoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1vdmUgPSB0eXBlID09IEFyZzo6R1AgPyBNb3ZlIDogTW92
ZURvdWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNBbnlVc2Uocm9sZSkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIFRtcCBuZXdUbXAgPSBtX2NvZGUubmV3VG1wKHR5
cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAko
cmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZl
bmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHR5cGVuYW1lIEFkYXB0ZXI6OkluZGV4U2V0JiBsaXZlQXRUYWlsID0gbV9saXZlQXRUYWls
W2Jsb2NrXTsKIAogICAgICAgICAgICAgYmxvY2stPmxhc3QoKS5mb3JFYWNoPHR5cGVuYW1lIEFk
YXB0ZXI6OlRoaW5nPigKLSAgICAgICAgICAgICAgICBbJl0gKHR5cGVuYW1lIEFkYXB0ZXI6OlRo
aW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlKSB7CisgICAgICAgICAg
ICAgICAgWyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFyZzo6Um9sZSByb2xl
LCBBcmc6OlR5cGUgdHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
QXJnOjppc0xhdGVVc2Uocm9sZSkgJiYgQWRhcHRlcjo6YWNjZXB0c1R5cGUodHlwZSkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBsaXZlQXRUYWlsLmFkZChBZGFwdGVyOjp2YWx1ZVRvSW5kZXgo
dGhpbmcpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTIxNiwxNCArMjE2LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGF1dG8mIHdvcmtzZXQgPSBtX2xpdmVuZXNzLm1fd29ya3NldDsKICAg
ICAgICAgICAgIC8vIEZpcnN0IGhhbmRsZSBkZWYncy4KICAgICAgICAgICAgIGluc3QuZm9yRWFj
aDx0eXBlbmFtZSBBZGFwdGVyOjpUaGluZz4oCi0gICAgICAgICAgICAgICAgWyZdICh0eXBlbmFt
ZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSkg
eworICAgICAgICAgICAgICAgIFsmXSAodHlwZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBB
cmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIHR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkgJiYgQWRhcHRlcjo6YWNjZXB0c1R5cGUodHlw
ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc2V0LnJlbW92ZShBZGFwdGVyOjp2YWx1
ZVRvSW5kZXgodGhpbmcpKTsKICAgICAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgLy8g
VGhlbiBoYW5kbGUgdXNlJ3MuCiAgICAgICAgICAgICBpbnN0LmZvckVhY2g8dHlwZW5hbWUgQWRh
cHRlcjo6VGhpbmc+KAotICAgICAgICAgICAgICAgIFsmXSAodHlwZW5hbWUgQWRhcHRlcjo6VGhp
bmcmIHRoaW5nLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIHR5cGUpIHsKKyAgICAgICAgICAg
ICAgICBbJl0gKHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUs
IEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChB
cmc6OmlzRWFybHlVc2Uocm9sZSkgJiYgQWRhcHRlcjo6YWNjZXB0c1R5cGUodHlwZSkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICB3b3Jrc2V0LmFkZChBZGFwdGVyOjp2YWx1ZVRvSW5kZXgodGhp
bmcpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBpZiAoaW5zdEluZGV4KSB7CiAgICAgICAgICAgICAgICAgSW5zdCYgcHJldklu
c3QgPSBtX2Jsb2NrLT5hdChpbnN0SW5kZXggLSAxKTsKICAgICAgICAgICAgICAgICBwcmV2SW5z
dC5mb3JFYWNoPHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKLSAgICAgICAgICAgICAgICAgICAg
WyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6
OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgICAgICAgICBbJl0gKHR5cGVuYW1lIEFkYXB0ZXI6
OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRo
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0xhdGVVc2Uocm9sZSkgJiYg
QWRhcHRlcjo6YWNjZXB0c1R5cGUodHlwZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d29ya3NldC5hZGQoQWRhcHRlcjo6dmFsdWVUb0luZGV4KHRoaW5nKSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9w
Y29kZS5vcGNvZGVzCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNCArMjMsMTcg
QEAKIAogIyBTeWxsYWJ1czoKICMKLSMgUm9sZXMgYW5kIHR5cGVzOgotIyBVOkcgPT4gdXNlIG9m
IGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9yIHZhbHVlCi0jIEQ6RyA9PiBkZWYgb2YgYSBn
ZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKLSMgVUQ6RyA9PiB1c2UgYW5kIGRlZiBv
ZiBhIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBvciB2YWx1ZQotIyBVQTpHID0+IFVzZUFkZHIg
KHNlZSBjb21tZW50IGluIEFyZy5oKQotIyBVOkYgPT4gdXNlIG9mIGEgZmxvYXQgcmVnaXN0ZXIg
b3IgdmFsdWUKLSMgRDpGID0+IGRlZiBvZiBhIGZsb2F0IHJlZ2lzdGVyIG9yIHZhbHVlCi0jIFVE
OkYgPT4gdXNlIGFuZCBkZWYgb2YgYSBmbG9hdCByZWdpc3RlciBvciB2YWx1ZQorIyBFeGFtcGxl
cyBvZiBzb21lIHJvbGVzLCB0eXBlcywgYW5kIHdpZHRoczoKKyMgVTpHOjMyID0+IHVzZSBvZiB0
aGUgbG93IDMyIGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKKyMg
RDpHOjMyID0+IGRlZiBvZiB0aGUgbG93IDMyIGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVn
aXN0ZXIgb3IgdmFsdWUKKyMgVUQ6RzozMiA9PiB1c2UgYW5kIGRlZiBvZiB0aGUgbG93IDMyIGJp
dHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKKyMgVTpHOjY0ID0+IHVz
ZSBvZiB0aGUgbG93IDY0IGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFs
dWUKKyMgWkQ6RzozMiA9PiBkZWYgb2YgYWxsIGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVn
aXN0ZXIsIHdoZXJlIGFsbCBidXQgdGhlIGxvdyAzMiBiaXRzIGFyZSBndWFyYW50ZWVkIHRvIGJl
IHplcm9lZC4KKyMgVUE6RzpQdHIgPT4gVXNlQWRkciAoc2VlIGNvbW1lbnQgaW4gQXJnLmgpCisj
IFU6RjozMiA9PiB1c2Ugb2YgYSBmbG9hdCByZWdpc3RlciBvciB2YWx1ZQorIyBVOkY6NjQgPT4g
dXNlIG9mIGEgZG91YmxlIHJlZ2lzdGVyIG9yIHZhbHVlCisjIEQ6RjozMiA9PiBkZWYgb2YgYSBm
bG9hdCByZWdpc3RlciBvciB2YWx1ZQorIyBVRDpGOjMyID0+IHVzZSBhbmQgZGVmIG9mIGEgZmxv
YXQgcmVnaXN0ZXIgb3IgdmFsdWUKICMKICMgQXJndW1lbnQga2luZHM6CiAjIFRtcCA9PiB0ZW1w
b3Jhcnkgb3IgcmVnaXN0ZXIKQEAgLTQ0LDExICs0NywxMSBAQAogIyBvZiB0aGluZ3MuIFNvLCBh
bHRob3VnaCB0aGlzIGZpbGUgdXNlcyBhIHBhcnRpY3VsYXIgaW5kZW50YXRpb24gc3R5bGUsIG5v
bmUgb2YgdGhlIHdoaXRlc3BhY2Ugb3IKICMgZXZlbiBuZXdsaW5lcyBhcmUgbWVhbmluZ2Z1bCB0
byB0aGUgcGFyc2VyLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHdyaXRlOgogIwotIyBGb280MiBV
OkcsIFVEOkYgSW1tLCBUbXAgQWRkciwgVG1wCisjIEZvbzQyIFU6RzozMiwgVUQ6RjozMiBJbW0s
IFRtcCBBZGRyLCBUbXAKICMKICMgQW5kIHRoZSBwYXJzZXIgd291bGQga25vdyB0aGF0IHRoaXMg
aXMgdGhlIHNhbWUgYXM6CiAjCi0jIEZvbzQyIFU6RywgVUQ6RgorIyBGb280MiBVOkc6MzIsIFVE
OkY6MzIKICMgICAgIEltbSwgVG1wCiAjICAgICBBZGRyLCBUbXAKICMKQEAgLTU4LDIyICs2MSwy
MiBAQAogIyB1bmlvbiBvZiB0aG9zZSBhcmNoaXRlY3R1cmVzLiBGb3IgZXhhbXBsZSwgaWYgdGhp
cyBpcyB0aGUgb25seSBvdmVybG9hZCBvZiB0aGUgb3Bjb2RlLCB0aGVuIGl0IG1ha2VzIHRoZQog
IyBvcGNvZGUgb25seSBhdmFpbGFibGUgb24geDg2XzY0OgogIwotIyB4ODZfNjQ6IEZ1enogVUQ6
RywgRDpHCisjIHg4Nl82NDogRnV6eiBVRDpHOjY0LCBEOkc6NjQKICMgICAgIFRtcCwgVG1wCiAj
ICAgICBUbXAsIEFkZHIKICMKICMgQnV0IHRoaXMgb25seSByZXN0cmljdHMgdGhlIHR3by1vcGVy
YW5kIGZvcm0sIHRoZSBvdGhlciBmb3JtIGlzIGFsbG93ZWQgb24gYWxsIGFyY2hpdGVjdHVyZXM6
CiAjCi0jIHg4Nl82NDogRnV6eiBVRDpHLCBEOkcKKyMgeDg2XzY0OiBGdXp6IFVEOkc6NjQsIEQ6
Rzo2NAogIyAgICAgVG1wLCBUbXAKICMgICAgIFRtcCwgQWRkcgotIyBGdXp6IFVEOkcsIEQ6Rywg
VTpGCisjIEZ1enogVUQ6RzpQdHIsIEQ6RzpQdHIsIFU6RjpQdHIKICMgICAgIFRtcCwgVG1wLCBU
bXAKICMgICAgIFRtcCwgQWRkciwgVG1wCiAjCiAjIEFuZCB5b3UgY2FuIGFsc28gcmVzdHJpY3Qg
aW5kaXZpZHVhbCBmb3JtczoKICMKLSMgVGhpbmd5IFVEOkcsIEQ6RworIyBUaGluZ3kgVUQ6Rzoz
MiwgRDpHOjMyCiAjICAgICBUbXAsIFRtcAogIyAgICAgYXJtNjQ6IFRtcCwgQWRkcgogIwpAQCAt
ODEsNyArODQsNyBAQAogIyBmb3JtLiBJbiB0aGlzIGV4YW1wbGUsIHRoZSB2ZXJzaW9uIHRoYXQg
dGFrZXMgYW4gYWRkcmVzcyBpcyBvbmx5IGF2YWlsYWJsZSBvbiBhcm12NyB3aGlsZSB0aGUgb3Ro
ZXIKICMgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiBhcm12NyBvciB4ODZfNjQ6CiAjCi0jIHg4
Nl82NCBhcm12NzogQnV6eiBVOkcsIFVEOkYKKyMgeDg2XzY0IGFybXY3OiBCdXp6IFU6RzozMiwg
VUQ6RjozMgogIyAgICAgVG1wLCBUbXAKICMgICAgIEltbSwgVG1wCiAjICAgICBhcm12NzogQWRk
ciwgVG1wCkBAIC0xMDMsMjE0ICsxMDYsMjE0IEBACiAKIE5vcAogCi1BZGQzMiBVOkcsIFVEOkcK
K0FkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRy
CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAK
LUFkZDMyIFU6RywgVTpHLCBEOkcKK0FkZDMyIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAg
SW1tLCBUbXAsIFRtcAogICAgIFRtcCwgVG1wLCBUbXAKIAotNjQ6IEFkZDY0IFU6RywgVUQ6Rwor
NjQ6IEFkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFk
ZHIKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIK
IAotNjQ6IEFkZDY0IFU6RywgVTpHLCBEOkcKKzY0OiBBZGQ2NCBVOkc6NjQsIFU6Rzo2NCwgRDpH
OjY0CiAgICAgSW1tLCBUbXAsIFRtcAogICAgIFRtcCwgVG1wLCBUbXAKIAotQWRkRG91YmxlIFU6
RiwgVUQ6RgorQWRkRG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2
OiBBZGRyLCBUbXAKIAotQWRkRmxvYXQgVTpGLCBVRDpGCitBZGRGbG9hdCBVOkY6MzIsIFVEOkY6
MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLVN1YjMyIFU6RywgVUQ6Rwor
U3ViMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIK
ICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKIAot
NjQ6IFN1YjY0IFU6RywgVUQ6RworNjQ6IFN1YjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwg
VG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1w
CiAgICAgeDg2OiBUbXAsIEFkZHIKIAotU3ViRG91YmxlIFU6RiwgVUQ6RgorU3ViRG91YmxlIFU6
Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotU3ViRmxv
YXQgVTpGLCBVRDpGCitTdWJGbG9hdCBVOkY6MzIsIFVEOkY6MzIKICAgICBUbXAsIFRtcAogICAg
IHg4NjogQWRkciwgVG1wCiAKLU5lZzMyIFVEOkcKK05lZzMyIFVaRDpHOjMyCiAgICAgVG1wCiAg
ICAgQWRkcgogCi02NDogTmVnNjQgVUQ6RworNjQ6IE5lZzY0IFVEOkc6NjQKICAgICBUbXAKIAot
TXVsMzIgVTpHLCBVRDpHCitNdWwzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAg
ICB4ODY6IEFkZHIsIFRtcAogCi1NdWwzMiBVOkcsIFU6RywgRDpHCitNdWwzMiBVOkc6MzIsIFU6
RzozMiwgWkQ6RzozMgogICAgIEltbSwgVG1wLCBUbXAKIAotNjQ6IE11bDY0IFU6RywgVUQ6Rwor
NjQ6IE11bDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAKLU11bERvdWJsZSBVOkYs
IFVEOkYKK011bERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIHg4Njog
QWRkciwgVG1wCiAKLU11bEZsb2F0IFU6RiwgVUQ6RgorTXVsRmxvYXQgVTpGOjMyLCBVRDpGOjMy
CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1EaXZEb3VibGUgVTpGLCBVRDpG
CitEaXZEb3VibGUgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIs
IFRtcAogCi1EaXZGbG9hdCBVOkYsIFVEOkYKK0RpdkZsb2F0IFU6RjozMiwgVUQ6RjozMgogICAg
IFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAoteDg2OiBYODZDb252ZXJ0VG9Eb3VibGVX
b3JkMzIgVTpHLCBEOkcKK3g4NjogWDg2Q29udmVydFRvRG91YmxlV29yZDMyIFU6RzozMiwgWkQ6
RzozMgogICAgIFRtcCosIFRtcCoKIAoteDg2XzY0OiBYODZDb252ZXJ0VG9RdWFkV29yZDY0IFU6
RywgRDpHCit4ODZfNjQ6IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQgVTpHOjY0LCBEOkc6NjQKICAg
ICBUbXAqLCBUbXAqCiAKLXg4NjogWDg2RGl2MzIgVUQ6RywgVUQ6RywgVTpHCit4ODY6IFg4NkRp
djMyIFVaRDpHOjMyLCBVWkQ6RzozMiwgVTpHOjMyCiAgICAgVG1wKiwgVG1wKiwgVG1wCiAKLXg4
Nl82NDogWDg2RGl2NjQgVUQ6RywgVUQ6RywgVTpHCit4ODZfNjQ6IFg4NkRpdjY0IFVaRDpHOjY0
LCBVWkQ6Rzo2NCwgVTpHOjY0CiAgICAgVG1wKiwgVG1wKiwgVG1wCiAKLUxlYSBVQTpHLCBEOkcK
K0xlYSBVQTpHOlB0ciwgRDpHOlB0cgogICAgIEFkZHIsIFRtcAogCi1BbmQzMiBVOkcsIFVEOkcK
K0FuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIEltbSwgVG1wCiAgICAg
eDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCiAK
LTY0OiBBbmQ2NCBVOkcsIFVEOkcKKzY0OiBBbmQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAs
IFRtcAogICAgIEltbSwgVG1wCiAKLUFuZERvdWJsZSBVOkYsIFVEOkYKK0FuZERvdWJsZSBVOkY6
NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAogCi1BbmRGbG9hdCBVOkYsIFVEOkYKK0FuZEZsb2F0
IFU6RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAKLUxzaGlmdDMyIFU6RywgVUQ6RworTHNo
aWZ0MzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCosIFRtcAogICAgIEltbSwgVG1wCiAKLTY0
OiBMc2hpZnQ2NCBVOkcsIFVEOkcKKzY0OiBMc2hpZnQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBU
bXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi1Sc2hpZnQzMiBVOkcsIFVEOkcKK1JzaGlmdDMyIFU6
RzozMiwgVVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi02NDogUnNoaWZ0
NjQgVTpHLCBVRDpHCis2NDogUnNoaWZ0NjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wKiwgVG1w
CiAgICAgSW1tLCBUbXAKIAotVXJzaGlmdDMyIFU6RywgVUQ6RworVXJzaGlmdDMyIFU6RzozMiwg
VVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi02NDogVXJzaGlmdDY0IFU6
RywgVUQ6RworNjQ6IFVyc2hpZnQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAqLCBUbXAKICAg
ICBJbW0sIFRtcAogCi1PcjMyIFU6RywgVUQ6RworT3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAg
VG1wLCBUbXAKICAgICBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAgICAgeDg2OiBBZGRy
LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgogCi02NDogT3I2NCBVOkcsIFVEOkcKKzY0OiBPcjY0
IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgSW1tLCBUbXAKIAotWG9yMzIgVTpH
LCBVRDpHCitYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBJbW0sIFRt
cAogICAgIHg4NjogVG1wLCBBZGRyCiAgICAgeDg2OiBBZGRyLCBUbXAKICAgICB4ODY6IEltbSwg
QWRkcgogCi02NDogWG9yNjQgVTpHLCBVRDpHCis2NDogWG9yNjQgVTpHOjY0LCBVRDpHOjY0CiAg
ICAgVG1wLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIEltbSwgVG1wCiAKLU5vdDMyIFVE
OkcKK05vdDMyIFVaRDpHOjMyCiAgICAgVG1wCiAgICAgeDg2OiBBZGRyCiAKLTY0OiBOb3Q2NCBV
RDpHCis2NDogTm90NjQgVUQ6Rzo2NAogICAgIFRtcAogICAgIHg4NjogQWRkcgogCi1DZWlsRG91
YmxlIFU6RiwgVUQ6RgorQ2VpbERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAog
ICAgIEFkZHIsIFRtcAogCi1DZWlsRmxvYXQgVTpGLCBVRDpGCitDZWlsRmxvYXQgVTpGOjMyLCBV
RDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAKIAotU3FydERvdWJsZSBVOkYsIFVE
OkYKK1NxcnREb3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFk
ZHIsIFRtcAogCi1TcXJ0RmxvYXQgVTpGLCBVRDpGCitTcXJ0RmxvYXQgVTpGOjMyLCBVRDpGOjMy
CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1Db252ZXJ0SW50MzJUb0RvdWJs
ZSBVOkcsIEQ6RgorQ29udmVydEludDMyVG9Eb3VibGUgVTpHOjMyLCBEOkY6NjQKICAgICBUbXAs
IFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLTY0OiBDb252ZXJ0SW50NjRUb0RvdWJsZSBVOkcs
IEQ6RgorNjQ6IENvbnZlcnRJbnQ2NFRvRG91YmxlIFU6Rzo2NCwgRDpGOjY0CiAgICAgVG1wLCBU
bXAKIAotQ291bnRMZWFkaW5nWmVyb3MzMiBVOkcsIEQ6RworQ291bnRMZWFkaW5nWmVyb3MzMiBV
Okc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLTY0OiBD
b3VudExlYWRpbmdaZXJvczY0IFU6RywgRDpHCis2NDogQ291bnRMZWFkaW5nWmVyb3M2NCBVOkc6
NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotQ29udmVydERv
dWJsZVRvRmxvYXQgVTpGLCBEOkYKK0NvbnZlcnREb3VibGVUb0Zsb2F0IFU6Rjo2NCwgRDpGOjMy
CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1Db252ZXJ0RmxvYXRUb0RvdWJs
ZSBVOkYsIEQ6RgorQ29udmVydEZsb2F0VG9Eb3VibGUgVTpGOjMyLCBEOkY6NjQKICAgICBUbXAs
IFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKQEAgLTMxOCw3ICszMjEsNyBAQCBDb252ZXJ0Rmxv
YXRUb0RvdWJsZSBVOkYsIEQ6RgogIyB0aGUgcGxhdGZvcm0uIEknbSBub3QgZW50aXJlbHkgc3Vy
ZSB0aGF0IHRoaXMgaXMgYSBnb29kIHRoaW5nOyBpdCBtaWdodCBiZSBiZXR0ZXIgdG8ganVzdCBo
YXZlIGEKICMgTW92ZTY0IGluc3RydWN0aW9uLiBPVE9ILCBvdXIgTWFjcm9Bc3NlbWJsZXJzIGFs
cmVhZHkgaGF2ZSB0aGlzIG5vdGlvbiBvZiAibW92ZSgpIiB0aGF0IGJhc2ljYWxseQogIyBtZWFu
cyBtb3ZlUHRyLgotTW92ZSBVOkcsIEQ6RworTW92ZSBVOkc6UHRyLCBEOkc6UHRyCiAgICAgVG1w
LCBUbXAKICAgICBJbW0sIFRtcCBhcyBzaWduRXh0ZW5kMzJUb1B0cgogICAgIEltbTY0LCBUbXAK
QEAgLTMyOCw3ICszMzEsNyBAQCBNb3ZlIFU6RywgRDpHCiAgICAgVG1wLCBJbmRleCBhcyBzdG9y
ZVB0cgogICAgIEltbSwgQWRkciBhcyBzdG9yZVB0cgogCi1Nb3ZlMzIgVTpHLCBEOkcKK01vdmUz
MiBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCBhcyB6ZXJvRXh0ZW5kMzJUb1B0cgogICAg
IEFkZHIsIFRtcCBhcyBsb2FkMzIKICAgICBJbmRleCwgVG1wIGFzIGxvYWQzMgpAQCAtMzM3LDEx
MiArMzQwLDExMiBAQCBNb3ZlMzIgVTpHLCBEOkcKICAgICBJbW0sIEFkZHIgYXMgc3RvcmUzMgog
ICAgIEltbSwgSW5kZXggYXMgc3RvcmUzMgogCi1TaWduRXh0ZW5kMzJUb1B0ciBVOkcsIEQ6Rwor
U2lnbkV4dGVuZDMyVG9QdHIgVTpHOjMyLCBEOkc6UHRyCiAgICAgVG1wLCBUbXAKIAotWmVyb0V4
dGVuZDhUbzMyIFU6RywgRDpHCitaZXJvRXh0ZW5kOFRvMzIgVTpHOjgsIFpEOkc6MzIKICAgICBU
bXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkOAogICAgIEluZGV4LCBUbXAgYXMgbG9hZDgK
IAotU2lnbkV4dGVuZDhUbzMyIFU6RywgRDpHCitTaWduRXh0ZW5kOFRvMzIgVTpHOjgsIFpEOkc6
MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wIGFzIGxvYWQ4U2lnbmVkRXh0ZW5k
VG8zMgogICAgIEluZGV4LCBUbXAgYXMgbG9hZDhTaWduZWRFeHRlbmRUbzMyCiAKLVplcm9FeHRl
bmQxNlRvMzIgVTpHLCBEOkcKK1plcm9FeHRlbmQxNlRvMzIgVTpHOjE2LCBaRDpHOjMyCiAgICAg
VG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDE2CiAgICAgSW5kZXgsIFRtcCBhcyBsb2Fk
MTYKIAotU2lnbkV4dGVuZDE2VG8zMiBVOkcsIEQ6RworU2lnbkV4dGVuZDE2VG8zMiBVOkc6MTYs
IFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkMTZTaWduZWRFeHRl
bmRUbzMyCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkMTZTaWduZWRFeHRlbmRUbzMyCiAKLU1vdmVG
bG9hdCBVOkYsIEQ6RgorTW92ZUZsb2F0IFU6RjozMiwgRDpGOjMyCiAgICAgVG1wLCBUbXAgYXMg
bW92ZURvdWJsZQogICAgIEFkZHIsIFRtcCBhcyBsb2FkRmxvYXQKICAgICBJbmRleCwgVG1wIGFz
IGxvYWRGbG9hdAogICAgIFRtcCwgQWRkciBhcyBzdG9yZUZsb2F0CiAgICAgVG1wLCBJbmRleCBh
cyBzdG9yZUZsb2F0CiAKLU1vdmVEb3VibGUgVTpGLCBEOkYKK01vdmVEb3VibGUgVTpGOjY0LCBE
OkY6NjQKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkRG91YmxlCiAgICAgSW5k
ZXgsIFRtcCBhcyBsb2FkRG91YmxlCiAgICAgVG1wLCBBZGRyIGFzIHN0b3JlRG91YmxlCiAgICAg
VG1wLCBJbmRleCBhcyBzdG9yZURvdWJsZQogCi1Nb3ZlWmVyb1RvRG91YmxlIEQ6RgorTW92ZVpl
cm9Ub0RvdWJsZSBEOkY6NjQKICAgICBUbXAKIAotNjQ6IE1vdmU2NFRvRG91YmxlIFU6RywgRDpG
Cis2NDogTW92ZTY0VG9Eb3VibGUgVTpHOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIEFk
ZHIsIFRtcCBhcyBsb2FkRG91YmxlCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkRG91YmxlCiAKLU1v
dmVJbnQzMlRvUGFja2VkIFU6RywgRDpGCitNb3ZlSW50MzJUb1BhY2tlZCBVOkc6MzIsIEQ6Rjoz
MgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wIGFzIGxvYWRGbG9hdAogICAgIEluZGV4LCBU
bXAgYXMgbG9hZEZsb2F0CiAKLTY0OiBNb3ZlRG91YmxlVG82NCBVOkYsIEQ6RworNjQ6IE1vdmVE
b3VibGVUbzY0IFU6Rjo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMg
bG9hZDY0CiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkNjQKIAotTW92ZVBhY2tlZFRvSW50MzIgVTpG
LCBEOkcKK01vdmVQYWNrZWRUb0ludDMyIFU6RjozMiwgRDpHOjMyCiAgICAgVG1wLCBUbXAKICAg
ICBBZGRyLCBUbXAgYXMgbG9hZDMyCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkMzIKIAotTG9hZDgg
VTpHLCBEOkcKK0xvYWQ4IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgs
IFRtcAogCi1TdG9yZTggVTpHLCBEOkcKK1N0b3JlOCBVOkc6OCwgRDpHOjgKICAgICBUbXAsIElu
ZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgSW1tLCBJbmRleAogICAgIEltbSwgQWRkcgogCi1Mb2Fk
OFNpZ25lZEV4dGVuZFRvMzIgVTpHLCBEOkcKK0xvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwg
WkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAotTG9hZDE2IFU6RywgRDpH
CitMb2FkMTYgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAog
Ci1Mb2FkMTZTaWduZWRFeHRlbmRUbzMyIFU6RywgRDpHCitMb2FkMTZTaWduZWRFeHRlbmRUbzMy
IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAotQ29tcGFy
ZTMyIFU6RywgVTpHLCBVOkcsIEQ6RworQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIs
IFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVsQ29uZCwgVG1wLCBJ
bW0sIFRtcAogCi02NDogQ29tcGFyZTY0IFU6RywgVTpHLCBVOkcsIEQ6RworNjQ6IENvbXBhcmU2
NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1wLCBJbW0s
IFRtcAogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKIAotVGVzdDMyIFU6RywgVTpHLCBVOkcs
IEQ6RworVGVzdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICB4ODY6IFJl
c0NvbmQsIEFkZHIsIEltbSwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcAogCi02NDog
VGVzdDY0IFU6RywgVTpHLCBVOkcsIEQ6RworNjQ6IFRlc3Q2NCBVOkc6MzIsIFU6Rzo2NCwgVTpH
OjY0LCBaRDpHOjMyCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcAogICAgIFJlc0NvbmQsIFRt
cCwgVG1wLCBUbXAKIAogIyBOb3RlIHRoYXQgYnJhbmNoZXMgaGF2ZSBzb21lIGxvZ2ljIGluIEFp
ck9wdGltaXplQmxvY2tPcmRlci5jcHAuIElmIHlvdSBhZGQgbmV3IGJyYW5jaGVzLCBwbGVhc2Ug
bWFrZSBzdXJlCiAjIHlvdSBvcHQgdGhlbSBpbnRvIHRoZSBibG9jayBvcmRlciBvcHRpbWl6YXRp
b25zLgogCi1CcmFuY2g4IFU6RywgVTpHLCBVOkcgL2JyYW5jaAorQnJhbmNoOCBVOkc6MzIsIFU6
Rzo4LCBVOkc6OCAvYnJhbmNoCiAgICAgeDg2OiBSZWxDb25kLCBBZGRyLCBJbW0KICAgICB4ODY6
IFJlbENvbmQsIEluZGV4LCBJbW0KIAotQnJhbmNoMzIgVTpHLCBVOkcsIFU6RyAvYnJhbmNoCitC
cmFuY2gzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyIC9icmFuY2gKICAgICB4ODY6IFJlbENvbmQs
IEFkZHIsIEltbQogICAgIFJlbENvbmQsIFRtcCwgVG1wCiAgICAgUmVsQ29uZCwgVG1wLCBJbW0K
QEAgLTQ1MCwxNyArNDUzLDE3IEBAIEJyYW5jaDMyIFU6RywgVTpHLCBVOkcgL2JyYW5jaAogICAg
IHg4NjogUmVsQ29uZCwgQWRkciwgVG1wCiAgICAgeDg2OiBSZWxDb25kLCBJbmRleCwgSW1tCiAK
LTY0OiBCcmFuY2g2NCBVOkcsIFU6RywgVTpHIC9icmFuY2gKKzY0OiBCcmFuY2g2NCBVOkc6MzIs
IFU6Rzo2NCwgVTpHOjY0IC9icmFuY2gKICAgICBSZWxDb25kLCBUbXAsIFRtcAogICAgIHg4Njog
UmVsQ29uZCwgVG1wLCBBZGRyCiAgICAgeDg2OiBSZWxDb25kLCBBZGRyLCBUbXAKICAgICB4ODY6
IFJlbENvbmQsIEluZGV4LCBUbXAKIAotQnJhbmNoVGVzdDggVTpHLCBVOkcsIFU6RyAvYnJhbmNo
CitCcmFuY2hUZXN0OCBVOkc6MzIsIFU6Rzo4LCBVOkc6OCAvYnJhbmNoCiAgICAgeDg2OiBSZXND
b25kLCBBZGRyLCBJbW0KICAgICB4ODY6IFJlc0NvbmQsIEluZGV4LCBJbW0KIAotQnJhbmNoVGVz
dDMyIFU6RywgVTpHLCBVOkcgL2JyYW5jaAorQnJhbmNoVGVzdDMyIFU6RzozMiwgVTpHOjMyLCBV
Okc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJ
bW0KICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbQpAQCAtNDY4LDk1ICs0NzEsOTUgQEAgQnJh
bmNoVGVzdDMyIFU6RywgVTpHLCBVOkcgL2JyYW5jaAogCiAjIFdhcm5pbmc6IGZvcm1zIHRoYXQg
dGFrZSBhbiBpbW1lZGlhdGUgd2lsbCBzaWduLWV4dGVuZCB0aGVpciBpbW1lZGlhdGUuIFlvdSBw
cm9iYWJseSB3YW50CiAjIEJyYW5jaFRlc3QzMiBpbiBtb3N0IGNhc2VzIHdoZXJlIHlvdSB1c2Ug
YW4gaW1tZWRpYXRlLgotNjQ6IEJyYW5jaFRlc3Q2NCBVOkcsIFU6RywgVTpHIC9icmFuY2gKKzY0
OiBCcmFuY2hUZXN0NjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCAvYnJhbmNoCiAgICAgUmVzQ29u
ZCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIEltbQogICAgIHg4NjogUmVzQ29uZCwgQWRk
ciwgSW1tCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBUbXAKICAgICB4ODY6IFJlc0NvbmQsIElu
ZGV4LCBJbW0KIAotQnJhbmNoRG91YmxlIFU6RywgVTpGLCBVOkYgL2JyYW5jaAorQnJhbmNoRG91
YmxlIFU6RzozMiwgVTpGOjY0LCBVOkY6NjQgL2JyYW5jaAogICAgIERvdWJsZUNvbmQsIFRtcCwg
VG1wCiAKLUJyYW5jaEZsb2F0IFU6RywgVTpGLCBVOkYgL2JyYW5jaAorQnJhbmNoRmxvYXQgVTpH
OjMyLCBVOkY6MzIsIFU6RjozMiAvYnJhbmNoCiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAKIAot
QnJhbmNoQWRkMzIgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorQnJhbmNoQWRkMzIgVTpHOjMyLCBV
Okc6MzIsIFVaRDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRtcAogICAgIFJlc0Nv
bmQsIEltbSwgVG1wCiAgICAgeDg2OiBSZXNDb25kLCBJbW0sIEFkZHIKICAgICB4ODY6IFJlc0Nv
bmQsIFRtcCwgQWRkcgogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAKLTY0OiBCcmFuY2hB
ZGQ2NCBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCis2NDogQnJhbmNoQWRkNjQgVTpHOjMyLCBVOkc6
NjQsIFVEOkc6NjQgL2JyYW5jaAogICAgIFJlc0NvbmQsIEltbSwgVG1wCiAgICAgUmVzQ29uZCwg
VG1wLCBUbXAKIAotQnJhbmNoTXVsMzIgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorQnJhbmNoTXVs
MzIgVTpHOjMyLCBVOkc6MzIsIFVaRDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRt
cAogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAKLUJyYW5jaE11bDMyIFU6RywgVTpHLCBV
OkcsIEQ6RyAvYnJhbmNoCitCcmFuY2hNdWwzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpH
OjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1wCiAKLTY0OiBCcmFuY2hNdWw2
NCBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCis2NDogQnJhbmNoTXVsNjQgVTpHOjMyLCBVOkc6NjQs
IFVaRDpHOjY0IC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRtcAogCi1CcmFuY2hTdWIzMiBV
OkcsIFU6RywgVUQ6RyAvYnJhbmNoCitCcmFuY2hTdWIzMiBVOkc6MzIsIFU6RzozMiwgVVpEOkc6
MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwgSW1tLCBUbXAK
ICAgICB4ODY6IFJlc0NvbmQsIEltbSwgQWRkcgogICAgIHg4NjogUmVzQ29uZCwgVG1wLCBBZGRy
CiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBUbXAKIAotNjQ6IEJyYW5jaFN1YjY0IFU6RywgVTpH
LCBVRDpHIC9icmFuY2gKKzY0OiBCcmFuY2hTdWI2NCBVOkc6MzIsIFU6Rzo2NCwgVUQ6Rzo2NCAv
YnJhbmNoCiAgICAgUmVzQ29uZCwgSW1tLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIFRtcAogCi1C
cmFuY2hOZWczMiBVOkcsIFVEOkcgL2JyYW5jaAorQnJhbmNoTmVnMzIgVTpHOjMyLCBVWkQ6Rzoz
MiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wCiAKLTY0OiBCcmFuY2hOZWc2NCBVOkcsIFVEOkcg
L2JyYW5jaAorNjQ6IEJyYW5jaE5lZzY0IFU6RzozMiwgVVpEOkc6NjQgL2JyYW5jaAogICAgIFJl
c0NvbmQsIFRtcAogCi1Nb3ZlQ29uZGl0aW9uYWxseTMyIFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6
RworTW92ZUNvbmRpdGlvbmFsbHkzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBVOkc6UHRyLCBV
RDpHOlB0cgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogCi02NDogTW92ZUNvbmRp
dGlvbmFsbHk2NCBVOkcsIFU6RywgVTpHLCBVOkcsIFVEOkcKKzY0OiBNb3ZlQ29uZGl0aW9uYWxs
eTY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIsIFVEOkc6UHRyCiAgICAgUmVsQ29u
ZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLU1vdmVDb25kaXRpb25hbGx5VGVzdDMyIFU6RywgVTpH
LCBVOkcsIFU6RywgVUQ6RworTW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIgVTpHOjMyLCBVOkc6MzIs
IFU6RzozMiwgVTpHOlB0ciwgVUQ6RzpQdHIKICAgICBSZXNDb25kLCBUbXAsIFRtcCwgVG1wLCBU
bXAKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1wLCBUbXAKIAotNjQ6IE1vdmVDb25kaXRpb25h
bGx5VGVzdDY0IFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RworNjQ6IE1vdmVDb25kaXRpb25hbGx5
VGVzdDY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIsIFVEOkc6UHRyCiAgICAgUmVz
Q29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcCwgVG1w
CiAKLU1vdmVDb25kaXRpb25hbGx5RG91YmxlIFU6RywgVTpGLCBVOkYsIFU6RywgVUQ6RworTW92
ZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHOjMyLCBVOkY6NjQsIFU6Rjo2NCwgVTpHOlB0ciwgVUQ6
RzpQdHIKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKIAotTW92ZUNvbmRpdGlv
bmFsbHlGbG9hdCBVOkcsIFU6RiwgVTpGLCBVOkcsIFVEOkcKK01vdmVDb25kaXRpb25hbGx5Rmxv
YXQgVTpHOjMyLCBVOkY6MzIsIFU6RjozMiwgVTpHOlB0ciwgVUQ6RzpQdHIKICAgICBEb3VibGVD
b25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKIAotTW92ZURvdWJsZUNvbmRpdGlvbmFsbHkzMiBVOkcs
IFU6RywgVTpHLCBVOkYsIFVEOkYKK01vdmVEb3VibGVDb25kaXRpb25hbGx5MzIgVTpHOjMyLCBV
Okc6MzIsIFU6RzozMiwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRt
cCwgVG1wCiAKLTY0OiBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0IFU6RywgVTpHLCBVOkcsIFU6
RiwgVUQ6RgorNjQ6IE1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQgVTpHOjMyLCBVOkc6NjQsIFU6
Rzo2NCwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAK
LU1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyIFU6RywgVTpHLCBVOkcsIFU6RiwgVUQ6Rgor
TW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpG
OjY0LCBVRDpGOjY0CiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVzQ29u
ZCwgVG1wLCBJbW0sIFRtcCwgVG1wCiAKLTY0OiBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseVRlc3Q2
NCBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKKzY0OiBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseVRl
c3Q2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBVOkY6NjQsIFVEOkY6NjQKICAgICBSZXNDb25k
LCBUbXAsIFRtcCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1wLCBUbXAKIAot
TW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHLCBVOkYsIFU6RiwgVTpGLCBVRDpGCitN
b3ZlRG91YmxlQ29uZGl0aW9uYWxseURvdWJsZSBVOkc6MzIsIFU6Rjo2NCwgVTpGOjY0LCBVOkY6
NjQsIFVEOkY6NjQKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKIAotTW92ZURv
dWJsZUNvbmRpdGlvbmFsbHlGbG9hdCBVOkcsIFU6RiwgVTpGLCBVOkYsIFVEOkYKK01vdmVEb3Vi
bGVDb25kaXRpb25hbGx5RmxvYXQgVTpHOjMyLCBVOkY6MzIsIFU6RjozMiwgVTpGOjY0LCBVRDpG
OjY0CiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKIEp1bXAgL2JyYW5jaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVy
eXRoaW5nLmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3
IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAvLyBjb2Rl
IGlzIHN1Ym9wdGltYWwuCiAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBXaXRoRXh0cmFDbG9i
YmVyZWRSZWdzKAogICAgICAgICAgICAgICAgIGluZGV4IDwgYmxvY2stPnNpemUoKSA/ICZibG9j
ay0+YXQoaW5kZXgpIDogbnVsbHB0ciwKLSAgICAgICAgICAgICAgICBbJnJlZ2lzdGVyU2V0XSAo
Y29uc3QgVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAgICAgICAgICAg
ICAgICBbJnJlZ2lzdGVyU2V0XSAoY29uc3QgVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6
OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcC5pc1JlZygp
ICYmIEFyZzo6aXNEZWYocm9sZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlclNl
dC5zZXQodG1wLnJlZygpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTExOSw3ICsxMTksNyBA
QCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogCiAgICAgICAgICAgICAvLyBOb3cg
ZmFsbCBiYWNrIG9uIHNwaWxsaW5nIHVzaW5nIHNlcGFyYXRlIE1vdmUncyB0byBsb2FkL3N0b3Jl
IHRoZSB0bXAuCiAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAoCi0gICAgICAgICAgICAgICAg
WyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlKSB7CisgICAgICAg
ICAgICAgICAgWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlLCBB
cmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNSZWcoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgCkBAIC0xNDAs
NiArMTQwLDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFyZzo6RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IHJlZ3NJblByaW9y
aXR5T3JkZXIodHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEFm
dGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVy
LnNldChyZWcpOwpAQCAtMTQ5LDYgKzE1MCw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUm
IGNvZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlVzZURlZjoKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBcmc6OlVzZVpEZWY6CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QXJnOjpMYXRlVXNlOgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogcmVn
c0luUHJpb3JpdHlPcmRlcih0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghc2V0QmVmb3JlLmdldChyZWcpICYmICFzZXRBZnRlci5nZXQocmVnKSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0aC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0aC5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcFdpZHRoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBaXJUbXBXaWR0
aC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNs
dWRlICJBaXJJbnN0SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CisKK1RtcFdpZHRoOjpUbXBXaWR0aCgpCit7Cit9CisKK1RtcFdpZHRo
OjpUbXBXaWR0aChDb2RlJiBjb2RlKQoreworICAgIHJlY29tcHV0ZShjb2RlKTsKK30KKworVG1w
V2lkdGg6On5UbXBXaWR0aCgpCit7Cit9CisKK3ZvaWQgVG1wV2lkdGg6OnJlY29tcHV0ZSgpCit7
CisgICAgbV93aWR0aC5jbGVhcigpOworICAgIAorICAgIC8vIEFzc3VtZSB0aGUgd29yc3QgZm9y
IHJlZ2lzdGVycy4KKyAgICBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCkuZm9yRWFjaCgKKyAg
ICAgICAgWyZdIChSZWcgcmVnKSB7CisgICAgICAgICAgICBXaWR0aHMmIHdpZHRocyA9IG1fd2lk
dGguYWRkKFRtcChyZWcpLCBXaWR0aHMoKSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAg
QXJnOjpUeXBlIHR5cGUgPSBBcmcoVG1wKHJlZykpLnR5cGUoKTsKKyAgICAgICAgICAgIHdpZHRo
cy51c2UgPSBBcmc6OmNvbnNlcnZhdGl2ZVdpZHRoKHR5cGUpOworICAgICAgICAgICAgd2lkdGhz
LmRlZiA9IEFyZzo6Y29uc2VydmF0aXZlV2lkdGgodHlwZSk7CisgICAgICAgIH0pOworICAgIAor
ICAgIC8vIE5vdyByZWFsbHkgYW5hbHl6ZSBldmVyeXRoaW5nIGJ1dCBNb3ZlJ3Mgb3ZlciBUbXAn
cywgYnV0IHNldCBhc2lkZSB0aG9zZSBNb3ZlJ3Mgc28gd2UgY2FuIGZpbmQKKyAgICAvLyB0aGVt
IHF1aWNrbHkgZHVyaW5nIHRoZSBmaXhwb2ludCBiZWxvdy4gTm90ZSB0aGF0IHdlIGNhbiBtYWtl
IHRoaXMgYW5hbHlzaXMgc3Ryb25nZXIgYnkKKyAgICAvLyByZWNvZ25pemluZyBtb3JlIGtpbmRz
IG9mIE1vdmUncyBvciBhbnl0aGluZyB0aGF0IGhhcyBNb3ZlLWxpa2UgYmVoYXZpb3IsIHRob3Vn
aCBpdCdzIHByb2JhYmx5IG5vdAorICAgIC8vIHdvcnRoIGl0LgorICAgIFZlY3RvcjxJbnN0Kj4g
bW92ZXM7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKKyAgICAgICAgZm9y
IChJbnN0JiBpbnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICBpZiAoaW5zdC5vcGNvZGUgPT0g
TW92ZSAmJiBpbnN0LmFyZ3NbMV0uaXNUbXAoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbnN0
LmFyZ3NbMF0uaXNUbXAoKSkgeworICAgICAgICAgICAgICAgICAgICBtb3Zlcy5hcHBlbmQoJmlu
c3QpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKGluc3QuYXJnc1swXS5pc0ltbSgpCisgICAgICAgICAgICAgICAg
ICAgICYmIGluc3QuYXJnc1swXS52YWx1ZSgpID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAg
VG1wIHRtcCA9IGluc3QuYXJnc1sxXS50bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgV2lkdGhz
JiB3aWR0aHMgPSBtX3dpZHRoLmFkZCh0bXAsIFdpZHRocyhBcmc6OkdQKSkuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluc3Qu
YXJnc1swXS52YWx1ZSgpIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50OF90Pjo6bWF4KCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMuZGVmID0gc3RkOjptYXgod2lkdGhzLmRlZiwg
QXJnOjpXaWR0aDgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnN0LmFyZ3NbMF0u
dmFsdWUoKSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptYXgoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRocy5kZWYgPSBzdGQ6Om1heCh3aWR0aHMuZGVmLCBBcmc6Oldp
ZHRoMTYpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnN0LmFyZ3NbMF0udmFsdWUo
KSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHdpZHRocy5kZWYgPSBzdGQ6Om1heCh3aWR0aHMuZGVmLCBBcmc6OldpZHRoMzIp
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0
aHMuZGVmID0gc3RkOjptYXgod2lkdGhzLmRlZiwgQXJnOjpXaWR0aDY0KTsKKworICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAoCisgICAgICAgICAgICAgICAgWyZdIChUbXAmIHRt
cCwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRoIHdpZHRoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFdpZHRocyYgd2lkdGhzID0gbV93aWR0aC5hZGQodG1wLCBXaWR0
aHModHlwZSkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIGlmIChBcmc6OmlzQW55VXNlKHJvbGUpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGhzLnVzZSA9IHN0ZDo6bWF4KHdpZHRocy51c2UsIHdpZHRoKTsKKworICAgICAg
ICAgICAgICAgICAgICBpZiAoQXJnOjppc1pEZWYocm9sZSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICB3aWR0aHMuZGVmID0gc3RkOjptYXgod2lkdGhzLmRlZiwgd2lkdGgpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChBcmc6OmlzRGVmKHJvbGUpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGhzLmRlZiA9IEFyZzo6Y29uc2VydmF0aXZlV2lkdGgodHlwZSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGaW5hbGx5LCBmaXhwb2lu
dCBvdmVyIHRoZSBNb3ZlJ3MuCisgICAgYm9vbCBjaGFuZ2VkID0gdHJ1ZTsKKyAgICB3aGlsZSAo
Y2hhbmdlZCkgeworICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoSW5zdCog
bW92ZSA6IG1vdmVzKSB7CisgICAgICAgICAgICBBU1NFUlQobW92ZS0+b3Bjb2RlID09IE1vdmUp
OworICAgICAgICAgICAgQVNTRVJUKG1vdmUtPmFyZ3NbMF0uaXNUbXAoKSk7CisgICAgICAgICAg
ICBBU1NFUlQobW92ZS0+YXJnc1sxXS5pc1RtcCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgV2lkdGhzJiBzcmNXaWR0aHMgPSBtX3dpZHRoLmFkZChtb3ZlLT5hcmdzWzBdLnRtcCgpLCBX
aWR0aHMoQXJnOjpHUCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIFdpZHRocyYgZHN0
V2lkdGhzID0gbV93aWR0aC5hZGQobW92ZS0+YXJnc1sxXS50bXAoKSwgV2lkdGhzKEFyZzo6R1Ap
KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgICAgIC8vIExlZ2VuZDoKKyAgICAgICAgICAg
IC8vCisgICAgICAgICAgICAvLyAgICAgTW92ZSAlc3JjLCAlZHN0CisKKyAgICAgICAgICAgIC8v
IGRlZldpZHRoKCVkc3QpIGlzIGEgcHJvbWlzZSBhYm91dCBob3cgbWFueSBoaWdoIGJpdHMgYXJl
IHplcm8uIFRoZSBzbWFsbGVyIHRoZSB3aWR0aCwgdGhlCisgICAgICAgICAgICAvLyBzdHJvbmdl
ciB0aGUgcHJvbWlzZS4gVGhpcyBNb3ZlIG1heSB3ZWFrZW4gdGhhdCBwcm9taXNlIGlmIHdlIGtu
b3cgdGhhdCAlc3JjIGlzIG1ha2luZyBhCisgICAgICAgICAgICAvLyB3ZWFrZXIgcHJvbWlzZS4g
U3VjaCBmb3J3YXJkIGZsb3cgaXMgdGhlIG9ubHkgdGhpbmcgdGhhdCBkZXRlcm1pbmVzIGRlZldp
ZHRoKCkuCisgICAgICAgICAgICBpZiAoZHN0V2lkdGhzLmRlZiA8IHNyY1dpZHRocy5kZWYpIHsK
KyAgICAgICAgICAgICAgICBkc3RXaWR0aHMuZGVmID0gc3JjV2lkdGhzLmRlZjsKKyAgICAgICAg
ICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
c3JjV2lkdGgoJXNyYykgaXMgYSBwcm9taXNlIGFib3V0IGhvdyBtYW55IGhpZ2ggYml0cyBhcmUg
aWdub3JlZC4gVGhlIHNtYWxsZXIgdGhlIHdpZHRoLAorICAgICAgICAgICAgLy8gdGhlIHN0cm9u
Z2VyIHRoZSBwcm9taXNlLiBUaGlzIE1vdmUgbWF5IHdlYWtlbiB0aGF0IHByb21pc2UgaWYgd2Ug
a25vdyB0aGF0ICVkc3QgaXMgbWFraW5nCisgICAgICAgICAgICAvLyBhIHdlYWtlciBwcm9taXNl
LiBTdWNoIGJhY2t3YXJkIGZsb3cgaXMgdGhlIG9ubHkgdGhpbmcgdGhhdCBkZXRlcm1pbmVzIHNy
Y1dpZHRoKCkuCisgICAgICAgICAgICBpZiAoc3JjV2lkdGhzLnVzZSA8IGRzdFdpZHRocy51c2Up
IHsKKyAgICAgICAgICAgICAgICBzcmNXaWR0aHMudXNlID0gZHN0V2lkdGhzLnVzZTsKKyAgICAg
ICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBX
aWR0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1w
V2lkdGguaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
VG1wV2lkdGguaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWlyVG1wV2lkdGhfaAor
I2RlZmluZSBBaXJUbXBXaWR0aF9oCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAi
QWlyQXJnLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitjbGFzcyBDb2RlOworCitjbGFzcyBUbXBX
aWR0aCB7CitwdWJsaWM6CisgICAgVG1wV2lkdGgoKTsKKyAgICBUbXBXaWR0aChDb2RlJik7Cisg
ICAgflRtcFdpZHRoKCk7CisKKyAgICB2b2lkIHJlY29tcHV0ZShDb2RlJik7CisKKyAgICAvLyBU
aGUgd2lkdGggb2YgYSBUbXAgaXMgdGhlIG51bWJlciBvZiBiaXRzIHRoYXQgeW91IG5lZWQgdG8g
YmUgYWJsZSB0byB0cmFjayB3aXRob3V0IHNvbWUgdHJpdmlhbAorICAgIC8vIHJlY292ZXJ5LiBB
IFRtcCBtYXkgaGF2ZSBhICJzdWJ3aWR0aCIgKHNheSwgV2lkdGgzMiBvbiBhIDY0LWJpdCBzeXN0
ZW0pIGlmIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nCisgICAgLy8gaXMgdHJ1ZToKKyAgICAvLwor
ICAgIC8vIC0gVGhlIGhpZ2ggYml0cyBhcmUgbmV2ZXIgcmVhZC4KKyAgICAvLyAtIFRoZSBoaWdo
IGJpdHMgYXJlIGFsd2F5cyB6ZXJvLgorICAgIC8vCisgICAgLy8gVGhpcyBkb2Vzbid0IHRlbGwg
eW91IHdoaWNoIG9mIHRob3NlIHByb3BlcnRpZXMgaG9sZHMsIGJ1dCB5b3UgY2FuIHF1ZXJ5IHRo
YXQgdXNpbmcgdGhlIG90aGVyCisgICAgLy8gbWV0aG9kcy4KKyAgICBBcmc6OldpZHRoIHdpZHRo
KFRtcCB0bXApIGNvbnN0CisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX3dpZHRoLmZpbmQo
dG1wKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV93aWR0aC5lbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBBcmc6Om1pbmltdW1XaWR0aChBcmcodG1wKS50eXBlKCkpOworICAgICAgICByZXR1cm4g
c3RkOjptaW4oaXRlci0+dmFsdWUudXNlLCBpdGVyLT52YWx1ZS5kZWYpOworICAgIH0KKworICAg
IC8vIFRoaXMgaW5kaXJlY3RseSB0ZWxscyB5b3UgaG93IG11Y2ggb2YgdGhlIHRtcCdzIGhpZ2gg
Yml0cyBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLiBUaGUgbnVtYmVyIG9mCisgICAgLy8gaGln
aCBiaXRzIHRoYXQgYXJlIHplcm8gYXJlOgorICAgIC8vCisgICAgLy8gICAgIFRvdGFsQml0cyAt
IGRlZldpZHRoKHRtcCkKKyAgICAvLworICAgIC8vIFdoZXJlIFRvdGFsQml0cyBhcmUgdGhlIHRv
dGFsIG51bWJlciBvZiBiaXRzIGluIHRoZSByZWdpc3Rlciwgc28gNjQgb24gYSA2NC1iaXQgc3lz
dGVtLgorICAgIEFyZzo6V2lkdGggZGVmV2lkdGgoVG1wIHRtcCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGF1dG8gaXRlciA9IG1fd2lkdGguZmluZCh0bXApOworICAgICAgICBpZiAoaXRlciA9PSBt
X3dpZHRoLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZzo6bWluaW11bVdpZHRoKEFyZyh0
bXApLnR5cGUoKSk7CisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZS5kZWY7CisgICAgfQorCisg
ICAgLy8gVGhpcyB0ZWxscyB5b3UgaG93IG11Y2ggb2YgVG1wIGlzIGdvaW5nIHRvIGJlIHJlYWQu
CisgICAgQXJnOjpXaWR0aCB1c2VXaWR0aChUbXAgdG1wKSBjb25zdAorICAgIHsKKyAgICAgICAg
YXV0byBpdGVyID0gbV93aWR0aC5maW5kKHRtcCk7CisgICAgICAgIGlmIChpdGVyID09IG1fd2lk
dGguZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnOjptaW5pbXVtV2lkdGgoQXJnKHRtcCku
dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnVzZTsKKyAgICB9CisgICAgCitw
cml2YXRlOgorICAgIHN0cnVjdCBXaWR0aHMgeworICAgICAgICBXaWR0aHMoKSB7IH0KKworICAg
ICAgICBXaWR0aHMoQXJnOjpUeXBlIHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVzZSA9
IEFyZzo6bWluaW11bVdpZHRoKHR5cGUpOworICAgICAgICAgICAgZGVmID0gQXJnOjptaW5pbXVt
V2lkdGgodHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFyZzo6V2lkdGggdXNl
OworICAgICAgICBBcmc6OldpZHRoIGRlZjsKKyAgICB9OworICAgIAorICAgIEhhc2hNYXA8VG1w
LCBXaWR0aHM+IG1fd2lkdGg7Cit9OworCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWly
CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCisjZW5kaWYgLy8gQWlyVG1wV2lkdGhfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclVzZUNvdW50cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVXNlQ291bnRzLmgJKHJl
dmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVXNlQ291
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIGZyZXF1ZW5jeSAqPSBPcHRpb25zOjpyYXJlQmxvY2tQZW5hbHR5KCk7CiAgICAgICAg
ICAgICBmb3IgKEluc3QmIGluc3QgOiAqYmxvY2spIHsKICAgICAgICAgICAgICAgICBpbnN0LmZv
ckVhY2g8VGhpbmc+KAotICAgICAgICAgICAgICAgICAgICBbJl0gKFRoaW5nJiBhcmcsIEFyZzo6
Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgWyZdIChUaGluZyYg
YXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBDb3VudHMmIGNvdW50cyA9IG1fY291bnRzLmFkZChhcmcsIENvdW50cygp
KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcmc6Omlz
V2FybVVzZShyb2xlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2Rl
X2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2luZyBjb3B5KQpAQCAtNDQs
MTEgKzQ0LDEyIEBAIGNsYXNzIE9wY29kZQogZW5kCiAKIGNsYXNzIEFyZwotICAgIGF0dHJfcmVh
ZGVyIDpyb2xlLCA6dHlwZQorICAgIGF0dHJfcmVhZGVyIDpyb2xlLCA6dHlwZSwgOndpZHRoCiAK
LSAgICBkZWYgaW5pdGlhbGl6ZShyb2xlLCB0eXBlKQorICAgIGRlZiBpbml0aWFsaXplKHJvbGUs
IHR5cGUsIHdpZHRoKQogICAgICAgICBAcm9sZSA9IHJvbGUKICAgICAgICAgQHR5cGUgPSB0eXBl
CisgICAgICAgIEB3aWR0aCA9IHdpZHRoCiAgICAgZW5kCiBlbmQKIApAQCAtMTczLDcgKzE3NCw3
IEBAIGRlZiBsZXgoc3RyLCBmaWxlTmFtZSkKIGVuZAogCiBkZWYgaXNVRCh0b2tlbikKLSAgICB0
b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChVQSkpXFovCisgICAgdG9rZW4gPX4gL1xBKChVKXwo
RCl8KFVEKXwoWkQpfChVWkQpfChVQSkpXFovCiBlbmQKIAogZGVmIGlzR0YodG9rZW4pCkBAIC0x
ODgsOCArMTg5LDEyIEBAIGRlZiBpc0FyY2godG9rZW4pCiAgICAgdG9rZW4gPX4gL1xBKCh4ODYp
fCh4ODZfMzIpfCh4ODZfNjQpfChhcm0pfChhcm12Nyl8KGFybTY0KXwoMzIpfCg2NCkpXFovCiBl
bmQKIAorZGVmIGlzV2lkdGgodG9rZW4pCisgICAgdG9rZW4gPX4gL1xBKCg4KXwoMTYpfCgzMil8
KDY0KXwoUHRyKSlcWi8KK2VuZAorCiBkZWYgaXNLZXl3b3JkKHRva2VuKQotICAgIGlzVUQodG9r
ZW4pIG9yIGlzR0YodG9rZW4pIG9yIGlzS2luZCh0b2tlbikgb3IgaXNBcmNoKHRva2VuKSBvcgor
ICAgIGlzVUQodG9rZW4pIG9yIGlzR0YodG9rZW4pIG9yIGlzS2luZCh0b2tlbikgb3IgaXNBcmNo
KHRva2VuKSBvciBpc1dpZHRoKHRva2VuKSBvcgogICAgICAgICB0b2tlbiA9PSAic3BlY2lhbCIg
b3IgdG9rZW4gPT0gImFzIgogZW5kCiAKQEAgLTI1Niw2ICsyNjEsMTMgQEAgY2xhc3MgUGFyc2Vy
CiAgICAgICAgIHJlc3VsdAogICAgIGVuZAogCisgICAgZGVmIGNvbnN1bWVXaWR0aAorICAgICAg
ICByZXN1bHQgPSB0b2tlbi5zdHJpbmcKKyAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgd2lk
dGggKDgsIDE2LCAzMiwgb3IgNjQpIikgdW5sZXNzIGlzV2lkdGgocmVzdWx0KQorICAgICAgICBh
ZHZhbmNlCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorCiAgICAgZGVmIHBhcnNlQXJjaHMKICAg
ICAgICAgcmV0dXJuIG5pbCB1bmxlc3MgaXNBcmNoKHRva2VuKQogCkBAIC0zNTAsOCArMzYyLDEw
IEBAIGNsYXNzIFBhcnNlcgogICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9IGNvbnN1bWVS
b2xlCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lKCI6IikKICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGUgPSBjb25zdW1lVHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3VtZSgiOiIpCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGNvbnN1bWVXaWR0aAog
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1
cmUgPDwgQXJnLm5ldyhyb2xlLCB0eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0
dXJlIDw8IEFyZy5uZXcocm9sZSwgdHlwZSwgd2lkdGgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIHVubGVzcyB0b2tlbiA9PSAiLCIKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoIiwiKQpAQCAtNjA2LDI2ICs2MjAsMzcgQEAg
d3JpdGVIKCJPcGNvZGVVdGlscyIpIHsKICAgICBtYXRjaEluc3RPdmVybG9hZChvdXRwLCA6ZmFz
dCwgInRoaXMiKSB7CiAgICAgICAgIHwgb3Bjb2RlLCBvdmVybG9hZCB8CiAgICAgICAgIGlmIG9w
Y29kZS5zcGVjaWFsCi0gICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1swXSwgQXJn
OjpVc2UsIEFyZzo6R1ApOyAvLyBUaGlzIGlzIGJhc2ljYWxseSBib2d1cywgYnV0IGl0IHdvcmtz
IGYgYW5hbHlzZXMgbW9kZWwgU3BlY2lhbCBhcyBhbiBpbW1lZGlhdGUuIgorICAgICAgICAgICAg
b3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbMF0sIEFyZzo6VXNlLCBBcmc6OkdQLCBBcmc6OnBvaW50
ZXJXaWR0aCgpKTsgLy8gVGhpcyBpcyBiYXNpY2FsbHkgYm9ndXMsIGJ1dCBpdCB3b3JrcyBmb3Ig
YW5hbHlzZXMgdGhhdCBtb2RlbCBTcGVjaWFsIGFzIGFuIGltbWVkaWF0ZS4iCiAgICAgICAgICAg
ICBvdXRwLnB1dHMgImFyZ3NbMF0uc3BlY2lhbCgpLT5mb3JFYWNoQXJnKCp0aGlzLCBzY29wZWRM
YW1iZGE8RWFjaEFyZ0NhbGxiYWNrPihmdW5jdG9yKSk7IgogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBvdmVybG9hZC5zaWduYXR1cmUuZWFjaF93aXRoX2luZGV4IHsKICAgICAgICAgICAgICAg
ICB8IGFyZywgaW5kZXggfAorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHJvbGUg
PSBuaWwKICAgICAgICAgICAgICAgICBjYXNlIGFyZy5yb2xlCiAgICAgICAgICAgICAgICAgd2hl
biAiVSIKICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2UiCiAgICAgICAgICAgICAgICAg
d2hlbiAiRCIKICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCisgICAgICAgICAgICAg
ICAgd2hlbiAiWkQiCisgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiWkRlZiIKICAgICAgICAg
ICAgICAgICB3aGVuICJVRCIKICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VEZWYiCisg
ICAgICAgICAgICAgICAgd2hlbiAiVVpEIgorICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVz
ZVpEZWYiCiAgICAgICAgICAgICAgICAgd2hlbiAiVUEiCiAgICAgICAgICAgICAgICAgICAgIHJv
bGUgPSAiVXNlQWRkciIKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHJhaXNlCiAgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBpZiBhcmcud2lk
dGggPT0gIlB0ciIKKyAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAiQXJnOjpwb2ludGVyV2lk
dGgoKSIKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0g
IkFyZzo6V2lkdGgje2FyZy53aWR0aH0iCisgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1d
LCBBcmc6OiN7cm9sZX0sIEFyZzo6I3thcmcudHlwZX1QKTsiCisgICAgICAgICAgICAgICAgb3V0
cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7cm9sZX0sIEFyZzo6I3thcmcu
dHlwZX1QLCAje3dpZHRofSk7IgogICAgICAgICAgICAgfQogICAgICAgICBlbmQKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlzaW9uIDE5NDMxNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gV2Ug
YXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gZXhwZXJpbWVudGFsIHRyYW5zaXRpb24gZnJvbSBMTFZN
IHRvIEIzIGFzIHRoZSBiYWNrZW5kIGZvciB0aGUgRlRMLiBXZSBkb24ndAogLy8geWV0IGtub3cg
aG93IGl0IHdpbGwgdHVybiBvdXQuIEZvciBub3csIHRoaXMgZmxhZyB3aWxsIGNvbnRyb2wgd2hl
dGhlciBGVEwgdXNlcyBCMy4gUmVtZW1iZXIgdG8gc2V0IHRoaXMKIC8vIHRvIDAgYmVmb3JlIGNv
bW1pdHRpbmchCi0jZGVmaW5lIEZUTF9VU0VTX0IzIDAKKyNkZWZpbmUgRlRMX1VTRVNfQjMgMQog
CiBzdHJ1Y3QgTm9kZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267704</attachid>
            <date>2015-12-19 14:06:42 -0800</date>
            <delta_ts>2015-12-19 14:08:36 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>80546</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMiBA
QAorMjAxNS0xMi0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzLT5BaXIgbG93ZXJpbmcgaW5jb3JyZWN0bHkgY29weS1wcm9wYWdhdGVzIG92ZXIgWkV4dDMy
J3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjM2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBp
bnN0cnVjdGlvbiBzZWxlY3RvciB0aGlua3MgdGhhdCBWYWx1ZSdzIHRoYXQgcmV0dXJuIEludDMy
J3MgYXJlIGdvaW5nIHRvIGFsd2F5cyBiZSBsb3dlcmVkCisgICAgICAgIHRvIGluc3RydWN0aW9u
cyB0aGF0IHplcm8tZXh0ZW5kIHRoZSBkZXN0aW5hdGlvbi4gQnV0IHRoaXMgaXNuJ3QgYWN0dWFs
bHkgdHJ1ZS4gSWYgeW91IGhhdmUgYW4KKyAgICAgICAgQWRkMzIgd2l0aCBhIGRlc3RpbmF0aW9u
IG9uIHRoZSBzdGFjayAoaS5lLiBzcGlsbGVkKSB0aGVuIGl0IG9ubHkgd3JpdGVzIDQgYnl0ZXMu
IFRoZW4sIHRoZQorICAgICAgICBmaWxsZXIgd2lsbCBsb2FkIDggYnl0ZXMgZnJvbSB0aGUgc3Rh
Y2sgYXQgdGhlIHBvaW50IG9mIHVzZS4gU28sIHRoZSB1c2Ugb2YgdGhlIEFkZDMyIHdpbGwgc2Vl
CisgICAgICAgIGdhcmJhZ2UgaW4gdGhlIGhpZ2ggYml0cy4KKworICAgICAgICBUaGUgZmFjdCB0
aGF0IHRoZSBzcGlsbGVyIGNob3NlIHRvIHVzZSA4IGJ5dGVzIGZvciBhIFRtcCB0aGF0IGdldHMg
ZGVmaW5lZCBieSBhbiBBZGQzMiBpcyBhCisgICAgICAgIHByZXR0eSBzYWQgYnVnLCBidXQ6CisK
KyAgICAgICAgLSBJdCdzIGVudGlyZWx5IHVwIHRvIHRoZSBzcGlsbGVyIHRvIGRlY2lkZSBob3cg
bWFueSBieXRlcyB0byB1c2UgZm9yIGEgVG1wLCBzaW5jZSB3ZSBkbyBub3QKKyAgICAgICAgICBh
c2NyaWJlIGEgdHlwZSB0byBUbXAncy4gV2UgY291bGQgYXNjcmliZSB0eXBlcyB0byBUbXAncywg
YnV0IHRoZW4gY29hbGVzY2luZyB3b3VsZCBiZWNvbWUKKyAgICAgICAgICBoYXJkZXIuIE91ciBn
b2FsIGlzIHRvIGZpeCB0aGUgYnVnIHdoaWxlIHN0aWxsIGVuYWJsaW5nIGNvYWxlc2NpbmcgaW4g
Y2FzZXMgbGlrZSAiYVtpXSIgd2hlcmUKKyAgICAgICAgICAiaSIgaXMgYSAzMi1iaXQgaW50ZWdl
ciB0aGF0IGlzIGNvbXB1dGVkIHVzaW5nIG9wZXJhdGlvbnMgdGhhdCBhbHJlYWR5IGRvIHplcm8t
ZXh0ZW5zaW9uLgorICAgICAgICAKKyAgICAgICAgLSBNb3JlIGJyb2FkbHksIGl0J3Mgc3RyYW5n
ZSB0aGF0IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvciBkZWNpZGVzIHdoZXRoZXIgYSBWYWx1ZSB3
aWxsIGJlCisgICAgICAgICAgbG93ZXJlZCB0byBzb21ldGhpbmcgdGhhdCB6ZXJvLWV4dGVuZHMu
IFRoYXQncyB0b28gY29uc3RyYWluaW5nLCBzaW5jZSB0aGUgbW9zdCBvcHRpbWFsCisgICAgICAg
ICAgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIG1pZ2h0IGludm9sdmUgc29tZXRoaW5nIHRoYXQgZG9l
c24ndCB6ZXJvLWV4dGVuZCBpbiBjYXNlcyBvZiBzcGlsbGluZywgc28KKyAgICAgICAgICB0aGUg
emVyby1leHRlbnNpb24gc2hvdWxkIG9ubHkgaGFwcGVuIGlmIGl0J3MgYWN0dWFsbHkgbmVlZGVk
LiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0bworICAgICAgICAgIHVuZGVyc3RhbmQgd2hpY2gg
QWlyIGluc3RydWN0aW9ucyBjYXVzZSB6ZXJvLWV4dGVuc2lvbnMuCisKKyAgICAgICAgLSBJZiB3
ZSBrbm93IHdoaWNoIEFpciBpbnN0cnVjdGlvbnMgY2F1c2UgemVyby1leHRlbnNpb25zLCB0aGVu
IHdlIGRvbid0IG5lZWQgdGhlIGluc3RydWN0aW9uCisgICAgICAgICAgc2VsZWN0b3IgdG8gY29w
eS1wcm9wYWdhdGUgWkV4dDMyJ3MuIFdlIGhhdmUgY29weS1wcm9wYWdhdGlvbiBpbiBBaXIgdGhh
bmtzIHRvIHRoZSByZWdpc3RlcgorICAgICAgICAgIGFsbG9jYXRvci4KKworICAgICAgICBJbiBm
YWN0LCB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGlzIGV4YWN0bHkgd2hlcmUgYWxsIG9mIHRoZSBw
aWVjZXMgY29tZSB0b2dldGhlci4gSXQncyB0aGVyZSB0aGF0CisgICAgICAgIHdlIHdhbnQgdG8g
a25vdyB3aGljaCBvcGVyYXRpb25zIHplcm8tZXh0ZW5kIGFuZCB3aGljaCBkb24ndC4gSXQgYWxz
byB3YW50cyB0byBrbm93IGhvdyBtYW55IGJpdHMKKyAgICAgICAgb2YgYSBUbXAgZWFjaCBpbnN0
cnVjdGlvbiByZWFkcy4gQXJtZWQgd2l0aCB0aGF0IGluZm9ybWF0aW9uLCB0aGUgcmVnaXN0ZXIg
YWxsb2NhdG9yIGNhbiBlbWl0CisgICAgICAgIG1vcmUgb3B0aW1hbCBzcGlsbCBjb2RlLCB1c2Ug
bGVzcyBzdGFjayBzcGFjZSBmb3Igc3BpbGwgc2xvdHMsIGFuZCBjb2FsZXNjZSBNb3ZlMzIncy4g
QXMgYSBib251cywKKyAgICAgICAgb24gWDg2LCBpdCByZXBsYWNlcyBNb3ZlJ3Mgd2l0aCBNb3Zl
MzIncyB3aGVuZXZlciBpdCBjYW4uIE9uIFg4NiwgTW92ZTMyIGlzIGNoZWFwZXIuCisKKyAgICAg
ICAgVGhpcyBmaXhlcyBhIGNyYXNoIGJ1ZyBpbiBWOC9lbmNyeXB0LiBBZnRlciBmaXhpbmcgdGhp
cywgSSBvbmx5IG5lZWRlZCB0d28gbWlub3IgZml4ZXMgdG8gZ2V0CisgICAgICAgIFY4L2VuY3J5
cHQgdG8gcnVuLiBXZSdyZSBhYm91dCAxMCUgYmVoaW5kIExMVk0gb24gc3RlYWR5IHN0YXRlIHRo
cm91Z2hwdXQgb24gdGhpcyB0ZXN0LiBJdAorICAgICAgICBhcHBlYXJzIHRvIGJlIG1vc3RseSBk
dWUgdG8gZXhjZXNzaXZlIHNwaWxsaW5nIGNhdXNlZCBieSBDQ2FsbCBzbG93IHBhdGhzLiBUaGF0
J3MgZml4YWJsZTogd2UKKyAgICAgICAgY291bGQgbWFrZSBDQ2FsbHMgb24gc2xvdyBwYXRocyB1
c2UgYSB2YXJpYW50IG9mIENDYWxsU3BlY2lhbCB0aGF0IHByb21pc2VzIG5vdCB0byBjbG9iYmVy
IGFueQorICAgICAgICByZWdpc3RlcnMsIGFuZCB0aGVuIGhhdmUgaXQgZW1pdCBzcGlsbCBjb2Rl
IGFyb3VuZCB0aGUgY2FsbCBpdHNlbGYuIExMVk0gcHJvYmFibHkgZ2V0cyB0aGlzCisgICAgICAg
IG9wdGltaXphdGlvbiBmcm9tIGl0cyBsaXZlIHJhbmdlIHNwbGl0dGluZy4KKworICAgICAgICBJ
IHRyaWVkIHdyaXRpbmcgYSByZWdyZXNzaW9uIHRlc3QuIFRoZSBwcm9ibGVtIGlzIHRoYXQgeW91
IG5lZWQgZ2FyYmFnZSBvbiB0aGUgc3RhY2sgZm9yIHRoaXMgdG8KKyAgICAgICAgd29yaywgYW5k
IEkgZGlkbid0IGZlZWwgbGlrZSB3cml0aW5nIGEgZmxha3kgdGVzdC4gSXQgYXBwZWFycyB0aGF0
IHJ1bm5pbmcgVjgvZW5jcnlwdCB3aWxsIGNvdmVyCisgICAgICAgIHRoaXMsIHNvIHdlIGRvIGhh
dmUgY292ZXJhZ2UuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6
CisgICAgICAgIChKU0M6OmlzWDg2KToKKyAgICAgICAgKEpTQzo6aXNYODZfNjQpOgorICAgICAg
ICAoSlNDOjpvcHRpbWl6ZUZvckFSTXY3SURJVlN1cHBvcnRlZCk6CisgICAgICAgIChKU0M6Om9w
dGltaXplRm9yWDg2KToKKyAgICAgICAgKEpTQzo6b3B0aW1pemVGb3JYODZfNjQpOgorICAgICAg
ICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmhpZ2hCaXRzQXJlWmVybyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OnNob3VsZENvcHlQcm9wYWdhdGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojpsb3dlcik6CisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAgICAgICogYjMv
QjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFs
Ojpmb3JFYWNoQXJnSW1wbCk6CisgICAgICAgICogYjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIz
L2Fpci9BaXJBbGxvY2F0ZVN0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YWxsb2Nh
dGVTdGFjayk6CisgICAgICAgICogYjMvYWlyL0FpckFyZy5jcHA6CisgICAgICAgIChXVEY6OnBy
aW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6QXJnOjpwb2ludGVyV2lkdGgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6
OmlzQW55VXNlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc0NvbGRVc2UpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRWFybHlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpBcmc6OmlzRGVmKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1pEZWYpOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OndpZHRoRm9yQjNUeXBlKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjpjb25zZXJ2YXRpdmVXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6OkFyZzo6bWluaW11bVdpZHRoKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpieXRl
cyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6d2lkdGhGb3JCeXRlcyk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6OkFyZzo6QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpm
b3JFYWNoVG1wKToKKyAgICAgICAgKiBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6Q0NhbGxTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAgICAgICAgKiBi
My9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpl
bGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICogYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3Rl
clN0YWxscy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmZpeFBhcnRpYWxSZWdpc3RlclN0
YWxscyk6CisgICAgICAgICogYjMvYWlyL0Fpckluc3QuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpJbnN0OjpoYXNBcmdFZmZlY3RzKToKKyAgICAgICAgKiBiMy9haXIvQWlySW5zdC5oOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0Ojpmb3JFYWNoVG1wRmFzdCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okluc3Q6OmZvckVhY2hUbXApOgorICAgICAgICAqIGIzL2Fpci9BaXJJbnN0
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0Ojpmb3JFYWNoVG1wV2l0aEV4
dHJhQ2xvYmJlcmVkUmVncyk6CisgICAgICAgICogYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJD
b2FsZXNjaW5nLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyTGl2ZW5lc3MuaDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QWJzdHJhY3RMaXZlbmVzczo6QWJzdHJhY3RMaXZlbmVzcyk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OkFic3RyYWN0TGl2ZW5lc3M6OkxvY2FsQ2FsYzo6ZXhlY3V0ZSk6
CisgICAgICAgICogYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAgICAgICAqIGIzL2Fpci9B
aXJTcGlsbEV2ZXJ5dGhpbmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpzcGlsbEV2ZXJ5
dGhpbmcpOgorICAgICAgICAqIGIzL2Fpci9BaXJUbXBXaWR0aC5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpUbXBXaWR0aDo6VG1wV2lkdGgpOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpUbXBXaWR0aDo6flRtcFdpZHRoKToKKyAgICAgICAgKiBiMy9haXIvQWlyVG1wV2lkdGgu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6OlRtcFdpZHRoOjp3aWR0aCk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OlRtcFdpZHRoOjpkZWZXaWR0aCk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OlRtcFdpZHRoOjp1c2VXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlRtcFdp
ZHRoOjpXaWR0aHM6OldpZHRocyk6CisgICAgICAgICogYjMvYWlyL0FpclVzZUNvdW50cy5oOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpVc2VDb3VudHM6OlVzZUNvdW50cyk6CisgICAgICAgICog
YjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmI6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja01lZ2FDb21ibyk6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0Q2hlY2tUcmlja3lNZWdhQ29tYm8pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrVHdv
TWVnYUNvbWJvcyk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorCiAyMDE1LTEyLTE5ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFN0cmVh
bWxpbmUgVG1wIGluZGV4aW5nIGluc2lkZSB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTY5NSw2ICs2OTUsOCBAQAogCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNC
MzMgLyogVmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTA1MDIzMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwICovOyB9
OwogCQkwRkUwNTAyRDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUwNTAyNDFBQTkwOTU2MDBEMzNC
MzMgLyogVmFyT2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZFMDUwMkYxQUFBODA2OTAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1Rh
YmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RTA1MDJFMUFBQTgwNjkwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5jcHAgKi87IH07
CisJCTBGRTBFNEFEMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUwRTRBQjFDMjRDOTRBMDAy
RTE3QjYgLyogQWlyVG1wV2lkdGguY3BwICovOyB9OworCQkwRkUwRTRBRTFDMjRDOTRBMDAyRTE3
QjYgLyogQWlyVG1wV2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTBFNEFDMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5oICovOyB9
OwogCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4
IC8qIE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAx
OTZDNDggLyogT3B0aW9ucy5jcHAgKi87IH07CiAJCTBGRTI1NEY2MUFCREREMjIwMEE3QzZEMiAv
KiBERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTI1NEY0MUFCREREMjIwMEE3QzZEMiAvKiBERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlLmNwcCAqLzsgfTsKQEAgLTI4MzUsNiArMjgzNyw4IEBACiAJCTBG
RTA1MDIzMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmFyT2Zmc2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZFMDUwMjQxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYXJPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZFMDUwMkUxQUFBODA2OTAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1Rh
YmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZEFyZ3Vt
ZW50c1RhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMEU0QUIxQzI0
Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEFpclRtcFdpZHRoLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJUbXBXaWR0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTBFNEFDMUMyNEM5NEEwMDJFMTdC
NiAvKiBBaXJUbXBXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJU
bXBXaWR0aC5oOyBwYXRoID0gYjMvYWlyL0FpclRtcFdpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTI1NEY0MUFCREREMjIwMEE3QzZEMiAvKiBERkdWYXJhcmdz
Rm9yd2FyZGluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmFyZ3NGb3J3
YXJkaW5nUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc5OSw2ICs0
ODAzLDggQEAKIAkJCQkwRkVDODU2ODFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wLmNwcCAqLywK
IAkJCQkwRkVDODU2OTFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wLmggKi8sCiAJCQkJMEZFQzg1
NkExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclRtcElubGluZXMuaCAqLywKKwkJCQkwRkUwRTRBQjFD
MjRDOTRBMDAyRTE3QjYgLyogQWlyVG1wV2lkdGguY3BwICovLAorCQkJCTBGRTBFNEFDMUMyNEM5
NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5oICovLAogCQkJCTBGMzczMDkyMUMwRDY3RUUwMDA1
MkJGQSAvKiBBaXJVc2VDb3VudHMuaCAqLywKIAkJCQkwRkVDODU2QjFCREFDREM3MDA4MEZGNzQg
LyogQWlyVmFsaWRhdGUuY3BwICovLAogCQkJCTBGRUM4NTZDMUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJWYWxpZGF0ZS5oICovLApAQCAtNzI5NCw2ICs3MzAwLDcgQEAKIAkJCQkwRjIzNUJEOTE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCOUNGNzE5RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkRCMTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExFeGl0VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRTBFNEFFMUMyNEM5NEEwMDJFMTdC
NiAvKiBBaXJUbXBXaWR0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGMjk5NkMxN0EwQkI2NzAw
MTA0MTdBIC8qIEZUTEZhaWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTJDMTcwQjY2MTkw
MEJCNzIyQyAvKiBGVExGb3JtYXR0ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEz
MUExN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05MjI3LDYgKzkyMzQsNyBAQAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAv
KiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDQ0YwRDBDMEVGMEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3MDVCNDFBQjFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGRTBFNEFEMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDVCNDFBRDFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9s
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzA1QjQxQUYxQTZFNTAxRTAwNzE2
NzU3IC8qIFN5bWJvbE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDVCNDFCMTFBNkU1
MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw2ICs2NywxNSBAQCBpbmxpbmUgYm9vbCBpc1g4NigpCiAjZW5kaWYKIH0KIAoraW5saW5lIGJv
b2wgaXNYODZfNjQoKQoreworI2lmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHRydWU7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBpbmxpbmUgYm9vbCBvcHRpbWl6ZUZv
ckFSTXY3SURJVlN1cHBvcnRlZCgpCiB7CiAgICAgcmV0dXJuIGlzQVJNdjdJRElWU3VwcG9ydGVk
KCkgJiYgT3B0aW9uczo6dXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zKCk7CkBA
IC04Miw2ICs5MSwxMSBAQCBpbmxpbmUgYm9vbCBvcHRpbWl6ZUZvclg4NigpCiAgICAgcmV0dXJu
IGlzWDg2KCkgJiYgT3B0aW9uczo6dXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25z
KCk7CiB9CiAKK2lubGluZSBib29sIG9wdGltaXplRm9yWDg2XzY0KCkKK3sKKyAgICByZXR1cm4g
aXNYODZfNjQoKSAmJiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlv
bnMoKTsKK30KKwogY2xhc3MgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOwogY2xhc3Mg
RGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOwogY2xhc3MgTGlua0J1ZmZlcjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEb21pbmF0b3JzLmgJKHJldmlzaW9uIDE5NDMx
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0RvbWluYXRvcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdURjo6RG9t
aW5hdG9yCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9taW5h
dG9ycyhQcm9jZWR1cmUmIHByb2MpCi0gICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENGRz4ocHJv
Yy5jZmcoKSwgc2hvdWxkVmFsaWRhdGVJUigpKQorICAgICAgICA6IFdURjo6RG9taW5hdG9yczxD
Rkc+KHByb2MuY2ZnKCkpCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwx
NiArMTU4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBOT1RFOiBU
aGlzIGVudGlyZSBtZWNoYW5pc20gY291bGQgYmUgZG9uZSBvdmVyIEFpciwgaWYgd2UgZmVsdCB0
aGF0IHRoaXMgd291bGQgYmUgZmFzdCBlbm91Z2guCi0gICAgLy8gRm9yIG5vdyB3ZSdyZSBhc3N1
bWluZyB0aGF0IGl0J3MgZmFzdGVyIHRvIGRvIHRoaXMgaGVyZSwgc2luY2UgYW5hbHl6aW5nIEIz
IGlzIHNvIGNoZWFwLgogICAgIGJvb2wgc2hvdWxkQ29weVByb3BhZ2F0ZShWYWx1ZSogdmFsdWUp
CiAgICAgewogICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICBjYXNl
IFRydW5jOgogICAgICAgICBjYXNlIElkZW50aXR5OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGNhc2UgWkV4dDMyOgotICAgICAgICAgICAgcmV0dXJuIGhpZ2hCaXRzQXJlWmVy
byh2YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CkBAIC0xNzY1LDExICsxNzYxLDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2UgWkV4dDMyOiB7Ci0gICAgICAgICAgICBpZiAoaGlnaEJpdHNB
cmVaZXJvKG1fdmFsdWUtPmNoaWxkKDApKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCh0bXAo
bV92YWx1ZS0+Y2hpbGQoMCkpID09IHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBhcHBlbmRVbk9wPE1vdmUzMiwgQWly
OjpPb3BzPihtX3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3Bl
Y2lhbC5jcHAJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1BhdGNocG9pbnRTcGVjaWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCB2
b2lkIFBhdGNocG9pbnRTcGVjaWFsOjpmb3JFYWNoQXJnKEluc3QmCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBjYWxsYmFjayhpbnN0LmFyZ3NbMV0sIEFyZzo6RGVmLCBpbnN0Lm9yaWdp
bi0+YWlyVHlwZSgpKTsKKyAgICBjYWxsYmFjayhpbnN0LmFyZ3NbMV0sIEFyZzo6RGVmLCBpbnN0
Lm9yaWdpbi0+YWlyVHlwZSgpLCBpbnN0Lm9yaWdpbi0+YWlyV2lkdGgoKSk7CiAgICAgZm9yRWFj
aEFyZ0ltcGwoMCwgMiwgaW5zdCwgU2FtZUFzUmVwLCBjYWxsYmFjayk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAkocmV2aXNp
b24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDggKzExMSw5IEBAIHZvaWQgU3RhY2ttYXBTcGVj
aWFsOjpmb3JFYWNoQXJnSW1wbCgKICAgICAgICAgICAgIHJvbGUgPSBBcmc6OkxhdGVVc2U7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY2FsbGJhY2so
YXJnLCByb2xlLCBBcmc6OnR5cGVGb3JCM1R5cGUoY2hpbGQudmFsdWUoKS0+dHlwZSgpKSk7CisK
KyAgICAgICAgVHlwZSB0eXBlID0gY2hpbGQudmFsdWUoKS0+dHlwZSgpOworICAgICAgICBjYWxs
YmFjayhhcmcsIHJvbGUsIEFyZzo6dHlwZUZvckIzVHlwZSh0eXBlKSwgQXJnOjp3aWR0aEZvckIz
VHlwZSh0eXBlKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmgJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhp
cyBpcyB1c2VmdWwgd2hlbiBsb3dlcmluZy4gTm90ZSB0aGF0IHRoaXMgaXMgb25seSB2YWxpZCBm
b3Igbm9uLXZvaWQgdmFsdWVzLgogICAgIEFpcjo6QXJnOjpUeXBlIGFpclR5cGUoKSBjb25zdCB7
IHJldHVybiBBaXI6OkFyZzo6dHlwZUZvckIzVHlwZSh0eXBlKCkpOyB9CisgICAgQWlyOjpBcmc6
OldpZHRoIGFpcldpZHRoKCkgY29uc3QgeyByZXR1cm4gQWlyOjpBcmc6OndpZHRoRm9yQjNUeXBl
KHR5cGUoKSk7IH0KIAogICAgIEFkamFjZW5jeUxpc3QmIGNoaWxkcmVuKCkgeyByZXR1cm4gbV9j
aGlsZHJlbjsgfSAKICAgICBjb25zdCBBZGphY2VuY3lMaXN0JiBjaGlsZHJlbigpIGNvbnN0IHsg
cmV0dXJuIG1fY2hpbGRyZW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjM2OCw2ICs2MzY4LDYxIEBAIHZvaWQgdGVzdENoZWNrTWVn
YUNvbWJvKCkKICAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSkgPT0g
NDIpOwogfQogCit2b2lkIHRlc3RDaGVja1RyaWNreU1lZ2FDb21ibygpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogaW5kZXggPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMSkpKTsKKworICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXgsCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpKTsK
KyAgICAKKyAgICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVl
PigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkOFMsIE9yaWdpbigp
LCBwdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDQyKSkpOworICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7CisKKyAgICAgICAg
ICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNp
bXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAgICAgIC8vIHNhdmVzLgorICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
KTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRv
IGNvZGUgPSBjb21waWxlKHByb2MpOworCisgICAgaW50OF90IHZhbHVlOworICAgIHZhbHVlID0g
NDI7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDApID09IDApOwor
ICAgIHZhbHVlID0gMTI3OworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAy
LCAwKSA9PSAwKTsKKyAgICB2YWx1ZSA9IDQxOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2Rl
LCAmdmFsdWUgLSAyLCAwKSA9PSA0Mik7CisgICAgdmFsdWUgPSAwOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAwKSA9PSA0Mik7CisgICAgdmFsdWUgPSAtMTsKKyAg
ICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMCkgPT0gNDIpOworfQorCiB2
b2lkIHRlc3RDaGVja1R3b01lZ2FDb21ib3MoKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAt
OTQ2MCw2ICs5NTE1LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0
ZXN0U2ltcGxlQ2hlY2soKSk7CiAgICAgUlVOKHRlc3RDaGVja0xlc3NUaGFuKCkpOwogICAgIFJV
Tih0ZXN0Q2hlY2tNZWdhQ29tYm8oKSk7CisgICAgUlVOKHRlc3RDaGVja1RyaWNreU1lZ2FDb21i
bygpKTsKICAgICBSVU4odGVzdENoZWNrVHdvTWVnYUNvbWJvcygpKTsKICAgICBSVU4odGVzdENo
ZWNrVHdvTm9uUmVkdW5kYW50TWVnYUNvbWJvcygpKTsKICAgICBSVU4odGVzdENoZWNrQWRkSW1t
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9j
YXRlU3RhY2suY3BwCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFsbG9jYXRlU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrKENvZGUmIGNvZGUpCiAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IGNvZGUpIHsKICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7CiAg
ICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgWyZdIChBcmcmIGFy
ZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgeworICAgICAgICAgICAgICAgIFsmXSAoQXJn
JiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHJvbGUgPT0gQXJnOjpVc2VBZGRyICYmIGFyZy5pc1N0YWNrKCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGluZ1N0YWNrU2xvdHMuYWRkKGFyZy5zdGFja1Ns
b3QoKSk7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBhbGxv
Y2F0ZVN0YWNrKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW50ZXJmZXJp
bmc6ICIsIFdURjo6cG9pbnRlckxpc3REdW1wKGxvY2FsQ2FsYy5saXZlKCkpLCAiXG4iKTsKIAog
ICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBh
cmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKEFy
ZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghQXJnOjppc0RlZihyb2xlKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmcuaXNTdGFjaygpKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkocmV2aXNpb24gMTk0MzE2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzgsNiArMTc4LDEyIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBBcmcKICAgICBjYXNlIEFyZzo6VXNlRGVmOgogICAgICAgICBvdXQucHJpbnQoIlVzZURl
ZiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlpEZWY6CisgICAgICAgIG91dC5w
cmludCgiWkRlZiIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlVzZVpEZWY6Cisg
ICAgICAgIG91dC5wcmludCgiVXNlWkRlZiIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBB
cmc6OlVzZUFkZHI6CiAgICAgICAgIG91dC5wcmludCgiVXNlQWRkciIpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHJldmlzaW9uIDE5
NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw5ICsxMDEsMjggQEAgcHVibGljOgogICAgICAgICAvLyBMaWtlIFVzZSBv
ZiBhZGRyZXNzLCBEZWYgb2YgYWRkcmVzcyBkb2VzIG5vdCBtZWFuIGVzY2FwZS4KICAgICAgICAg
RGVmLAogCisgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIHZhcmlhbnQgb2YgRGVmIHRoYXQg
aW1wbGllcyB0aGF0IHRoZSB1cHBlciBiaXRzIG9mIHRoZSB0YXJnZXQgcmVnaXN0ZXIgYXJlCisg
ICAgICAgIC8vIHplcm8tZmlsbGVkLiBTcGVjaWZpY2FsbHksIGlmIHRoZSBXaWR0aCBvZiBhIFpE
ZWYgaXMgbGVzcyB0aGFuIHRoZSBsYXJnZXN0IHBvc3NpYmxlIHdpZHRoIG9mCisgICAgICAgIC8v
IHRoZSBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIHdlJ3JlIG9uIGEgNjQtYml0IG1hY2hpbmUgYW5k
IHdlIGhhdmUgYSBXaWR0aDMyIFpEZWYgb2YgYSBHUFIpIHRoZW4KKyAgICAgICAgLy8gdGhpcyBo
YXMgZGlmZmVyZW50IGltcGxpY2F0aW9ucyBmb3IgdGhlIHVwcGVyIGJpdHMgKGkuZS4gdGhlIHRv
cCAzMiBiaXRzIGluIG91ciBleGFtcGxlKQorICAgICAgICAvLyBkZXBlbmRpbmcgb24gdGhlIGtp
bmQgb2YgdGhlIGFyZ3VtZW50OgorICAgICAgICAvLworICAgICAgICAvLyBGb3IgcmVnaXN0ZXI6
IHRoZSB1cHBlciBiaXRzIGFyZSB6ZXJvLWZpbGxlZC4KKyAgICAgICAgLy8gRm9yIGFkZHJlc3M6
IHRoZSB1cHBlciBiaXRzIGFyZSBub3QgdG91Y2hlZCAoaS5lLiB3ZSBkbyBhIDMyLWJpdCBzdG9y
ZSBpbiBvdXIgZXhhbXBsZSkuCisgICAgICAgIC8vIEZvciB0bXA6IGVpdGhlciB0aGUgdXBwZXIg
Yml0cyBhcmUgbm90IHRvdWNoZWQgb3IgdGhleSBhcmUgemVyby1maWxsZWQsIGFuZCB3ZSB3b24n
dCBrbm93CisgICAgICAgIC8vIHdoaWNoIHVudGlsIHdlIGxvd2VyIHRoZSB0bXAgdG8gZWl0aGVy
IGEgU3RhY2tTbG90IG9yIGEgUmVnLgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgYmVoYXZp
b3Igb2YgWkRlZiBpcyBjb25zaXN0ZW50IHdpdGggd2hhdCBoYXBwZW5zIHdoZW4geW91IHBlcmZv
cm0gMzItYml0IG9wZXJhdGlvbnMgb24gYQorICAgICAgICAvLyA2NC1iaXQgR1BSLiBJdCdzIG5v
dCBjb25zaXN0ZW50IHdpdGggd2hhdCBoYXBwZW5zIHdpdGggOC1iaXQgb3IgMTYtYml0IERlZnMg
b24geDg2IEdQUnMsIG9yCisgICAgICAgIC8vIHdoYXQgaGFwcGVucyB3aXRoIGZsb2F0IERlZnMg
aW4gQVJNIE5FT04gb3IgWDg2IFNTRS4gSGVuY2Ugd2h5IHdlIGhhdmUgYm90aCBEZWYgYW5kIFpE
ZWYuCisgICAgICAgIFpEZWYsCisKICAgICAgICAgLy8gVGhpcyBpcyBhIGNvbWJpbmVkIFVzZSBh
bmQgRGVmLiBJdCBtZWFucyB0aGF0IGJvdGggdGhpbmdzIGhhcHBlbi4KICAgICAgICAgVXNlRGVm
LAogCisgICAgICAgIC8vIFRoaXMgaXMgYSBjb21iaW5lZCBVc2UgYW5kIFpEZWYuIEl0IG1lYW5z
IHRoYXQgYm90aCB0aGluZ3MgaGFwcGVuLgorICAgICAgICBVc2VaRGVmLAorCiAgICAgICAgIC8v
IFRoaXMgaXMgYSBzcGVjaWFsIGtpbmQgb2YgdXNlIHRoYXQgaXMgb25seSB2YWxpZCBmb3IgYWRk
cmVzc2VzLiBJdCBtZWFucyB0aGF0IHRoZQogICAgICAgICAvLyBpbnN0cnVjdGlvbiB3aWxsIGV2
YWx1YXRlIHRoZSBhZGRyZXNzIGV4cHJlc3Npb24gYW5kIGNvbnN1bWUgdGhlIGVmZmVjdGl2ZSBh
ZGRyZXNzLCBidXQgaXQKICAgICAgICAgLy8gd2lsbCBuZWl0aGVyIGxvYWQgbm9yIHN0b3JlLiBU
aGlzIGlzIGFuIGVzY2FwaW5nIHVzZSwgYmVjYXVzZSBub3cgdGhlIGFkZHJlc3MgbWF5IGJlCkBA
IC0xMjYsNiArMTQ1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgV2lkdGg2NAogICAgIH07CiAKKyAg
ICBzdGF0aWMgV2lkdGggcG9pbnRlcldpZHRoKCkKKyAgICB7CisgICAgICAgIGlmIChzaXplb2Yo
dm9pZCopID09IDgpCisgICAgICAgICAgICByZXR1cm4gV2lkdGg2NDsKKyAgICAgICAgcmV0dXJu
IFdpZHRoMzI7CisgICAgfQorCiAgICAgZW51bSBTaWduZWRuZXNzIDogaW50OF90IHsKICAgICAg
ICAgU2lnbmVkLAogICAgICAgICBVbnNpZ25lZApAQCAtMTM5LDkgKzE2NSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICBjYXNlIENvbGRVc2U6CiAgICAgICAgIGNhc2Ug
VXNlRGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIERlZjoKKyAgICAgICAgY2FzZSBa
RGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KQEAgLTE1NSw3ICsxODMsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgY2FzZSBVc2U6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBj
YXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2UgRGVmOgorICAgICAgICBjYXNlIFpEZWY6CiAgICAg
ICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpA
QCAtMTczLDggKzIwMywxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICBj
YXNlIENvbGRVc2U6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBEZWY6CisgICAgICAgIGNh
c2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIExhdGVVc2U6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTgsNiArMjMwLDI1IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBEZWY6CiAgICAgICAgIGNhc2Ug
VXNlRGVmOgorICAgICAgICBjYXNlIFpEZWY6CisgICAgICAgIGNhc2UgVXNlWkRlZjoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBSb2xlIGltcGxpZXMgdGhhdCB0aGUgSW5zdCB3aWxsIFpEZWYgdGhlIEFyZy4K
KyAgICBzdGF0aWMgYm9vbCBpc1pEZWYoUm9sZSByb2xlKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChyb2xlKSB7CisgICAgICAgIGNhc2UgVXNlOgorICAgICAgICBjYXNlIENvbGRVc2U6CisgICAg
ICAgIGNhc2UgVXNlQWRkcjoKKyAgICAgICAgY2FzZSBMYXRlVXNlOgorICAgICAgICBjYXNlIERl
ZjoKKyAgICAgICAgY2FzZSBVc2VEZWY6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGNhc2UgWkRlZjoKKyAgICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMzQsNiArMjg1LDM3IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAorICAgIHN0YXRpYyBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChUeXBl
IHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gdHlwZSA9PSBHUCA/IHBvaW50ZXJXaWR0aCgp
IDogV2lkdGg2NDsKKyAgICB9CisKKyAgICBzdGF0aWMgV2lkdGggbWluaW11bVdpZHRoKFR5cGUg
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlID09IEdQID8gV2lkdGg4IDogV2lkdGgz
MjsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgYnl0ZXMoV2lkdGggd2lkdGgpCisgICAg
eworICAgICAgICByZXR1cm4gMSA8PCB3aWR0aDsKKyAgICB9CisKKyAgICBzdGF0aWMgV2lkdGgg
d2lkdGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlcykKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYnl0
ZXMpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1
cm4gV2lkdGg4OworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXR1cm4gV2lkdGgxNjsK
KyAgICAgICAgY2FzZSAzOgorICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICByZXR1cm4gV2lk
dGgzMjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBXaWR0aDY0OworICAg
ICAgICB9CisgICAgfQorCiAgICAgQXJnKCkKICAgICAgICAgOiBtX2tpbmQoSW52YWxpZCkKICAg
ICB7CkBAIC03MTcsMTkgKzc5OSwxOSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBUaGlzIGRl
ZnMgKCVyY3gpIGJ1dCB1c2VzICVyY3guCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
LSAgICB2b2lkIGZvckVhY2hUbXAoUm9sZSBhcmdSb2xlLCBUeXBlIGFyZ1R5cGUsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCisgICAgdm9pZCBmb3JFYWNoVG1wKFJvbGUgYXJnUm9sZSwgVHlwZSBh
cmdUeXBlLCBXaWR0aCBhcmdXaWR0aCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgICAgIGNhc2UgVG1wOgogICAgICAgICAgICAg
QVNTRVJUKGlzQW55VXNlKGFyZ1JvbGUpIHx8IGlzRGVmKGFyZ1JvbGUpKTsKLSAgICAgICAgICAg
IGZ1bmN0b3IobV9iYXNlLCBhcmdSb2xlLCBhcmdUeXBlKTsKKyAgICAgICAgICAgIGZ1bmN0b3Io
bV9iYXNlLCBhcmdSb2xlLCBhcmdUeXBlLCBhcmdXaWR0aCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBZGRyOgotICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIFVzZSwgR1Ap
OworICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIFVzZSwgR1AsIGFyZ1JvbGUgPT0gVXNlQWRk
ciA/IGFyZ1dpZHRoIDogcG9pbnRlcldpZHRoKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSW5kZXg6Ci0gICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCk7Ci0g
ICAgICAgICAgICBmdW5jdG9yKG1faW5kZXgsIFVzZSwgR1ApOworICAgICAgICAgICAgZnVuY3Rv
cihtX2Jhc2UsIFVzZSwgR1AsIGFyZ1JvbGUgPT0gVXNlQWRkciA/IGFyZ1dpZHRoIDogcG9pbnRl
cldpZHRoKCkpOworICAgICAgICAgICAgZnVuY3RvcihtX2luZGV4LCBVc2UsIEdQLCBhcmdSb2xl
ID09IFVzZUFkZHIgPyBhcmdXaWR0aCA6IHBvaW50ZXJXaWR0aCgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCShyZXZpc2lv
biAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lh
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE2ICs0NSwxNyBAQCBDQ2FsbFNwZWNpYWw6On5D
Q2FsbFNwZWNpYWwoKQogdm9pZCBDQ2FsbFNwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwg
Y29uc3QgU2NvcGVkTGFtYmRhPEluc3Q6OkVhY2hBcmdDYWxsYmFjaz4mIGNhbGxiYWNrKQogewog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1DYWxsZWVBcmdzOyArK2kpCi0gICAgICAg
IGNhbGxiYWNrKGluc3QuYXJnc1tjYWxsZWVBcmdPZmZzZXQgKyBpXSwgQXJnOjpVc2UsIEFyZzo6
R1ApOworICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbY2FsbGVlQXJnT2Zmc2V0ICsgaV0sIEFy
Zzo6VXNlLCBBcmc6OkdQLCBBcmc6OnBvaW50ZXJXaWR0aCgpKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtUmV0dXJuR1BBcmdzOyArK2kpCi0gICAgICAgIGNhbGxiYWNrKGluc3Qu
YXJnc1tyZXR1cm5HUEFyZ09mZnNldCArIGldLCBBcmc6OkRlZiwgQXJnOjpHUCk7CisgICAgICAg
IGNhbGxiYWNrKGluc3QuYXJnc1tyZXR1cm5HUEFyZ09mZnNldCArIGldLCBBcmc6OkRlZiwgQXJn
OjpHUCwgQXJnOjpwb2ludGVyV2lkdGgoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bVJldHVybkZQQXJnczsgKytpKQotICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbcmV0dXJu
RlBBcmdPZmZzZXQgKyBpXSwgQXJnOjpEZWYsIEFyZzo6RlApOworICAgICAgICBjYWxsYmFjayhp
bnN0LmFyZ3NbcmV0dXJuRlBBcmdPZmZzZXQgKyBpXSwgQXJnOjpEZWYsIEFyZzo6RlAsIEFyZzo6
V2lkdGg2NCk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJnQXJnT2Zmc2V0OyBpIDwg
aW5zdC5hcmdzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIC8vIEZvciB0aGUgdHlwZSwgd2UgY2Fu
IGp1c3QgcXVlcnkgdGhlIGFyZydzIHR5cGUuIFRoZSBhcmcgd2lsbCBoYXZlIGEgdHlwZSwgYmVj
YXVzZSB3ZQogICAgICAgICAvLyByZXF1aXJlIHRoZXNlIGFyZ3MgdG8gYmUgYXJndW1lbnQgcmVn
aXN0ZXJzLgotICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbaV0sIEFyZzo6VXNlLCBpbnN0LmFy
Z3NbaV0udHlwZSgpKTsKKyAgICAgICAgQXJnOjpUeXBlIHR5cGUgPSBpbnN0LmFyZ3NbaV0udHlw
ZSgpOworICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbaV0sIEFyZzo6VXNlLCB0eXBlLCBBcmc6
OmNvbnNlcnZhdGl2ZVdpZHRoKHR5cGUpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCShy
ZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1p
bmF0ZURlYWRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBib29sIGVs
aW1pbmF0ZURlYWRDb2RlKENvZGUmIGNvZGUpCiAgICAgICAgIC8vIFRoaXMgaW5zdHJ1Y3Rpb24g
c2hvdWxkIGJlIHByZXN1bWVkIGRlYWQsIGlmIGl0cyBBcmdzIGFyZSBhbGwgZGVhZC4KICAgICAg
ICAgYm9vbCBzdG9yZXNUb0xpdmUgPSBmYWxzZTsKICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAot
ICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgewor
ICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSwgQXJn
OjpXaWR0aCkgewogICAgICAgICAgICAgICAgIGlmICghQXJnOjppc0RlZihyb2xlKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIHN0b3Jlc1RvTGl2ZSB8PSBp
c0FyZ0xpdmUoYXJnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4
UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAJKHJldmlzaW9uIDE5
NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lz
dGVyU3RhbGxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgdXBk
YXRlRGlzdGFuY2VzKEluc3QmIGluc3QsIEZQRGVmRGkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGluc3QuZm9yRWFjaFRtcChbJl0gKFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJn
OjpUeXBlKSB7CisgICAgaW5zdC5mb3JFYWNoVG1wKFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSBy
b2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSh0bXAuaXNSZWcoKSwgIlRoaXMgcGhhc2UgbXVzdCBiZSBydW4gYWZ0ZXIgcmVnaXN0ZXIgYWxs
b2NhdGlvbi4iKTsKIAogICAgICAgICBpZiAodG1wLmlzRlBSKCkgJiYgQXJnOjppc0RlZihyb2xl
KSkKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIGZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyhDb2Rl
JiBjb2RlCiAgICAgICAgICAgICBpZiAoaGFzUGFydGlhbFhtbVJlZ1VwZGF0ZShpbnN0KSkgewog
ICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGRlZnM7CiAgICAgICAgICAgICAgICAgUmVnaXN0
ZXJTZXQgdXNlczsKLSAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAmIHRt
cCwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgeworICAgICAgICAgICAgICAgIGluc3QuZm9y
RWFjaFRtcChbJl0gKFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6Oldp
ZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNGUFIoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmcy5zZXQodG1wLmZwcigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlySW5zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJJbnN0LmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJJbnN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QCBib29sIEluc3Q6Omhhc0FyZ0VmZmVjdHMoKQogewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
CiAgICAgZm9yRWFjaEFyZygKLSAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQXJn
OjpUeXBlKSB7CisgICAgICAgIFsmXSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSwg
QXJnOjpXaWR0aCkgewogICAgICAgICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpckluc3QuaAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDIwICs5OCwy
MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhcmcuZm9yRWFjaFRtcEZhc3QoZnVuY3Rvcik7CiAg
ICAgfQogCi0gICAgdHlwZWRlZiB2b2lkIEVhY2hBcmdDYWxsYmFjayhBcmcmLCBBcmc6OlJvbGUs
IEFyZzo6VHlwZSk7CisgICAgdHlwZWRlZiB2b2lkIEVhY2hBcmdDYWxsYmFjayhBcmcmLCBBcmc6
OlJvbGUsIEFyZzo6VHlwZSwgQXJnOjpXaWR0aCk7CiAgICAgCi0gICAgLy8gQ2FsbHMgdGhlIGZ1
bmN0b3Igd2l0aCAoYXJnLCByb2xlLCB0eXBlKS4gVGhpcyBmdW5jdGlvbiBpcyBhdXRvLWdlbmVy
YXRlZCBieQorICAgIC8vIENhbGxzIHRoZSBmdW5jdG9yIHdpdGggKGFyZywgcm9sZSwgdHlwZSwg
d2lkdGgpLiBUaGlzIGZ1bmN0aW9uIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5CiAgICAgLy8gb3Bjb2Rl
X2dlbmVyYXRvci5yYi4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQg
Zm9yRWFjaEFyZyhjb25zdCBGdW5jdG9yJik7CiAKLSAgICAvLyBDYWxscyB0aGUgZnVuY3RvciB3
aXRoICh0bXAsIHJvbGUsIHR5cGUpLgorICAgIC8vIENhbGxzIHRoZSBmdW5jdG9yIHdpdGggKHRt
cCwgcm9sZSwgdHlwZSwgd2lkdGgpLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAg
ICAgdm9pZCBmb3JFYWNoVG1wKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAg
ICBmb3JFYWNoQXJnKAotICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUs
IEFyZzo6VHlwZSB0eXBlKSB7Ci0gICAgICAgICAgICAgICAgYXJnLmZvckVhY2hUbXAocm9sZSwg
dHlwZSwgZnVuY3Rvcik7CisgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9s
ZSwgQXJnOjpUeXBlIHR5cGUsIEFyZzo6V2lkdGggd2lkdGgpIHsKKyAgICAgICAgICAgICAgICBh
cmcuZm9yRWFjaFRtcChyb2xlLCB0eXBlLCB3aWR0aCwgZnVuY3Rvcik7CiAgICAgICAgICAgICB9
KTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpcklu
c3RJbmxpbmVzLmgJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlySW5zdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBGb3JFYWNoPFN0YWNrU2xvdCo+IHsKICAgICBzdGF0aWMgdm9pZCBm
b3JFYWNoKEluc3QmIGluc3QsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAg
ICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUg
cm9sZSwgQXJnOjpUeXBlIHR5cGUpIHsKKyAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6
Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSwgQXJnOjpXaWR0aCB3aWR0aCkgewogICAgICAgICAg
ICAgICAgIGlmICghYXJnLmlzU3RhY2soKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIFN0YWNrU2xvdCogc3RhY2tTbG90ID0gYXJnLnN0YWNrU2xvdCgpOwpA
QCAtNjYsNyArNjYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBGb3JFYWNoPFN0YWNrU2xvdCo+IHsK
ICAgICAgICAgICAgICAgICAvLyBzZW1hbnRpY3Mgb2YgIkFub255bW91cyIuCiAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTEyOAog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGZ1bmN0b3Ioc3RhY2tTbG90LCByb2xl
LCB0eXBlKTsKKyAgICAgICAgICAgICAgICBmdW5jdG9yKHN0YWNrU2xvdCwgcm9sZSwgdHlwZSwg
d2lkdGgpOwogICAgICAgICAgICAgICAgIGFyZyA9IEFyZzo6c3RhY2soc3RhY2tTbG90LCBhcmcu
b2Zmc2V0KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQpAQCAtOTksMTIgKzk5LDEzIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiBpbmxpbmUgdm9pZCBJbnN0Ojpmb3JFYWNoVG1wV2l0
aEV4dHJhQ2xvYmJlcmVkUmVncyhJbnN0KiBuZXh0SW5zdCwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKIHsKICAgICBmb3JFYWNoVG1wKAotICAgICAgICBbJl0gKFRtcCYgdG1wQXJnLCBBcmc6OlJv
bGUgcm9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IodG1wQXJn
LCByb2xlLCBhcmdUeXBlKTsKKyAgICAgICAgWyZdIChUbXAmIHRtcEFyZywgQXJnOjpSb2xlIHJv
bGUsIEFyZzo6VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRoIGFyZ1dpZHRoKSB7CisgICAgICAgICAg
ICBmdW5jdG9yKHRtcEFyZywgcm9sZSwgYXJnVHlwZSwgYXJnV2lkdGgpOwogICAgICAgICB9KTsK
IAogICAgIGF1dG8gcmVwb3J0UmVnID0gWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgIGZ1bmN0b3Io
VG1wKHJlZyksIEFyZzo6RGVmLCByZWcuaXNHUFIoKSA/IEFyZzo6R1AgOiBBcmc6OkZQKTsKKyAg
ICAgICAgQXJnOjpUeXBlIHR5cGUgPSByZWcuaXNHUFIoKSA/IEFyZzo6R1AgOiBBcmc6OkZQOwor
ICAgICAgICBmdW5jdG9yKFRtcChyZWcpLCBBcmc6OkRlZiwgdHlwZSwgQXJnOjpjb25zZXJ2YXRp
dmVXaWR0aCh0eXBlKSk7CiAgICAgfTsKIAogICAgIGlmIChoYXNTcGVjaWFsKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJh
dGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgi
CiAjaW5jbHVkZSAiQWlyUmVnaXN0ZXJQcmlvcml0eS5oIgogI2luY2x1ZGUgIkFpclRtcElubGlu
ZXMuaCIKKyNpbmNsdWRlICJBaXJUbXBXaWR0aC5oIgogI2luY2x1ZGUgIkFpclVzZUNvdW50cy5o
IgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgpAQCAtNjMwLDkgKzYzMSwxMCBAQCBwcm90ZWN0ZWQ6CiB0ZW1wbGF0ZTxBcmc6OlR5cGUgdHlw
ZT4KIGNsYXNzIENvbG9yaW5nQWxsb2NhdG9yIDogcHVibGljIEFic3RyYWN0Q29sb3JpbmdBbGxv
Y2F0b3I8dW5zaWduZWQ+IHsKIHB1YmxpYzoKLSAgICBDb2xvcmluZ0FsbG9jYXRvcihDb2RlJiBj
b2RlLCBjb25zdCBVc2VDb3VudHM8VG1wPiYgdXNlQ291bnRzLCBjb25zdCBIYXNoU2V0PHVuc2ln
bmVkPiYgdW5zcGlsbGFibGVUbXApCisgICAgQ29sb3JpbmdBbGxvY2F0b3IoQ29kZSYgY29kZSwg
VG1wV2lkdGgmIHRtcFdpZHRoLCBjb25zdCBVc2VDb3VudHM8VG1wPiYgdXNlQ291bnRzLCBjb25z
dCBIYXNoU2V0PHVuc2lnbmVkPiYgdW5zcGlsbGFibGVUbXApCiAgICAgICAgIDogQWJzdHJhY3RD
b2xvcmluZ0FsbG9jYXRvcjx1bnNpZ25lZD4ocmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSwgQWJz
b2x1dGVUbXBNYXBwZXI8dHlwZT46Omxhc3RNYWNoaW5lUmVnaXN0ZXJJbmRleCgpLCB0bXBBcnJh
eVNpemUoY29kZSkpCiAgICAgICAgICwgbV9jb2RlKGNvZGUpCisgICAgICAgICwgbV90bXBXaWR0
aCh0bXBXaWR0aCkKICAgICAgICAgLCBtX3VzZUNvdW50cyh1c2VDb3VudHMpCiAgICAgICAgICwg
bV91bnNwaWxsYWJsZVRtcHModW5zcGlsbGFibGVUbXApCiAgICAgewpAQCAtNjQ2LDkgKzY0OCwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6dG1w
RnJvbUFic29sdXRlSW5kZXgoZ2V0QWxpYXMoQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29s
dXRlSW5kZXgodG1wKSkpOwogICAgIH0KIAorICAgIC8vIFRoaXMgdGVsbHMgeW91IGlmIGEgTW92
ZSB3aWxsIGJlIGNvYWxlc2NhYmxlIGlmIHRoZSBzcmMgYW5kIGRzdCBlbmQgdXAgbWF0Y2hpbmcu
IFRoaXMgbWV0aG9kCisgICAgLy8gcmVsaWVzIG9uIGFuIGFuYWx5c2lzIHRoYXQgaXMgaW52YWxp
ZGF0ZWQgYnkgcmVnaXN0ZXIgYWxsb2NhdGlvbiwgc28geW91IGl0J3Mgb25seSBtZWFuaW5nZnVs
IHRvCisgICAgLy8gY2FsbCB0aGlzICpiZWZvcmUqIHJlcGxhY2luZyB0aGUgVG1wJ3MgaW4gdGhp
cyBJbnN0IHdpdGggcmVnaXN0ZXJzIG9yIHNwaWxsIHNsb3RzLgorICAgIGJvb2wgbWF5QmVDb2Fs
ZXNjYWJsZShjb25zdCBJbnN0JiBpbnN0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1h
eUJlQ29hbGVzY2FibGVJbXBsKGluc3QsICZtX3RtcFdpZHRoKTsKKyAgICB9CisKICAgICBib29s
IGlzVXNlbGVzc01vdmUoY29uc3QgSW5zdCYgaW5zdCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtYXlCZUNvYWxlc2NhYmxlKGluc3QpICYmIGluc3QuYXJnc1swXS50bXAoKSA9PSBpbnN0
LmFyZ3NbMV0udG1wKCk7CisgICAgICAgIHJldHVybiBtYXlCZUNvYWxlc2NhYmxlSW1wbChpbnN0
LCBudWxscHRyKSAmJiBpbnN0LmFyZ3NbMF0udG1wKCkgPT0gaW5zdC5hcmdzWzFdLnRtcCgpOwog
ICAgIH0KIAogICAgIFRtcCBnZXRBbGlhc1doZW5TcGlsbGluZyhUbXAgdG1wKSBjb25zdApAQCAt
NzcwLDE0ICs3ODAsMTQgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGluc3QuZm9yRWFjaFRt
cFdpdGhFeHRyYUNsb2JiZXJlZFJlZ3MoCiAgICAgICAgICAgICBuZXh0SW5zdCwKLSAgICAgICAg
ICAgIFsmXSAoY29uc3QgVG1wJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgYXJnVHlw
ZSkgeworICAgICAgICAgICAgWyZdIChjb25zdCBUbXAmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFy
Zzo6VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFBcmc6
OmlzRGVmKHJvbGUpIHx8IGFyZ1R5cGUgIT0gdHlwZSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIEFsbCB0aGUgRGVmKClz
IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIgYW5kIHdpdGggYWxsIHRoZSBleHRyYSBjbG9iYmVy
ZWQgVG1wcy4KICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgbm90IHVzZSBmb3JFYWNoRGVm
QW5kRXh0cmFDbG9iYmVyZWRUbXAoKSBoZXJlIHNpbmNlIGNvbG9yZWQgVG1wcwogICAgICAgICAg
ICAgICAgIC8vIGRvIG5vdCBuZWVkIGludGVyZmVyZW5jZSBlZGdlcyBpbiBvdXIgaW1wbGVtZW50
YXRpb24uCi0gICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKFsmXSAoVG1wJiBvdGhlckFy
ZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSBhcmdUeXBlKSB7CisgICAgICAgICAgICAgICAg
aW5zdC5mb3JFYWNoVG1wKFsmXSAoVG1wJiBvdGhlckFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6
VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghQXJn
Ojppc0RlZihyb2xlKSB8fCBhcmdUeXBlICE9IHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTc5MSw3ICs4MDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8g
Y29hbGVzY2UgdGhlIE1vdmUgZXZlbiBpZiB0aGUgdHdvIFRtcCBuZXZlciBpbnRlcmZlcmUgYW55
d2hlcmUuCiAgICAgICAgICAgICBUbXAgZGVmVG1wOwogICAgICAgICAgICAgVG1wIHVzZVRtcDsK
LSAgICAgICAgICAgIGluc3QuZm9yRWFjaFRtcChbJmRlZlRtcCwgJnVzZVRtcF0gKFRtcCYgYXJn
VG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAgICAgICAgICBpbnN0LmZvckVh
Y2hUbXAoWyZkZWZUbXAsICZ1c2VUbXBdIChUbXAmIGFyZ1RtcCwgQXJnOjpSb2xlIHJvbGUsIEFy
Zzo6VHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzRGVmKHJv
bGUpKQogICAgICAgICAgICAgICAgICAgICBkZWZUbXAgPSBhcmdUbXA7CiAgICAgICAgICAgICAg
ICAgZWxzZSB7CkBAIC04MzksNyArODQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQWxsIHRo
ZSBEZWYoKXMgaW50ZXJmZXJlIHdpdGggZXZlcnRoaW5nIGxpdmUuCiAgICAgICAgIGluc3QuZm9y
RWFjaFRtcFdpdGhFeHRyYUNsb2JiZXJlZFJlZ3MoCiAgICAgICAgICAgICBuZXh0SW5zdCwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgVG1wJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUg
YXJnVHlwZSkgeworICAgICAgICAgICAgWyZdIChjb25zdCBUbXAmIGFyZywgQXJnOjpSb2xlIHJv
bGUsIEFyZzo6VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFBcmc6OmlzRGVmKHJvbGUpIHx8IGFyZ1R5cGUgIT0gdHlwZSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIApAQCAtODU3LDEyICs4NjcsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgYWRkRWRnZShBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6YWJzb2x1dGVJbmRl
eChhKSwgQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29sdXRlSW5kZXgoYikpOwogICAgIH0K
IAotICAgIGJvb2wgbWF5QmVDb2FsZXNjYWJsZShjb25zdCBJbnN0JiBpbnN0KSBjb25zdAorICAg
IC8vIENhbGxpbmcgdGhpcyB3aXRob3V0IGEgdG1wV2lkdGggd2lsbCBwZXJmb3JtIGEgbW9yZSBj
b25zZXJ2YXRpdmUgY29hbGVzY2luZyBhbmFseXNpcyB0aGF0IGFzc3VtZXMKKyAgICAvLyB0aGF0
IE1vdmUzMidzIGFyZSBub3QgY29hbGVzY2FibGUuCisgICAgc3RhdGljIGJvb2wgbWF5QmVDb2Fs
ZXNjYWJsZUltcGwoY29uc3QgSW5zdCYgaW5zdCwgVG1wV2lkdGgqIHRtcFdpZHRoKQogICAgIHsK
ICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgQXJnOjpHUDoKICAgICAgICAg
ICAgIHN3aXRjaCAoaW5zdC5vcGNvZGUpIHsKICAgICAgICAgICAgIGNhc2UgTW92ZToKKyAgICAg
ICAgICAgIGNhc2UgTW92ZTMyOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04ODcsNiArOTAwLDIy
IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChpbnN0LmFyZ3NbMF0udHlwZSgpID09IHR5cGUp
OwogICAgICAgICBBU1NFUlQoaW5zdC5hcmdzWzFdLnR5cGUoKSA9PSB0eXBlKTsKIAorICAgICAg
ICAvLyBXZSBjYW4gY29hbGVzY2UgYSBNb3ZlMzIgc28gbG9uZyBhcyBlaXRoZXIgb2YgdGhlIGZv
bGxvd2luZyBob2xkczoKKyAgICAgICAgLy8gLSBUaGUgaW5wdXQgaXMgYWxyZWFkeSB6ZXJvLWZp
bGxlZC4KKyAgICAgICAgLy8gLSBUaGUgb3V0cHV0IG9ubHkgY2FyZXMgYWJvdXQgdGhlIGxvdyAz
MiBiaXRzLgorICAgICAgICAvLworICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIGlucHV0IHByb3Bl
cnR5IHJlcXVpcmVzIGFuIGFuYWx5c2lzIG92ZXIgWkRlZidzLCBzbyBpdCdzIG9ubHkgdmFsaWQg
c28gbG9uZworICAgICAgICAvLyBhcyB0aGUgaW5wdXQgZ2V0cyBhIHJlZ2lzdGVyLiBXZSBkb24n
dCBrbm93IGlmIHRoZSBpbnB1dCBnZXRzIGEgcmVnaXN0ZXIsIGJ1dCB3ZSBkbyBrbm93CisgICAg
ICAgIC8vIHRoYXQgaWYgaXQgZG9lc24ndCBnZXQgYSByZWdpc3RlciB0aGVuIHdlIHdpbGwgc3Rp
bGwgZW1pdCB0aGlzIE1vdmUzMi4KKyAgICAgICAgaWYgKGluc3Qub3Bjb2RlID09IE1vdmUzMikg
eworICAgICAgICAgICAgaWYgKCF0bXBXaWR0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIGlmICh0bXBXaWR0aC0+ZGVmV2lkdGgoaW5zdC5hcmdzWzBdLnRt
cCgpKSA+IEFyZzo6V2lkdGgzMgorICAgICAgICAgICAgICAgICYmIHRtcFdpZHRoLT51c2VXaWR0
aChpbnN0LmFyZ3NbMV0udG1wKCkpID4gQXJnOjpXaWR0aDMyKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC0xMDI0LDYgKzEwNTMsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIEFic3RyYWN0
Q29sb3JpbmdBbGxvY2F0b3I8dW5zaWduZWQ+OjpnZXRBbGlhczsKIAogICAgIENvZGUmIG1fY29k
ZTsKKyAgICBUbXBXaWR0aCYgbV90bXBXaWR0aDsKICAgICAvLyBGSVhNRTogc3BpbGxpbmcgc2hv
dWxkIG5vdCB0eXBlIHNwZWNpZmljLiBJdCBpcyBvbmx5IGEgc2lkZSBlZmZlY3Qgb2YgdXNpbmcg
VXNlQ291bnRzLgogICAgIGNvbnN0IFVzZUNvdW50czxUbXA+JiBtX3VzZUNvdW50czsKICAgICBj
b25zdCBIYXNoU2V0PHVuc2lnbmVkPiYgbV91bnNwaWxsYWJsZVRtcHM7CkBAIC0xMDUzLDcgKzEw
ODMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgSGFzaFNldDx1bnNpZ25lZD4gdW5zcGlsbGFibGVU
bXBzOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgKyttX251bUl0ZXJhdGlv
bnM7Ci0gICAgICAgICAgICBDb2xvcmluZ0FsbG9jYXRvcjx0eXBlPiBhbGxvY2F0b3IobV9jb2Rl
LCBtX3VzZUNvdW50cywgdW5zcGlsbGFibGVUbXBzKTsKKworICAgICAgICAgICAgLy8gRklYTUU6
IE9uZSB3YXkgdG8gb3B0aW1pemUgdGhpcyBjb2RlIGlzIHRvIHJlbW92ZSB0aGUgcmVjb21wdXRh
dGlvbiBpbnNpZGUgdGhlIGZpeHBvaW50LgorICAgICAgICAgICAgLy8gV2UgbmVlZCB0byByZWNv
bXB1dGUgYmVjYXVzZSBzcGlsbGluZyBhZGRzIHRtcHMsIGJ1dCB3ZSBjb3VsZCBqdXN0IHVwZGF0
ZSB0bXBXaWR0aCB3aGVuIHdlCisgICAgICAgICAgICAvLyBhZGQgdGhvc2UgdG1wcy4KKyAgICAg
ICAgICAgIG1fdG1wV2lkdGgucmVjb21wdXRlKG1fY29kZSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIENvbG9yaW5nQWxsb2NhdG9yPHR5cGU+IGFsbG9jYXRvcihtX2NvZGUsIG1fdG1wV2lk
dGgsIG1fdXNlQ291bnRzLCB1bnNwaWxsYWJsZVRtcHMpOwogICAgICAgICAgICAgaWYgKCFhbGxv
Y2F0b3IucmVxdWlyZXNTcGlsbGluZygpKSB7CiAgICAgICAgICAgICAgICAgYXNzaWduUmVnaXN0
ZXJzVG9UbXAoYWxsb2NhdG9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDY5LDYg
KzExMDUsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIEdpdmUgVG1wIGEgdmFsaWQgcmVn
aXN0ZXIuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluc3RJbmRleCA9IDA7IGluc3RJbmRl
eCA8IGJsb2NrLT5zaXplKCk7ICsraW5zdEluZGV4KSB7CiAgICAgICAgICAgICAgICAgSW5zdCYg
aW5zdCA9IGJsb2NrLT5hdChpbnN0SW5kZXgpOworCisgICAgICAgICAgICAgICAgLy8gVGhlIG1h
eUJlQ29hbGVzY2FibGUoKSBtZXRob2Qgd2lsbCBjaGFuZ2UgaXRzIG1pbmQgZm9yIHNvbWUgb3Bl
cmF0aW9ucyBhZnRlciB3ZQorICAgICAgICAgICAgICAgIC8vIGNvbXBsZXRlIHJlZ2lzdGVyIGFs
bG9jYXRpb24uIFNvLCB3ZSByZWNvcmQgdGhpcyBiZWZvcmUgc3RhcnRpbmcuCisgICAgICAgICAg
ICAgICAgYm9vbCBtYXlCZUNvYWxlc2NhYmxlID0gYWxsb2NhdG9yLm1heUJlQ29hbGVzY2FibGUo
aW5zdCk7CisKKyAgICAgICAgICAgICAgICAvLyBPbiBYODZfNjQsIE1vdmUzMiBpcyBjaGVhcGVy
IGlmIHdlIGtub3cgdGhhdCBpdCdzIGVxdWl2YWxlbnQgdG8gYSBNb3ZlLiBJdCdzCisgICAgICAg
ICAgICAgICAgLy8gZXF1aXZhbGVudCBpZiB0aGUgZGVzdGluYXRpb24ncyBoaWdoIGJpdHMgYXJl
IG5vdCBvYnNlcnZhYmxlIG9yIGlmIHRoZSBzb3VyY2UncyBoaWdoCisgICAgICAgICAgICAgICAg
Ly8gYml0cyBhcmUgYWxsIHplcm8uIE5vdGUgdGhhdCB3ZSBkb24ndCBoYXZlIHRoZSBvcHBvc2l0
ZSBvcHRpbWl6YXRpb24gZm9yIG90aGVyCisgICAgICAgICAgICAgICAgLy8gYXJjaGl0ZWN0dXJl
cywgd2hpY2ggbWF5IHByZWZlciBNb3ZlIG92ZXIgTW92ZTMyLCBiZWNhdXNlIE1vdmUgaXMgY2Fu
b25pY2FsIGFscmVhZHkuCisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQXJnOjpHUCAmJiBv
cHRpbWl6ZUZvclg4Nl82NCgpICYmIGluc3Qub3Bjb2RlID09IE1vdmUKKyAgICAgICAgICAgICAg
ICAgICAgJiYgaW5zdC5hcmdzWzBdLmlzVG1wKCkgJiYgaW5zdC5hcmdzWzFdLmlzVG1wKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdG1wV2lkdGgudXNlV2lkdGgoaW5zdC5hcmdzWzFd
LnRtcCgpKSA8PSBBcmc6OldpZHRoMzIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1fdG1w
V2lkdGguZGVmV2lkdGgoaW5zdC5hcmdzWzBdLnRtcCgpKSA8PSBBcmc6OldpZHRoMzIpCisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnN0Lm9wY29kZSA9IE1vdmUzMjsKKyAgICAgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0KFsmXSAoVG1wJiB0bXAp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcC5pc1JlZygpIHx8IHRtcC5pc0dQKCkgPT0g
KHR5cGUgIT0gQXJnOjpHUCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MDg1LDExICsxMTM3LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChh
c3NpZ25lZFRtcC5pc1JlZygpKTsKICAgICAgICAgICAgICAgICAgICAgdG1wID0gYXNzaWduZWRU
bXA7CiAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAobWF5QmVDb2Fs
ZXNjYWJsZSAmJiBpbnN0LmFyZ3NbMF0uaXNUbXAoKSAmJiBpbnN0LmFyZ3NbMV0uaXNUbXAoKQor
ICAgICAgICAgICAgICAgICAgICAmJiBpbnN0LmFyZ3NbMF0udG1wKCkgPT0gaW5zdC5hcmdzWzFd
LnRtcCgpKQorICAgICAgICAgICAgICAgICAgICBpbnN0ID0gSW5zdCgpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvLyBSZW1vdmUgYWxsIHRoZSB1c2VsZXNzIG1vdmVzIHdlIGNyZWF0
ZWQgaW4gdGhpcyBibG9jay4KICAgICAgICAgICAgIGJsb2NrLT5pbnN0cygpLnJlbW92ZUFsbE1h
dGNoaW5nKFsmXSAoY29uc3QgSW5zdCYgaW5zdCkgewotICAgICAgICAgICAgICAgIHJldHVybiBh
bGxvY2F0b3IuaXNVc2VsZXNzTW92ZShpbnN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIWlu
c3Q7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTExMDMsNyArMTE1OSw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1bnNwaWxsYWJsZVRtcHMuYWRkKEFic29sdXRlVG1w
TWFwcGVyPHR5cGU+OjphYnNvbHV0ZUluZGV4KHRtcCkpOwogCiAgICAgICAgICAgICAvLyBBbGxv
Y2F0ZSBzdGFjayBzbG90IGZvciBlYWNoIHNwaWxsZWQgdmFsdWUuCi0gICAgICAgICAgICBib29s
IGlzTmV3VG1wID0gc3RhY2tTbG90cy5hZGQodG1wLCBtX2NvZGUuYWRkU3RhY2tTbG90KDgsIFN0
YWNrU2xvdEtpbmQ6OkFub255bW91cykpLmlzTmV3RW50cnk7CisgICAgICAgICAgICBTdGFja1Ns
b3QqIHN0YWNrU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoCisgICAgICAgICAgICAgICAgbV90
bXBXaWR0aC53aWR0aCh0bXApIDw9IEFyZzo6V2lkdGgzMiA/IDQgOiA4LCBTdGFja1Nsb3RLaW5k
OjpBbm9ueW1vdXMpOworICAgICAgICAgICAgYm9vbCBpc05ld1RtcCA9IHN0YWNrU2xvdHMuYWRk
KHRtcCwgc3RhY2tTbG90KS5pc05ld0VudHJ5OwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChp
c05ld1RtcCwgaXNOZXdUbXApOwogICAgICAgICB9CiAKQEAgLTExMTUsMTggKzExNzMsMzYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4ID0gMDsgaW5zdElu
ZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbnN0SW5kZXgpIHsKICAgICAgICAgICAgICAgICBJbnN0
JiBpbnN0ID0gYmxvY2stPmF0KGluc3RJbmRleCk7CiAKKyAgICAgICAgICAgICAgICAvLyBUaGUg
VG1wV2lkdGggYW5hbHlzaXMgd2lsbCBzYXkgdGhhdCBhIE1vdmUgb25seSBzdG9yZXMgMzIgYml0
cyBpbnRvIHRoZSBkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc291cmNl
IG9ubHkgaGFkIDMyIGJpdHMgd29ydGggb2Ygbm9uLXplcm8gYml0cy4gU2FtZSBmb3IgdGhlIHNv
dXJjZTogaXQgd2lsbAorICAgICAgICAgICAgICAgIC8vIG9ubHkgY2xhaW0gdG8gcmVhZCAzMiBi
aXRzIGZyb20gdGhlIHNvdXJjZSBpZiBvbmx5IDMyIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFy
ZQorICAgICAgICAgICAgICAgIC8vIHJlYWQuIE5vdGUgdGhhdCB3ZSBvbmx5IGFwcGx5IHRoaXMg
bG9naWMgaWYgdGhpcyB0dXJucyBpbnRvIGEgbG9hZCBvciBzdG9yZSwgc2luY2UKKyAgICAgICAg
ICAgICAgICAvLyBNb3ZlIGlzIHRoZSBjYW5vbmljYWwgd2F5IHRvIG1vdmUgZGF0YSBiZXR3ZWVu
IEdQUnMuCisgICAgICAgICAgICAgICAgYm9vbCBmb3JjZU1vdmUzMklmRGlkU3BpbGwgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBib29sIGRpZFNwaWxsID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gQXJnOjpHUCAmJiBpbnN0Lm9wY29kZSA9PSBNb3ZlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3RtcFdpZHRoLmRlZldpZHRoKGluc3QuYXJnc1swXS50bXAoKSkg
PD0gQXJnOjpXaWR0aDMyCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBtX3RtcFdpZHRoLnVz
ZVdpZHRoKGluc3QuYXJnc1sxXS50bXAoKSkgPD0gQXJnOjpXaWR0aDMyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yY2VNb3ZlMzJJZkRpZFNwaWxsID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgICAgICAvLyBUcnkgdG8gcmVwbGFjZSB0aGUgcmVnaXN0ZXIgdXNl
IGJ5IG1lbW9yeSB1c2Ugd2hlbiBwb3NzaWJsZS4KICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgaW5zdC5hcmdzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEFyZyYgYXJnID0gaW5zdC5hcmdzW2ldOwogICAgICAgICAgICAgICAgICAgICBpZiAoYXJn
LmlzVG1wKCkgJiYgYXJnLnR5cGUoKSA9PSB0eXBlICYmICFhcmcuaXNSZWcoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBzdGFja1Nsb3RFbnRyeSA9IHN0YWNrU2xvdHMuZmluZChh
cmcudG1wKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrU2xvdEVudHJ5ICE9
IHN0YWNrU2xvdHMuZW5kKCkgJiYgaW5zdC5hZG1pdHNTdGFjayhpKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzdGFja1Nsb3RFbnRyeSAhPSBzdGFja1Nsb3RzLmVuZCgpICYmIGluc3Qu
YWRtaXRzU3RhY2soaSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBBcmc6
OnN0YWNrKHN0YWNrU2xvdEVudHJ5LT52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkU3BpbGwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgaWYgKGRp
ZFNwaWxsICYmIGZvcmNlTW92ZTMySWZEaWRTcGlsbCkKKyAgICAgICAgICAgICAgICAgICAgaW5z
dC5vcGNvZGUgPSBNb3ZlMzI7CisKICAgICAgICAgICAgICAgICAvLyBGb3IgZXZlcnkgb3RoZXIg
Y2FzZSwgYWRkIExvYWQvU3RvcmUgYXMgbmVlZGVkLgotICAgICAgICAgICAgICAgIGluc3QuZm9y
RWFjaFRtcChbJl0gKFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUp
IHsKKyAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAmIHRtcCwgQXJnOjpS
b2xlIHJvbGUsIEFyZzo6VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICh0bXAuaXNSZWcoKSB8fCBhcmdUeXBlICE9IHR5cGUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDEsNyArMTIxNywxOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgQXJnIGFyZyA9IEFyZzo6
c3RhY2soc3RhY2tTbG90RW50cnktPnZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgT3Bjb2Rl
IG1vdmUgPSB0eXBlID09IEFyZzo6R1AgPyBNb3ZlIDogTW92ZURvdWJsZTsKKyAgICAgICAgICAg
ICAgICAgICAgT3Bjb2RlIG1vdmUgPSBPb3BzOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KHN0YWNrU2xvdEVudHJ5LT52YWx1ZS0+Ynl0ZVNpemUoKSkgeworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlID0gdHlwZSA9PSBBcmc6OkdQ
ID8gTW92ZTMyIDogTW92ZUZsb2F0OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUg
PSB0eXBlID09IEFyZzo6R1AgPyBNb3ZlIDogTW92ZURvdWJsZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICAgICAgaWYgKEFyZzo6aXNBbnlVc2Uocm9sZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IFRtcCBuZXdUbXAgPSBtX2NvZGUubmV3VG1wKHR5cGUpOwpAQCAtMTE2Niw2ICsxMjUzLDcgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICBDb2RlJiBtX2NvZGU7CisgICAgVG1wV2lkdGggbV90bXBX
aWR0aDsKICAgICBVc2VDb3VudHM8VG1wPiBtX3VzZUNvdW50czsKICAgICB1bnNpZ25lZCBtX251
bUl0ZXJhdGlvbnMgeyAwIH07CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJMaXZlbmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyTGl2ZW5lc3MuaAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHR5cGVuYW1lIEFkYXB0ZXI6OkluZGV4U2V0JiBsaXZlQXRU
YWlsID0gbV9saXZlQXRUYWlsW2Jsb2NrXTsKIAogICAgICAgICAgICAgYmxvY2stPmxhc3QoKS5m
b3JFYWNoPHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKLSAgICAgICAgICAgICAgICBbJl0gKHR5
cGVuYW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0
eXBlKSB7CisgICAgICAgICAgICAgICAgWyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYgdGhp
bmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoQXJnOjppc0xhdGVVc2Uocm9sZSkgJiYgQWRhcHRlcjo6YWNjZXB0
c1R5cGUodHlwZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsaXZlQXRUYWlsLmFkZChBZGFw
dGVyOjp2YWx1ZVRvSW5kZXgodGhpbmcpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTIxNiwx
NCArMjE2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGF1dG8mIHdvcmtzZXQgPSBtX2xpdmVu
ZXNzLm1fd29ya3NldDsKICAgICAgICAgICAgIC8vIEZpcnN0IGhhbmRsZSBkZWYncy4KICAgICAg
ICAgICAgIGluc3QuZm9yRWFjaDx0eXBlbmFtZSBBZGFwdGVyOjpUaGluZz4oCi0gICAgICAgICAg
ICAgICAgWyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFyZzo6Um9sZSByb2xl
LCBBcmc6OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgICAgIFsmXSAodHlwZW5hbWUgQWRhcHRl
cjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIHR5cGUsIEFyZzo6V2lk
dGgpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkgJiYgQWRhcHRl
cjo6YWNjZXB0c1R5cGUodHlwZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc2V0LnJl
bW92ZShBZGFwdGVyOjp2YWx1ZVRvSW5kZXgodGhpbmcpKTsKICAgICAgICAgICAgICAgICB9KTsK
IAogICAgICAgICAgICAgLy8gVGhlbiBoYW5kbGUgdXNlJ3MuCiAgICAgICAgICAgICBpbnN0LmZv
ckVhY2g8dHlwZW5hbWUgQWRhcHRlcjo6VGhpbmc+KAotICAgICAgICAgICAgICAgIFsmXSAodHlw
ZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIHR5
cGUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGlu
ZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChBcmc6OmlzRWFybHlVc2Uocm9sZSkgJiYgQWRhcHRlcjo6YWNjZXB0
c1R5cGUodHlwZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc2V0LmFkZChBZGFwdGVy
Ojp2YWx1ZVRvSW5kZXgodGhpbmcpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTIzMiw3ICsy
MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoaW5zdEluZGV4KSB7CiAgICAgICAgICAg
ICAgICAgSW5zdCYgcHJldkluc3QgPSBtX2Jsb2NrLT5hdChpbnN0SW5kZXggLSAxKTsKICAgICAg
ICAgICAgICAgICBwcmV2SW5zdC5mb3JFYWNoPHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKLSAg
ICAgICAgICAgICAgICAgICAgWyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFy
Zzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgICAgICAgICBbJl0g
KHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlw
ZSB0eXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjpp
c0xhdGVVc2Uocm9sZSkgJiYgQWRhcHRlcjo6YWNjZXB0c1R5cGUodHlwZSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd29ya3NldC5hZGQoQWRhcHRlcjo6dmFsdWVUb0luZGV4KHRoaW5n
KSk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkp
CkBAIC0yMywxNCArMjMsMTcgQEAKIAogIyBTeWxsYWJ1czoKICMKLSMgUm9sZXMgYW5kIHR5cGVz
OgotIyBVOkcgPT4gdXNlIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9yIHZhbHVlCi0j
IEQ6RyA9PiBkZWYgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKLSMgVUQ6
RyA9PiB1c2UgYW5kIGRlZiBvZiBhIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBvciB2YWx1ZQot
IyBVQTpHID0+IFVzZUFkZHIgKHNlZSBjb21tZW50IGluIEFyZy5oKQotIyBVOkYgPT4gdXNlIG9m
IGEgZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUKLSMgRDpGID0+IGRlZiBvZiBhIGZsb2F0IHJlZ2lz
dGVyIG9yIHZhbHVlCi0jIFVEOkYgPT4gdXNlIGFuZCBkZWYgb2YgYSBmbG9hdCByZWdpc3RlciBv
ciB2YWx1ZQorIyBFeGFtcGxlcyBvZiBzb21lIHJvbGVzLCB0eXBlcywgYW5kIHdpZHRoczoKKyMg
VTpHOjMyID0+IHVzZSBvZiB0aGUgbG93IDMyIGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVn
aXN0ZXIgb3IgdmFsdWUKKyMgRDpHOjMyID0+IGRlZiBvZiB0aGUgbG93IDMyIGJpdHMgb2YgYSBn
ZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKKyMgVUQ6RzozMiA9PiB1c2UgYW5kIGRl
ZiBvZiB0aGUgbG93IDMyIGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFs
dWUKKyMgVTpHOjY0ID0+IHVzZSBvZiB0aGUgbG93IDY0IGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBv
c2UgcmVnaXN0ZXIgb3IgdmFsdWUKKyMgWkQ6RzozMiA9PiBkZWYgb2YgYWxsIGJpdHMgb2YgYSBn
ZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIsIHdoZXJlIGFsbCBidXQgdGhlIGxvdyAzMiBiaXRzIGFy
ZSBndWFyYW50ZWVkIHRvIGJlIHplcm9lZC4KKyMgVUE6RzpQdHIgPT4gVXNlQWRkciAoc2VlIGNv
bW1lbnQgaW4gQXJnLmgpCisjIFU6RjozMiA9PiB1c2Ugb2YgYSBmbG9hdCByZWdpc3RlciBvciB2
YWx1ZQorIyBVOkY6NjQgPT4gdXNlIG9mIGEgZG91YmxlIHJlZ2lzdGVyIG9yIHZhbHVlCisjIEQ6
RjozMiA9PiBkZWYgb2YgYSBmbG9hdCByZWdpc3RlciBvciB2YWx1ZQorIyBVRDpGOjMyID0+IHVz
ZSBhbmQgZGVmIG9mIGEgZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUKICMKICMgQXJndW1lbnQga2lu
ZHM6CiAjIFRtcCA9PiB0ZW1wb3Jhcnkgb3IgcmVnaXN0ZXIKQEAgLTQ0LDExICs0NywxMSBAQAog
IyBvZiB0aGluZ3MuIFNvLCBhbHRob3VnaCB0aGlzIGZpbGUgdXNlcyBhIHBhcnRpY3VsYXIgaW5k
ZW50YXRpb24gc3R5bGUsIG5vbmUgb2YgdGhlIHdoaXRlc3BhY2Ugb3IKICMgZXZlbiBuZXdsaW5l
cyBhcmUgbWVhbmluZ2Z1bCB0byB0aGUgcGFyc2VyLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHdy
aXRlOgogIwotIyBGb280MiBVOkcsIFVEOkYgSW1tLCBUbXAgQWRkciwgVG1wCisjIEZvbzQyIFU6
RzozMiwgVUQ6RjozMiBJbW0sIFRtcCBBZGRyLCBUbXAKICMKICMgQW5kIHRoZSBwYXJzZXIgd291
bGQga25vdyB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgYXM6CiAjCi0jIEZvbzQyIFU6RywgVUQ6Rgor
IyBGb280MiBVOkc6MzIsIFVEOkY6MzIKICMgICAgIEltbSwgVG1wCiAjICAgICBBZGRyLCBUbXAK
ICMKQEAgLTU4LDIyICs2MSwyMiBAQAogIyB1bmlvbiBvZiB0aG9zZSBhcmNoaXRlY3R1cmVzLiBG
b3IgZXhhbXBsZSwgaWYgdGhpcyBpcyB0aGUgb25seSBvdmVybG9hZCBvZiB0aGUgb3Bjb2RlLCB0
aGVuIGl0IG1ha2VzIHRoZQogIyBvcGNvZGUgb25seSBhdmFpbGFibGUgb24geDg2XzY0OgogIwot
IyB4ODZfNjQ6IEZ1enogVUQ6RywgRDpHCisjIHg4Nl82NDogRnV6eiBVRDpHOjY0LCBEOkc6NjQK
ICMgICAgIFRtcCwgVG1wCiAjICAgICBUbXAsIEFkZHIKICMKICMgQnV0IHRoaXMgb25seSByZXN0
cmljdHMgdGhlIHR3by1vcGVyYW5kIGZvcm0sIHRoZSBvdGhlciBmb3JtIGlzIGFsbG93ZWQgb24g
YWxsIGFyY2hpdGVjdHVyZXM6CiAjCi0jIHg4Nl82NDogRnV6eiBVRDpHLCBEOkcKKyMgeDg2XzY0
OiBGdXp6IFVEOkc6NjQsIEQ6Rzo2NAogIyAgICAgVG1wLCBUbXAKICMgICAgIFRtcCwgQWRkcgot
IyBGdXp6IFVEOkcsIEQ6RywgVTpGCisjIEZ1enogVUQ6RzpQdHIsIEQ6RzpQdHIsIFU6RjpQdHIK
ICMgICAgIFRtcCwgVG1wLCBUbXAKICMgICAgIFRtcCwgQWRkciwgVG1wCiAjCiAjIEFuZCB5b3Ug
Y2FuIGFsc28gcmVzdHJpY3QgaW5kaXZpZHVhbCBmb3JtczoKICMKLSMgVGhpbmd5IFVEOkcsIEQ6
RworIyBUaGluZ3kgVUQ6RzozMiwgRDpHOjMyCiAjICAgICBUbXAsIFRtcAogIyAgICAgYXJtNjQ6
IFRtcCwgQWRkcgogIwpAQCAtODEsNyArODQsNyBAQAogIyBmb3JtLiBJbiB0aGlzIGV4YW1wbGUs
IHRoZSB2ZXJzaW9uIHRoYXQgdGFrZXMgYW4gYWRkcmVzcyBpcyBvbmx5IGF2YWlsYWJsZSBvbiBh
cm12NyB3aGlsZSB0aGUgb3RoZXIKICMgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiBhcm12NyBv
ciB4ODZfNjQ6CiAjCi0jIHg4Nl82NCBhcm12NzogQnV6eiBVOkcsIFVEOkYKKyMgeDg2XzY0IGFy
bXY3OiBCdXp6IFU6RzozMiwgVUQ6RjozMgogIyAgICAgVG1wLCBUbXAKICMgICAgIEltbSwgVG1w
CiAjICAgICBhcm12NzogQWRkciwgVG1wCkBAIC0xMDMsMjE0ICsxMDYsMjE0IEBACiAKIE5vcAog
Ci1BZGQzMiBVOkcsIFVEOkcKK0FkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAog
ICAgIHg4NjogSW1tLCBBZGRyCiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogICAg
IHg4NjogVG1wLCBBZGRyCiAKLUFkZDMyIFU6RywgVTpHLCBEOkcKK0FkZDMyIFU6RzozMiwgVTpH
OjMyLCBaRDpHOjMyCiAgICAgSW1tLCBUbXAsIFRtcAogICAgIFRtcCwgVG1wLCBUbXAKIAotNjQ6
IEFkZDY0IFU6RywgVUQ6RworNjQ6IEFkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1w
CiAgICAgeDg2OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAg
ICAgeDg2OiBUbXAsIEFkZHIKIAotNjQ6IEFkZDY0IFU6RywgVTpHLCBEOkcKKzY0OiBBZGQ2NCBV
Okc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgSW1tLCBUbXAsIFRtcAogICAgIFRtcCwgVG1wLCBU
bXAKIAotQWRkRG91YmxlIFU6RiwgVUQ6RgorQWRkRG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAg
IFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotQWRkRmxvYXQgVTpGLCBVRDpGCitBZGRG
bG9hdCBVOkY6MzIsIFVEOkY6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAK
LVN1YjMyIFU6RywgVUQ6RworU3ViMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAg
ICAgeDg2OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAgICAg
eDg2OiBUbXAsIEFkZHIKIAotNjQ6IFN1YjY0IFU6RywgVUQ6RworNjQ6IFN1YjY0IFU6Rzo2NCwg
VUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAog
ICAgIHg4NjogQWRkciwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKIAotU3ViRG91YmxlIFU6Riwg
VUQ6RgorU3ViRG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBB
ZGRyLCBUbXAKIAotU3ViRmxvYXQgVTpGLCBVRDpGCitTdWJGbG9hdCBVOkY6MzIsIFVEOkY6MzIK
ICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLU5lZzMyIFVEOkcKK05lZzMyIFVa
RDpHOjMyCiAgICAgVG1wCiAgICAgQWRkcgogCi02NDogTmVnNjQgVUQ6RworNjQ6IE5lZzY0IFVE
Okc6NjQKICAgICBUbXAKIAotTXVsMzIgVTpHLCBVRDpHCitNdWwzMiBVOkc6MzIsIFVaRDpHOjMy
CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1NdWwzMiBVOkcsIFU6RywgRDpH
CitNdWwzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIEltbSwgVG1wLCBUbXAKIAotNjQ6
IE11bDY0IFU6RywgVUQ6RworNjQ6IE11bDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1w
CiAKLU11bERvdWJsZSBVOkYsIFVEOkYKK011bERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBU
bXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLU11bEZsb2F0IFU6RiwgVUQ6RgorTXVsRmxv
YXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1E
aXZEb3VibGUgVTpGLCBVRDpGCitEaXZEb3VibGUgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBU
bXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1EaXZGbG9hdCBVOkYsIFVEOkYKK0RpdkZsb2F0IFU6
RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAoteDg2OiBY
ODZDb252ZXJ0VG9Eb3VibGVXb3JkMzIgVTpHLCBEOkcKK3g4NjogWDg2Q29udmVydFRvRG91Ymxl
V29yZDMyIFU6RzozMiwgWkQ6RzozMgogICAgIFRtcCosIFRtcCoKIAoteDg2XzY0OiBYODZDb252
ZXJ0VG9RdWFkV29yZDY0IFU6RywgRDpHCit4ODZfNjQ6IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQg
VTpHOjY0LCBEOkc6NjQKICAgICBUbXAqLCBUbXAqCiAKLXg4NjogWDg2RGl2MzIgVUQ6RywgVUQ6
RywgVTpHCit4ODY6IFg4NkRpdjMyIFVaRDpHOjMyLCBVWkQ6RzozMiwgVTpHOjMyCiAgICAgVG1w
KiwgVG1wKiwgVG1wCiAKLXg4Nl82NDogWDg2RGl2NjQgVUQ6RywgVUQ6RywgVTpHCit4ODZfNjQ6
IFg4NkRpdjY0IFVaRDpHOjY0LCBVWkQ6Rzo2NCwgVTpHOjY0CiAgICAgVG1wKiwgVG1wKiwgVG1w
CiAKLUxlYSBVQTpHLCBEOkcKK0xlYSBVQTpHOlB0ciwgRDpHOlB0cgogICAgIEFkZHIsIFRtcAog
Ci1BbmQzMiBVOkcsIFVEOkcKK0FuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAog
ICAgIEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IEFkZHIsIFRtcAogICAg
IHg4NjogSW1tLCBBZGRyCiAKLTY0OiBBbmQ2NCBVOkcsIFVEOkcKKzY0OiBBbmQ2NCBVOkc6NjQs
IFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIEltbSwgVG1wCiAKLUFuZERvdWJsZSBVOkYsIFVE
OkYKK0FuZERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAogCi1BbmRGbG9hdCBV
OkYsIFVEOkYKK0FuZEZsb2F0IFU6RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAKLUxzaGlm
dDMyIFU6RywgVUQ6RworTHNoaWZ0MzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCosIFRtcAog
ICAgIEltbSwgVG1wCiAKLTY0OiBMc2hpZnQ2NCBVOkcsIFVEOkcKKzY0OiBMc2hpZnQ2NCBVOkc6
NjQsIFVEOkc6NjQKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi1Sc2hpZnQzMiBVOkcs
IFVEOkcKK1JzaGlmdDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0s
IFRtcAogCi02NDogUnNoaWZ0NjQgVTpHLCBVRDpHCis2NDogUnNoaWZ0NjQgVTpHOjY0LCBVRDpH
OjY0CiAgICAgVG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKIAotVXJzaGlmdDMyIFU6RywgVUQ6Rwor
VXJzaGlmdDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAog
Ci02NDogVXJzaGlmdDY0IFU6RywgVUQ6RworNjQ6IFVyc2hpZnQ2NCBVOkc6NjQsIFVEOkc6NjQK
ICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi1PcjMyIFU6RywgVUQ6RworT3IzMiBVOkc6
MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBB
ZGRyCiAgICAgeDg2OiBBZGRyLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgogCi02NDogT3I2NCBV
OkcsIFVEOkcKKzY0OiBPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgSW1t
LCBUbXAKIAotWG9yMzIgVTpHLCBVRDpHCitYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1w
LCBUbXAKICAgICBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAgICAgeDg2OiBBZGRyLCBU
bXAKICAgICB4ODY6IEltbSwgQWRkcgogCi02NDogWG9yNjQgVTpHLCBVRDpHCis2NDogWG9yNjQg
VTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIElt
bSwgVG1wCiAKLU5vdDMyIFVEOkcKK05vdDMyIFVaRDpHOjMyCiAgICAgVG1wCiAgICAgeDg2OiBB
ZGRyCiAKLTY0OiBOb3Q2NCBVRDpHCis2NDogTm90NjQgVUQ6Rzo2NAogICAgIFRtcAogICAgIHg4
NjogQWRkcgogCi1DZWlsRG91YmxlIFU6RiwgVUQ6RgorQ2VpbERvdWJsZSBVOkY6NjQsIFVEOkY6
NjQKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcAogCi1DZWlsRmxvYXQgVTpGLCBVRDpGCitD
ZWlsRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAKIAot
U3FydERvdWJsZSBVOkYsIFVEOkYKK1NxcnREb3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1w
LCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1TcXJ0RmxvYXQgVTpGLCBVRDpGCitTcXJ0Rmxv
YXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1D
b252ZXJ0SW50MzJUb0RvdWJsZSBVOkcsIEQ6RgorQ29udmVydEludDMyVG9Eb3VibGUgVTpHOjMy
LCBEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLTY0OiBDb252ZXJ0
SW50NjRUb0RvdWJsZSBVOkcsIEQ6RgorNjQ6IENvbnZlcnRJbnQ2NFRvRG91YmxlIFU6Rzo2NCwg
RDpGOjY0CiAgICAgVG1wLCBUbXAKIAotQ291bnRMZWFkaW5nWmVyb3MzMiBVOkcsIEQ6RworQ291
bnRMZWFkaW5nWmVyb3MzMiBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4Njog
QWRkciwgVG1wCiAKLTY0OiBDb3VudExlYWRpbmdaZXJvczY0IFU6RywgRDpHCis2NDogQ291bnRM
ZWFkaW5nWmVyb3M2NCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRy
LCBUbXAKIAotQ29udmVydERvdWJsZVRvRmxvYXQgVTpGLCBEOkYKK0NvbnZlcnREb3VibGVUb0Zs
b2F0IFU6Rjo2NCwgRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1D
b252ZXJ0RmxvYXRUb0RvdWJsZSBVOkYsIEQ6RgorQ29udmVydEZsb2F0VG9Eb3VibGUgVTpGOjMy
LCBEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKQEAgLTMxOCw3ICsz
MjEsNyBAQCBDb252ZXJ0RmxvYXRUb0RvdWJsZSBVOkYsIEQ6RgogIyB0aGUgcGxhdGZvcm0uIEkn
bSBub3QgZW50aXJlbHkgc3VyZSB0aGF0IHRoaXMgaXMgYSBnb29kIHRoaW5nOyBpdCBtaWdodCBi
ZSBiZXR0ZXIgdG8ganVzdCBoYXZlIGEKICMgTW92ZTY0IGluc3RydWN0aW9uLiBPVE9ILCBvdXIg
TWFjcm9Bc3NlbWJsZXJzIGFscmVhZHkgaGF2ZSB0aGlzIG5vdGlvbiBvZiAibW92ZSgpIiB0aGF0
IGJhc2ljYWxseQogIyBtZWFucyBtb3ZlUHRyLgotTW92ZSBVOkcsIEQ6RworTW92ZSBVOkc6UHRy
LCBEOkc6UHRyCiAgICAgVG1wLCBUbXAKICAgICBJbW0sIFRtcCBhcyBzaWduRXh0ZW5kMzJUb1B0
cgogICAgIEltbTY0LCBUbXAKQEAgLTMyOCw3ICszMzEsNyBAQCBNb3ZlIFU6RywgRDpHCiAgICAg
VG1wLCBJbmRleCBhcyBzdG9yZVB0cgogICAgIEltbSwgQWRkciBhcyBzdG9yZVB0cgogCi1Nb3Zl
MzIgVTpHLCBEOkcKK01vdmUzMiBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCBhcyB6ZXJv
RXh0ZW5kMzJUb1B0cgogICAgIEFkZHIsIFRtcCBhcyBsb2FkMzIKICAgICBJbmRleCwgVG1wIGFz
IGxvYWQzMgpAQCAtMzM3LDExMiArMzQwLDExMiBAQCBNb3ZlMzIgVTpHLCBEOkcKICAgICBJbW0s
IEFkZHIgYXMgc3RvcmUzMgogICAgIEltbSwgSW5kZXggYXMgc3RvcmUzMgogCi1TaWduRXh0ZW5k
MzJUb1B0ciBVOkcsIEQ6RworU2lnbkV4dGVuZDMyVG9QdHIgVTpHOjMyLCBEOkc6UHRyCiAgICAg
VG1wLCBUbXAKIAotWmVyb0V4dGVuZDhUbzMyIFU6RywgRDpHCitaZXJvRXh0ZW5kOFRvMzIgVTpH
OjgsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkOAogICAgIElu
ZGV4LCBUbXAgYXMgbG9hZDgKIAotU2lnbkV4dGVuZDhUbzMyIFU6RywgRDpHCitTaWduRXh0ZW5k
OFRvMzIgVTpHOjgsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wIGFz
IGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMgogICAgIEluZGV4LCBUbXAgYXMgbG9hZDhTaWduZWRFeHRl
bmRUbzMyCiAKLVplcm9FeHRlbmQxNlRvMzIgVTpHLCBEOkcKK1plcm9FeHRlbmQxNlRvMzIgVTpH
OjE2LCBaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDE2CiAgICAg
SW5kZXgsIFRtcCBhcyBsb2FkMTYKIAotU2lnbkV4dGVuZDE2VG8zMiBVOkcsIEQ6RworU2lnbkV4
dGVuZDE2VG8zMiBVOkc6MTYsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBh
cyBsb2FkMTZTaWduZWRFeHRlbmRUbzMyCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkMTZTaWduZWRF
eHRlbmRUbzMyCiAKLU1vdmVGbG9hdCBVOkYsIEQ6RgorTW92ZUZsb2F0IFU6RjozMiwgRDpGOjMy
CiAgICAgVG1wLCBUbXAgYXMgbW92ZURvdWJsZQogICAgIEFkZHIsIFRtcCBhcyBsb2FkRmxvYXQK
ICAgICBJbmRleCwgVG1wIGFzIGxvYWRGbG9hdAogICAgIFRtcCwgQWRkciBhcyBzdG9yZUZsb2F0
CiAgICAgVG1wLCBJbmRleCBhcyBzdG9yZUZsb2F0CiAKLU1vdmVEb3VibGUgVTpGLCBEOkYKK01v
dmVEb3VibGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBs
b2FkRG91YmxlCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkRG91YmxlCiAgICAgVG1wLCBBZGRyIGFz
IHN0b3JlRG91YmxlCiAgICAgVG1wLCBJbmRleCBhcyBzdG9yZURvdWJsZQogCi1Nb3ZlWmVyb1Rv
RG91YmxlIEQ6RgorTW92ZVplcm9Ub0RvdWJsZSBEOkY6NjQKICAgICBUbXAKIAotNjQ6IE1vdmU2
NFRvRG91YmxlIFU6RywgRDpGCis2NDogTW92ZTY0VG9Eb3VibGUgVTpHOjY0LCBEOkY6NjQKICAg
ICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkRG91YmxlCiAgICAgSW5kZXgsIFRtcCBh
cyBsb2FkRG91YmxlCiAKLU1vdmVJbnQzMlRvUGFja2VkIFU6RywgRDpGCitNb3ZlSW50MzJUb1Bh
Y2tlZCBVOkc6MzIsIEQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wIGFzIGxvYWRG
bG9hdAogICAgIEluZGV4LCBUbXAgYXMgbG9hZEZsb2F0CiAKLTY0OiBNb3ZlRG91YmxlVG82NCBV
OkYsIEQ6RworNjQ6IE1vdmVEb3VibGVUbzY0IFU6Rjo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAK
ICAgICBBZGRyLCBUbXAgYXMgbG9hZDY0CiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkNjQKIAotTW92
ZVBhY2tlZFRvSW50MzIgVTpGLCBEOkcKK01vdmVQYWNrZWRUb0ludDMyIFU6RjozMiwgRDpHOjMy
CiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDMyCiAgICAgSW5kZXgsIFRtcCBh
cyBsb2FkMzIKIAotTG9hZDggVTpHLCBEOkcKK0xvYWQ4IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRk
ciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCi1TdG9yZTggVTpHLCBEOkcKK1N0b3JlOCBVOkc6OCwg
RDpHOjgKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgSW1tLCBJbmRleAogICAg
IEltbSwgQWRkcgogCi1Mb2FkOFNpZ25lZEV4dGVuZFRvMzIgVTpHLCBEOkcKK0xvYWQ4U2lnbmVk
RXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAK
IAotTG9hZDE2IFU6RywgRDpHCitMb2FkMTYgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1w
CiAgICAgSW5kZXgsIFRtcAogCi1Mb2FkMTZTaWduZWRFeHRlbmRUbzMyIFU6RywgRDpHCitMb2Fk
MTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIElu
ZGV4LCBUbXAKIAotQ29tcGFyZTMyIFU6RywgVTpHLCBVOkcsIEQ6RworQ29tcGFyZTMyIFU6Rzoz
MiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCiAg
ICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcAogCi02NDogQ29tcGFyZTY0IFU6RywgVTpHLCBVOkcs
IEQ6RworNjQ6IENvbXBhcmU2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjMyCiAgICAg
UmVsQ29uZCwgVG1wLCBJbW0sIFRtcAogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKIAotVGVz
dDMyIFU6RywgVTpHLCBVOkcsIEQ6RworVGVzdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpE
Okc6MzIKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbSwgVG1wCiAgICAgUmVzQ29uZCwgVG1w
LCBUbXAsIFRtcAogCi02NDogVGVzdDY0IFU6RywgVTpHLCBVOkcsIEQ6RworNjQ6IFRlc3Q2NCBV
Okc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjMyCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRt
cAogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAKIAogIyBOb3RlIHRoYXQgYnJhbmNoZXMgaGF2
ZSBzb21lIGxvZ2ljIGluIEFpck9wdGltaXplQmxvY2tPcmRlci5jcHAuIElmIHlvdSBhZGQgbmV3
IGJyYW5jaGVzLCBwbGVhc2UgbWFrZSBzdXJlCiAjIHlvdSBvcHQgdGhlbSBpbnRvIHRoZSBibG9j
ayBvcmRlciBvcHRpbWl6YXRpb25zLgogCi1CcmFuY2g4IFU6RywgVTpHLCBVOkcgL2JyYW5jaAor
QnJhbmNoOCBVOkc6MzIsIFU6Rzo4LCBVOkc6OCAvYnJhbmNoCiAgICAgeDg2OiBSZWxDb25kLCBB
ZGRyLCBJbW0KICAgICB4ODY6IFJlbENvbmQsIEluZGV4LCBJbW0KIAotQnJhbmNoMzIgVTpHLCBV
OkcsIFU6RyAvYnJhbmNoCitCcmFuY2gzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyIC9icmFuY2gK
ICAgICB4ODY6IFJlbENvbmQsIEFkZHIsIEltbQogICAgIFJlbENvbmQsIFRtcCwgVG1wCiAgICAg
UmVsQ29uZCwgVG1wLCBJbW0KQEAgLTQ1MCwxNyArNDUzLDE3IEBAIEJyYW5jaDMyIFU6RywgVTpH
LCBVOkcgL2JyYW5jaAogICAgIHg4NjogUmVsQ29uZCwgQWRkciwgVG1wCiAgICAgeDg2OiBSZWxD
b25kLCBJbmRleCwgSW1tCiAKLTY0OiBCcmFuY2g2NCBVOkcsIFU6RywgVTpHIC9icmFuY2gKKzY0
OiBCcmFuY2g2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0IC9icmFuY2gKICAgICBSZWxDb25kLCBU
bXAsIFRtcAogICAgIHg4NjogUmVsQ29uZCwgVG1wLCBBZGRyCiAgICAgeDg2OiBSZWxDb25kLCBB
ZGRyLCBUbXAKICAgICB4ODY6IFJlbENvbmQsIEluZGV4LCBUbXAKIAotQnJhbmNoVGVzdDggVTpH
LCBVOkcsIFU6RyAvYnJhbmNoCitCcmFuY2hUZXN0OCBVOkc6MzIsIFU6Rzo4LCBVOkc6OCAvYnJh
bmNoCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBJbW0KICAgICB4ODY6IFJlc0NvbmQsIEluZGV4
LCBJbW0KIAotQnJhbmNoVGVzdDMyIFU6RywgVTpHLCBVOkcgL2JyYW5jaAorQnJhbmNoVGVzdDMy
IFU6RzozMiwgVTpHOjMyLCBVOkc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAg
ICAgUmVzQ29uZCwgVG1wLCBJbW0KICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbQpAQCAtNDY4
LDk1ICs0NzEsOTUgQEAgQnJhbmNoVGVzdDMyIFU6RywgVTpHLCBVOkcgL2JyYW5jaAogCiAjIFdh
cm5pbmc6IGZvcm1zIHRoYXQgdGFrZSBhbiBpbW1lZGlhdGUgd2lsbCBzaWduLWV4dGVuZCB0aGVp
ciBpbW1lZGlhdGUuIFlvdSBwcm9iYWJseSB3YW50CiAjIEJyYW5jaFRlc3QzMiBpbiBtb3N0IGNh
c2VzIHdoZXJlIHlvdSB1c2UgYW4gaW1tZWRpYXRlLgotNjQ6IEJyYW5jaFRlc3Q2NCBVOkcsIFU6
RywgVTpHIC9icmFuY2gKKzY0OiBCcmFuY2hUZXN0NjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCAv
YnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIEltbQogICAg
IHg4NjogUmVzQ29uZCwgQWRkciwgSW1tCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBUbXAKICAg
ICB4ODY6IFJlc0NvbmQsIEluZGV4LCBJbW0KIAotQnJhbmNoRG91YmxlIFU6RywgVTpGLCBVOkYg
L2JyYW5jaAorQnJhbmNoRG91YmxlIFU6RzozMiwgVTpGOjY0LCBVOkY6NjQgL2JyYW5jaAogICAg
IERvdWJsZUNvbmQsIFRtcCwgVG1wCiAKLUJyYW5jaEZsb2F0IFU6RywgVTpGLCBVOkYgL2JyYW5j
aAorQnJhbmNoRmxvYXQgVTpHOjMyLCBVOkY6MzIsIFU6RjozMiAvYnJhbmNoCiAgICAgRG91Ymxl
Q29uZCwgVG1wLCBUbXAKIAotQnJhbmNoQWRkMzIgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorQnJh
bmNoQWRkMzIgVTpHOjMyLCBVOkc6MzIsIFVaRDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBU
bXAsIFRtcAogICAgIFJlc0NvbmQsIEltbSwgVG1wCiAgICAgeDg2OiBSZXNDb25kLCBJbW0sIEFk
ZHIKICAgICB4ODY6IFJlc0NvbmQsIFRtcCwgQWRkcgogICAgIHg4NjogUmVzQ29uZCwgQWRkciwg
VG1wCiAKLTY0OiBCcmFuY2hBZGQ2NCBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCis2NDogQnJhbmNo
QWRkNjQgVTpHOjMyLCBVOkc6NjQsIFVEOkc6NjQgL2JyYW5jaAogICAgIFJlc0NvbmQsIEltbSwg
VG1wCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKIAotQnJhbmNoTXVsMzIgVTpHLCBVOkcsIFVEOkcg
L2JyYW5jaAorQnJhbmNoTXVsMzIgVTpHOjMyLCBVOkc6MzIsIFVaRDpHOjMyIC9icmFuY2gKICAg
ICBSZXNDb25kLCBUbXAsIFRtcAogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAKLUJyYW5j
aE11bDMyIFU6RywgVTpHLCBVOkcsIEQ6RyAvYnJhbmNoCitCcmFuY2hNdWwzMiBVOkc6MzIsIFU6
RzozMiwgVTpHOjMyLCBaRDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1w
CiAKLTY0OiBCcmFuY2hNdWw2NCBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCis2NDogQnJhbmNoTXVs
NjQgVTpHOjMyLCBVOkc6NjQsIFVaRDpHOjY0IC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRt
cAogCi1CcmFuY2hTdWIzMiBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCitCcmFuY2hTdWIzMiBVOkc6
MzIsIFU6RzozMiwgVVpEOkc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAgICAg
UmVzQ29uZCwgSW1tLCBUbXAKICAgICB4ODY6IFJlc0NvbmQsIEltbSwgQWRkcgogICAgIHg4Njog
UmVzQ29uZCwgVG1wLCBBZGRyCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBUbXAKIAotNjQ6IEJy
YW5jaFN1YjY0IFU6RywgVTpHLCBVRDpHIC9icmFuY2gKKzY0OiBCcmFuY2hTdWI2NCBVOkc6MzIs
IFU6Rzo2NCwgVUQ6Rzo2NCAvYnJhbmNoCiAgICAgUmVzQ29uZCwgSW1tLCBUbXAKICAgICBSZXND
b25kLCBUbXAsIFRtcAogCi1CcmFuY2hOZWczMiBVOkcsIFVEOkcgL2JyYW5jaAorQnJhbmNoTmVn
MzIgVTpHOjMyLCBVWkQ6RzozMiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wCiAKLTY0OiBCcmFu
Y2hOZWc2NCBVOkcsIFVEOkcgL2JyYW5jaAorNjQ6IEJyYW5jaE5lZzY0IFU6RzozMiwgVVpEOkc6
NjQgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcAogCi1Nb3ZlQ29uZGl0aW9uYWxseTMyIFU6Rywg
VTpHLCBVOkcsIFU6RywgVUQ6RworTW92ZUNvbmRpdGlvbmFsbHkzMiBVOkc6MzIsIFU6RzozMiwg
VTpHOjMyLCBVOkc6UHRyLCBVRDpHOlB0cgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAsIFRt
cAogCi02NDogTW92ZUNvbmRpdGlvbmFsbHk2NCBVOkcsIFU6RywgVTpHLCBVOkcsIFVEOkcKKzY0
OiBNb3ZlQ29uZGl0aW9uYWxseTY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIsIFVE
Okc6UHRyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLU1vdmVDb25kaXRpb25h
bGx5VGVzdDMyIFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RworTW92ZUNvbmRpdGlvbmFsbHlUZXN0
MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpHOlB0ciwgVUQ6RzpQdHIKICAgICBSZXNDb25k
LCBUbXAsIFRtcCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1wLCBUbXAKIAot
NjQ6IE1vdmVDb25kaXRpb25hbGx5VGVzdDY0IFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RworNjQ6
IE1vdmVDb25kaXRpb25hbGx5VGVzdDY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIs
IFVEOkc6UHRyCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwg
VG1wLCBJbW0sIFRtcCwgVG1wCiAKLU1vdmVDb25kaXRpb25hbGx5RG91YmxlIFU6RywgVTpGLCBV
OkYsIFU6RywgVUQ6RworTW92ZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHOjMyLCBVOkY6NjQsIFU6
Rjo2NCwgVTpHOlB0ciwgVUQ6RzpQdHIKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwgVG1wLCBU
bXAKIAotTW92ZUNvbmRpdGlvbmFsbHlGbG9hdCBVOkcsIFU6RiwgVTpGLCBVOkcsIFVEOkcKK01v
dmVDb25kaXRpb25hbGx5RmxvYXQgVTpHOjMyLCBVOkY6MzIsIFU6RjozMiwgVTpHOlB0ciwgVUQ6
RzpQdHIKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKIAotTW92ZURvdWJsZUNv
bmRpdGlvbmFsbHkzMiBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKK01vdmVEb3VibGVDb25kaXRp
b25hbGx5MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVs
Q29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLTY0OiBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0
IFU6RywgVTpHLCBVOkcsIFU6RiwgVUQ6RgorNjQ6IE1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQg
VTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVsQ29uZCwgVG1w
LCBUbXAsIFRtcCwgVG1wCiAKLU1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyIFU6RywgVTpH
LCBVOkcsIFU6RiwgVUQ6RgorTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0MzIgVTpHOjMyLCBV
Okc6MzIsIFU6RzozMiwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRt
cCwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcCwgVG1wCiAKLTY0OiBNb3ZlRG91Ymxl
Q29uZGl0aW9uYWxseVRlc3Q2NCBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKKzY0OiBNb3ZlRG91
YmxlQ29uZGl0aW9uYWxseVRlc3Q2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBVOkY6NjQsIFVE
OkY6NjQKICAgICBSZXNDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAs
IEltbSwgVG1wLCBUbXAKIAotTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHLCBVOkYs
IFU6RiwgVTpGLCBVRDpGCitNb3ZlRG91YmxlQ29uZGl0aW9uYWxseURvdWJsZSBVOkc6MzIsIFU6
Rjo2NCwgVTpGOjY0LCBVOkY6NjQsIFVEOkY6NjQKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwg
VG1wLCBUbXAKIAotTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlGbG9hdCBVOkcsIFU6RiwgVTpGLCBV
OkYsIFVEOkYKK01vdmVEb3VibGVDb25kaXRpb25hbGx5RmxvYXQgVTpHOjMyLCBVOkY6MzIsIFU6
RjozMiwgVTpGOjY0LCBVRDpGOjY0CiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1w
CiAKIEp1bXAgL2JyYW5jaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJT
cGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAg
ICAgICAgICAgICAvLyBjb2RlIGlzIHN1Ym9wdGltYWwuCiAgICAgICAgICAgICBpbnN0LmZvckVh
Y2hUbXBXaXRoRXh0cmFDbG9iYmVyZWRSZWdzKAogICAgICAgICAgICAgICAgIGluZGV4IDwgYmxv
Y2stPnNpemUoKSA/ICZibG9jay0+YXQoaW5kZXgpIDogbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICBbJnJlZ2lzdGVyU2V0XSAoY29uc3QgVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5
cGUpIHsKKyAgICAgICAgICAgICAgICBbJnJlZ2lzdGVyU2V0XSAoY29uc3QgVG1wJiB0bXAsIEFy
Zzo6Um9sZSByb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRtcC5pc1JlZygpICYmIEFyZzo6aXNEZWYocm9sZSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZWdpc3RlclNldC5zZXQodG1wLnJlZygpKTsKICAgICAgICAgICAgICAgICB9KTsK
QEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogCiAg
ICAgICAgICAgICAvLyBOb3cgZmFsbCBiYWNrIG9uIHNwaWxsaW5nIHVzaW5nIHNlcGFyYXRlIE1v
dmUncyB0byBsb2FkL3N0b3JlIHRoZSB0bXAuCiAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAo
Ci0gICAgICAgICAgICAgICAgWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlw
ZSB0eXBlKSB7CisgICAgICAgICAgICAgICAgWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJvbGUs
IEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0
bXAuaXNSZWcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICAgICAgCkBAIC0xNDAsNiArMTQwLDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYg
Y29kZSkKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RGVmOgorICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFyZzo6WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVn
IHJlZyA6IHJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIXNldEFmdGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwpAQCAtMTQ5LDYgKzE1MCw3IEBAIHZvaWQgc3Bp
bGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OlVzZURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlVzZVpEZWY6CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgogICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIChSZWcgcmVnIDogcmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3JlLmdldChyZWcpICYmICFzZXRBZnRlci5nZXQo
cmVnKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0aC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0
aC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRt
cFdpZHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBaXJUbXBXaWR0aC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUg
IkFpckNvZGUuaCIKKyNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK1RtcFdpZHRoOjpUbXBXaWR0aCgp
Cit7Cit9CisKK1RtcFdpZHRoOjpUbXBXaWR0aChDb2RlJiBjb2RlKQoreworICAgIHJlY29tcHV0
ZShjb2RlKTsKK30KKworVG1wV2lkdGg6On5UbXBXaWR0aCgpCit7Cit9CisKK3ZvaWQgVG1wV2lk
dGg6OnJlY29tcHV0ZShDb2RlJiBjb2RlKQoreworICAgIG1fd2lkdGguY2xlYXIoKTsKKyAgICAK
KyAgICAvLyBBc3N1bWUgdGhlIHdvcnN0IGZvciByZWdpc3RlcnMuCisgICAgUmVnaXN0ZXJTZXQ6
OmFsbFJlZ2lzdGVycygpLmZvckVhY2goCisgICAgICAgIFsmXSAoUmVnIHJlZykgeworICAgICAg
ICAgICAgV2lkdGhzJiB3aWR0aHMgPSBtX3dpZHRoLmFkZChUbXAocmVnKSwgV2lkdGhzKCkpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIEFyZzo6VHlwZSB0eXBlID0gQXJnKFRtcChyZWcp
KS50eXBlKCk7CisgICAgICAgICAgICB3aWR0aHMudXNlID0gQXJnOjpjb25zZXJ2YXRpdmVXaWR0
aCh0eXBlKTsKKyAgICAgICAgICAgIHdpZHRocy5kZWYgPSBBcmc6OmNvbnNlcnZhdGl2ZVdpZHRo
KHR5cGUpOworICAgICAgICB9KTsKKyAgICAKKyAgICAvLyBOb3cgcmVhbGx5IGFuYWx5emUgZXZl
cnl0aGluZyBidXQgTW92ZSdzIG92ZXIgVG1wJ3MsIGJ1dCBzZXQgYXNpZGUgdGhvc2UgTW92ZSdz
IHNvIHdlIGNhbiBmaW5kCisgICAgLy8gdGhlbSBxdWlja2x5IGR1cmluZyB0aGUgZml4cG9pbnQg
YmVsb3cuIE5vdGUgdGhhdCB3ZSBjYW4gbWFrZSB0aGlzIGFuYWx5c2lzIHN0cm9uZ2VyIGJ5Cisg
ICAgLy8gcmVjb2duaXppbmcgbW9yZSBraW5kcyBvZiBNb3ZlJ3Mgb3IgYW55dGhpbmcgdGhhdCBo
YXMgTW92ZS1saWtlIGJlaGF2aW9yLCB0aG91Z2ggaXQncyBwcm9iYWJseSBub3QKKyAgICAvLyB3
b3J0aCBpdC4KKyAgICBWZWN0b3I8SW5zdCo+IG1vdmVzOworICAgIGZvciAoQmFzaWNCbG9jayog
YmxvY2sgOiBjb2RlKSB7CisgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpibG9jaykgeworICAg
ICAgICAgICAgaWYgKGluc3Qub3Bjb2RlID09IE1vdmUgJiYgaW5zdC5hcmdzWzFdLmlzVG1wKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5hcmdzWzBdLmlzVG1wKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbW92ZXMuYXBwZW5kKCZpbnN0KTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpbnN0LmFyZ3Nb
MF0uaXNJbW0oKQorICAgICAgICAgICAgICAgICAgICAmJiBpbnN0LmFyZ3NbMF0udmFsdWUoKSA+
PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFRtcCB0bXAgPSBpbnN0LmFyZ3NbMV0udG1wKCk7
CisgICAgICAgICAgICAgICAgICAgIFdpZHRocyYgd2lkdGhzID0gbV93aWR0aC5hZGQodG1wLCBX
aWR0aHMoQXJnOjpHUCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIGlmIChpbnN0LmFyZ3NbMF0udmFsdWUoKSA8PSBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDhfdD46Om1heCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhz
LmRlZiA9IHN0ZDo6bWF4KHdpZHRocy5kZWYsIEFyZzo6V2lkdGg4KTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoaW5zdC5hcmdzWzBdLnZhbHVlKCkgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQxNl90Pjo6bWF4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMuZGVmID0g
c3RkOjptYXgod2lkdGhzLmRlZiwgQXJnOjpXaWR0aDE2KTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoaW5zdC5hcmdzWzBdLnZhbHVlKCkgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMuZGVmID0gc3RkOjpt
YXgod2lkdGhzLmRlZiwgQXJnOjpXaWR0aDMyKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmRlZiA9IHN0ZDo6bWF4KHdpZHRocy5kZWYs
IEFyZzo6V2lkdGg2NCk7CisKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKAor
ICAgICAgICAgICAgICAgIFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUg
dHlwZSwgQXJnOjpXaWR0aCB3aWR0aCkgeworICAgICAgICAgICAgICAgICAgICBXaWR0aHMmIHdp
ZHRocyA9IG1fd2lkdGguYWRkKHRtcCwgV2lkdGhzKHR5cGUpKS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0FueVVz
ZShyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRocy51c2UgPSBzdGQ6Om1heCh3
aWR0aHMudXNlLCB3aWR0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNaRGVm
KHJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmRlZiA9IHN0ZDo6bWF4KHdp
ZHRocy5kZWYsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJnOjppc0Rl
Zihyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRocy5kZWYgPSBBcmc6OmNvbnNl
cnZhdGl2ZVdpZHRoKHR5cGUpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gRmluYWxseSwgZml4cG9pbnQgb3ZlciB0aGUgTW92ZSdzLgorICAgIGJvb2wg
Y2hhbmdlZCA9IHRydWU7CisgICAgd2hpbGUgKGNoYW5nZWQpIHsKKyAgICAgICAgY2hhbmdlZCA9
IGZhbHNlOworICAgICAgICBmb3IgKEluc3QqIG1vdmUgOiBtb3ZlcykgeworICAgICAgICAgICAg
QVNTRVJUKG1vdmUtPm9wY29kZSA9PSBNb3ZlKTsKKyAgICAgICAgICAgIEFTU0VSVChtb3ZlLT5h
cmdzWzBdLmlzVG1wKCkpOworICAgICAgICAgICAgQVNTRVJUKG1vdmUtPmFyZ3NbMV0uaXNUbXAo
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFdpZHRocyYgc3JjV2lkdGhzID0gbV93aWR0
aC5hZGQobW92ZS0+YXJnc1swXS50bXAoKSwgV2lkdGhzKEFyZzo6R1ApKS5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgICAgICBXaWR0aHMmIGRzdFdpZHRocyA9IG1fd2lkdGguYWRkKG1vdmUtPmFy
Z3NbMV0udG1wKCksIFdpZHRocyhBcmc6OkdQKSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgICAg
ICAgICAvLyBMZWdlbmQ6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gICAgIE1vdmUg
JXNyYywgJWRzdAorCisgICAgICAgICAgICAvLyBkZWZXaWR0aCglZHN0KSBpcyBhIHByb21pc2Ug
YWJvdXQgaG93IG1hbnkgaGlnaCBiaXRzIGFyZSB6ZXJvLiBUaGUgc21hbGxlciB0aGUgd2lkdGgs
IHRoZQorICAgICAgICAgICAgLy8gc3Ryb25nZXIgdGhlIHByb21pc2UuIFRoaXMgTW92ZSBtYXkg
d2Vha2VuIHRoYXQgcHJvbWlzZSBpZiB3ZSBrbm93IHRoYXQgJXNyYyBpcyBtYWtpbmcgYQorICAg
ICAgICAgICAgLy8gd2Vha2VyIHByb21pc2UuIFN1Y2ggZm9yd2FyZCBmbG93IGlzIHRoZSBvbmx5
IHRoaW5nIHRoYXQgZGV0ZXJtaW5lcyBkZWZXaWR0aCgpLgorICAgICAgICAgICAgaWYgKGRzdFdp
ZHRocy5kZWYgPCBzcmNXaWR0aHMuZGVmKSB7CisgICAgICAgICAgICAgICAgZHN0V2lkdGhzLmRl
ZiA9IHNyY1dpZHRocy5kZWY7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHNyY1dpZHRoKCVzcmMpIGlzIGEgcHJvbWlzZSBh
Ym91dCBob3cgbWFueSBoaWdoIGJpdHMgYXJlIGlnbm9yZWQuIFRoZSBzbWFsbGVyIHRoZSB3aWR0
aCwKKyAgICAgICAgICAgIC8vIHRoZSBzdHJvbmdlciB0aGUgcHJvbWlzZS4gVGhpcyBNb3ZlIG1h
eSB3ZWFrZW4gdGhhdCBwcm9taXNlIGlmIHdlIGtub3cgdGhhdCAlZHN0IGlzIG1ha2luZworICAg
ICAgICAgICAgLy8gYSB3ZWFrZXIgcHJvbWlzZS4gU3VjaCBiYWNrd2FyZCBmbG93IGlzIHRoZSBv
bmx5IHRoaW5nIHRoYXQgZGV0ZXJtaW5lcyBzcmNXaWR0aCgpLgorICAgICAgICAgICAgaWYgKHNy
Y1dpZHRocy51c2UgPCBkc3RXaWR0aHMudXNlKSB7CisgICAgICAgICAgICAgICAgc3JjV2lkdGhz
LnVzZSA9IGRzdFdpZHRocy51c2U7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wV2lkdGguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcFdpZHRoLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcFdpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEFpclRtcFdpZHRoX2gKKyNkZWZpbmUgQWlyVG1wV2lkdGhfaAorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckFyZy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsK
KworY2xhc3MgQ29kZTsKKworY2xhc3MgVG1wV2lkdGggeworcHVibGljOgorICAgIFRtcFdpZHRo
KCk7CisgICAgVG1wV2lkdGgoQ29kZSYpOworICAgIH5UbXBXaWR0aCgpOworCisgICAgdm9pZCBy
ZWNvbXB1dGUoQ29kZSYpOworCisgICAgLy8gVGhlIHdpZHRoIG9mIGEgVG1wIGlzIHRoZSBudW1i
ZXIgb2YgYml0cyB0aGF0IHlvdSBuZWVkIHRvIGJlIGFibGUgdG8gdHJhY2sgd2l0aG91dCBzb21l
IHRyaXZpYWwKKyAgICAvLyByZWNvdmVyeS4gQSBUbXAgbWF5IGhhdmUgYSAic3Vid2lkdGgiIChz
YXksIFdpZHRoMzIgb24gYSA2NC1iaXQgc3lzdGVtKSBpZiBlaXRoZXIgb2YgdGhlIGZvbGxvd2lu
ZworICAgIC8vIGlzIHRydWU6CisgICAgLy8KKyAgICAvLyAtIFRoZSBoaWdoIGJpdHMgYXJlIG5l
dmVyIHJlYWQuCisgICAgLy8gLSBUaGUgaGlnaCBiaXRzIGFyZSBhbHdheXMgemVyby4KKyAgICAv
LworICAgIC8vIFRoaXMgZG9lc24ndCB0ZWxsIHlvdSB3aGljaCBvZiB0aG9zZSBwcm9wZXJ0aWVz
IGhvbGRzLCBidXQgeW91IGNhbiBxdWVyeSB0aGF0IHVzaW5nIHRoZSBvdGhlcgorICAgIC8vIG1l
dGhvZHMuCisgICAgQXJnOjpXaWR0aCB3aWR0aChUbXAgdG1wKSBjb25zdAorICAgIHsKKyAgICAg
ICAgYXV0byBpdGVyID0gbV93aWR0aC5maW5kKHRtcCk7CisgICAgICAgIGlmIChpdGVyID09IG1f
d2lkdGguZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnOjptaW5pbXVtV2lkdGgoQXJnKHRt
cCkudHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGl0ZXItPnZhbHVlLnVzZSwgaXRl
ci0+dmFsdWUuZGVmKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGluZGlyZWN0bHkgdGVsbHMgeW91
IGhvdyBtdWNoIG9mIHRoZSB0bXAncyBoaWdoIGJpdHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgemVy
by4gVGhlIG51bWJlciBvZgorICAgIC8vIGhpZ2ggYml0cyB0aGF0IGFyZSB6ZXJvIGFyZToKKyAg
ICAvLworICAgIC8vICAgICBUb3RhbEJpdHMgLSBkZWZXaWR0aCh0bXApCisgICAgLy8KKyAgICAv
LyBXaGVyZSBUb3RhbEJpdHMgYXJlIHRoZSB0b3RhbCBudW1iZXIgb2YgYml0cyBpbiB0aGUgcmVn
aXN0ZXIsIHNvIDY0IG9uIGEgNjQtYml0IHN5c3RlbS4KKyAgICBBcmc6OldpZHRoIGRlZldpZHRo
KFRtcCB0bXApIGNvbnN0CisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX3dpZHRoLmZpbmQo
dG1wKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV93aWR0aC5lbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBBcmc6Om1pbmltdW1XaWR0aChBcmcodG1wKS50eXBlKCkpOworICAgICAgICByZXR1cm4g
aXRlci0+dmFsdWUuZGVmOworICAgIH0KKworICAgIC8vIFRoaXMgdGVsbHMgeW91IGhvdyBtdWNo
IG9mIFRtcCBpcyBnb2luZyB0byBiZSByZWFkLgorICAgIEFyZzo6V2lkdGggdXNlV2lkdGgoVG1w
IHRtcCkgY29uc3QKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fd2lkdGguZmluZCh0bXAp
OworICAgICAgICBpZiAoaXRlciA9PSBtX3dpZHRoLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IEFyZzo6bWluaW11bVdpZHRoKEFyZyh0bXApLnR5cGUoKSk7CisgICAgICAgIHJldHVybiBpdGVy
LT52YWx1ZS51c2U7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdHJ1Y3QgV2lkdGhzIHsK
KyAgICAgICAgV2lkdGhzKCkgeyB9CisKKyAgICAgICAgV2lkdGhzKEFyZzo6VHlwZSB0eXBlKQor
ICAgICAgICB7CisgICAgICAgICAgICB1c2UgPSBBcmc6Om1pbmltdW1XaWR0aCh0eXBlKTsKKyAg
ICAgICAgICAgIGRlZiA9IEFyZzo6bWluaW11bVdpZHRoKHR5cGUpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBBcmc6OldpZHRoIHVzZTsKKyAgICAgICAgQXJnOjpXaWR0aCBkZWY7Cisg
ICAgfTsKKyAgICAKKyAgICBIYXNoTWFwPFRtcCwgV2lkdGhzPiBtX3dpZHRoOworfTsKKworfSB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
KworI2VuZGlmIC8vIEFpclRtcFdpZHRoX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJVc2VDb3VudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclVzZUNvdW50cy5oCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpclVzZUNvdW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3
ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBmcmVxdWVuY3kgKj0gT3B0aW9uczo6
cmFyZUJsb2NrUGVuYWx0eSgpOwogICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2Nr
KSB7CiAgICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoPFRoaW5nPigKLSAgICAgICAgICAgICAg
ICAgICAgWyZdIChUaGluZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAg
ICAgICAgICAgICAgICAgIFsmXSAoVGhpbmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlw
ZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRzJiBjb3VudHMg
PSBtX2NvdW50cy5hZGQoYXJnLCBDb3VudHMoKSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc1dhcm1Vc2Uocm9sZSkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCShyZXZpc2lv
biAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0
b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDExICs0NCwxMiBAQCBjbGFzcyBPcGNvZGUKIGVu
ZAogCiBjbGFzcyBBcmcKLSAgICBhdHRyX3JlYWRlciA6cm9sZSwgOnR5cGUKKyAgICBhdHRyX3Jl
YWRlciA6cm9sZSwgOnR5cGUsIDp3aWR0aAogCi0gICAgZGVmIGluaXRpYWxpemUocm9sZSwgdHlw
ZSkKKyAgICBkZWYgaW5pdGlhbGl6ZShyb2xlLCB0eXBlLCB3aWR0aCkKICAgICAgICAgQHJvbGUg
PSByb2xlCiAgICAgICAgIEB0eXBlID0gdHlwZQorICAgICAgICBAd2lkdGggPSB3aWR0aAogICAg
IGVuZAogZW5kCiAKQEAgLTE3Myw3ICsxNzQsNyBAQCBkZWYgbGV4KHN0ciwgZmlsZU5hbWUpCiBl
bmQKIAogZGVmIGlzVUQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoVUEp
KVxaLworICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpKVxaLwog
ZW5kCiAKIGRlZiBpc0dGKHRva2VuKQpAQCAtMTg4LDggKzE4OSwxMiBAQCBkZWYgaXNBcmNoKHRv
a2VuKQogICAgIHRva2VuID1+IC9cQSgoeDg2KXwoeDg2XzMyKXwoeDg2XzY0KXwoYXJtKXwoYXJt
djcpfChhcm02NCl8KDMyKXwoNjQpKVxaLwogZW5kCiAKK2RlZiBpc1dpZHRoKHRva2VuKQorICAg
IHRva2VuID1+IC9cQSgoOCl8KDE2KXwoMzIpfCg2NCl8KFB0cikpXFovCitlbmQKKwogZGVmIGlz
S2V5d29yZCh0b2tlbikKLSAgICBpc1VEKHRva2VuKSBvciBpc0dGKHRva2VuKSBvciBpc0tpbmQo
dG9rZW4pIG9yIGlzQXJjaCh0b2tlbikgb3IKKyAgICBpc1VEKHRva2VuKSBvciBpc0dGKHRva2Vu
KSBvciBpc0tpbmQodG9rZW4pIG9yIGlzQXJjaCh0b2tlbikgb3IgaXNXaWR0aCh0b2tlbikgb3IK
ICAgICAgICAgdG9rZW4gPT0gInNwZWNpYWwiIG9yIHRva2VuID09ICJhcyIKIGVuZAogCkBAIC0y
NTYsNiArMjYxLDEzIEBAIGNsYXNzIFBhcnNlcgogICAgICAgICByZXN1bHQKICAgICBlbmQKIAor
ICAgIGRlZiBjb25zdW1lV2lkdGgKKyAgICAgICAgcmVzdWx0ID0gdG9rZW4uc3RyaW5nCisgICAg
ICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIHdpZHRoICg4LCAxNiwgMzIsIG9yIDY0KSIpIHVubGVz
cyBpc1dpZHRoKHJlc3VsdCkKKyAgICAgICAgYWR2YW5jZQorICAgICAgICByZXN1bHQKKyAgICBl
bmQKKwogICAgIGRlZiBwYXJzZUFyY2hzCiAgICAgICAgIHJldHVybiBuaWwgdW5sZXNzIGlzQXJj
aCh0b2tlbikKIApAQCAtMzUwLDggKzM2MiwxMCBAQCBjbGFzcyBQYXJzZXIKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJvbGUgPSBjb25zdW1lUm9sZQogICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3VtZSgiOiIpCiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gY29uc3VtZVR5cGUK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoIjoiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGggPSBjb25zdW1lV2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlIDw8IEFyZy5uZXcocm9sZSwgdHlwZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA8PCBBcmcubmV3KHJvbGUsIHR5cGUsIHdp
ZHRoKQogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhayB1bmxlc3MgdG9rZW4gPT0gIiwiCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1l
KCIsIikKQEAgLTYwNiwyNiArNjIwLDM3IEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAgICAg
bWF0Y2hJbnN0T3ZlcmxvYWQob3V0cCwgOmZhc3QsICJ0aGlzIikgewogICAgICAgICB8IG9wY29k
ZSwgb3ZlcmxvYWQgfAogICAgICAgICBpZiBvcGNvZGUuc3BlY2lhbAotICAgICAgICAgICAgb3V0
cC5wdXRzICJmdW5jdG9yKGFyZ3NbMF0sIEFyZzo6VXNlLCBBcmc6OkdQKTsgLy8gVGhpcyBpcyBi
YXNpY2FsbHkgYm9ndXMsIGJ1dCBpdCB3b3JrcyBmIGFuYWx5c2VzIG1vZGVsIFNwZWNpYWwgYXMg
YW4gaW1tZWRpYXRlLiIKKyAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3RvcihhcmdzWzBdLCBB
cmc6OlVzZSwgQXJnOjpHUCwgQXJnOjpwb2ludGVyV2lkdGgoKSk7IC8vIFRoaXMgaXMgYmFzaWNh
bGx5IGJvZ3VzLCBidXQgaXQgd29ya3MgZm9yIGFuYWx5c2VzIHRoYXQgbW9kZWwgU3BlY2lhbCBh
cyBhbiBpbW1lZGlhdGUuIgogICAgICAgICAgICAgb3V0cC5wdXRzICJhcmdzWzBdLnNwZWNpYWwo
KS0+Zm9yRWFjaEFyZygqdGhpcywgc2NvcGVkTGFtYmRhPEVhY2hBcmdDYWxsYmFjaz4oZnVuY3Rv
cikpOyIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0dXJlLmVhY2hf
d2l0aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwKKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICByb2xlID0gbmlsCiAgICAgICAgICAgICAgICAgY2FzZSBh
cmcucm9sZQogICAgICAgICAgICAgICAgIHdoZW4gIlUiCiAgICAgICAgICAgICAgICAgICAgIHJv
bGUgPSAiVXNlIgogICAgICAgICAgICAgICAgIHdoZW4gIkQiCiAgICAgICAgICAgICAgICAgICAg
IHJvbGUgPSAiRGVmIgorICAgICAgICAgICAgICAgIHdoZW4gIlpEIgorICAgICAgICAgICAgICAg
ICAgICByb2xlID0gIlpEZWYiCiAgICAgICAgICAgICAgICAgd2hlbiAiVUQiCiAgICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgorICAgICAgICAgICAgICAgIHdoZW4gIlVaRCIKKyAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VaRGVmIgogICAgICAgICAgICAgICAgIHdoZW4g
IlVBIgogICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIGVuZAor
CisgICAgICAgICAgICAgICAgaWYgYXJnLndpZHRoID09ICJQdHIiCisgICAgICAgICAgICAgICAg
ICAgIHdpZHRoID0gIkFyZzo6cG9pbnRlcldpZHRoKCkiCisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICB3aWR0aCA9ICJBcmc6OldpZHRoI3thcmcud2lkdGh9IgorICAg
ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiZnVuY3RvcihhcmdzWyN7aW5kZXh9XSwgQXJnOjoje3JvbGV9LCBBcmc6OiN7YXJnLnR5
cGV9UCk7IgorICAgICAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3RvcihhcmdzWyN7aW5kZXh9
XSwgQXJnOjoje3JvbGV9LCBBcmc6OiN7YXJnLnR5cGV9UCwgI3t3aWR0aH0pOyIKICAgICAgICAg
ICAgIH0KICAgICAgICAgZW5kCiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MjE4LDEwICs0MjE4LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBsZW5ndGgg
PSBtX291dC5sb2FkMzIoa2lkc1swXSwgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbnVtS2lkczsgKytpKSB7CiAgICAgICAgICAgICBm
bGFncyA9IG1fb3V0LmJpdEFuZChmbGFncywgbV9vdXQubG9hZDMyKGtpZHNbaV0sIG1faGVhcHMu
SlNTdHJpbmdfZmxhZ3MpKTsKLSAgICAgICAgICAgIExWYWx1ZSBsZW5ndGhBbmRPdmVyZmxvdyA9
IG1fb3V0LmFkZFdpdGhPdmVyZmxvdzMyKAorI2lmIEZUTF9VU0VTX0IzCisgICAgICAgICAgICBC
Mzo6Q2hlY2tWYWx1ZSogbGVuZ3RoQ2hlY2sgPSBtX291dC5zcGVjdWxhdGVBZGQoCiAgICAgICAg
ICAgICAgICAgbGVuZ3RoLCBtX291dC5sb2FkMzIoa2lkc1tpXSwgbV9oZWFwcy5KU1N0cmluZ19s
ZW5ndGgpKTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24obGVuZ3RoQ2hlY2ssIFVuY291
bnRhYmxlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2luKTsKKyAgICAgICAgICAgIGxlbmd0
aCA9IGxlbmd0aENoZWNrOworI2Vsc2UgLy8gRlRMX1VTRVNfQjMgICAgICAgICAgICAKKyAgICAg
ICAgICAgIExWYWx1ZSBsZW5ndGhBbmRPdmVyZmxvdyA9IG1fb3V0LmFkZFdpdGhPdmVyZmxvdzMy
KAorICAgICAgICAgICAgICAgIGxlbmd0aCwgKTsKICAgICAgICAgICAgIHNwZWN1bGF0ZShVbmNv
dW50YWJsZSwgbm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0VmFsdWUobGVuZ3RoQW5kT3ZlcmZs
b3csIDEpKTsKICAgICAgICAgICAgIGxlbmd0aCA9IG1fb3V0LmV4dHJhY3RWYWx1ZShsZW5ndGhB
bmRPdmVyZmxvdywgMCk7CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKICAgICAgICAgfQogICAgICAg
ICBtX291dC5zdG9yZTMyKAogICAgICAgICAgICAgbV9vdXQuYml0QW5kKG1fb3V0LmNvbnN0SW50
MzIoSlNTdHJpbmc6OklzOEJpdCksIGZsYWdzKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT1NSRXhpdEhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0SGFuZGxlLmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0SGFuZGxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksOSArMzksMTAgQEAgdm9pZCBPU1JFeGl0SGFuZGxlOjplbWl0RXhpdFRodW5rKEND
YWxsSAogICAgIGxhYmVsID0gaml0LmxhYmVsKCk7CiAgICAgaml0LnB1c2hUb1NhdmVJbW1lZGlh
dGVXaXRob3V0VG91Y2hpbmdSZWdpc3RlcnMoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5k
ZXgpKTsKICAgICBDQ2FsbEhlbHBlcnM6OlBhdGNoYWJsZUp1bXAganVtcCA9IGppdC5wYXRjaGFi
bGVKdW1wKCk7CisgICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IHNlbGYgPSB0aGlzOwogICAgIGpp
dC5hZGRMaW5rVGFzaygKLSAgICAgICAgW3RoaXMsIGp1bXBdIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKSB7Ci0gICAgICAgICAgICBleGl0Lm1fcGF0Y2hhYmxlSnVtcCA9IENvZGVMb2NhdGlvbkp1
bXAobGlua0J1ZmZlci5sb2NhdGlvbk9mKGp1bXApKTsKKyAgICAgICAgW3NlbGYsIGp1bXBdIChM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICBzZWxmLT5leGl0Lm1fcGF0Y2hh
YmxlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXAobGlua0J1ZmZlci5sb2NhdGlvbk9mKGp1bXApKTsK
IAogICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKAogICAgICAgICAgICAgICAgIGp1bXAubV9q
dW1wLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267705</attachid>
            <date>2015-12-19 14:08:36 -0800</date>
            <delta_ts>2015-12-21 02:11:49 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>80527</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMiBA
QAorMjAxNS0xMi0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzLT5BaXIgbG93ZXJpbmcgaW5jb3JyZWN0bHkgY29weS1wcm9wYWdhdGVzIG92ZXIgWkV4dDMy
J3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjM2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBp
bnN0cnVjdGlvbiBzZWxlY3RvciB0aGlua3MgdGhhdCBWYWx1ZSdzIHRoYXQgcmV0dXJuIEludDMy
J3MgYXJlIGdvaW5nIHRvIGFsd2F5cyBiZSBsb3dlcmVkCisgICAgICAgIHRvIGluc3RydWN0aW9u
cyB0aGF0IHplcm8tZXh0ZW5kIHRoZSBkZXN0aW5hdGlvbi4gQnV0IHRoaXMgaXNuJ3QgYWN0dWFs
bHkgdHJ1ZS4gSWYgeW91IGhhdmUgYW4KKyAgICAgICAgQWRkMzIgd2l0aCBhIGRlc3RpbmF0aW9u
IG9uIHRoZSBzdGFjayAoaS5lLiBzcGlsbGVkKSB0aGVuIGl0IG9ubHkgd3JpdGVzIDQgYnl0ZXMu
IFRoZW4sIHRoZQorICAgICAgICBmaWxsZXIgd2lsbCBsb2FkIDggYnl0ZXMgZnJvbSB0aGUgc3Rh
Y2sgYXQgdGhlIHBvaW50IG9mIHVzZS4gU28sIHRoZSB1c2Ugb2YgdGhlIEFkZDMyIHdpbGwgc2Vl
CisgICAgICAgIGdhcmJhZ2UgaW4gdGhlIGhpZ2ggYml0cy4KKworICAgICAgICBUaGUgZmFjdCB0
aGF0IHRoZSBzcGlsbGVyIGNob3NlIHRvIHVzZSA4IGJ5dGVzIGZvciBhIFRtcCB0aGF0IGdldHMg
ZGVmaW5lZCBieSBhbiBBZGQzMiBpcyBhCisgICAgICAgIHByZXR0eSBzYWQgYnVnLCBidXQ6CisK
KyAgICAgICAgLSBJdCdzIGVudGlyZWx5IHVwIHRvIHRoZSBzcGlsbGVyIHRvIGRlY2lkZSBob3cg
bWFueSBieXRlcyB0byB1c2UgZm9yIGEgVG1wLCBzaW5jZSB3ZSBkbyBub3QKKyAgICAgICAgICBh
c2NyaWJlIGEgdHlwZSB0byBUbXAncy4gV2UgY291bGQgYXNjcmliZSB0eXBlcyB0byBUbXAncywg
YnV0IHRoZW4gY29hbGVzY2luZyB3b3VsZCBiZWNvbWUKKyAgICAgICAgICBoYXJkZXIuIE91ciBn
b2FsIGlzIHRvIGZpeCB0aGUgYnVnIHdoaWxlIHN0aWxsIGVuYWJsaW5nIGNvYWxlc2NpbmcgaW4g
Y2FzZXMgbGlrZSAiYVtpXSIgd2hlcmUKKyAgICAgICAgICAiaSIgaXMgYSAzMi1iaXQgaW50ZWdl
ciB0aGF0IGlzIGNvbXB1dGVkIHVzaW5nIG9wZXJhdGlvbnMgdGhhdCBhbHJlYWR5IGRvIHplcm8t
ZXh0ZW5zaW9uLgorICAgICAgICAKKyAgICAgICAgLSBNb3JlIGJyb2FkbHksIGl0J3Mgc3RyYW5n
ZSB0aGF0IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvciBkZWNpZGVzIHdoZXRoZXIgYSBWYWx1ZSB3
aWxsIGJlCisgICAgICAgICAgbG93ZXJlZCB0byBzb21ldGhpbmcgdGhhdCB6ZXJvLWV4dGVuZHMu
IFRoYXQncyB0b28gY29uc3RyYWluaW5nLCBzaW5jZSB0aGUgbW9zdCBvcHRpbWFsCisgICAgICAg
ICAgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIG1pZ2h0IGludm9sdmUgc29tZXRoaW5nIHRoYXQgZG9l
c24ndCB6ZXJvLWV4dGVuZCBpbiBjYXNlcyBvZiBzcGlsbGluZywgc28KKyAgICAgICAgICB0aGUg
emVyby1leHRlbnNpb24gc2hvdWxkIG9ubHkgaGFwcGVuIGlmIGl0J3MgYWN0dWFsbHkgbmVlZGVk
LiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0bworICAgICAgICAgIHVuZGVyc3RhbmQgd2hpY2gg
QWlyIGluc3RydWN0aW9ucyBjYXVzZSB6ZXJvLWV4dGVuc2lvbnMuCisKKyAgICAgICAgLSBJZiB3
ZSBrbm93IHdoaWNoIEFpciBpbnN0cnVjdGlvbnMgY2F1c2UgemVyby1leHRlbnNpb25zLCB0aGVu
IHdlIGRvbid0IG5lZWQgdGhlIGluc3RydWN0aW9uCisgICAgICAgICAgc2VsZWN0b3IgdG8gY29w
eS1wcm9wYWdhdGUgWkV4dDMyJ3MuIFdlIGhhdmUgY29weS1wcm9wYWdhdGlvbiBpbiBBaXIgdGhh
bmtzIHRvIHRoZSByZWdpc3RlcgorICAgICAgICAgIGFsbG9jYXRvci4KKworICAgICAgICBJbiBm
YWN0LCB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGlzIGV4YWN0bHkgd2hlcmUgYWxsIG9mIHRoZSBw
aWVjZXMgY29tZSB0b2dldGhlci4gSXQncyB0aGVyZSB0aGF0CisgICAgICAgIHdlIHdhbnQgdG8g
a25vdyB3aGljaCBvcGVyYXRpb25zIHplcm8tZXh0ZW5kIGFuZCB3aGljaCBkb24ndC4gSXQgYWxz
byB3YW50cyB0byBrbm93IGhvdyBtYW55IGJpdHMKKyAgICAgICAgb2YgYSBUbXAgZWFjaCBpbnN0
cnVjdGlvbiByZWFkcy4gQXJtZWQgd2l0aCB0aGF0IGluZm9ybWF0aW9uLCB0aGUgcmVnaXN0ZXIg
YWxsb2NhdG9yIGNhbiBlbWl0CisgICAgICAgIG1vcmUgb3B0aW1hbCBzcGlsbCBjb2RlLCB1c2Ug
bGVzcyBzdGFjayBzcGFjZSBmb3Igc3BpbGwgc2xvdHMsIGFuZCBjb2FsZXNjZSBNb3ZlMzIncy4g
QXMgYSBib251cywKKyAgICAgICAgb24gWDg2LCBpdCByZXBsYWNlcyBNb3ZlJ3Mgd2l0aCBNb3Zl
MzIncyB3aGVuZXZlciBpdCBjYW4uIE9uIFg4NiwgTW92ZTMyIGlzIGNoZWFwZXIuCisKKyAgICAg
ICAgVGhpcyBmaXhlcyBhIGNyYXNoIGJ1ZyBpbiBWOC9lbmNyeXB0LiBBZnRlciBmaXhpbmcgdGhp
cywgSSBvbmx5IG5lZWRlZCB0d28gbWlub3IgZml4ZXMgdG8gZ2V0CisgICAgICAgIFY4L2VuY3J5
cHQgdG8gcnVuLiBXZSdyZSBhYm91dCAxMCUgYmVoaW5kIExMVk0gb24gc3RlYWR5IHN0YXRlIHRo
cm91Z2hwdXQgb24gdGhpcyB0ZXN0LiBJdAorICAgICAgICBhcHBlYXJzIHRvIGJlIG1vc3RseSBk
dWUgdG8gZXhjZXNzaXZlIHNwaWxsaW5nIGNhdXNlZCBieSBDQ2FsbCBzbG93IHBhdGhzLiBUaGF0
J3MgZml4YWJsZTogd2UKKyAgICAgICAgY291bGQgbWFrZSBDQ2FsbHMgb24gc2xvdyBwYXRocyB1
c2UgYSB2YXJpYW50IG9mIENDYWxsU3BlY2lhbCB0aGF0IHByb21pc2VzIG5vdCB0byBjbG9iYmVy
IGFueQorICAgICAgICByZWdpc3RlcnMsIGFuZCB0aGVuIGhhdmUgaXQgZW1pdCBzcGlsbCBjb2Rl
IGFyb3VuZCB0aGUgY2FsbCBpdHNlbGYuIExMVk0gcHJvYmFibHkgZ2V0cyB0aGlzCisgICAgICAg
IG9wdGltaXphdGlvbiBmcm9tIGl0cyBsaXZlIHJhbmdlIHNwbGl0dGluZy4KKworICAgICAgICBJ
IHRyaWVkIHdyaXRpbmcgYSByZWdyZXNzaW9uIHRlc3QuIFRoZSBwcm9ibGVtIGlzIHRoYXQgeW91
IG5lZWQgZ2FyYmFnZSBvbiB0aGUgc3RhY2sgZm9yIHRoaXMgdG8KKyAgICAgICAgd29yaywgYW5k
IEkgZGlkbid0IGZlZWwgbGlrZSB3cml0aW5nIGEgZmxha3kgdGVzdC4gSXQgYXBwZWFycyB0aGF0
IHJ1bm5pbmcgVjgvZW5jcnlwdCB3aWxsIGNvdmVyCisgICAgICAgIHRoaXMsIHNvIHdlIGRvIGhh
dmUgY292ZXJhZ2UuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6
CisgICAgICAgIChKU0M6OmlzWDg2KToKKyAgICAgICAgKEpTQzo6aXNYODZfNjQpOgorICAgICAg
ICAoSlNDOjpvcHRpbWl6ZUZvckFSTXY3SURJVlN1cHBvcnRlZCk6CisgICAgICAgIChKU0M6Om9w
dGltaXplRm9yWDg2KToKKyAgICAgICAgKEpTQzo6b3B0aW1pemVGb3JYODZfNjQpOgorICAgICAg
ICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmhpZ2hCaXRzQXJlWmVybyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OnNob3VsZENvcHlQcm9wYWdhdGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojpsb3dlcik6CisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAgICAgICogYjMv
QjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFs
Ojpmb3JFYWNoQXJnSW1wbCk6CisgICAgICAgICogYjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIz
L2Fpci9BaXJBbGxvY2F0ZVN0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YWxsb2Nh
dGVTdGFjayk6CisgICAgICAgICogYjMvYWlyL0FpckFyZy5jcHA6CisgICAgICAgIChXVEY6OnBy
aW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6QXJnOjpwb2ludGVyV2lkdGgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6
OmlzQW55VXNlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc0NvbGRVc2UpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRWFybHlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpBcmc6OmlzRGVmKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1pEZWYpOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OndpZHRoRm9yQjNUeXBlKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjpjb25zZXJ2YXRpdmVXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6OkFyZzo6bWluaW11bVdpZHRoKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpieXRl
cyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6d2lkdGhGb3JCeXRlcyk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6OkFyZzo6QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpm
b3JFYWNoVG1wKToKKyAgICAgICAgKiBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6Q0NhbGxTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAgICAgICAgKiBi
My9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpl
bGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICogYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3Rl
clN0YWxscy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmZpeFBhcnRpYWxSZWdpc3RlclN0
YWxscyk6CisgICAgICAgICogYjMvYWlyL0Fpckluc3QuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpJbnN0OjpoYXNBcmdFZmZlY3RzKToKKyAgICAgICAgKiBiMy9haXIvQWlySW5zdC5oOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0Ojpmb3JFYWNoVG1wRmFzdCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okluc3Q6OmZvckVhY2hUbXApOgorICAgICAgICAqIGIzL2Fpci9BaXJJbnN0
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0Ojpmb3JFYWNoVG1wV2l0aEV4
dHJhQ2xvYmJlcmVkUmVncyk6CisgICAgICAgICogYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJD
b2FsZXNjaW5nLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyTGl2ZW5lc3MuaDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QWJzdHJhY3RMaXZlbmVzczo6QWJzdHJhY3RMaXZlbmVzcyk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OkFic3RyYWN0TGl2ZW5lc3M6OkxvY2FsQ2FsYzo6ZXhlY3V0ZSk6
CisgICAgICAgICogYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAgICAgICAqIGIzL2Fpci9B
aXJTcGlsbEV2ZXJ5dGhpbmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpzcGlsbEV2ZXJ5
dGhpbmcpOgorICAgICAgICAqIGIzL2Fpci9BaXJUbXBXaWR0aC5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpUbXBXaWR0aDo6VG1wV2lkdGgpOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpUbXBXaWR0aDo6flRtcFdpZHRoKToKKyAgICAgICAgKiBiMy9haXIvQWlyVG1wV2lkdGgu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6OlRtcFdpZHRoOjp3aWR0aCk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OlRtcFdpZHRoOjpkZWZXaWR0aCk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OlRtcFdpZHRoOjp1c2VXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlRtcFdp
ZHRoOjpXaWR0aHM6OldpZHRocyk6CisgICAgICAgICogYjMvYWlyL0FpclVzZUNvdW50cy5oOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpVc2VDb3VudHM6OlVzZUNvdW50cyk6CisgICAgICAgICog
YjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmI6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja01lZ2FDb21ibyk6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0Q2hlY2tUcmlja3lNZWdhQ29tYm8pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrVHdv
TWVnYUNvbWJvcyk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorCiAyMDE1LTEyLTE5ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFN0cmVh
bWxpbmUgVG1wIGluZGV4aW5nIGluc2lkZSB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTY5NSw2ICs2OTUsOCBAQAogCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNC
MzMgLyogVmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTA1MDIzMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwICovOyB9
OwogCQkwRkUwNTAyRDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUwNTAyNDFBQTkwOTU2MDBEMzNC
MzMgLyogVmFyT2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZFMDUwMkYxQUFBODA2OTAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1Rh
YmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RTA1MDJFMUFBQTgwNjkwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5jcHAgKi87IH07
CisJCTBGRTBFNEFEMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUwRTRBQjFDMjRDOTRBMDAy
RTE3QjYgLyogQWlyVG1wV2lkdGguY3BwICovOyB9OworCQkwRkUwRTRBRTFDMjRDOTRBMDAyRTE3
QjYgLyogQWlyVG1wV2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTBFNEFDMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5oICovOyB9
OwogCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4
IC8qIE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAx
OTZDNDggLyogT3B0aW9ucy5jcHAgKi87IH07CiAJCTBGRTI1NEY2MUFCREREMjIwMEE3QzZEMiAv
KiBERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTI1NEY0MUFCREREMjIwMEE3QzZEMiAvKiBERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlLmNwcCAqLzsgfTsKQEAgLTI4MzUsNiArMjgzNyw4IEBACiAJCTBG
RTA1MDIzMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmFyT2Zmc2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZFMDUwMjQxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYXJPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZFMDUwMkUxQUFBODA2OTAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1Rh
YmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZEFyZ3Vt
ZW50c1RhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMEU0QUIxQzI0
Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEFpclRtcFdpZHRoLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJUbXBXaWR0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTBFNEFDMUMyNEM5NEEwMDJFMTdC
NiAvKiBBaXJUbXBXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJU
bXBXaWR0aC5oOyBwYXRoID0gYjMvYWlyL0FpclRtcFdpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTI1NEY0MUFCREREMjIwMEE3QzZEMiAvKiBERkdWYXJhcmdz
Rm9yd2FyZGluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmFyZ3NGb3J3
YXJkaW5nUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc5OSw2ICs0
ODAzLDggQEAKIAkJCQkwRkVDODU2ODFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wLmNwcCAqLywK
IAkJCQkwRkVDODU2OTFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wLmggKi8sCiAJCQkJMEZFQzg1
NkExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclRtcElubGluZXMuaCAqLywKKwkJCQkwRkUwRTRBQjFD
MjRDOTRBMDAyRTE3QjYgLyogQWlyVG1wV2lkdGguY3BwICovLAorCQkJCTBGRTBFNEFDMUMyNEM5
NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5oICovLAogCQkJCTBGMzczMDkyMUMwRDY3RUUwMDA1
MkJGQSAvKiBBaXJVc2VDb3VudHMuaCAqLywKIAkJCQkwRkVDODU2QjFCREFDREM3MDA4MEZGNzQg
LyogQWlyVmFsaWRhdGUuY3BwICovLAogCQkJCTBGRUM4NTZDMUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJWYWxpZGF0ZS5oICovLApAQCAtNzI5NCw2ICs3MzAwLDcgQEAKIAkJCQkwRjIzNUJEOTE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCOUNGNzE5RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkRCMTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExFeGl0VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRTBFNEFFMUMyNEM5NEEwMDJFMTdC
NiAvKiBBaXJUbXBXaWR0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGMjk5NkMxN0EwQkI2NzAw
MTA0MTdBIC8qIEZUTEZhaWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTJDMTcwQjY2MTkw
MEJCNzIyQyAvKiBGVExGb3JtYXR0ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEz
MUExN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05MjI3LDYgKzkyMzQsNyBAQAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAv
KiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDQ0YwRDBDMEVGMEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3MDVCNDFBQjFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGRTBFNEFEMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0aC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDVCNDFBRDFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9s
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzA1QjQxQUYxQTZFNTAxRTAwNzE2
NzU3IC8qIFN5bWJvbE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDVCNDFCMTFBNkU1
MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw2ICs2NywxNSBAQCBpbmxpbmUgYm9vbCBpc1g4NigpCiAjZW5kaWYKIH0KIAoraW5saW5lIGJv
b2wgaXNYODZfNjQoKQoreworI2lmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHRydWU7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBpbmxpbmUgYm9vbCBvcHRpbWl6ZUZv
ckFSTXY3SURJVlN1cHBvcnRlZCgpCiB7CiAgICAgcmV0dXJuIGlzQVJNdjdJRElWU3VwcG9ydGVk
KCkgJiYgT3B0aW9uczo6dXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zKCk7CkBA
IC04Miw2ICs5MSwxMSBAQCBpbmxpbmUgYm9vbCBvcHRpbWl6ZUZvclg4NigpCiAgICAgcmV0dXJu
IGlzWDg2KCkgJiYgT3B0aW9uczo6dXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25z
KCk7CiB9CiAKK2lubGluZSBib29sIG9wdGltaXplRm9yWDg2XzY0KCkKK3sKKyAgICByZXR1cm4g
aXNYODZfNjQoKSAmJiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlv
bnMoKTsKK30KKwogY2xhc3MgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOwogY2xhc3Mg
RGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOwogY2xhc3MgTGlua0J1ZmZlcjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEb21pbmF0b3JzLmgJKHJldmlzaW9uIDE5NDMx
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0RvbWluYXRvcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdURjo6RG9t
aW5hdG9yCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9taW5h
dG9ycyhQcm9jZWR1cmUmIHByb2MpCi0gICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENGRz4ocHJv
Yy5jZmcoKSwgc2hvdWxkVmFsaWRhdGVJUigpKQorICAgICAgICA6IFdURjo6RG9taW5hdG9yczxD
Rkc+KHByb2MuY2ZnKCkpCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwx
NiArMTU4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBOT1RFOiBU
aGlzIGVudGlyZSBtZWNoYW5pc20gY291bGQgYmUgZG9uZSBvdmVyIEFpciwgaWYgd2UgZmVsdCB0
aGF0IHRoaXMgd291bGQgYmUgZmFzdCBlbm91Z2guCi0gICAgLy8gRm9yIG5vdyB3ZSdyZSBhc3N1
bWluZyB0aGF0IGl0J3MgZmFzdGVyIHRvIGRvIHRoaXMgaGVyZSwgc2luY2UgYW5hbHl6aW5nIEIz
IGlzIHNvIGNoZWFwLgogICAgIGJvb2wgc2hvdWxkQ29weVByb3BhZ2F0ZShWYWx1ZSogdmFsdWUp
CiAgICAgewogICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICBjYXNl
IFRydW5jOgogICAgICAgICBjYXNlIElkZW50aXR5OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGNhc2UgWkV4dDMyOgotICAgICAgICAgICAgcmV0dXJuIGhpZ2hCaXRzQXJlWmVy
byh2YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CkBAIC0xNzY1LDExICsxNzYxLDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2UgWkV4dDMyOiB7Ci0gICAgICAgICAgICBpZiAoaGlnaEJpdHNB
cmVaZXJvKG1fdmFsdWUtPmNoaWxkKDApKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCh0bXAo
bV92YWx1ZS0+Y2hpbGQoMCkpID09IHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBhcHBlbmRVbk9wPE1vdmUzMiwgQWly
OjpPb3BzPihtX3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3Bl
Y2lhbC5jcHAJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1BhdGNocG9pbnRTcGVjaWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCB2
b2lkIFBhdGNocG9pbnRTcGVjaWFsOjpmb3JFYWNoQXJnKEluc3QmCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBjYWxsYmFjayhpbnN0LmFyZ3NbMV0sIEFyZzo6RGVmLCBpbnN0Lm9yaWdp
bi0+YWlyVHlwZSgpKTsKKyAgICBjYWxsYmFjayhpbnN0LmFyZ3NbMV0sIEFyZzo6RGVmLCBpbnN0
Lm9yaWdpbi0+YWlyVHlwZSgpLCBpbnN0Lm9yaWdpbi0+YWlyV2lkdGgoKSk7CiAgICAgZm9yRWFj
aEFyZ0ltcGwoMCwgMiwgaW5zdCwgU2FtZUFzUmVwLCBjYWxsYmFjayk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAkocmV2aXNp
b24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDggKzExMSw5IEBAIHZvaWQgU3RhY2ttYXBTcGVj
aWFsOjpmb3JFYWNoQXJnSW1wbCgKICAgICAgICAgICAgIHJvbGUgPSBBcmc6OkxhdGVVc2U7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY2FsbGJhY2so
YXJnLCByb2xlLCBBcmc6OnR5cGVGb3JCM1R5cGUoY2hpbGQudmFsdWUoKS0+dHlwZSgpKSk7CisK
KyAgICAgICAgVHlwZSB0eXBlID0gY2hpbGQudmFsdWUoKS0+dHlwZSgpOworICAgICAgICBjYWxs
YmFjayhhcmcsIHJvbGUsIEFyZzo6dHlwZUZvckIzVHlwZSh0eXBlKSwgQXJnOjp3aWR0aEZvckIz
VHlwZSh0eXBlKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmgJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhp
cyBpcyB1c2VmdWwgd2hlbiBsb3dlcmluZy4gTm90ZSB0aGF0IHRoaXMgaXMgb25seSB2YWxpZCBm
b3Igbm9uLXZvaWQgdmFsdWVzLgogICAgIEFpcjo6QXJnOjpUeXBlIGFpclR5cGUoKSBjb25zdCB7
IHJldHVybiBBaXI6OkFyZzo6dHlwZUZvckIzVHlwZSh0eXBlKCkpOyB9CisgICAgQWlyOjpBcmc6
OldpZHRoIGFpcldpZHRoKCkgY29uc3QgeyByZXR1cm4gQWlyOjpBcmc6OndpZHRoRm9yQjNUeXBl
KHR5cGUoKSk7IH0KIAogICAgIEFkamFjZW5jeUxpc3QmIGNoaWxkcmVuKCkgeyByZXR1cm4gbV9j
aGlsZHJlbjsgfSAKICAgICBjb25zdCBBZGphY2VuY3lMaXN0JiBjaGlsZHJlbigpIGNvbnN0IHsg
cmV0dXJuIG1fY2hpbGRyZW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjM2OCw2ICs2MzY4LDYxIEBAIHZvaWQgdGVzdENoZWNrTWVn
YUNvbWJvKCkKICAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMSkgPT0g
NDIpOwogfQogCit2b2lkIHRlc3RDaGVja1RyaWNreU1lZ2FDb21ibygpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogaW5kZXggPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMSkpKTsKKworICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXgsCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpKTsK
KyAgICAKKyAgICBDaGVja1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVl
PigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkOFMsIE9yaWdpbigp
LCBwdHIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDQyKSkpOworICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CisgICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7CisKKyAgICAgICAg
ICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNp
bXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKKyAgICAgICAgICAgIC8vIHNhdmVzLgorICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
KTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRv
IGNvZGUgPSBjb21waWxlKHByb2MpOworCisgICAgaW50OF90IHZhbHVlOworICAgIHZhbHVlID0g
NDI7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUsICZ2YWx1ZSAtIDIsIDApID09IDApOwor
ICAgIHZhbHVlID0gMTI3OworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAy
LCAwKSA9PSAwKTsKKyAgICB2YWx1ZSA9IDQxOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2Rl
LCAmdmFsdWUgLSAyLCAwKSA9PSA0Mik7CisgICAgdmFsdWUgPSAwOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlLCAmdmFsdWUgLSAyLCAwKSA9PSA0Mik7CisgICAgdmFsdWUgPSAtMTsKKyAg
ICBDSEVDSyhpbnZva2U8aW50PigqY29kZSwgJnZhbHVlIC0gMiwgMCkgPT0gNDIpOworfQorCiB2
b2lkIHRlc3RDaGVja1R3b01lZ2FDb21ib3MoKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAt
OTQ2MCw2ICs5NTE1LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0
ZXN0U2ltcGxlQ2hlY2soKSk7CiAgICAgUlVOKHRlc3RDaGVja0xlc3NUaGFuKCkpOwogICAgIFJV
Tih0ZXN0Q2hlY2tNZWdhQ29tYm8oKSk7CisgICAgUlVOKHRlc3RDaGVja1RyaWNreU1lZ2FDb21i
bygpKTsKICAgICBSVU4odGVzdENoZWNrVHdvTWVnYUNvbWJvcygpKTsKICAgICBSVU4odGVzdENo
ZWNrVHdvTm9uUmVkdW5kYW50TWVnYUNvbWJvcygpKTsKICAgICBSVU4odGVzdENoZWNrQWRkSW1t
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9j
YXRlU3RhY2suY3BwCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFsbG9jYXRlU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrKENvZGUmIGNvZGUpCiAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IGNvZGUpIHsKICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7CiAg
ICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgWyZdIChBcmcmIGFy
ZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgeworICAgICAgICAgICAgICAgIFsmXSAoQXJn
JiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHJvbGUgPT0gQXJnOjpVc2VBZGRyICYmIGFyZy5pc1N0YWNrKCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGluZ1N0YWNrU2xvdHMuYWRkKGFyZy5zdGFja1Ns
b3QoKSk7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBhbGxv
Y2F0ZVN0YWNrKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW50ZXJmZXJp
bmc6ICIsIFdURjo6cG9pbnRlckxpc3REdW1wKGxvY2FsQ2FsYy5saXZlKCkpLCAiXG4iKTsKIAog
ICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBh
cmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKEFy
ZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghQXJnOjppc0RlZihyb2xlKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmcuaXNTdGFjaygpKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkocmV2aXNpb24gMTk0MzE2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzgsNiArMTc4LDEyIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBBcmcKICAgICBjYXNlIEFyZzo6VXNlRGVmOgogICAgICAgICBvdXQucHJpbnQoIlVzZURl
ZiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlpEZWY6CisgICAgICAgIG91dC5w
cmludCgiWkRlZiIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlVzZVpEZWY6Cisg
ICAgICAgIG91dC5wcmludCgiVXNlWkRlZiIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBB
cmc6OlVzZUFkZHI6CiAgICAgICAgIG91dC5wcmludCgiVXNlQWRkciIpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHJldmlzaW9uIDE5
NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMSw5ICsxMDEsMjggQEAgcHVibGljOgogICAgICAgICAvLyBMaWtlIFVzZSBv
ZiBhZGRyZXNzLCBEZWYgb2YgYWRkcmVzcyBkb2VzIG5vdCBtZWFuIGVzY2FwZS4KICAgICAgICAg
RGVmLAogCisgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIHZhcmlhbnQgb2YgRGVmIHRoYXQg
aW1wbGllcyB0aGF0IHRoZSB1cHBlciBiaXRzIG9mIHRoZSB0YXJnZXQgcmVnaXN0ZXIgYXJlCisg
ICAgICAgIC8vIHplcm8tZmlsbGVkLiBTcGVjaWZpY2FsbHksIGlmIHRoZSBXaWR0aCBvZiBhIFpE
ZWYgaXMgbGVzcyB0aGFuIHRoZSBsYXJnZXN0IHBvc3NpYmxlIHdpZHRoIG9mCisgICAgICAgIC8v
IHRoZSBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIHdlJ3JlIG9uIGEgNjQtYml0IG1hY2hpbmUgYW5k
IHdlIGhhdmUgYSBXaWR0aDMyIFpEZWYgb2YgYSBHUFIpIHRoZW4KKyAgICAgICAgLy8gdGhpcyBo
YXMgZGlmZmVyZW50IGltcGxpY2F0aW9ucyBmb3IgdGhlIHVwcGVyIGJpdHMgKGkuZS4gdGhlIHRv
cCAzMiBiaXRzIGluIG91ciBleGFtcGxlKQorICAgICAgICAvLyBkZXBlbmRpbmcgb24gdGhlIGtp
bmQgb2YgdGhlIGFyZ3VtZW50OgorICAgICAgICAvLworICAgICAgICAvLyBGb3IgcmVnaXN0ZXI6
IHRoZSB1cHBlciBiaXRzIGFyZSB6ZXJvLWZpbGxlZC4KKyAgICAgICAgLy8gRm9yIGFkZHJlc3M6
IHRoZSB1cHBlciBiaXRzIGFyZSBub3QgdG91Y2hlZCAoaS5lLiB3ZSBkbyBhIDMyLWJpdCBzdG9y
ZSBpbiBvdXIgZXhhbXBsZSkuCisgICAgICAgIC8vIEZvciB0bXA6IGVpdGhlciB0aGUgdXBwZXIg
Yml0cyBhcmUgbm90IHRvdWNoZWQgb3IgdGhleSBhcmUgemVyby1maWxsZWQsIGFuZCB3ZSB3b24n
dCBrbm93CisgICAgICAgIC8vIHdoaWNoIHVudGlsIHdlIGxvd2VyIHRoZSB0bXAgdG8gZWl0aGVy
IGEgU3RhY2tTbG90IG9yIGEgUmVnLgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgYmVoYXZp
b3Igb2YgWkRlZiBpcyBjb25zaXN0ZW50IHdpdGggd2hhdCBoYXBwZW5zIHdoZW4geW91IHBlcmZv
cm0gMzItYml0IG9wZXJhdGlvbnMgb24gYQorICAgICAgICAvLyA2NC1iaXQgR1BSLiBJdCdzIG5v
dCBjb25zaXN0ZW50IHdpdGggd2hhdCBoYXBwZW5zIHdpdGggOC1iaXQgb3IgMTYtYml0IERlZnMg
b24geDg2IEdQUnMsIG9yCisgICAgICAgIC8vIHdoYXQgaGFwcGVucyB3aXRoIGZsb2F0IERlZnMg
aW4gQVJNIE5FT04gb3IgWDg2IFNTRS4gSGVuY2Ugd2h5IHdlIGhhdmUgYm90aCBEZWYgYW5kIFpE
ZWYuCisgICAgICAgIFpEZWYsCisKICAgICAgICAgLy8gVGhpcyBpcyBhIGNvbWJpbmVkIFVzZSBh
bmQgRGVmLiBJdCBtZWFucyB0aGF0IGJvdGggdGhpbmdzIGhhcHBlbi4KICAgICAgICAgVXNlRGVm
LAogCisgICAgICAgIC8vIFRoaXMgaXMgYSBjb21iaW5lZCBVc2UgYW5kIFpEZWYuIEl0IG1lYW5z
IHRoYXQgYm90aCB0aGluZ3MgaGFwcGVuLgorICAgICAgICBVc2VaRGVmLAorCiAgICAgICAgIC8v
IFRoaXMgaXMgYSBzcGVjaWFsIGtpbmQgb2YgdXNlIHRoYXQgaXMgb25seSB2YWxpZCBmb3IgYWRk
cmVzc2VzLiBJdCBtZWFucyB0aGF0IHRoZQogICAgICAgICAvLyBpbnN0cnVjdGlvbiB3aWxsIGV2
YWx1YXRlIHRoZSBhZGRyZXNzIGV4cHJlc3Npb24gYW5kIGNvbnN1bWUgdGhlIGVmZmVjdGl2ZSBh
ZGRyZXNzLCBidXQgaXQKICAgICAgICAgLy8gd2lsbCBuZWl0aGVyIGxvYWQgbm9yIHN0b3JlLiBU
aGlzIGlzIGFuIGVzY2FwaW5nIHVzZSwgYmVjYXVzZSBub3cgdGhlIGFkZHJlc3MgbWF5IGJlCkBA
IC0xMjYsNiArMTQ1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgV2lkdGg2NAogICAgIH07CiAKKyAg
ICBzdGF0aWMgV2lkdGggcG9pbnRlcldpZHRoKCkKKyAgICB7CisgICAgICAgIGlmIChzaXplb2Yo
dm9pZCopID09IDgpCisgICAgICAgICAgICByZXR1cm4gV2lkdGg2NDsKKyAgICAgICAgcmV0dXJu
IFdpZHRoMzI7CisgICAgfQorCiAgICAgZW51bSBTaWduZWRuZXNzIDogaW50OF90IHsKICAgICAg
ICAgU2lnbmVkLAogICAgICAgICBVbnNpZ25lZApAQCAtMTM5LDkgKzE2NSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICBjYXNlIENvbGRVc2U6CiAgICAgICAgIGNhc2Ug
VXNlRGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIERlZjoKKyAgICAgICAgY2FzZSBa
RGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KQEAgLTE1NSw3ICsxODMsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgY2FzZSBVc2U6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBj
YXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2UgRGVmOgorICAgICAgICBjYXNlIFpEZWY6CiAgICAg
ICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpA
QCAtMTczLDggKzIwMywxMCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICBj
YXNlIENvbGRVc2U6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNlIFVzZVpEZWY6
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBEZWY6CisgICAgICAgIGNh
c2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIExhdGVVc2U6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTgsNiArMjMwLDI1IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBEZWY6CiAgICAgICAgIGNhc2Ug
VXNlRGVmOgorICAgICAgICBjYXNlIFpEZWY6CisgICAgICAgIGNhc2UgVXNlWkRlZjoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBSb2xlIGltcGxpZXMgdGhhdCB0aGUgSW5zdCB3aWxsIFpEZWYgdGhlIEFyZy4K
KyAgICBzdGF0aWMgYm9vbCBpc1pEZWYoUm9sZSByb2xlKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChyb2xlKSB7CisgICAgICAgIGNhc2UgVXNlOgorICAgICAgICBjYXNlIENvbGRVc2U6CisgICAg
ICAgIGNhc2UgVXNlQWRkcjoKKyAgICAgICAgY2FzZSBMYXRlVXNlOgorICAgICAgICBjYXNlIERl
ZjoKKyAgICAgICAgY2FzZSBVc2VEZWY6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGNhc2UgWkRlZjoKKyAgICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMzQsNiArMjg1LDM3IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAorICAgIHN0YXRpYyBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChUeXBl
IHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gdHlwZSA9PSBHUCA/IHBvaW50ZXJXaWR0aCgp
IDogV2lkdGg2NDsKKyAgICB9CisKKyAgICBzdGF0aWMgV2lkdGggbWluaW11bVdpZHRoKFR5cGUg
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlID09IEdQID8gV2lkdGg4IDogV2lkdGgz
MjsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgYnl0ZXMoV2lkdGggd2lkdGgpCisgICAg
eworICAgICAgICByZXR1cm4gMSA8PCB3aWR0aDsKKyAgICB9CisKKyAgICBzdGF0aWMgV2lkdGgg
d2lkdGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlcykKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYnl0
ZXMpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1
cm4gV2lkdGg4OworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXR1cm4gV2lkdGgxNjsK
KyAgICAgICAgY2FzZSAzOgorICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICByZXR1cm4gV2lk
dGgzMjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBXaWR0aDY0OworICAg
ICAgICB9CisgICAgfQorCiAgICAgQXJnKCkKICAgICAgICAgOiBtX2tpbmQoSW52YWxpZCkKICAg
ICB7CkBAIC03MTcsMTkgKzc5OSwxOSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBUaGlzIGRl
ZnMgKCVyY3gpIGJ1dCB1c2VzICVyY3guCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
LSAgICB2b2lkIGZvckVhY2hUbXAoUm9sZSBhcmdSb2xlLCBUeXBlIGFyZ1R5cGUsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCisgICAgdm9pZCBmb3JFYWNoVG1wKFJvbGUgYXJnUm9sZSwgVHlwZSBh
cmdUeXBlLCBXaWR0aCBhcmdXaWR0aCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgICAgIGNhc2UgVG1wOgogICAgICAgICAgICAg
QVNTRVJUKGlzQW55VXNlKGFyZ1JvbGUpIHx8IGlzRGVmKGFyZ1JvbGUpKTsKLSAgICAgICAgICAg
IGZ1bmN0b3IobV9iYXNlLCBhcmdSb2xlLCBhcmdUeXBlKTsKKyAgICAgICAgICAgIGZ1bmN0b3Io
bV9iYXNlLCBhcmdSb2xlLCBhcmdUeXBlLCBhcmdXaWR0aCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBZGRyOgotICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIFVzZSwgR1Ap
OworICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIFVzZSwgR1AsIGFyZ1JvbGUgPT0gVXNlQWRk
ciA/IGFyZ1dpZHRoIDogcG9pbnRlcldpZHRoKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSW5kZXg6Ci0gICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCk7Ci0g
ICAgICAgICAgICBmdW5jdG9yKG1faW5kZXgsIFVzZSwgR1ApOworICAgICAgICAgICAgZnVuY3Rv
cihtX2Jhc2UsIFVzZSwgR1AsIGFyZ1JvbGUgPT0gVXNlQWRkciA/IGFyZ1dpZHRoIDogcG9pbnRl
cldpZHRoKCkpOworICAgICAgICAgICAgZnVuY3RvcihtX2luZGV4LCBVc2UsIEdQLCBhcmdSb2xl
ID09IFVzZUFkZHIgPyBhcmdXaWR0aCA6IHBvaW50ZXJXaWR0aCgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuY3BwCShyZXZpc2lv
biAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lh
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE2ICs0NSwxNyBAQCBDQ2FsbFNwZWNpYWw6On5D
Q2FsbFNwZWNpYWwoKQogdm9pZCBDQ2FsbFNwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwg
Y29uc3QgU2NvcGVkTGFtYmRhPEluc3Q6OkVhY2hBcmdDYWxsYmFjaz4mIGNhbGxiYWNrKQogewog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1DYWxsZWVBcmdzOyArK2kpCi0gICAgICAg
IGNhbGxiYWNrKGluc3QuYXJnc1tjYWxsZWVBcmdPZmZzZXQgKyBpXSwgQXJnOjpVc2UsIEFyZzo6
R1ApOworICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbY2FsbGVlQXJnT2Zmc2V0ICsgaV0sIEFy
Zzo6VXNlLCBBcmc6OkdQLCBBcmc6OnBvaW50ZXJXaWR0aCgpKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtUmV0dXJuR1BBcmdzOyArK2kpCi0gICAgICAgIGNhbGxiYWNrKGluc3Qu
YXJnc1tyZXR1cm5HUEFyZ09mZnNldCArIGldLCBBcmc6OkRlZiwgQXJnOjpHUCk7CisgICAgICAg
IGNhbGxiYWNrKGluc3QuYXJnc1tyZXR1cm5HUEFyZ09mZnNldCArIGldLCBBcmc6OkRlZiwgQXJn
OjpHUCwgQXJnOjpwb2ludGVyV2lkdGgoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bVJldHVybkZQQXJnczsgKytpKQotICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbcmV0dXJu
RlBBcmdPZmZzZXQgKyBpXSwgQXJnOjpEZWYsIEFyZzo6RlApOworICAgICAgICBjYWxsYmFjayhp
bnN0LmFyZ3NbcmV0dXJuRlBBcmdPZmZzZXQgKyBpXSwgQXJnOjpEZWYsIEFyZzo6RlAsIEFyZzo6
V2lkdGg2NCk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJnQXJnT2Zmc2V0OyBpIDwg
aW5zdC5hcmdzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIC8vIEZvciB0aGUgdHlwZSwgd2UgY2Fu
IGp1c3QgcXVlcnkgdGhlIGFyZydzIHR5cGUuIFRoZSBhcmcgd2lsbCBoYXZlIGEgdHlwZSwgYmVj
YXVzZSB3ZQogICAgICAgICAvLyByZXF1aXJlIHRoZXNlIGFyZ3MgdG8gYmUgYXJndW1lbnQgcmVn
aXN0ZXJzLgotICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbaV0sIEFyZzo6VXNlLCBpbnN0LmFy
Z3NbaV0udHlwZSgpKTsKKyAgICAgICAgQXJnOjpUeXBlIHR5cGUgPSBpbnN0LmFyZ3NbaV0udHlw
ZSgpOworICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbaV0sIEFyZzo6VXNlLCB0eXBlLCBBcmc6
OmNvbnNlcnZhdGl2ZVdpZHRoKHR5cGUpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCShy
ZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1p
bmF0ZURlYWRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBib29sIGVs
aW1pbmF0ZURlYWRDb2RlKENvZGUmIGNvZGUpCiAgICAgICAgIC8vIFRoaXMgaW5zdHJ1Y3Rpb24g
c2hvdWxkIGJlIHByZXN1bWVkIGRlYWQsIGlmIGl0cyBBcmdzIGFyZSBhbGwgZGVhZC4KICAgICAg
ICAgYm9vbCBzdG9yZXNUb0xpdmUgPSBmYWxzZTsKICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAot
ICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgewor
ICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSwgQXJn
OjpXaWR0aCkgewogICAgICAgICAgICAgICAgIGlmICghQXJnOjppc0RlZihyb2xlKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIHN0b3Jlc1RvTGl2ZSB8PSBp
c0FyZ0xpdmUoYXJnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4
UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAJKHJldmlzaW9uIDE5
NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lz
dGVyU3RhbGxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgdXBk
YXRlRGlzdGFuY2VzKEluc3QmIGluc3QsIEZQRGVmRGkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGluc3QuZm9yRWFjaFRtcChbJl0gKFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJn
OjpUeXBlKSB7CisgICAgaW5zdC5mb3JFYWNoVG1wKFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSBy
b2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSh0bXAuaXNSZWcoKSwgIlRoaXMgcGhhc2UgbXVzdCBiZSBydW4gYWZ0ZXIgcmVnaXN0ZXIgYWxs
b2NhdGlvbi4iKTsKIAogICAgICAgICBpZiAodG1wLmlzRlBSKCkgJiYgQXJnOjppc0RlZihyb2xl
KSkKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIGZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyhDb2Rl
JiBjb2RlCiAgICAgICAgICAgICBpZiAoaGFzUGFydGlhbFhtbVJlZ1VwZGF0ZShpbnN0KSkgewog
ICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGRlZnM7CiAgICAgICAgICAgICAgICAgUmVnaXN0
ZXJTZXQgdXNlczsKLSAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAmIHRt
cCwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgeworICAgICAgICAgICAgICAgIGluc3QuZm9y
RWFjaFRtcChbJl0gKFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlLCBBcmc6Oldp
ZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNGUFIoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmcy5zZXQodG1wLmZwcigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlySW5zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJJbnN0LmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJJbnN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QCBib29sIEluc3Q6Omhhc0FyZ0VmZmVjdHMoKQogewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
CiAgICAgZm9yRWFjaEFyZygKLSAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQXJn
OjpUeXBlKSB7CisgICAgICAgIFsmXSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSwg
QXJnOjpXaWR0aCkgewogICAgICAgICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpckluc3QuaAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDIwICs5OCwy
MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhcmcuZm9yRWFjaFRtcEZhc3QoZnVuY3Rvcik7CiAg
ICAgfQogCi0gICAgdHlwZWRlZiB2b2lkIEVhY2hBcmdDYWxsYmFjayhBcmcmLCBBcmc6OlJvbGUs
IEFyZzo6VHlwZSk7CisgICAgdHlwZWRlZiB2b2lkIEVhY2hBcmdDYWxsYmFjayhBcmcmLCBBcmc6
OlJvbGUsIEFyZzo6VHlwZSwgQXJnOjpXaWR0aCk7CiAgICAgCi0gICAgLy8gQ2FsbHMgdGhlIGZ1
bmN0b3Igd2l0aCAoYXJnLCByb2xlLCB0eXBlKS4gVGhpcyBmdW5jdGlvbiBpcyBhdXRvLWdlbmVy
YXRlZCBieQorICAgIC8vIENhbGxzIHRoZSBmdW5jdG9yIHdpdGggKGFyZywgcm9sZSwgdHlwZSwg
d2lkdGgpLiBUaGlzIGZ1bmN0aW9uIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5CiAgICAgLy8gb3Bjb2Rl
X2dlbmVyYXRvci5yYi4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQg
Zm9yRWFjaEFyZyhjb25zdCBGdW5jdG9yJik7CiAKLSAgICAvLyBDYWxscyB0aGUgZnVuY3RvciB3
aXRoICh0bXAsIHJvbGUsIHR5cGUpLgorICAgIC8vIENhbGxzIHRoZSBmdW5jdG9yIHdpdGggKHRt
cCwgcm9sZSwgdHlwZSwgd2lkdGgpLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAg
ICAgdm9pZCBmb3JFYWNoVG1wKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAg
ICBmb3JFYWNoQXJnKAotICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUs
IEFyZzo6VHlwZSB0eXBlKSB7Ci0gICAgICAgICAgICAgICAgYXJnLmZvckVhY2hUbXAocm9sZSwg
dHlwZSwgZnVuY3Rvcik7CisgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9s
ZSwgQXJnOjpUeXBlIHR5cGUsIEFyZzo6V2lkdGggd2lkdGgpIHsKKyAgICAgICAgICAgICAgICBh
cmcuZm9yRWFjaFRtcChyb2xlLCB0eXBlLCB3aWR0aCwgZnVuY3Rvcik7CiAgICAgICAgICAgICB9
KTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpcklu
c3RJbmxpbmVzLmgJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlySW5zdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBGb3JFYWNoPFN0YWNrU2xvdCo+IHsKICAgICBzdGF0aWMgdm9pZCBm
b3JFYWNoKEluc3QmIGluc3QsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAg
ICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUg
cm9sZSwgQXJnOjpUeXBlIHR5cGUpIHsKKyAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6
Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSwgQXJnOjpXaWR0aCB3aWR0aCkgewogICAgICAgICAg
ICAgICAgIGlmICghYXJnLmlzU3RhY2soKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIFN0YWNrU2xvdCogc3RhY2tTbG90ID0gYXJnLnN0YWNrU2xvdCgpOwpA
QCAtNjYsNyArNjYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBGb3JFYWNoPFN0YWNrU2xvdCo+IHsK
ICAgICAgICAgICAgICAgICAvLyBzZW1hbnRpY3Mgb2YgIkFub255bW91cyIuCiAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTEyOAog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGZ1bmN0b3Ioc3RhY2tTbG90LCByb2xl
LCB0eXBlKTsKKyAgICAgICAgICAgICAgICBmdW5jdG9yKHN0YWNrU2xvdCwgcm9sZSwgdHlwZSwg
d2lkdGgpOwogICAgICAgICAgICAgICAgIGFyZyA9IEFyZzo6c3RhY2soc3RhY2tTbG90LCBhcmcu
b2Zmc2V0KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQpAQCAtOTksMTIgKzk5LDEzIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiBpbmxpbmUgdm9pZCBJbnN0Ojpmb3JFYWNoVG1wV2l0
aEV4dHJhQ2xvYmJlcmVkUmVncyhJbnN0KiBuZXh0SW5zdCwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKIHsKICAgICBmb3JFYWNoVG1wKAotICAgICAgICBbJl0gKFRtcCYgdG1wQXJnLCBBcmc6OlJv
bGUgcm9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IodG1wQXJn
LCByb2xlLCBhcmdUeXBlKTsKKyAgICAgICAgWyZdIChUbXAmIHRtcEFyZywgQXJnOjpSb2xlIHJv
bGUsIEFyZzo6VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRoIGFyZ1dpZHRoKSB7CisgICAgICAgICAg
ICBmdW5jdG9yKHRtcEFyZywgcm9sZSwgYXJnVHlwZSwgYXJnV2lkdGgpOwogICAgICAgICB9KTsK
IAogICAgIGF1dG8gcmVwb3J0UmVnID0gWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgIGZ1bmN0b3Io
VG1wKHJlZyksIEFyZzo6RGVmLCByZWcuaXNHUFIoKSA/IEFyZzo6R1AgOiBBcmc6OkZQKTsKKyAg
ICAgICAgQXJnOjpUeXBlIHR5cGUgPSByZWcuaXNHUFIoKSA/IEFyZzo6R1AgOiBBcmc6OkZQOwor
ICAgICAgICBmdW5jdG9yKFRtcChyZWcpLCBBcmc6OkRlZiwgdHlwZSwgQXJnOjpjb25zZXJ2YXRp
dmVXaWR0aCh0eXBlKSk7CiAgICAgfTsKIAogICAgIGlmIChoYXNTcGVjaWFsKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJh
dGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgi
CiAjaW5jbHVkZSAiQWlyUmVnaXN0ZXJQcmlvcml0eS5oIgogI2luY2x1ZGUgIkFpclRtcElubGlu
ZXMuaCIKKyNpbmNsdWRlICJBaXJUbXBXaWR0aC5oIgogI2luY2x1ZGUgIkFpclVzZUNvdW50cy5o
IgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgpAQCAtNjMwLDkgKzYzMSwxMCBAQCBwcm90ZWN0ZWQ6CiB0ZW1wbGF0ZTxBcmc6OlR5cGUgdHlw
ZT4KIGNsYXNzIENvbG9yaW5nQWxsb2NhdG9yIDogcHVibGljIEFic3RyYWN0Q29sb3JpbmdBbGxv
Y2F0b3I8dW5zaWduZWQ+IHsKIHB1YmxpYzoKLSAgICBDb2xvcmluZ0FsbG9jYXRvcihDb2RlJiBj
b2RlLCBjb25zdCBVc2VDb3VudHM8VG1wPiYgdXNlQ291bnRzLCBjb25zdCBIYXNoU2V0PHVuc2ln
bmVkPiYgdW5zcGlsbGFibGVUbXApCisgICAgQ29sb3JpbmdBbGxvY2F0b3IoQ29kZSYgY29kZSwg
VG1wV2lkdGgmIHRtcFdpZHRoLCBjb25zdCBVc2VDb3VudHM8VG1wPiYgdXNlQ291bnRzLCBjb25z
dCBIYXNoU2V0PHVuc2lnbmVkPiYgdW5zcGlsbGFibGVUbXApCiAgICAgICAgIDogQWJzdHJhY3RD
b2xvcmluZ0FsbG9jYXRvcjx1bnNpZ25lZD4ocmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSwgQWJz
b2x1dGVUbXBNYXBwZXI8dHlwZT46Omxhc3RNYWNoaW5lUmVnaXN0ZXJJbmRleCgpLCB0bXBBcnJh
eVNpemUoY29kZSkpCiAgICAgICAgICwgbV9jb2RlKGNvZGUpCisgICAgICAgICwgbV90bXBXaWR0
aCh0bXBXaWR0aCkKICAgICAgICAgLCBtX3VzZUNvdW50cyh1c2VDb3VudHMpCiAgICAgICAgICwg
bV91bnNwaWxsYWJsZVRtcHModW5zcGlsbGFibGVUbXApCiAgICAgewpAQCAtNjQ2LDkgKzY0OCwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6dG1w
RnJvbUFic29sdXRlSW5kZXgoZ2V0QWxpYXMoQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29s
dXRlSW5kZXgodG1wKSkpOwogICAgIH0KIAorICAgIC8vIFRoaXMgdGVsbHMgeW91IGlmIGEgTW92
ZSB3aWxsIGJlIGNvYWxlc2NhYmxlIGlmIHRoZSBzcmMgYW5kIGRzdCBlbmQgdXAgbWF0Y2hpbmcu
IFRoaXMgbWV0aG9kCisgICAgLy8gcmVsaWVzIG9uIGFuIGFuYWx5c2lzIHRoYXQgaXMgaW52YWxp
ZGF0ZWQgYnkgcmVnaXN0ZXIgYWxsb2NhdGlvbiwgc28geW91IGl0J3Mgb25seSBtZWFuaW5nZnVs
IHRvCisgICAgLy8gY2FsbCB0aGlzICpiZWZvcmUqIHJlcGxhY2luZyB0aGUgVG1wJ3MgaW4gdGhp
cyBJbnN0IHdpdGggcmVnaXN0ZXJzIG9yIHNwaWxsIHNsb3RzLgorICAgIGJvb2wgbWF5QmVDb2Fs
ZXNjYWJsZShjb25zdCBJbnN0JiBpbnN0KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1h
eUJlQ29hbGVzY2FibGVJbXBsKGluc3QsICZtX3RtcFdpZHRoKTsKKyAgICB9CisKICAgICBib29s
IGlzVXNlbGVzc01vdmUoY29uc3QgSW5zdCYgaW5zdCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtYXlCZUNvYWxlc2NhYmxlKGluc3QpICYmIGluc3QuYXJnc1swXS50bXAoKSA9PSBpbnN0
LmFyZ3NbMV0udG1wKCk7CisgICAgICAgIHJldHVybiBtYXlCZUNvYWxlc2NhYmxlSW1wbChpbnN0
LCBudWxscHRyKSAmJiBpbnN0LmFyZ3NbMF0udG1wKCkgPT0gaW5zdC5hcmdzWzFdLnRtcCgpOwog
ICAgIH0KIAogICAgIFRtcCBnZXRBbGlhc1doZW5TcGlsbGluZyhUbXAgdG1wKSBjb25zdApAQCAt
NzcwLDE0ICs3ODAsMTQgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGluc3QuZm9yRWFjaFRt
cFdpdGhFeHRyYUNsb2JiZXJlZFJlZ3MoCiAgICAgICAgICAgICBuZXh0SW5zdCwKLSAgICAgICAg
ICAgIFsmXSAoY29uc3QgVG1wJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgYXJnVHlw
ZSkgeworICAgICAgICAgICAgWyZdIChjb25zdCBUbXAmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFy
Zzo6VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFBcmc6
OmlzRGVmKHJvbGUpIHx8IGFyZ1R5cGUgIT0gdHlwZSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIEFsbCB0aGUgRGVmKClz
IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIgYW5kIHdpdGggYWxsIHRoZSBleHRyYSBjbG9iYmVy
ZWQgVG1wcy4KICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgbm90IHVzZSBmb3JFYWNoRGVm
QW5kRXh0cmFDbG9iYmVyZWRUbXAoKSBoZXJlIHNpbmNlIGNvbG9yZWQgVG1wcwogICAgICAgICAg
ICAgICAgIC8vIGRvIG5vdCBuZWVkIGludGVyZmVyZW5jZSBlZGdlcyBpbiBvdXIgaW1wbGVtZW50
YXRpb24uCi0gICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKFsmXSAoVG1wJiBvdGhlckFy
ZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSBhcmdUeXBlKSB7CisgICAgICAgICAgICAgICAg
aW5zdC5mb3JFYWNoVG1wKFsmXSAoVG1wJiBvdGhlckFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6
VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghQXJn
Ojppc0RlZihyb2xlKSB8fCBhcmdUeXBlICE9IHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTc5MSw3ICs4MDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8g
Y29hbGVzY2UgdGhlIE1vdmUgZXZlbiBpZiB0aGUgdHdvIFRtcCBuZXZlciBpbnRlcmZlcmUgYW55
d2hlcmUuCiAgICAgICAgICAgICBUbXAgZGVmVG1wOwogICAgICAgICAgICAgVG1wIHVzZVRtcDsK
LSAgICAgICAgICAgIGluc3QuZm9yRWFjaFRtcChbJmRlZlRtcCwgJnVzZVRtcF0gKFRtcCYgYXJn
VG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAgICAgICAgICBpbnN0LmZvckVh
Y2hUbXAoWyZkZWZUbXAsICZ1c2VUbXBdIChUbXAmIGFyZ1RtcCwgQXJnOjpSb2xlIHJvbGUsIEFy
Zzo6VHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzRGVmKHJv
bGUpKQogICAgICAgICAgICAgICAgICAgICBkZWZUbXAgPSBhcmdUbXA7CiAgICAgICAgICAgICAg
ICAgZWxzZSB7CkBAIC04MzksNyArODQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQWxsIHRo
ZSBEZWYoKXMgaW50ZXJmZXJlIHdpdGggZXZlcnRoaW5nIGxpdmUuCiAgICAgICAgIGluc3QuZm9y
RWFjaFRtcFdpdGhFeHRyYUNsb2JiZXJlZFJlZ3MoCiAgICAgICAgICAgICBuZXh0SW5zdCwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgVG1wJiBhcmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUg
YXJnVHlwZSkgeworICAgICAgICAgICAgWyZdIChjb25zdCBUbXAmIGFyZywgQXJnOjpSb2xlIHJv
bGUsIEFyZzo6VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFBcmc6OmlzRGVmKHJvbGUpIHx8IGFyZ1R5cGUgIT0gdHlwZSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIApAQCAtODU3LDEyICs4NjcsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgYWRkRWRnZShBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6YWJzb2x1dGVJbmRl
eChhKSwgQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29sdXRlSW5kZXgoYikpOwogICAgIH0K
IAotICAgIGJvb2wgbWF5QmVDb2FsZXNjYWJsZShjb25zdCBJbnN0JiBpbnN0KSBjb25zdAorICAg
IC8vIENhbGxpbmcgdGhpcyB3aXRob3V0IGEgdG1wV2lkdGggd2lsbCBwZXJmb3JtIGEgbW9yZSBj
b25zZXJ2YXRpdmUgY29hbGVzY2luZyBhbmFseXNpcyB0aGF0IGFzc3VtZXMKKyAgICAvLyB0aGF0
IE1vdmUzMidzIGFyZSBub3QgY29hbGVzY2FibGUuCisgICAgc3RhdGljIGJvb2wgbWF5QmVDb2Fs
ZXNjYWJsZUltcGwoY29uc3QgSW5zdCYgaW5zdCwgVG1wV2lkdGgqIHRtcFdpZHRoKQogICAgIHsK
ICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgQXJnOjpHUDoKICAgICAgICAg
ICAgIHN3aXRjaCAoaW5zdC5vcGNvZGUpIHsKICAgICAgICAgICAgIGNhc2UgTW92ZToKKyAgICAg
ICAgICAgIGNhc2UgTW92ZTMyOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04ODcsNiArOTAwLDIy
IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChpbnN0LmFyZ3NbMF0udHlwZSgpID09IHR5cGUp
OwogICAgICAgICBBU1NFUlQoaW5zdC5hcmdzWzFdLnR5cGUoKSA9PSB0eXBlKTsKIAorICAgICAg
ICAvLyBXZSBjYW4gY29hbGVzY2UgYSBNb3ZlMzIgc28gbG9uZyBhcyBlaXRoZXIgb2YgdGhlIGZv
bGxvd2luZyBob2xkczoKKyAgICAgICAgLy8gLSBUaGUgaW5wdXQgaXMgYWxyZWFkeSB6ZXJvLWZp
bGxlZC4KKyAgICAgICAgLy8gLSBUaGUgb3V0cHV0IG9ubHkgY2FyZXMgYWJvdXQgdGhlIGxvdyAz
MiBiaXRzLgorICAgICAgICAvLworICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIGlucHV0IHByb3Bl
cnR5IHJlcXVpcmVzIGFuIGFuYWx5c2lzIG92ZXIgWkRlZidzLCBzbyBpdCdzIG9ubHkgdmFsaWQg
c28gbG9uZworICAgICAgICAvLyBhcyB0aGUgaW5wdXQgZ2V0cyBhIHJlZ2lzdGVyLiBXZSBkb24n
dCBrbm93IGlmIHRoZSBpbnB1dCBnZXRzIGEgcmVnaXN0ZXIsIGJ1dCB3ZSBkbyBrbm93CisgICAg
ICAgIC8vIHRoYXQgaWYgaXQgZG9lc24ndCBnZXQgYSByZWdpc3RlciB0aGVuIHdlIHdpbGwgc3Rp
bGwgZW1pdCB0aGlzIE1vdmUzMi4KKyAgICAgICAgaWYgKGluc3Qub3Bjb2RlID09IE1vdmUzMikg
eworICAgICAgICAgICAgaWYgKCF0bXBXaWR0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIGlmICh0bXBXaWR0aC0+ZGVmV2lkdGgoaW5zdC5hcmdzWzBdLnRt
cCgpKSA+IEFyZzo6V2lkdGgzMgorICAgICAgICAgICAgICAgICYmIHRtcFdpZHRoLT51c2VXaWR0
aChpbnN0LmFyZ3NbMV0udG1wKCkpID4gQXJnOjpXaWR0aDMyKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC0xMDI0LDYgKzEwNTMsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIEFic3RyYWN0
Q29sb3JpbmdBbGxvY2F0b3I8dW5zaWduZWQ+OjpnZXRBbGlhczsKIAogICAgIENvZGUmIG1fY29k
ZTsKKyAgICBUbXBXaWR0aCYgbV90bXBXaWR0aDsKICAgICAvLyBGSVhNRTogc3BpbGxpbmcgc2hv
dWxkIG5vdCB0eXBlIHNwZWNpZmljLiBJdCBpcyBvbmx5IGEgc2lkZSBlZmZlY3Qgb2YgdXNpbmcg
VXNlQ291bnRzLgogICAgIGNvbnN0IFVzZUNvdW50czxUbXA+JiBtX3VzZUNvdW50czsKICAgICBj
b25zdCBIYXNoU2V0PHVuc2lnbmVkPiYgbV91bnNwaWxsYWJsZVRtcHM7CkBAIC0xMDUzLDcgKzEw
ODMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgSGFzaFNldDx1bnNpZ25lZD4gdW5zcGlsbGFibGVU
bXBzOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgKyttX251bUl0ZXJhdGlv
bnM7Ci0gICAgICAgICAgICBDb2xvcmluZ0FsbG9jYXRvcjx0eXBlPiBhbGxvY2F0b3IobV9jb2Rl
LCBtX3VzZUNvdW50cywgdW5zcGlsbGFibGVUbXBzKTsKKworICAgICAgICAgICAgLy8gRklYTUU6
IE9uZSB3YXkgdG8gb3B0aW1pemUgdGhpcyBjb2RlIGlzIHRvIHJlbW92ZSB0aGUgcmVjb21wdXRh
dGlvbiBpbnNpZGUgdGhlIGZpeHBvaW50LgorICAgICAgICAgICAgLy8gV2UgbmVlZCB0byByZWNv
bXB1dGUgYmVjYXVzZSBzcGlsbGluZyBhZGRzIHRtcHMsIGJ1dCB3ZSBjb3VsZCBqdXN0IHVwZGF0
ZSB0bXBXaWR0aCB3aGVuIHdlCisgICAgICAgICAgICAvLyBhZGQgdGhvc2UgdG1wcy4KKyAgICAg
ICAgICAgIG1fdG1wV2lkdGgucmVjb21wdXRlKG1fY29kZSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIENvbG9yaW5nQWxsb2NhdG9yPHR5cGU+IGFsbG9jYXRvcihtX2NvZGUsIG1fdG1wV2lk
dGgsIG1fdXNlQ291bnRzLCB1bnNwaWxsYWJsZVRtcHMpOwogICAgICAgICAgICAgaWYgKCFhbGxv
Y2F0b3IucmVxdWlyZXNTcGlsbGluZygpKSB7CiAgICAgICAgICAgICAgICAgYXNzaWduUmVnaXN0
ZXJzVG9UbXAoYWxsb2NhdG9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDY5LDYg
KzExMDUsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIEdpdmUgVG1wIGEgdmFsaWQgcmVn
aXN0ZXIuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluc3RJbmRleCA9IDA7IGluc3RJbmRl
eCA8IGJsb2NrLT5zaXplKCk7ICsraW5zdEluZGV4KSB7CiAgICAgICAgICAgICAgICAgSW5zdCYg
aW5zdCA9IGJsb2NrLT5hdChpbnN0SW5kZXgpOworCisgICAgICAgICAgICAgICAgLy8gVGhlIG1h
eUJlQ29hbGVzY2FibGUoKSBtZXRob2Qgd2lsbCBjaGFuZ2UgaXRzIG1pbmQgZm9yIHNvbWUgb3Bl
cmF0aW9ucyBhZnRlciB3ZQorICAgICAgICAgICAgICAgIC8vIGNvbXBsZXRlIHJlZ2lzdGVyIGFs
bG9jYXRpb24uIFNvLCB3ZSByZWNvcmQgdGhpcyBiZWZvcmUgc3RhcnRpbmcuCisgICAgICAgICAg
ICAgICAgYm9vbCBtYXlCZUNvYWxlc2NhYmxlID0gYWxsb2NhdG9yLm1heUJlQ29hbGVzY2FibGUo
aW5zdCk7CisKKyAgICAgICAgICAgICAgICAvLyBPbiBYODZfNjQsIE1vdmUzMiBpcyBjaGVhcGVy
IGlmIHdlIGtub3cgdGhhdCBpdCdzIGVxdWl2YWxlbnQgdG8gYSBNb3ZlLiBJdCdzCisgICAgICAg
ICAgICAgICAgLy8gZXF1aXZhbGVudCBpZiB0aGUgZGVzdGluYXRpb24ncyBoaWdoIGJpdHMgYXJl
IG5vdCBvYnNlcnZhYmxlIG9yIGlmIHRoZSBzb3VyY2UncyBoaWdoCisgICAgICAgICAgICAgICAg
Ly8gYml0cyBhcmUgYWxsIHplcm8uIE5vdGUgdGhhdCB3ZSBkb24ndCBoYXZlIHRoZSBvcHBvc2l0
ZSBvcHRpbWl6YXRpb24gZm9yIG90aGVyCisgICAgICAgICAgICAgICAgLy8gYXJjaGl0ZWN0dXJl
cywgd2hpY2ggbWF5IHByZWZlciBNb3ZlIG92ZXIgTW92ZTMyLCBiZWNhdXNlIE1vdmUgaXMgY2Fu
b25pY2FsIGFscmVhZHkuCisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQXJnOjpHUCAmJiBv
cHRpbWl6ZUZvclg4Nl82NCgpICYmIGluc3Qub3Bjb2RlID09IE1vdmUKKyAgICAgICAgICAgICAg
ICAgICAgJiYgaW5zdC5hcmdzWzBdLmlzVG1wKCkgJiYgaW5zdC5hcmdzWzFdLmlzVG1wKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdG1wV2lkdGgudXNlV2lkdGgoaW5zdC5hcmdzWzFd
LnRtcCgpKSA8PSBBcmc6OldpZHRoMzIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1fdG1w
V2lkdGguZGVmV2lkdGgoaW5zdC5hcmdzWzBdLnRtcCgpKSA8PSBBcmc6OldpZHRoMzIpCisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnN0Lm9wY29kZSA9IE1vdmUzMjsKKyAgICAgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXBGYXN0KFsmXSAoVG1wJiB0bXAp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcC5pc1JlZygpIHx8IHRtcC5pc0dQKCkgPT0g
KHR5cGUgIT0gQXJnOjpHUCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MDg1LDExICsxMTM3LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChh
c3NpZ25lZFRtcC5pc1JlZygpKTsKICAgICAgICAgICAgICAgICAgICAgdG1wID0gYXNzaWduZWRU
bXA7CiAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAobWF5QmVDb2Fs
ZXNjYWJsZSAmJiBpbnN0LmFyZ3NbMF0uaXNUbXAoKSAmJiBpbnN0LmFyZ3NbMV0uaXNUbXAoKQor
ICAgICAgICAgICAgICAgICAgICAmJiBpbnN0LmFyZ3NbMF0udG1wKCkgPT0gaW5zdC5hcmdzWzFd
LnRtcCgpKQorICAgICAgICAgICAgICAgICAgICBpbnN0ID0gSW5zdCgpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvLyBSZW1vdmUgYWxsIHRoZSB1c2VsZXNzIG1vdmVzIHdlIGNyZWF0
ZWQgaW4gdGhpcyBibG9jay4KICAgICAgICAgICAgIGJsb2NrLT5pbnN0cygpLnJlbW92ZUFsbE1h
dGNoaW5nKFsmXSAoY29uc3QgSW5zdCYgaW5zdCkgewotICAgICAgICAgICAgICAgIHJldHVybiBh
bGxvY2F0b3IuaXNVc2VsZXNzTW92ZShpbnN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIWlu
c3Q7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTExMDMsNyArMTE1OSw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1bnNwaWxsYWJsZVRtcHMuYWRkKEFic29sdXRlVG1w
TWFwcGVyPHR5cGU+OjphYnNvbHV0ZUluZGV4KHRtcCkpOwogCiAgICAgICAgICAgICAvLyBBbGxv
Y2F0ZSBzdGFjayBzbG90IGZvciBlYWNoIHNwaWxsZWQgdmFsdWUuCi0gICAgICAgICAgICBib29s
IGlzTmV3VG1wID0gc3RhY2tTbG90cy5hZGQodG1wLCBtX2NvZGUuYWRkU3RhY2tTbG90KDgsIFN0
YWNrU2xvdEtpbmQ6OkFub255bW91cykpLmlzTmV3RW50cnk7CisgICAgICAgICAgICBTdGFja1Ns
b3QqIHN0YWNrU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoCisgICAgICAgICAgICAgICAgbV90
bXBXaWR0aC53aWR0aCh0bXApIDw9IEFyZzo6V2lkdGgzMiA/IDQgOiA4LCBTdGFja1Nsb3RLaW5k
OjpBbm9ueW1vdXMpOworICAgICAgICAgICAgYm9vbCBpc05ld1RtcCA9IHN0YWNrU2xvdHMuYWRk
KHRtcCwgc3RhY2tTbG90KS5pc05ld0VudHJ5OwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChp
c05ld1RtcCwgaXNOZXdUbXApOwogICAgICAgICB9CiAKQEAgLTExMTUsMTggKzExNzMsMzYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4ID0gMDsgaW5zdElu
ZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbnN0SW5kZXgpIHsKICAgICAgICAgICAgICAgICBJbnN0
JiBpbnN0ID0gYmxvY2stPmF0KGluc3RJbmRleCk7CiAKKyAgICAgICAgICAgICAgICAvLyBUaGUg
VG1wV2lkdGggYW5hbHlzaXMgd2lsbCBzYXkgdGhhdCBhIE1vdmUgb25seSBzdG9yZXMgMzIgYml0
cyBpbnRvIHRoZSBkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc291cmNl
IG9ubHkgaGFkIDMyIGJpdHMgd29ydGggb2Ygbm9uLXplcm8gYml0cy4gU2FtZSBmb3IgdGhlIHNv
dXJjZTogaXQgd2lsbAorICAgICAgICAgICAgICAgIC8vIG9ubHkgY2xhaW0gdG8gcmVhZCAzMiBi
aXRzIGZyb20gdGhlIHNvdXJjZSBpZiBvbmx5IDMyIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFy
ZQorICAgICAgICAgICAgICAgIC8vIHJlYWQuIE5vdGUgdGhhdCB3ZSBvbmx5IGFwcGx5IHRoaXMg
bG9naWMgaWYgdGhpcyB0dXJucyBpbnRvIGEgbG9hZCBvciBzdG9yZSwgc2luY2UKKyAgICAgICAg
ICAgICAgICAvLyBNb3ZlIGlzIHRoZSBjYW5vbmljYWwgd2F5IHRvIG1vdmUgZGF0YSBiZXR3ZWVu
IEdQUnMuCisgICAgICAgICAgICAgICAgYm9vbCBmb3JjZU1vdmUzMklmRGlkU3BpbGwgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBib29sIGRpZFNwaWxsID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gQXJnOjpHUCAmJiBpbnN0Lm9wY29kZSA9PSBNb3ZlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3RtcFdpZHRoLmRlZldpZHRoKGluc3QuYXJnc1swXS50bXAoKSkg
PD0gQXJnOjpXaWR0aDMyCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBtX3RtcFdpZHRoLnVz
ZVdpZHRoKGluc3QuYXJnc1sxXS50bXAoKSkgPD0gQXJnOjpXaWR0aDMyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yY2VNb3ZlMzJJZkRpZFNwaWxsID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgICAgICAvLyBUcnkgdG8gcmVwbGFjZSB0aGUgcmVnaXN0ZXIgdXNl
IGJ5IG1lbW9yeSB1c2Ugd2hlbiBwb3NzaWJsZS4KICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgaW5zdC5hcmdzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEFyZyYgYXJnID0gaW5zdC5hcmdzW2ldOwogICAgICAgICAgICAgICAgICAgICBpZiAoYXJn
LmlzVG1wKCkgJiYgYXJnLnR5cGUoKSA9PSB0eXBlICYmICFhcmcuaXNSZWcoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBzdGFja1Nsb3RFbnRyeSA9IHN0YWNrU2xvdHMuZmluZChh
cmcudG1wKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrU2xvdEVudHJ5ICE9
IHN0YWNrU2xvdHMuZW5kKCkgJiYgaW5zdC5hZG1pdHNTdGFjayhpKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzdGFja1Nsb3RFbnRyeSAhPSBzdGFja1Nsb3RzLmVuZCgpICYmIGluc3Qu
YWRtaXRzU3RhY2soaSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBBcmc6
OnN0YWNrKHN0YWNrU2xvdEVudHJ5LT52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkU3BpbGwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgaWYgKGRp
ZFNwaWxsICYmIGZvcmNlTW92ZTMySWZEaWRTcGlsbCkKKyAgICAgICAgICAgICAgICAgICAgaW5z
dC5vcGNvZGUgPSBNb3ZlMzI7CisKICAgICAgICAgICAgICAgICAvLyBGb3IgZXZlcnkgb3RoZXIg
Y2FzZSwgYWRkIExvYWQvU3RvcmUgYXMgbmVlZGVkLgotICAgICAgICAgICAgICAgIGluc3QuZm9y
RWFjaFRtcChbJl0gKFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUp
IHsKKyAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAmIHRtcCwgQXJnOjpS
b2xlIHJvbGUsIEFyZzo6VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICh0bXAuaXNSZWcoKSB8fCBhcmdUeXBlICE9IHR5cGUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTExNDEsNyArMTIxNywxOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgQXJnIGFyZyA9IEFyZzo6
c3RhY2soc3RhY2tTbG90RW50cnktPnZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgT3Bjb2Rl
IG1vdmUgPSB0eXBlID09IEFyZzo6R1AgPyBNb3ZlIDogTW92ZURvdWJsZTsKKyAgICAgICAgICAg
ICAgICAgICAgT3Bjb2RlIG1vdmUgPSBPb3BzOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KHN0YWNrU2xvdEVudHJ5LT52YWx1ZS0+Ynl0ZVNpemUoKSkgeworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlID0gdHlwZSA9PSBBcmc6OkdQ
ID8gTW92ZTMyIDogTW92ZUZsb2F0OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUg
PSB0eXBlID09IEFyZzo6R1AgPyBNb3ZlIDogTW92ZURvdWJsZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICAgICAgaWYgKEFyZzo6aXNBbnlVc2Uocm9sZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IFRtcCBuZXdUbXAgPSBtX2NvZGUubmV3VG1wKHR5cGUpOwpAQCAtMTE2Niw2ICsxMjUzLDcgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICBDb2RlJiBtX2NvZGU7CisgICAgVG1wV2lkdGggbV90bXBX
aWR0aDsKICAgICBVc2VDb3VudHM8VG1wPiBtX3VzZUNvdW50czsKICAgICB1bnNpZ25lZCBtX251
bUl0ZXJhdGlvbnMgeyAwIH07CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJMaXZlbmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyTGl2ZW5lc3MuaAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHR5cGVuYW1lIEFkYXB0ZXI6OkluZGV4U2V0JiBsaXZlQXRU
YWlsID0gbV9saXZlQXRUYWlsW2Jsb2NrXTsKIAogICAgICAgICAgICAgYmxvY2stPmxhc3QoKS5m
b3JFYWNoPHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKLSAgICAgICAgICAgICAgICBbJl0gKHR5
cGVuYW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0
eXBlKSB7CisgICAgICAgICAgICAgICAgWyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYgdGhp
bmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSwgQXJnOjpXaWR0aCkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoQXJnOjppc0xhdGVVc2Uocm9sZSkgJiYgQWRhcHRlcjo6YWNjZXB0
c1R5cGUodHlwZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsaXZlQXRUYWlsLmFkZChBZGFw
dGVyOjp2YWx1ZVRvSW5kZXgodGhpbmcpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTIxNiwx
NCArMjE2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGF1dG8mIHdvcmtzZXQgPSBtX2xpdmVu
ZXNzLm1fd29ya3NldDsKICAgICAgICAgICAgIC8vIEZpcnN0IGhhbmRsZSBkZWYncy4KICAgICAg
ICAgICAgIGluc3QuZm9yRWFjaDx0eXBlbmFtZSBBZGFwdGVyOjpUaGluZz4oCi0gICAgICAgICAg
ICAgICAgWyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFyZzo6Um9sZSByb2xl
LCBBcmc6OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgICAgIFsmXSAodHlwZW5hbWUgQWRhcHRl
cjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIHR5cGUsIEFyZzo6V2lk
dGgpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkgJiYgQWRhcHRl
cjo6YWNjZXB0c1R5cGUodHlwZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc2V0LnJl
bW92ZShBZGFwdGVyOjp2YWx1ZVRvSW5kZXgodGhpbmcpKTsKICAgICAgICAgICAgICAgICB9KTsK
IAogICAgICAgICAgICAgLy8gVGhlbiBoYW5kbGUgdXNlJ3MuCiAgICAgICAgICAgICBpbnN0LmZv
ckVhY2g8dHlwZW5hbWUgQWRhcHRlcjo6VGhpbmc+KAotICAgICAgICAgICAgICAgIFsmXSAodHlw
ZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlIHR5
cGUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGlu
ZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChBcmc6OmlzRWFybHlVc2Uocm9sZSkgJiYgQWRhcHRlcjo6YWNjZXB0
c1R5cGUodHlwZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc2V0LmFkZChBZGFwdGVy
Ojp2YWx1ZVRvSW5kZXgodGhpbmcpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTIzMiw3ICsy
MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoaW5zdEluZGV4KSB7CiAgICAgICAgICAg
ICAgICAgSW5zdCYgcHJldkluc3QgPSBtX2Jsb2NrLT5hdChpbnN0SW5kZXggLSAxKTsKICAgICAg
ICAgICAgICAgICBwcmV2SW5zdC5mb3JFYWNoPHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKLSAg
ICAgICAgICAgICAgICAgICAgWyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFy
Zzo6Um9sZSByb2xlLCBBcmc6OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgICAgICAgICBbJl0g
KHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlw
ZSB0eXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjpp
c0xhdGVVc2Uocm9sZSkgJiYgQWRhcHRlcjo6YWNjZXB0c1R5cGUodHlwZSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd29ya3NldC5hZGQoQWRhcHRlcjo6dmFsdWVUb0luZGV4KHRoaW5n
KSk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkp
CkBAIC0yMywxNCArMjMsMTcgQEAKIAogIyBTeWxsYWJ1czoKICMKLSMgUm9sZXMgYW5kIHR5cGVz
OgotIyBVOkcgPT4gdXNlIG9mIGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIG9yIHZhbHVlCi0j
IEQ6RyA9PiBkZWYgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKLSMgVUQ6
RyA9PiB1c2UgYW5kIGRlZiBvZiBhIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBvciB2YWx1ZQot
IyBVQTpHID0+IFVzZUFkZHIgKHNlZSBjb21tZW50IGluIEFyZy5oKQotIyBVOkYgPT4gdXNlIG9m
IGEgZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUKLSMgRDpGID0+IGRlZiBvZiBhIGZsb2F0IHJlZ2lz
dGVyIG9yIHZhbHVlCi0jIFVEOkYgPT4gdXNlIGFuZCBkZWYgb2YgYSBmbG9hdCByZWdpc3RlciBv
ciB2YWx1ZQorIyBFeGFtcGxlcyBvZiBzb21lIHJvbGVzLCB0eXBlcywgYW5kIHdpZHRoczoKKyMg
VTpHOjMyID0+IHVzZSBvZiB0aGUgbG93IDMyIGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVn
aXN0ZXIgb3IgdmFsdWUKKyMgRDpHOjMyID0+IGRlZiBvZiB0aGUgbG93IDMyIGJpdHMgb2YgYSBn
ZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFsdWUKKyMgVUQ6RzozMiA9PiB1c2UgYW5kIGRl
ZiBvZiB0aGUgbG93IDMyIGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgb3IgdmFs
dWUKKyMgVTpHOjY0ID0+IHVzZSBvZiB0aGUgbG93IDY0IGJpdHMgb2YgYSBnZW5lcmFsLXB1cnBv
c2UgcmVnaXN0ZXIgb3IgdmFsdWUKKyMgWkQ6RzozMiA9PiBkZWYgb2YgYWxsIGJpdHMgb2YgYSBn
ZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIsIHdoZXJlIGFsbCBidXQgdGhlIGxvdyAzMiBiaXRzIGFy
ZSBndWFyYW50ZWVkIHRvIGJlIHplcm9lZC4KKyMgVUE6RzpQdHIgPT4gVXNlQWRkciAoc2VlIGNv
bW1lbnQgaW4gQXJnLmgpCisjIFU6RjozMiA9PiB1c2Ugb2YgYSBmbG9hdCByZWdpc3RlciBvciB2
YWx1ZQorIyBVOkY6NjQgPT4gdXNlIG9mIGEgZG91YmxlIHJlZ2lzdGVyIG9yIHZhbHVlCisjIEQ6
RjozMiA9PiBkZWYgb2YgYSBmbG9hdCByZWdpc3RlciBvciB2YWx1ZQorIyBVRDpGOjMyID0+IHVz
ZSBhbmQgZGVmIG9mIGEgZmxvYXQgcmVnaXN0ZXIgb3IgdmFsdWUKICMKICMgQXJndW1lbnQga2lu
ZHM6CiAjIFRtcCA9PiB0ZW1wb3Jhcnkgb3IgcmVnaXN0ZXIKQEAgLTQ0LDExICs0NywxMSBAQAog
IyBvZiB0aGluZ3MuIFNvLCBhbHRob3VnaCB0aGlzIGZpbGUgdXNlcyBhIHBhcnRpY3VsYXIgaW5k
ZW50YXRpb24gc3R5bGUsIG5vbmUgb2YgdGhlIHdoaXRlc3BhY2Ugb3IKICMgZXZlbiBuZXdsaW5l
cyBhcmUgbWVhbmluZ2Z1bCB0byB0aGUgcGFyc2VyLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHdy
aXRlOgogIwotIyBGb280MiBVOkcsIFVEOkYgSW1tLCBUbXAgQWRkciwgVG1wCisjIEZvbzQyIFU6
RzozMiwgVUQ6RjozMiBJbW0sIFRtcCBBZGRyLCBUbXAKICMKICMgQW5kIHRoZSBwYXJzZXIgd291
bGQga25vdyB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgYXM6CiAjCi0jIEZvbzQyIFU6RywgVUQ6Rgor
IyBGb280MiBVOkc6MzIsIFVEOkY6MzIKICMgICAgIEltbSwgVG1wCiAjICAgICBBZGRyLCBUbXAK
ICMKQEAgLTU4LDIyICs2MSwyMiBAQAogIyB1bmlvbiBvZiB0aG9zZSBhcmNoaXRlY3R1cmVzLiBG
b3IgZXhhbXBsZSwgaWYgdGhpcyBpcyB0aGUgb25seSBvdmVybG9hZCBvZiB0aGUgb3Bjb2RlLCB0
aGVuIGl0IG1ha2VzIHRoZQogIyBvcGNvZGUgb25seSBhdmFpbGFibGUgb24geDg2XzY0OgogIwot
IyB4ODZfNjQ6IEZ1enogVUQ6RywgRDpHCisjIHg4Nl82NDogRnV6eiBVRDpHOjY0LCBEOkc6NjQK
ICMgICAgIFRtcCwgVG1wCiAjICAgICBUbXAsIEFkZHIKICMKICMgQnV0IHRoaXMgb25seSByZXN0
cmljdHMgdGhlIHR3by1vcGVyYW5kIGZvcm0sIHRoZSBvdGhlciBmb3JtIGlzIGFsbG93ZWQgb24g
YWxsIGFyY2hpdGVjdHVyZXM6CiAjCi0jIHg4Nl82NDogRnV6eiBVRDpHLCBEOkcKKyMgeDg2XzY0
OiBGdXp6IFVEOkc6NjQsIEQ6Rzo2NAogIyAgICAgVG1wLCBUbXAKICMgICAgIFRtcCwgQWRkcgot
IyBGdXp6IFVEOkcsIEQ6RywgVTpGCisjIEZ1enogVUQ6RzpQdHIsIEQ6RzpQdHIsIFU6RjpQdHIK
ICMgICAgIFRtcCwgVG1wLCBUbXAKICMgICAgIFRtcCwgQWRkciwgVG1wCiAjCiAjIEFuZCB5b3Ug
Y2FuIGFsc28gcmVzdHJpY3QgaW5kaXZpZHVhbCBmb3JtczoKICMKLSMgVGhpbmd5IFVEOkcsIEQ6
RworIyBUaGluZ3kgVUQ6RzozMiwgRDpHOjMyCiAjICAgICBUbXAsIFRtcAogIyAgICAgYXJtNjQ6
IFRtcCwgQWRkcgogIwpAQCAtODEsNyArODQsNyBAQAogIyBmb3JtLiBJbiB0aGlzIGV4YW1wbGUs
IHRoZSB2ZXJzaW9uIHRoYXQgdGFrZXMgYW4gYWRkcmVzcyBpcyBvbmx5IGF2YWlsYWJsZSBvbiBh
cm12NyB3aGlsZSB0aGUgb3RoZXIKICMgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiBhcm12NyBv
ciB4ODZfNjQ6CiAjCi0jIHg4Nl82NCBhcm12NzogQnV6eiBVOkcsIFVEOkYKKyMgeDg2XzY0IGFy
bXY3OiBCdXp6IFU6RzozMiwgVUQ6RjozMgogIyAgICAgVG1wLCBUbXAKICMgICAgIEltbSwgVG1w
CiAjICAgICBhcm12NzogQWRkciwgVG1wCkBAIC0xMDMsMjE0ICsxMDYsMjE0IEBACiAKIE5vcAog
Ci1BZGQzMiBVOkcsIFVEOkcKK0FkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAog
ICAgIHg4NjogSW1tLCBBZGRyCiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogICAg
IHg4NjogVG1wLCBBZGRyCiAKLUFkZDMyIFU6RywgVTpHLCBEOkcKK0FkZDMyIFU6RzozMiwgVTpH
OjMyLCBaRDpHOjMyCiAgICAgSW1tLCBUbXAsIFRtcAogICAgIFRtcCwgVG1wLCBUbXAKIAotNjQ6
IEFkZDY0IFU6RywgVUQ6RworNjQ6IEFkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1w
CiAgICAgeDg2OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAg
ICAgeDg2OiBUbXAsIEFkZHIKIAotNjQ6IEFkZDY0IFU6RywgVTpHLCBEOkcKKzY0OiBBZGQ2NCBV
Okc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgSW1tLCBUbXAsIFRtcAogICAgIFRtcCwgVG1wLCBU
bXAKIAotQWRkRG91YmxlIFU6RiwgVUQ6RgorQWRkRG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAg
IFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAotQWRkRmxvYXQgVTpGLCBVRDpGCitBZGRG
bG9hdCBVOkY6MzIsIFVEOkY6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAK
LVN1YjMyIFU6RywgVUQ6RworU3ViMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAg
ICAgeDg2OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAgICAg
eDg2OiBUbXAsIEFkZHIKIAotNjQ6IFN1YjY0IFU6RywgVUQ6RworNjQ6IFN1YjY0IFU6Rzo2NCwg
VUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKICAgICBJbW0sIFRtcAog
ICAgIHg4NjogQWRkciwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKIAotU3ViRG91YmxlIFU6Riwg
VUQ6RgorU3ViRG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBB
ZGRyLCBUbXAKIAotU3ViRmxvYXQgVTpGLCBVRDpGCitTdWJGbG9hdCBVOkY6MzIsIFVEOkY6MzIK
ICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLU5lZzMyIFVEOkcKK05lZzMyIFVa
RDpHOjMyCiAgICAgVG1wCiAgICAgQWRkcgogCi02NDogTmVnNjQgVUQ6RworNjQ6IE5lZzY0IFVE
Okc6NjQKICAgICBUbXAKIAotTXVsMzIgVTpHLCBVRDpHCitNdWwzMiBVOkc6MzIsIFVaRDpHOjMy
CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1NdWwzMiBVOkcsIFU6RywgRDpH
CitNdWwzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIEltbSwgVG1wLCBUbXAKIAotNjQ6
IE11bDY0IFU6RywgVUQ6RworNjQ6IE11bDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1w
CiAKLU11bERvdWJsZSBVOkYsIFVEOkYKK011bERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBU
bXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLU11bEZsb2F0IFU6RiwgVUQ6RgorTXVsRmxv
YXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1E
aXZEb3VibGUgVTpGLCBVRDpGCitEaXZEb3VibGUgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBU
bXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1EaXZGbG9hdCBVOkYsIFVEOkYKK0RpdkZsb2F0IFU6
RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKIAoteDg2OiBY
ODZDb252ZXJ0VG9Eb3VibGVXb3JkMzIgVTpHLCBEOkcKK3g4NjogWDg2Q29udmVydFRvRG91Ymxl
V29yZDMyIFU6RzozMiwgWkQ6RzozMgogICAgIFRtcCosIFRtcCoKIAoteDg2XzY0OiBYODZDb252
ZXJ0VG9RdWFkV29yZDY0IFU6RywgRDpHCit4ODZfNjQ6IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQg
VTpHOjY0LCBEOkc6NjQKICAgICBUbXAqLCBUbXAqCiAKLXg4NjogWDg2RGl2MzIgVUQ6RywgVUQ6
RywgVTpHCit4ODY6IFg4NkRpdjMyIFVaRDpHOjMyLCBVWkQ6RzozMiwgVTpHOjMyCiAgICAgVG1w
KiwgVG1wKiwgVG1wCiAKLXg4Nl82NDogWDg2RGl2NjQgVUQ6RywgVUQ6RywgVTpHCit4ODZfNjQ6
IFg4NkRpdjY0IFVaRDpHOjY0LCBVWkQ6Rzo2NCwgVTpHOjY0CiAgICAgVG1wKiwgVG1wKiwgVG1w
CiAKLUxlYSBVQTpHLCBEOkcKK0xlYSBVQTpHOlB0ciwgRDpHOlB0cgogICAgIEFkZHIsIFRtcAog
Ci1BbmQzMiBVOkcsIFVEOkcKK0FuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAog
ICAgIEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IEFkZHIsIFRtcAogICAg
IHg4NjogSW1tLCBBZGRyCiAKLTY0OiBBbmQ2NCBVOkcsIFVEOkcKKzY0OiBBbmQ2NCBVOkc6NjQs
IFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIEltbSwgVG1wCiAKLUFuZERvdWJsZSBVOkYsIFVE
OkYKK0FuZERvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAogCi1BbmRGbG9hdCBV
OkYsIFVEOkYKK0FuZEZsb2F0IFU6RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1wCiAKLUxzaGlm
dDMyIFU6RywgVUQ6RworTHNoaWZ0MzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCosIFRtcAog
ICAgIEltbSwgVG1wCiAKLTY0OiBMc2hpZnQ2NCBVOkcsIFVEOkcKKzY0OiBMc2hpZnQ2NCBVOkc6
NjQsIFVEOkc6NjQKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi1Sc2hpZnQzMiBVOkcs
IFVEOkcKK1JzaGlmdDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0s
IFRtcAogCi02NDogUnNoaWZ0NjQgVTpHLCBVRDpHCis2NDogUnNoaWZ0NjQgVTpHOjY0LCBVRDpH
OjY0CiAgICAgVG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKIAotVXJzaGlmdDMyIFU6RywgVUQ6Rwor
VXJzaGlmdDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAog
Ci02NDogVXJzaGlmdDY0IFU6RywgVUQ6RworNjQ6IFVyc2hpZnQ2NCBVOkc6NjQsIFVEOkc6NjQK
ICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi1PcjMyIFU6RywgVUQ6RworT3IzMiBVOkc6
MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBB
ZGRyCiAgICAgeDg2OiBBZGRyLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgogCi02NDogT3I2NCBV
OkcsIFVEOkcKKzY0OiBPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgSW1t
LCBUbXAKIAotWG9yMzIgVTpHLCBVRDpHCitYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1w
LCBUbXAKICAgICBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAgICAgeDg2OiBBZGRyLCBU
bXAKICAgICB4ODY6IEltbSwgQWRkcgogCi02NDogWG9yNjQgVTpHLCBVRDpHCis2NDogWG9yNjQg
VTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIElt
bSwgVG1wCiAKLU5vdDMyIFVEOkcKK05vdDMyIFVaRDpHOjMyCiAgICAgVG1wCiAgICAgeDg2OiBB
ZGRyCiAKLTY0OiBOb3Q2NCBVRDpHCis2NDogTm90NjQgVUQ6Rzo2NAogICAgIFRtcAogICAgIHg4
NjogQWRkcgogCi1DZWlsRG91YmxlIFU6RiwgVUQ6RgorQ2VpbERvdWJsZSBVOkY6NjQsIFVEOkY6
NjQKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcAogCi1DZWlsRmxvYXQgVTpGLCBVRDpGCitD
ZWlsRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAKIAot
U3FydERvdWJsZSBVOkYsIFVEOkYKK1NxcnREb3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1w
LCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1TcXJ0RmxvYXQgVTpGLCBVRDpGCitTcXJ0Rmxv
YXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1D
b252ZXJ0SW50MzJUb0RvdWJsZSBVOkcsIEQ6RgorQ29udmVydEludDMyVG9Eb3VibGUgVTpHOjMy
LCBEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKLTY0OiBDb252ZXJ0
SW50NjRUb0RvdWJsZSBVOkcsIEQ6RgorNjQ6IENvbnZlcnRJbnQ2NFRvRG91YmxlIFU6Rzo2NCwg
RDpGOjY0CiAgICAgVG1wLCBUbXAKIAotQ291bnRMZWFkaW5nWmVyb3MzMiBVOkcsIEQ6RworQ291
bnRMZWFkaW5nWmVyb3MzMiBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4Njog
QWRkciwgVG1wCiAKLTY0OiBDb3VudExlYWRpbmdaZXJvczY0IFU6RywgRDpHCis2NDogQ291bnRM
ZWFkaW5nWmVyb3M2NCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBBZGRy
LCBUbXAKIAotQ29udmVydERvdWJsZVRvRmxvYXQgVTpGLCBEOkYKK0NvbnZlcnREb3VibGVUb0Zs
b2F0IFU6Rjo2NCwgRDpGOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1D
b252ZXJ0RmxvYXRUb0RvdWJsZSBVOkYsIEQ6RgorQ29udmVydEZsb2F0VG9Eb3VibGUgVTpGOjMy
LCBEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKQEAgLTMxOCw3ICsz
MjEsNyBAQCBDb252ZXJ0RmxvYXRUb0RvdWJsZSBVOkYsIEQ6RgogIyB0aGUgcGxhdGZvcm0uIEkn
bSBub3QgZW50aXJlbHkgc3VyZSB0aGF0IHRoaXMgaXMgYSBnb29kIHRoaW5nOyBpdCBtaWdodCBi
ZSBiZXR0ZXIgdG8ganVzdCBoYXZlIGEKICMgTW92ZTY0IGluc3RydWN0aW9uLiBPVE9ILCBvdXIg
TWFjcm9Bc3NlbWJsZXJzIGFscmVhZHkgaGF2ZSB0aGlzIG5vdGlvbiBvZiAibW92ZSgpIiB0aGF0
IGJhc2ljYWxseQogIyBtZWFucyBtb3ZlUHRyLgotTW92ZSBVOkcsIEQ6RworTW92ZSBVOkc6UHRy
LCBEOkc6UHRyCiAgICAgVG1wLCBUbXAKICAgICBJbW0sIFRtcCBhcyBzaWduRXh0ZW5kMzJUb1B0
cgogICAgIEltbTY0LCBUbXAKQEAgLTMyOCw3ICszMzEsNyBAQCBNb3ZlIFU6RywgRDpHCiAgICAg
VG1wLCBJbmRleCBhcyBzdG9yZVB0cgogICAgIEltbSwgQWRkciBhcyBzdG9yZVB0cgogCi1Nb3Zl
MzIgVTpHLCBEOkcKK01vdmUzMiBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCBhcyB6ZXJv
RXh0ZW5kMzJUb1B0cgogICAgIEFkZHIsIFRtcCBhcyBsb2FkMzIKICAgICBJbmRleCwgVG1wIGFz
IGxvYWQzMgpAQCAtMzM3LDExMiArMzQwLDExMiBAQCBNb3ZlMzIgVTpHLCBEOkcKICAgICBJbW0s
IEFkZHIgYXMgc3RvcmUzMgogICAgIEltbSwgSW5kZXggYXMgc3RvcmUzMgogCi1TaWduRXh0ZW5k
MzJUb1B0ciBVOkcsIEQ6RworU2lnbkV4dGVuZDMyVG9QdHIgVTpHOjMyLCBEOkc6UHRyCiAgICAg
VG1wLCBUbXAKIAotWmVyb0V4dGVuZDhUbzMyIFU6RywgRDpHCitaZXJvRXh0ZW5kOFRvMzIgVTpH
OjgsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkOAogICAgIElu
ZGV4LCBUbXAgYXMgbG9hZDgKIAotU2lnbkV4dGVuZDhUbzMyIFU6RywgRDpHCitTaWduRXh0ZW5k
OFRvMzIgVTpHOjgsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wIGFz
IGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMgogICAgIEluZGV4LCBUbXAgYXMgbG9hZDhTaWduZWRFeHRl
bmRUbzMyCiAKLVplcm9FeHRlbmQxNlRvMzIgVTpHLCBEOkcKK1plcm9FeHRlbmQxNlRvMzIgVTpH
OjE2LCBaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDE2CiAgICAg
SW5kZXgsIFRtcCBhcyBsb2FkMTYKIAotU2lnbkV4dGVuZDE2VG8zMiBVOkcsIEQ6RworU2lnbkV4
dGVuZDE2VG8zMiBVOkc6MTYsIFpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBh
cyBsb2FkMTZTaWduZWRFeHRlbmRUbzMyCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkMTZTaWduZWRF
eHRlbmRUbzMyCiAKLU1vdmVGbG9hdCBVOkYsIEQ6RgorTW92ZUZsb2F0IFU6RjozMiwgRDpGOjMy
CiAgICAgVG1wLCBUbXAgYXMgbW92ZURvdWJsZQogICAgIEFkZHIsIFRtcCBhcyBsb2FkRmxvYXQK
ICAgICBJbmRleCwgVG1wIGFzIGxvYWRGbG9hdAogICAgIFRtcCwgQWRkciBhcyBzdG9yZUZsb2F0
CiAgICAgVG1wLCBJbmRleCBhcyBzdG9yZUZsb2F0CiAKLU1vdmVEb3VibGUgVTpGLCBEOkYKK01v
dmVEb3VibGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBs
b2FkRG91YmxlCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkRG91YmxlCiAgICAgVG1wLCBBZGRyIGFz
IHN0b3JlRG91YmxlCiAgICAgVG1wLCBJbmRleCBhcyBzdG9yZURvdWJsZQogCi1Nb3ZlWmVyb1Rv
RG91YmxlIEQ6RgorTW92ZVplcm9Ub0RvdWJsZSBEOkY6NjQKICAgICBUbXAKIAotNjQ6IE1vdmU2
NFRvRG91YmxlIFU6RywgRDpGCis2NDogTW92ZTY0VG9Eb3VibGUgVTpHOjY0LCBEOkY6NjQKICAg
ICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkRG91YmxlCiAgICAgSW5kZXgsIFRtcCBh
cyBsb2FkRG91YmxlCiAKLU1vdmVJbnQzMlRvUGFja2VkIFU6RywgRDpGCitNb3ZlSW50MzJUb1Bh
Y2tlZCBVOkc6MzIsIEQ6RjozMgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wIGFzIGxvYWRG
bG9hdAogICAgIEluZGV4LCBUbXAgYXMgbG9hZEZsb2F0CiAKLTY0OiBNb3ZlRG91YmxlVG82NCBV
OkYsIEQ6RworNjQ6IE1vdmVEb3VibGVUbzY0IFU6Rjo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAK
ICAgICBBZGRyLCBUbXAgYXMgbG9hZDY0CiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkNjQKIAotTW92
ZVBhY2tlZFRvSW50MzIgVTpGLCBEOkcKK01vdmVQYWNrZWRUb0ludDMyIFU6RjozMiwgRDpHOjMy
CiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDMyCiAgICAgSW5kZXgsIFRtcCBh
cyBsb2FkMzIKIAotTG9hZDggVTpHLCBEOkcKK0xvYWQ4IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRk
ciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCi1TdG9yZTggVTpHLCBEOkcKK1N0b3JlOCBVOkc6OCwg
RDpHOjgKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgSW1tLCBJbmRleAogICAg
IEltbSwgQWRkcgogCi1Mb2FkOFNpZ25lZEV4dGVuZFRvMzIgVTpHLCBEOkcKK0xvYWQ4U2lnbmVk
RXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAK
IAotTG9hZDE2IFU6RywgRDpHCitMb2FkMTYgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1w
CiAgICAgSW5kZXgsIFRtcAogCi1Mb2FkMTZTaWduZWRFeHRlbmRUbzMyIFU6RywgRDpHCitMb2Fk
MTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIElu
ZGV4LCBUbXAKIAotQ29tcGFyZTMyIFU6RywgVTpHLCBVOkcsIEQ6RworQ29tcGFyZTMyIFU6Rzoz
MiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCiAg
ICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcAogCi02NDogQ29tcGFyZTY0IFU6RywgVTpHLCBVOkcs
IEQ6RworNjQ6IENvbXBhcmU2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjMyCiAgICAg
UmVsQ29uZCwgVG1wLCBJbW0sIFRtcAogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKIAotVGVz
dDMyIFU6RywgVTpHLCBVOkcsIEQ6RworVGVzdDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpE
Okc6MzIKICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbSwgVG1wCiAgICAgUmVzQ29uZCwgVG1w
LCBUbXAsIFRtcAogCi02NDogVGVzdDY0IFU6RywgVTpHLCBVOkcsIEQ6RworNjQ6IFRlc3Q2NCBV
Okc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjMyCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRt
cAogICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAKIAogIyBOb3RlIHRoYXQgYnJhbmNoZXMgaGF2
ZSBzb21lIGxvZ2ljIGluIEFpck9wdGltaXplQmxvY2tPcmRlci5jcHAuIElmIHlvdSBhZGQgbmV3
IGJyYW5jaGVzLCBwbGVhc2UgbWFrZSBzdXJlCiAjIHlvdSBvcHQgdGhlbSBpbnRvIHRoZSBibG9j
ayBvcmRlciBvcHRpbWl6YXRpb25zLgogCi1CcmFuY2g4IFU6RywgVTpHLCBVOkcgL2JyYW5jaAor
QnJhbmNoOCBVOkc6MzIsIFU6Rzo4LCBVOkc6OCAvYnJhbmNoCiAgICAgeDg2OiBSZWxDb25kLCBB
ZGRyLCBJbW0KICAgICB4ODY6IFJlbENvbmQsIEluZGV4LCBJbW0KIAotQnJhbmNoMzIgVTpHLCBV
OkcsIFU6RyAvYnJhbmNoCitCcmFuY2gzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyIC9icmFuY2gK
ICAgICB4ODY6IFJlbENvbmQsIEFkZHIsIEltbQogICAgIFJlbENvbmQsIFRtcCwgVG1wCiAgICAg
UmVsQ29uZCwgVG1wLCBJbW0KQEAgLTQ1MCwxNyArNDUzLDE3IEBAIEJyYW5jaDMyIFU6RywgVTpH
LCBVOkcgL2JyYW5jaAogICAgIHg4NjogUmVsQ29uZCwgQWRkciwgVG1wCiAgICAgeDg2OiBSZWxD
b25kLCBJbmRleCwgSW1tCiAKLTY0OiBCcmFuY2g2NCBVOkcsIFU6RywgVTpHIC9icmFuY2gKKzY0
OiBCcmFuY2g2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0IC9icmFuY2gKICAgICBSZWxDb25kLCBU
bXAsIFRtcAogICAgIHg4NjogUmVsQ29uZCwgVG1wLCBBZGRyCiAgICAgeDg2OiBSZWxDb25kLCBB
ZGRyLCBUbXAKICAgICB4ODY6IFJlbENvbmQsIEluZGV4LCBUbXAKIAotQnJhbmNoVGVzdDggVTpH
LCBVOkcsIFU6RyAvYnJhbmNoCitCcmFuY2hUZXN0OCBVOkc6MzIsIFU6Rzo4LCBVOkc6OCAvYnJh
bmNoCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBJbW0KICAgICB4ODY6IFJlc0NvbmQsIEluZGV4
LCBJbW0KIAotQnJhbmNoVGVzdDMyIFU6RywgVTpHLCBVOkcgL2JyYW5jaAorQnJhbmNoVGVzdDMy
IFU6RzozMiwgVTpHOjMyLCBVOkc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAg
ICAgUmVzQ29uZCwgVG1wLCBJbW0KICAgICB4ODY6IFJlc0NvbmQsIEFkZHIsIEltbQpAQCAtNDY4
LDk1ICs0NzEsOTUgQEAgQnJhbmNoVGVzdDMyIFU6RywgVTpHLCBVOkcgL2JyYW5jaAogCiAjIFdh
cm5pbmc6IGZvcm1zIHRoYXQgdGFrZSBhbiBpbW1lZGlhdGUgd2lsbCBzaWduLWV4dGVuZCB0aGVp
ciBpbW1lZGlhdGUuIFlvdSBwcm9iYWJseSB3YW50CiAjIEJyYW5jaFRlc3QzMiBpbiBtb3N0IGNh
c2VzIHdoZXJlIHlvdSB1c2UgYW4gaW1tZWRpYXRlLgotNjQ6IEJyYW5jaFRlc3Q2NCBVOkcsIFU6
RywgVTpHIC9icmFuY2gKKzY0OiBCcmFuY2hUZXN0NjQgVTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCAv
YnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIEltbQogICAg
IHg4NjogUmVzQ29uZCwgQWRkciwgSW1tCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBUbXAKICAg
ICB4ODY6IFJlc0NvbmQsIEluZGV4LCBJbW0KIAotQnJhbmNoRG91YmxlIFU6RywgVTpGLCBVOkYg
L2JyYW5jaAorQnJhbmNoRG91YmxlIFU6RzozMiwgVTpGOjY0LCBVOkY6NjQgL2JyYW5jaAogICAg
IERvdWJsZUNvbmQsIFRtcCwgVG1wCiAKLUJyYW5jaEZsb2F0IFU6RywgVTpGLCBVOkYgL2JyYW5j
aAorQnJhbmNoRmxvYXQgVTpHOjMyLCBVOkY6MzIsIFU6RjozMiAvYnJhbmNoCiAgICAgRG91Ymxl
Q29uZCwgVG1wLCBUbXAKIAotQnJhbmNoQWRkMzIgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAorQnJh
bmNoQWRkMzIgVTpHOjMyLCBVOkc6MzIsIFVaRDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBU
bXAsIFRtcAogICAgIFJlc0NvbmQsIEltbSwgVG1wCiAgICAgeDg2OiBSZXNDb25kLCBJbW0sIEFk
ZHIKICAgICB4ODY6IFJlc0NvbmQsIFRtcCwgQWRkcgogICAgIHg4NjogUmVzQ29uZCwgQWRkciwg
VG1wCiAKLTY0OiBCcmFuY2hBZGQ2NCBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCis2NDogQnJhbmNo
QWRkNjQgVTpHOjMyLCBVOkc6NjQsIFVEOkc6NjQgL2JyYW5jaAogICAgIFJlc0NvbmQsIEltbSwg
VG1wCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKIAotQnJhbmNoTXVsMzIgVTpHLCBVOkcsIFVEOkcg
L2JyYW5jaAorQnJhbmNoTXVsMzIgVTpHOjMyLCBVOkc6MzIsIFVaRDpHOjMyIC9icmFuY2gKICAg
ICBSZXNDb25kLCBUbXAsIFRtcAogICAgIHg4NjogUmVzQ29uZCwgQWRkciwgVG1wCiAKLUJyYW5j
aE11bDMyIFU6RywgVTpHLCBVOkcsIEQ6RyAvYnJhbmNoCitCcmFuY2hNdWwzMiBVOkc6MzIsIFU6
RzozMiwgVTpHOjMyLCBaRDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1w
CiAKLTY0OiBCcmFuY2hNdWw2NCBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCis2NDogQnJhbmNoTXVs
NjQgVTpHOjMyLCBVOkc6NjQsIFVaRDpHOjY0IC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRt
cAogCi1CcmFuY2hTdWIzMiBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCitCcmFuY2hTdWIzMiBVOkc6
MzIsIFU6RzozMiwgVVpEOkc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAgICAg
UmVzQ29uZCwgSW1tLCBUbXAKICAgICB4ODY6IFJlc0NvbmQsIEltbSwgQWRkcgogICAgIHg4Njog
UmVzQ29uZCwgVG1wLCBBZGRyCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBUbXAKIAotNjQ6IEJy
YW5jaFN1YjY0IFU6RywgVTpHLCBVRDpHIC9icmFuY2gKKzY0OiBCcmFuY2hTdWI2NCBVOkc6MzIs
IFU6Rzo2NCwgVUQ6Rzo2NCAvYnJhbmNoCiAgICAgUmVzQ29uZCwgSW1tLCBUbXAKICAgICBSZXND
b25kLCBUbXAsIFRtcAogCi1CcmFuY2hOZWczMiBVOkcsIFVEOkcgL2JyYW5jaAorQnJhbmNoTmVn
MzIgVTpHOjMyLCBVWkQ6RzozMiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wCiAKLTY0OiBCcmFu
Y2hOZWc2NCBVOkcsIFVEOkcgL2JyYW5jaAorNjQ6IEJyYW5jaE5lZzY0IFU6RzozMiwgVVpEOkc6
NjQgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcAogCi1Nb3ZlQ29uZGl0aW9uYWxseTMyIFU6Rywg
VTpHLCBVOkcsIFU6RywgVUQ6RworTW92ZUNvbmRpdGlvbmFsbHkzMiBVOkc6MzIsIFU6RzozMiwg
VTpHOjMyLCBVOkc6UHRyLCBVRDpHOlB0cgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAsIFRt
cAogCi02NDogTW92ZUNvbmRpdGlvbmFsbHk2NCBVOkcsIFU6RywgVTpHLCBVOkcsIFVEOkcKKzY0
OiBNb3ZlQ29uZGl0aW9uYWxseTY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIsIFVE
Okc6UHRyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLU1vdmVDb25kaXRpb25h
bGx5VGVzdDMyIFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RworTW92ZUNvbmRpdGlvbmFsbHlUZXN0
MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpHOlB0ciwgVUQ6RzpQdHIKICAgICBSZXNDb25k
LCBUbXAsIFRtcCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAsIEltbSwgVG1wLCBUbXAKIAot
NjQ6IE1vdmVDb25kaXRpb25hbGx5VGVzdDY0IFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RworNjQ6
IE1vdmVDb25kaXRpb25hbGx5VGVzdDY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQsIFU6RzpQdHIs
IFVEOkc6UHRyCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwg
VG1wLCBJbW0sIFRtcCwgVG1wCiAKLU1vdmVDb25kaXRpb25hbGx5RG91YmxlIFU6RywgVTpGLCBV
OkYsIFU6RywgVUQ6RworTW92ZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHOjMyLCBVOkY6NjQsIFU6
Rjo2NCwgVTpHOlB0ciwgVUQ6RzpQdHIKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwgVG1wLCBU
bXAKIAotTW92ZUNvbmRpdGlvbmFsbHlGbG9hdCBVOkcsIFU6RiwgVTpGLCBVOkcsIFVEOkcKK01v
dmVDb25kaXRpb25hbGx5RmxvYXQgVTpHOjMyLCBVOkY6MzIsIFU6RjozMiwgVTpHOlB0ciwgVUQ6
RzpQdHIKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKIAotTW92ZURvdWJsZUNv
bmRpdGlvbmFsbHkzMiBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKK01vdmVEb3VibGVDb25kaXRp
b25hbGx5MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVs
Q29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKLTY0OiBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0
IFU6RywgVTpHLCBVOkcsIFU6RiwgVUQ6RgorNjQ6IE1vdmVEb3VibGVDb25kaXRpb25hbGx5NjQg
VTpHOjMyLCBVOkc6NjQsIFU6Rzo2NCwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVsQ29uZCwgVG1w
LCBUbXAsIFRtcCwgVG1wCiAKLU1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDMyIFU6RywgVTpH
LCBVOkcsIFU6RiwgVUQ6RgorTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0MzIgVTpHOjMyLCBV
Okc6MzIsIFU6RzozMiwgVTpGOjY0LCBVRDpGOjY0CiAgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRt
cCwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBJbW0sIFRtcCwgVG1wCiAKLTY0OiBNb3ZlRG91Ymxl
Q29uZGl0aW9uYWxseVRlc3Q2NCBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKKzY0OiBNb3ZlRG91
YmxlQ29uZGl0aW9uYWxseVRlc3Q2NCBVOkc6MzIsIFU6Rzo2NCwgVTpHOjY0LCBVOkY6NjQsIFVE
OkY6NjQKICAgICBSZXNDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBUbXAs
IEltbSwgVG1wLCBUbXAKIAotTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHLCBVOkYs
IFU6RiwgVTpGLCBVRDpGCitNb3ZlRG91YmxlQ29uZGl0aW9uYWxseURvdWJsZSBVOkc6MzIsIFU6
Rjo2NCwgVTpGOjY0LCBVOkY6NjQsIFVEOkY6NjQKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwg
VG1wLCBUbXAKIAotTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlGbG9hdCBVOkcsIFU6RiwgVTpGLCBV
OkYsIFVEOkYKK01vdmVEb3VibGVDb25kaXRpb25hbGx5RmxvYXQgVTpHOjMyLCBVOkY6MzIsIFU6
RjozMiwgVTpGOjY0LCBVRDpGOjY0CiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1w
CiAKIEp1bXAgL2JyYW5jaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJT
cGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNpb24gMTk0MzE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAg
ICAgICAgICAgICAvLyBjb2RlIGlzIHN1Ym9wdGltYWwuCiAgICAgICAgICAgICBpbnN0LmZvckVh
Y2hUbXBXaXRoRXh0cmFDbG9iYmVyZWRSZWdzKAogICAgICAgICAgICAgICAgIGluZGV4IDwgYmxv
Y2stPnNpemUoKSA/ICZibG9jay0+YXQoaW5kZXgpIDogbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICBbJnJlZ2lzdGVyU2V0XSAoY29uc3QgVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5
cGUpIHsKKyAgICAgICAgICAgICAgICBbJnJlZ2lzdGVyU2V0XSAoY29uc3QgVG1wJiB0bXAsIEFy
Zzo6Um9sZSByb2xlLCBBcmc6OlR5cGUsIEFyZzo6V2lkdGgpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRtcC5pc1JlZygpICYmIEFyZzo6aXNEZWYocm9sZSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZWdpc3RlclNldC5zZXQodG1wLnJlZygpKTsKICAgICAgICAgICAgICAgICB9KTsK
QEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogCiAg
ICAgICAgICAgICAvLyBOb3cgZmFsbCBiYWNrIG9uIHNwaWxsaW5nIHVzaW5nIHNlcGFyYXRlIE1v
dmUncyB0byBsb2FkL3N0b3JlIHRoZSB0bXAuCiAgICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAo
Ci0gICAgICAgICAgICAgICAgWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlw
ZSB0eXBlKSB7CisgICAgICAgICAgICAgICAgWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xlIHJvbGUs
IEFyZzo6VHlwZSB0eXBlLCBBcmc6OldpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0
bXAuaXNSZWcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICAgICAgCkBAIC0xNDAsNiArMTQwLDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYg
Y29kZSkKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RGVmOgorICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFyZzo6WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVn
IHJlZyA6IHJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIXNldEFmdGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwpAQCAtMTQ5LDYgKzE1MCw3IEBAIHZvaWQgc3Bp
bGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OlVzZURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlVzZVpEZWY6CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgogICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIChSZWcgcmVnIDogcmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3JlLmdldChyZWcpICYmICFzZXRBZnRlci5nZXQo
cmVnKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0aC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0
aC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRt
cFdpZHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBaXJUbXBXaWR0aC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUg
IkFpckNvZGUuaCIKKyNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK1RtcFdpZHRoOjpUbXBXaWR0aCgp
Cit7Cit9CisKK1RtcFdpZHRoOjpUbXBXaWR0aChDb2RlJiBjb2RlKQoreworICAgIHJlY29tcHV0
ZShjb2RlKTsKK30KKworVG1wV2lkdGg6On5UbXBXaWR0aCgpCit7Cit9CisKK3ZvaWQgVG1wV2lk
dGg6OnJlY29tcHV0ZShDb2RlJiBjb2RlKQoreworICAgIG1fd2lkdGguY2xlYXIoKTsKKyAgICAK
KyAgICAvLyBBc3N1bWUgdGhlIHdvcnN0IGZvciByZWdpc3RlcnMuCisgICAgUmVnaXN0ZXJTZXQ6
OmFsbFJlZ2lzdGVycygpLmZvckVhY2goCisgICAgICAgIFsmXSAoUmVnIHJlZykgeworICAgICAg
ICAgICAgV2lkdGhzJiB3aWR0aHMgPSBtX3dpZHRoLmFkZChUbXAocmVnKSwgV2lkdGhzKCkpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIEFyZzo6VHlwZSB0eXBlID0gQXJnKFRtcChyZWcp
KS50eXBlKCk7CisgICAgICAgICAgICB3aWR0aHMudXNlID0gQXJnOjpjb25zZXJ2YXRpdmVXaWR0
aCh0eXBlKTsKKyAgICAgICAgICAgIHdpZHRocy5kZWYgPSBBcmc6OmNvbnNlcnZhdGl2ZVdpZHRo
KHR5cGUpOworICAgICAgICB9KTsKKyAgICAKKyAgICAvLyBOb3cgcmVhbGx5IGFuYWx5emUgZXZl
cnl0aGluZyBidXQgTW92ZSdzIG92ZXIgVG1wJ3MsIGJ1dCBzZXQgYXNpZGUgdGhvc2UgTW92ZSdz
IHNvIHdlIGNhbiBmaW5kCisgICAgLy8gdGhlbSBxdWlja2x5IGR1cmluZyB0aGUgZml4cG9pbnQg
YmVsb3cuIE5vdGUgdGhhdCB3ZSBjYW4gbWFrZSB0aGlzIGFuYWx5c2lzIHN0cm9uZ2VyIGJ5Cisg
ICAgLy8gcmVjb2duaXppbmcgbW9yZSBraW5kcyBvZiBNb3ZlJ3Mgb3IgYW55dGhpbmcgdGhhdCBo
YXMgTW92ZS1saWtlIGJlaGF2aW9yLCB0aG91Z2ggaXQncyBwcm9iYWJseSBub3QKKyAgICAvLyB3
b3J0aCBpdC4KKyAgICBWZWN0b3I8SW5zdCo+IG1vdmVzOworICAgIGZvciAoQmFzaWNCbG9jayog
YmxvY2sgOiBjb2RlKSB7CisgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpibG9jaykgeworICAg
ICAgICAgICAgaWYgKGluc3Qub3Bjb2RlID09IE1vdmUgJiYgaW5zdC5hcmdzWzFdLmlzVG1wKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaW5zdC5hcmdzWzBdLmlzVG1wKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbW92ZXMuYXBwZW5kKCZpbnN0KTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpbnN0LmFyZ3Nb
MF0uaXNJbW0oKQorICAgICAgICAgICAgICAgICAgICAmJiBpbnN0LmFyZ3NbMF0udmFsdWUoKSA+
PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFRtcCB0bXAgPSBpbnN0LmFyZ3NbMV0udG1wKCk7
CisgICAgICAgICAgICAgICAgICAgIFdpZHRocyYgd2lkdGhzID0gbV93aWR0aC5hZGQodG1wLCBX
aWR0aHMoQXJnOjpHUCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIGlmIChpbnN0LmFyZ3NbMF0udmFsdWUoKSA8PSBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDhfdD46Om1heCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhz
LmRlZiA9IHN0ZDo6bWF4KHdpZHRocy5kZWYsIEFyZzo6V2lkdGg4KTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoaW5zdC5hcmdzWzBdLnZhbHVlKCkgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQxNl90Pjo6bWF4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMuZGVmID0g
c3RkOjptYXgod2lkdGhzLmRlZiwgQXJnOjpXaWR0aDE2KTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoaW5zdC5hcmdzWzBdLnZhbHVlKCkgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMuZGVmID0gc3RkOjpt
YXgod2lkdGhzLmRlZiwgQXJnOjpXaWR0aDMyKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmRlZiA9IHN0ZDo6bWF4KHdpZHRocy5kZWYs
IEFyZzo6V2lkdGg2NCk7CisKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKAor
ICAgICAgICAgICAgICAgIFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUg
dHlwZSwgQXJnOjpXaWR0aCB3aWR0aCkgeworICAgICAgICAgICAgICAgICAgICBXaWR0aHMmIHdp
ZHRocyA9IG1fd2lkdGguYWRkKHRtcCwgV2lkdGhzKHR5cGUpKS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0FueVVz
ZShyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRocy51c2UgPSBzdGQ6Om1heCh3
aWR0aHMudXNlLCB3aWR0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNaRGVm
KHJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmRlZiA9IHN0ZDo6bWF4KHdp
ZHRocy5kZWYsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJnOjppc0Rl
Zihyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRocy5kZWYgPSBBcmc6OmNvbnNl
cnZhdGl2ZVdpZHRoKHR5cGUpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gRmluYWxseSwgZml4cG9pbnQgb3ZlciB0aGUgTW92ZSdzLgorICAgIGJvb2wg
Y2hhbmdlZCA9IHRydWU7CisgICAgd2hpbGUgKGNoYW5nZWQpIHsKKyAgICAgICAgY2hhbmdlZCA9
IGZhbHNlOworICAgICAgICBmb3IgKEluc3QqIG1vdmUgOiBtb3ZlcykgeworICAgICAgICAgICAg
QVNTRVJUKG1vdmUtPm9wY29kZSA9PSBNb3ZlKTsKKyAgICAgICAgICAgIEFTU0VSVChtb3ZlLT5h
cmdzWzBdLmlzVG1wKCkpOworICAgICAgICAgICAgQVNTRVJUKG1vdmUtPmFyZ3NbMV0uaXNUbXAo
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFdpZHRocyYgc3JjV2lkdGhzID0gbV93aWR0
aC5hZGQobW92ZS0+YXJnc1swXS50bXAoKSwgV2lkdGhzKEFyZzo6R1ApKS5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgICAgICBXaWR0aHMmIGRzdFdpZHRocyA9IG1fd2lkdGguYWRkKG1vdmUtPmFy
Z3NbMV0udG1wKCksIFdpZHRocyhBcmc6OkdQKSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgICAg
ICAgICAvLyBMZWdlbmQ6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gICAgIE1vdmUg
JXNyYywgJWRzdAorCisgICAgICAgICAgICAvLyBkZWZXaWR0aCglZHN0KSBpcyBhIHByb21pc2Ug
YWJvdXQgaG93IG1hbnkgaGlnaCBiaXRzIGFyZSB6ZXJvLiBUaGUgc21hbGxlciB0aGUgd2lkdGgs
IHRoZQorICAgICAgICAgICAgLy8gc3Ryb25nZXIgdGhlIHByb21pc2UuIFRoaXMgTW92ZSBtYXkg
d2Vha2VuIHRoYXQgcHJvbWlzZSBpZiB3ZSBrbm93IHRoYXQgJXNyYyBpcyBtYWtpbmcgYQorICAg
ICAgICAgICAgLy8gd2Vha2VyIHByb21pc2UuIFN1Y2ggZm9yd2FyZCBmbG93IGlzIHRoZSBvbmx5
IHRoaW5nIHRoYXQgZGV0ZXJtaW5lcyBkZWZXaWR0aCgpLgorICAgICAgICAgICAgaWYgKGRzdFdp
ZHRocy5kZWYgPCBzcmNXaWR0aHMuZGVmKSB7CisgICAgICAgICAgICAgICAgZHN0V2lkdGhzLmRl
ZiA9IHNyY1dpZHRocy5kZWY7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHNyY1dpZHRoKCVzcmMpIGlzIGEgcHJvbWlzZSBh
Ym91dCBob3cgbWFueSBoaWdoIGJpdHMgYXJlIGlnbm9yZWQuIFRoZSBzbWFsbGVyIHRoZSB3aWR0
aCwKKyAgICAgICAgICAgIC8vIHRoZSBzdHJvbmdlciB0aGUgcHJvbWlzZS4gVGhpcyBNb3ZlIG1h
eSB3ZWFrZW4gdGhhdCBwcm9taXNlIGlmIHdlIGtub3cgdGhhdCAlZHN0IGlzIG1ha2luZworICAg
ICAgICAgICAgLy8gYSB3ZWFrZXIgcHJvbWlzZS4gU3VjaCBiYWNrd2FyZCBmbG93IGlzIHRoZSBv
bmx5IHRoaW5nIHRoYXQgZGV0ZXJtaW5lcyBzcmNXaWR0aCgpLgorICAgICAgICAgICAgaWYgKHNy
Y1dpZHRocy51c2UgPCBkc3RXaWR0aHMudXNlKSB7CisgICAgICAgICAgICAgICAgc3JjV2lkdGhz
LnVzZSA9IGRzdFdpZHRocy51c2U7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wV2lkdGguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcFdpZHRoLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcFdpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEFpclRtcFdpZHRoX2gKKyNkZWZpbmUgQWlyVG1wV2lkdGhfaAorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckFyZy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsK
KworY2xhc3MgQ29kZTsKKworY2xhc3MgVG1wV2lkdGggeworcHVibGljOgorICAgIFRtcFdpZHRo
KCk7CisgICAgVG1wV2lkdGgoQ29kZSYpOworICAgIH5UbXBXaWR0aCgpOworCisgICAgdm9pZCBy
ZWNvbXB1dGUoQ29kZSYpOworCisgICAgLy8gVGhlIHdpZHRoIG9mIGEgVG1wIGlzIHRoZSBudW1i
ZXIgb2YgYml0cyB0aGF0IHlvdSBuZWVkIHRvIGJlIGFibGUgdG8gdHJhY2sgd2l0aG91dCBzb21l
IHRyaXZpYWwKKyAgICAvLyByZWNvdmVyeS4gQSBUbXAgbWF5IGhhdmUgYSAic3Vid2lkdGgiIChz
YXksIFdpZHRoMzIgb24gYSA2NC1iaXQgc3lzdGVtKSBpZiBlaXRoZXIgb2YgdGhlIGZvbGxvd2lu
ZworICAgIC8vIGlzIHRydWU6CisgICAgLy8KKyAgICAvLyAtIFRoZSBoaWdoIGJpdHMgYXJlIG5l
dmVyIHJlYWQuCisgICAgLy8gLSBUaGUgaGlnaCBiaXRzIGFyZSBhbHdheXMgemVyby4KKyAgICAv
LworICAgIC8vIFRoaXMgZG9lc24ndCB0ZWxsIHlvdSB3aGljaCBvZiB0aG9zZSBwcm9wZXJ0aWVz
IGhvbGRzLCBidXQgeW91IGNhbiBxdWVyeSB0aGF0IHVzaW5nIHRoZSBvdGhlcgorICAgIC8vIG1l
dGhvZHMuCisgICAgQXJnOjpXaWR0aCB3aWR0aChUbXAgdG1wKSBjb25zdAorICAgIHsKKyAgICAg
ICAgYXV0byBpdGVyID0gbV93aWR0aC5maW5kKHRtcCk7CisgICAgICAgIGlmIChpdGVyID09IG1f
d2lkdGguZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnOjptaW5pbXVtV2lkdGgoQXJnKHRt
cCkudHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGl0ZXItPnZhbHVlLnVzZSwgaXRl
ci0+dmFsdWUuZGVmKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGluZGlyZWN0bHkgdGVsbHMgeW91
IGhvdyBtdWNoIG9mIHRoZSB0bXAncyBoaWdoIGJpdHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgemVy
by4gVGhlIG51bWJlciBvZgorICAgIC8vIGhpZ2ggYml0cyB0aGF0IGFyZSB6ZXJvIGFyZToKKyAg
ICAvLworICAgIC8vICAgICBUb3RhbEJpdHMgLSBkZWZXaWR0aCh0bXApCisgICAgLy8KKyAgICAv
LyBXaGVyZSBUb3RhbEJpdHMgYXJlIHRoZSB0b3RhbCBudW1iZXIgb2YgYml0cyBpbiB0aGUgcmVn
aXN0ZXIsIHNvIDY0IG9uIGEgNjQtYml0IHN5c3RlbS4KKyAgICBBcmc6OldpZHRoIGRlZldpZHRo
KFRtcCB0bXApIGNvbnN0CisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX3dpZHRoLmZpbmQo
dG1wKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV93aWR0aC5lbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBBcmc6Om1pbmltdW1XaWR0aChBcmcodG1wKS50eXBlKCkpOworICAgICAgICByZXR1cm4g
aXRlci0+dmFsdWUuZGVmOworICAgIH0KKworICAgIC8vIFRoaXMgdGVsbHMgeW91IGhvdyBtdWNo
IG9mIFRtcCBpcyBnb2luZyB0byBiZSByZWFkLgorICAgIEFyZzo6V2lkdGggdXNlV2lkdGgoVG1w
IHRtcCkgY29uc3QKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fd2lkdGguZmluZCh0bXAp
OworICAgICAgICBpZiAoaXRlciA9PSBtX3dpZHRoLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IEFyZzo6bWluaW11bVdpZHRoKEFyZyh0bXApLnR5cGUoKSk7CisgICAgICAgIHJldHVybiBpdGVy
LT52YWx1ZS51c2U7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdHJ1Y3QgV2lkdGhzIHsK
KyAgICAgICAgV2lkdGhzKCkgeyB9CisKKyAgICAgICAgV2lkdGhzKEFyZzo6VHlwZSB0eXBlKQor
ICAgICAgICB7CisgICAgICAgICAgICB1c2UgPSBBcmc6Om1pbmltdW1XaWR0aCh0eXBlKTsKKyAg
ICAgICAgICAgIGRlZiA9IEFyZzo6bWluaW11bVdpZHRoKHR5cGUpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBBcmc6OldpZHRoIHVzZTsKKyAgICAgICAgQXJnOjpXaWR0aCBkZWY7Cisg
ICAgfTsKKyAgICAKKyAgICBIYXNoTWFwPFRtcCwgV2lkdGhzPiBtX3dpZHRoOworfTsKKworfSB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
KworI2VuZGlmIC8vIEFpclRtcFdpZHRoX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJVc2VDb3VudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclVzZUNvdW50cy5oCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpclVzZUNvdW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3
ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBmcmVxdWVuY3kgKj0gT3B0aW9uczo6
cmFyZUJsb2NrUGVuYWx0eSgpOwogICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2Nr
KSB7CiAgICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoPFRoaW5nPigKLSAgICAgICAgICAgICAg
ICAgICAgWyZdIChUaGluZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAg
ICAgICAgICAgICAgICAgIFsmXSAoVGhpbmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlw
ZSwgQXJnOjpXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRzJiBjb3VudHMg
PSBtX2NvdW50cy5hZGQoYXJnLCBDb3VudHMoKSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc1dhcm1Vc2Uocm9sZSkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCShyZXZpc2lv
biAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0
b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDExICs0NCwxMiBAQCBjbGFzcyBPcGNvZGUKIGVu
ZAogCiBjbGFzcyBBcmcKLSAgICBhdHRyX3JlYWRlciA6cm9sZSwgOnR5cGUKKyAgICBhdHRyX3Jl
YWRlciA6cm9sZSwgOnR5cGUsIDp3aWR0aAogCi0gICAgZGVmIGluaXRpYWxpemUocm9sZSwgdHlw
ZSkKKyAgICBkZWYgaW5pdGlhbGl6ZShyb2xlLCB0eXBlLCB3aWR0aCkKICAgICAgICAgQHJvbGUg
PSByb2xlCiAgICAgICAgIEB0eXBlID0gdHlwZQorICAgICAgICBAd2lkdGggPSB3aWR0aAogICAg
IGVuZAogZW5kCiAKQEAgLTE3Myw3ICsxNzQsNyBAQCBkZWYgbGV4KHN0ciwgZmlsZU5hbWUpCiBl
bmQKIAogZGVmIGlzVUQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoVUEp
KVxaLworICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpKVxaLwog
ZW5kCiAKIGRlZiBpc0dGKHRva2VuKQpAQCAtMTg4LDggKzE4OSwxMiBAQCBkZWYgaXNBcmNoKHRv
a2VuKQogICAgIHRva2VuID1+IC9cQSgoeDg2KXwoeDg2XzMyKXwoeDg2XzY0KXwoYXJtKXwoYXJt
djcpfChhcm02NCl8KDMyKXwoNjQpKVxaLwogZW5kCiAKK2RlZiBpc1dpZHRoKHRva2VuKQorICAg
IHRva2VuID1+IC9cQSgoOCl8KDE2KXwoMzIpfCg2NCl8KFB0cikpXFovCitlbmQKKwogZGVmIGlz
S2V5d29yZCh0b2tlbikKLSAgICBpc1VEKHRva2VuKSBvciBpc0dGKHRva2VuKSBvciBpc0tpbmQo
dG9rZW4pIG9yIGlzQXJjaCh0b2tlbikgb3IKKyAgICBpc1VEKHRva2VuKSBvciBpc0dGKHRva2Vu
KSBvciBpc0tpbmQodG9rZW4pIG9yIGlzQXJjaCh0b2tlbikgb3IgaXNXaWR0aCh0b2tlbikgb3IK
ICAgICAgICAgdG9rZW4gPT0gInNwZWNpYWwiIG9yIHRva2VuID09ICJhcyIKIGVuZAogCkBAIC0y
NTYsNiArMjYxLDEzIEBAIGNsYXNzIFBhcnNlcgogICAgICAgICByZXN1bHQKICAgICBlbmQKIAor
ICAgIGRlZiBjb25zdW1lV2lkdGgKKyAgICAgICAgcmVzdWx0ID0gdG9rZW4uc3RyaW5nCisgICAg
ICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIHdpZHRoICg4LCAxNiwgMzIsIG9yIDY0KSIpIHVubGVz
cyBpc1dpZHRoKHJlc3VsdCkKKyAgICAgICAgYWR2YW5jZQorICAgICAgICByZXN1bHQKKyAgICBl
bmQKKwogICAgIGRlZiBwYXJzZUFyY2hzCiAgICAgICAgIHJldHVybiBuaWwgdW5sZXNzIGlzQXJj
aCh0b2tlbikKIApAQCAtMzUwLDggKzM2MiwxMCBAQCBjbGFzcyBQYXJzZXIKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJvbGUgPSBjb25zdW1lUm9sZQogICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3VtZSgiOiIpCiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gY29uc3VtZVR5cGUK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoIjoiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGggPSBjb25zdW1lV2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlIDw8IEFyZy5uZXcocm9sZSwgdHlwZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA8PCBBcmcubmV3KHJvbGUsIHR5cGUsIHdp
ZHRoKQogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhayB1bmxlc3MgdG9rZW4gPT0gIiwiCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1l
KCIsIikKQEAgLTYwNiwyNiArNjIwLDM3IEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAgICAg
bWF0Y2hJbnN0T3ZlcmxvYWQob3V0cCwgOmZhc3QsICJ0aGlzIikgewogICAgICAgICB8IG9wY29k
ZSwgb3ZlcmxvYWQgfAogICAgICAgICBpZiBvcGNvZGUuc3BlY2lhbAotICAgICAgICAgICAgb3V0
cC5wdXRzICJmdW5jdG9yKGFyZ3NbMF0sIEFyZzo6VXNlLCBBcmc6OkdQKTsgLy8gVGhpcyBpcyBi
YXNpY2FsbHkgYm9ndXMsIGJ1dCBpdCB3b3JrcyBmIGFuYWx5c2VzIG1vZGVsIFNwZWNpYWwgYXMg
YW4gaW1tZWRpYXRlLiIKKyAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3RvcihhcmdzWzBdLCBB
cmc6OlVzZSwgQXJnOjpHUCwgQXJnOjpwb2ludGVyV2lkdGgoKSk7IC8vIFRoaXMgaXMgYmFzaWNh
bGx5IGJvZ3VzLCBidXQgaXQgd29ya3MgZm9yIGFuYWx5c2VzIHRoYXQgbW9kZWwgU3BlY2lhbCBh
cyBhbiBpbW1lZGlhdGUuIgogICAgICAgICAgICAgb3V0cC5wdXRzICJhcmdzWzBdLnNwZWNpYWwo
KS0+Zm9yRWFjaEFyZygqdGhpcywgc2NvcGVkTGFtYmRhPEVhY2hBcmdDYWxsYmFjaz4oZnVuY3Rv
cikpOyIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0dXJlLmVhY2hf
d2l0aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwKKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICByb2xlID0gbmlsCiAgICAgICAgICAgICAgICAgY2FzZSBh
cmcucm9sZQogICAgICAgICAgICAgICAgIHdoZW4gIlUiCiAgICAgICAgICAgICAgICAgICAgIHJv
bGUgPSAiVXNlIgogICAgICAgICAgICAgICAgIHdoZW4gIkQiCiAgICAgICAgICAgICAgICAgICAg
IHJvbGUgPSAiRGVmIgorICAgICAgICAgICAgICAgIHdoZW4gIlpEIgorICAgICAgICAgICAgICAg
ICAgICByb2xlID0gIlpEZWYiCiAgICAgICAgICAgICAgICAgd2hlbiAiVUQiCiAgICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgorICAgICAgICAgICAgICAgIHdoZW4gIlVaRCIKKyAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VaRGVmIgogICAgICAgICAgICAgICAgIHdoZW4g
IlVBIgogICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIGVuZAor
CisgICAgICAgICAgICAgICAgaWYgYXJnLndpZHRoID09ICJQdHIiCisgICAgICAgICAgICAgICAg
ICAgIHdpZHRoID0gIkFyZzo6cG9pbnRlcldpZHRoKCkiCisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICB3aWR0aCA9ICJBcmc6OldpZHRoI3thcmcud2lkdGh9IgorICAg
ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiZnVuY3RvcihhcmdzWyN7aW5kZXh9XSwgQXJnOjoje3JvbGV9LCBBcmc6OiN7YXJnLnR5
cGV9UCk7IgorICAgICAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3RvcihhcmdzWyN7aW5kZXh9
XSwgQXJnOjoje3JvbGV9LCBBcmc6OiN7YXJnLnR5cGV9UCwgI3t3aWR0aH0pOyIKICAgICAgICAg
ICAgIH0KICAgICAgICAgZW5kCiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE5NDMxNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MjE4LDEwICs0MjE4LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBsZW5ndGgg
PSBtX291dC5sb2FkMzIoa2lkc1swXSwgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbnVtS2lkczsgKytpKSB7CiAgICAgICAgICAgICBm
bGFncyA9IG1fb3V0LmJpdEFuZChmbGFncywgbV9vdXQubG9hZDMyKGtpZHNbaV0sIG1faGVhcHMu
SlNTdHJpbmdfZmxhZ3MpKTsKKyNpZiBGVExfVVNFU19CMworICAgICAgICAgICAgQjM6OkNoZWNr
VmFsdWUqIGxlbmd0aENoZWNrID0gbV9vdXQuc3BlY3VsYXRlQWRkKAorICAgICAgICAgICAgICAg
IGxlbmd0aCwgbV9vdXQubG9hZDMyKGtpZHNbaV0sIG1faGVhcHMuSlNTdHJpbmdfbGVuZ3RoKSk7
CisgICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9uKGxlbmd0aENoZWNrLCBVbmNvdW50YWJsZSwg
bm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisgICAgICAgICAgICBsZW5ndGggPSBsZW5n
dGhDaGVjazsKKyNlbHNlIC8vIEZUTF9VU0VTX0IzICAgICAgICAgICAgCiAgICAgICAgICAgICBM
VmFsdWUgbGVuZ3RoQW5kT3ZlcmZsb3cgPSBtX291dC5hZGRXaXRoT3ZlcmZsb3czMigKICAgICAg
ICAgICAgICAgICBsZW5ndGgsIG1fb3V0LmxvYWQzMihraWRzW2ldLCBtX2hlYXBzLkpTU3RyaW5n
X2xlbmd0aCkpOwogICAgICAgICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCks
IDAsIG1fb3V0LmV4dHJhY3RWYWx1ZShsZW5ndGhBbmRPdmVyZmxvdywgMSkpOwogICAgICAgICAg
ICAgbGVuZ3RoID0gbV9vdXQuZXh0cmFjdFZhbHVlKGxlbmd0aEFuZE92ZXJmbG93LCAwKTsKKyNl
bmRpZiAvLyBGVExfVVNFU19CMwogICAgICAgICB9CiAgICAgICAgIG1fb3V0LnN0b3JlMzIoCiAg
ICAgICAgICAgICBtX291dC5iaXRBbmQobV9vdXQuY29uc3RJbnQzMihKU1N0cmluZzo6SXM4Qml0
KSwgZmxhZ3MpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0SGFu
ZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4
aXRIYW5kbGUuY3BwCShyZXZpc2lvbiAxOTQzMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSwxMCBA
QCB2b2lkIE9TUkV4aXRIYW5kbGU6OmVtaXRFeGl0VGh1bmsoQ0NhbGxICiAgICAgbGFiZWwgPSBq
aXQubGFiZWwoKTsKICAgICBqaXQucHVzaFRvU2F2ZUltbWVkaWF0ZVdpdGhvdXRUb3VjaGluZ1Jl
Z2lzdGVycyhDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmRleCkpOwogICAgIENDYWxsSGVs
cGVyczo6UGF0Y2hhYmxlSnVtcCBqdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBSZWZQ
dHI8T1NSRXhpdEhhbmRsZT4gc2VsZiA9IHRoaXM7CiAgICAgaml0LmFkZExpbmtUYXNrKAotICAg
ICAgICBbdGhpcywganVtcF0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAg
IGV4aXQubV9wYXRjaGFibGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcChsaW5rQnVmZmVyLmxvY2F0
aW9uT2YoanVtcCkpOworICAgICAgICBbc2VsZiwganVtcF0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKKyAgICAgICAgICAgIHNlbGYtPmV4aXQubV9wYXRjaGFibGVKdW1wID0gQ29kZUxvY2F0
aW9uSnVtcChsaW5rQnVmZmVyLmxvY2F0aW9uT2YoanVtcCkpOwogCiAgICAgICAgICAgICBsaW5r
QnVmZmVyLmxpbmsoCiAgICAgICAgICAgICAgICAganVtcC5tX2p1bXAsCg==
</data>
<flag name="review"
          id="292720"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>