<?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>126320</bug_id>
          
          <creation_ts>2013-12-30 20:52:52 -0800</creation_ts>
          <short_desc>CStack: Need a separate stack limit for the JS stack and the C stack</short_desc>
          <delta_ts>2014-01-09 13:22:39 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>126266</dependson>
    
    <dependson>126321</dependson>
    
    <dependson>126328</dependson>
    
    <dependson>126331</dependson>
    
    <dependson>126334</dependson>
    
    <dependson>126335</dependson>
    
    <dependson>126487</dependson>
          <blocked>125928</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>963441</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-30 20:52:52 -0800</bug_when>
    <thetext>Though the JS stack is made up of frames on the C stack and the OS may allow a large C stack, we want to cap the amount of memory that the JS stack use to a more modest number.  One reason for this is so that bad JS code with runaway recursion won&apos;t take too long to hit a StackOverflowError and fail out, thereby ensuring that the browser remains relatively interactive (i.e. not appear to hang in the presence of such bad code).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963497</commentid>
    <comment_count>1</comment_count>
      <attachid>220154</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-31 02:15:54 -0800</bug_when>
    <thetext>Created attachment 220154
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963498</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-31 02:23:54 -0800</bug_when>
    <thetext>Landed in r161180 on the jsCStack branch: &lt;http://trac.webkit.org/r161180&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963929</commentid>
    <comment_count>3</comment_count>
      <attachid>220154</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-02 15:33:18 -0800</bug_when>
    <thetext>Comment on attachment 220154
the patch.

This patch looks way too over-engineered.

There doesn&apos;t need to be a chunk-based stack limit per VM entry. That&apos;s also likely to be wrong, since we need to account for intermediate C stack usage by the VM.

This patch should be one line of code that puts a call to &quot;std::max&quot; around our existing calculation for stack bounds. That&apos;s all that&apos;s required to prevent runaway recursion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963995</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-02 19:26:27 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 220154 [details])
&gt; This patch looks way too over-engineered.
&gt; 
&gt; There doesn&apos;t need to be a chunk-based stack limit per VM entry. That&apos;s also likely to be wrong, since we need to account for intermediate C stack usage by the VM.

Any C stack usage by a helper function that doesn’t do deep recursion should be covered by the host zone allowance.

Any C stack usage by a C function that does deep recursion should have its own C stack recursion checks.

The only stack usage we’re trying to account for in this patch is C stack usage by JS CallFrames and their locals / args.

&gt; This patch should be one line of code that puts a call to &quot;std::max&quot; around our existing calculation for stack bounds. That&apos;s all that&apos;s required to prevent runaway recursion.

Please clarify how “std::max” solves the problem of needing a separate limit for JS stack growth.

Consider the following scenario:

Scenario 1: A bit of JS on each end.
1. Let’s say we want a JS stack size limit of 4M.
2. At the start of the C program that is using JSC, we execute a bit of JS code and use a bit of JS stack.
3. Then we call a C function that recurses deeply and uses almost all of the C stack.
4. Then we call back into JS code and discover that we are now at the 4M limit (if we measure stack usage by a simple comparison against the start of the C stack).

Consider yet another scenario:

Scenario 2: A bit of JS after a lot of C.
1. Let’s say we want a JS stack size limit of 4M.
2. At the start of the C program, it recurses deeply and uses up almost 4M of stack space.
3. Then we call into JS code and discover that we are now at the 4M limit.

In both of these cases, hardly any JS code has executed.  Do we throw a StackOverflowError there even though we might have another 4M of C stack space available?  How are you proposing that we handle this scenario without some form of tracking per VMEntryScope usage of stack space (hence, chunks)?

Or are you saying that the 4M limit is an absolute limit, and if the program has used up most of it for C function recursion, then it is OK to not allow JS code to use any more stack space even though there is plenty more C stack space available?

I came up with the chunk tracking approach because both Filip and I are of the opinion that while we want to limit JS stack usage, we should not penalize it for stack used by C functions.  This behavior is consistent with how JSC behaved back when the JS stack was in its own separate region of memory.

Please explain your view of how things should work here, and how you want me to proceed.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964217</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-03 12:17:32 -0800</bug_when>
    <thetext>&gt; Consider the following scenario:
&gt; 
&gt; Scenario 1: A bit of JS on each end.
&gt; 1. Let’s say we want a JS stack size limit of 4M.
&gt; 2. At the start of the C program that is using JSC, we execute a bit of JS code and use a bit of JS stack.
&gt; 3. Then we call a C function that recurses deeply and uses almost all of the C stack.
&gt; 4. Then we call back into JS code and discover that we are now at the 4M limit (if we measure stack usage by a simple comparison against the start of the C stack).

In this scenario, JavaScriptCore should throw a stack overflow exception.

&gt; Consider yet another scenario:
&gt; 
&gt; Scenario 2: A bit of JS after a lot of C.
&gt; 1. Let’s say we want a JS stack size limit of 4M.
&gt; 2. At the start of the C program, it recurses deeply and uses up almost 4M of stack space.
&gt; 3. Then we call into JS code and discover that we are now at the 4M limit.

In this scenario, JavaScriptCore should throw a stack overflow exception.

&gt; In both of these cases, hardly any JS code has executed.  Do we throw a StackOverflowError there even though we might have another 4M of C stack space available?  How are you proposing that we handle this scenario without some form of tracking per VMEntryScope usage of stack space (hence, chunks)?

A global cap on stack extent.

&gt; Or are you saying that the 4M limit is an absolute limit, and if the program has used up most of it for C function recursion, then it is OK to not allow JS code to use any more stack space even though there is plenty more C stack space available?

Define &quot;plenty more C stack space available&quot;. We can make our stack limit as high as we like. But, once we hit the limit, there is not, in point of fact, &quot;plenty more&quot;: there is, in point of fact, none more.

&gt; I came up with the chunk tracking approach because both Filip and I are of the opinion that while we want to limit JS stack usage, we should not penalize it for stack used by C functions.  This behavior is consistent with how JSC behaved back when the JS stack was in its own separate region of memory.

Consistency with arbitrary effects of the old way of doing things is a non-goal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965289</commentid>
    <comment_count>6</comment_count>
      <attachid>220579</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-07 18:36:05 -0800</bug_when>
    <thetext>Created attachment 220579
patch 2: work in progress.  Uploading for personal inspection.  Not ready for review yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965688</commentid>
    <comment_count>7</comment_count>
      <attachid>220677</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-08 17:02:59 -0800</bug_when>
    <thetext>Created attachment 220677
patch 3: with lots of bug fixes and refinements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965692</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-08 17:10:39 -0800</bug_when>
    <thetext>Patch 3 also fixes a build failure in WebCore due to previous patches that I committed.  I&apos;ve run the complete layout test on this patch and so far have only seen 2 failures that were unexpected:

  inspector-protocol/debugger/setPauseOnExceptions-all.html [ Crash Timeout Pass ]
  inspector-protocol/debugger/setPauseOnExceptions-uncaught.html [ Crash Timeout Pass ]

In both of these cases, the crash is due to the stack frame failing to align properly.  In both cases, the misalignment was introduced in the sp in a JS function that called operationVMHandleException().  That tells me the caller is supposed to be a JITted function.  However, a dump of the CallFrame of that function shows that it is an interpreted frame:

(gdb) p /x $rbp
$17 = 0x7fff5fbfdca0
(gdb) p debugPrintCallFrame(0x7fff5fbfdca0)
      frame 0x7fff5fbfdca0 {
         name &apos;exceptionDOM&apos;
         sourceURL &apos;file://.../LayoutTests/inspector-protocol/debugger/resources/exception.js&apos;
         isVMEntrySentinel 0
         isInlinedFrame 0
         callee 0x10a7ddc30
         returnPC 0x1005f6bb2
         callerFrame 0x7fff5fbfdcf0
         rawLocationBits 47 0x2f
         codeBlock 0x10f85d5e0
            bytecodeOffset 47 0x2f / 61
            line 8
            column 30
            jitType 2 &lt;InterpreterThunk&gt; isOptimizingJIT 0
            hasCodeOrigins 0
      }

Regardless, the alignment issue is unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965710</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-08 17:43:09 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Regardless, the alignment issue is unrelated to this patch.

The bug for the misaligned stack frame is at https://bugs.webkit.org/show_bug.cgi?id=126673.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965947</commentid>
    <comment_count>10</comment_count>
      <attachid>220745</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-09 09:27:46 -0800</bug_when>
    <thetext>Created attachment 220745
patch 4: fixed some C loop bit rot from patch 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965976</commentid>
    <comment_count>11</comment_count>
      <attachid>220745</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-01-09 10:42:06 -0800</bug_when>
    <thetext>Comment on attachment 220745
patch 4: fixed some C loop bit rot from patch 3.

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

&gt; Source/JavaScriptCore/ChangeLog:69
&gt; +           of the very first one will restire the stack limit with the non-error

Typo &quot;restore&quot;

&gt; Source/JavaScriptCore/ChangeLog:97
&gt; +               a. LLINT and JIT code performing stack checks where the expect the

Should &quot;where the expect&quot; be &quot;where they expect&quot;?

&gt; Source/JavaScriptCore/ChangeLog:497
&gt;          Reviewed by Michael Saboff.
&gt; +        Update: this is supplanted by the 2014-01-08 patch for https://bugs.webkit.org/show_bug.cgi?id=126320.

I don&apos;t think you should retroactively update Reviewed patches.  Your new change log entry explains that the current patch replaces prior patches.

&gt; Source/JavaScriptCore/ChangeLog:816
&gt; -        Not yet reviewed.
&gt; +        Rejected by Geoffrey Garen.
&gt; +        Update: this is supplanted by the 2014-01-08 patch for https://bugs.webkit.org/show_bug.cgi?id=126320.

In this case where the patch was rejected, if the code has been completely removed, I support that the change log entry is removed.  If there is any vestige of the code corresponding to this entry, I&apos;m fine with this update.

&gt; Source/JavaScriptCore/ChangeLog:902
&gt; -        Not yet reviewed.
&gt; +        Rejected by Geoffrey Garen.
&gt; +        Update: this is supplanted by the 2014-01-08 patch for https://bugs.webkit.org/show_bug.cgi?id=126320.

Same as above.

&gt; Source/JavaScriptCore/ChangeLog:979
&gt; +        Update: this is supplanted by the 2014-01-08 patch for https://bugs.webkit.org/show_bug.cgi?id=126320.

Not needed as described above.

&gt; Source/JavaScriptCore/ChangeLog:1011
&gt; -        Not yet reviewed.
&gt; +        Rejected by Geoffrey Garen.
&gt; +        Update: this is supplanted by the 2014-01-08 patch for https://bugs.webkit.org/show_bug.cgi?id=126320.

Same as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965987</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-09 10:56:00 -0800</bug_when>
    <thetext>Thanks.

(In reply to comment #11)
&gt; &gt; Source/JavaScriptCore/ChangeLog:69
&gt; &gt; +           of the very first one will restire the stack limit with the non-error
&gt; 
&gt; Typo &quot;restore&quot;

Will fix.
 
&gt; &gt; Source/JavaScriptCore/ChangeLog:97
&gt; &gt; +               a. LLINT and JIT code performing stack checks where the expect the
&gt; 
&gt; Should &quot;where the expect&quot; be &quot;where they expect&quot;?

Will fix.

&gt; &gt; Source/JavaScriptCore/ChangeLog:497
&gt; &gt;          Reviewed by Michael Saboff.
&gt; &gt; +        Update: this is supplanted by the 2014-01-08 patch for https://bugs.webkit.org/show_bug.cgi?id=126320.
&gt; 
&gt; I don&apos;t think you should retroactively update Reviewed patches.  Your new change log entry explains that the current patch replaces prior patches.

This is my attempt to help make the merging effort later simpler by providing the relevant information at the change that was made.  I expect that the merge of this group of patches will be summed up as a single patch, and the ChangeLog on ToT will not show all the old changes that we supplanted.  This will also make reading the diff for this patch on trunk a lot more consistent since on trunk where we don&apos;t expect to commit without a review (unlike this branch).

I can remove these update comments if the team thinks that this does more harm than good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965989</commentid>
    <comment_count>13</comment_count>
      <attachid>220745</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-09 11:00:42 -0800</bug_when>
    <thetext>Comment on attachment 220745
patch 4: fixed some C loop bit rot from patch 3.

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

&gt; Source/JavaScriptCore/heap/ConservativeRoots.cpp:102
&gt; +    ASSERT(static_cast&lt;size_t&gt;(static_cast&lt;char*&gt;(end) - static_cast&lt;char*&gt;(begin)) &lt; wtfThreadData().stack().size());

This is wrong because it will fire if Thread A garbage collects and marks Thread B&apos;s stack, and Thread B&apos;s stack is larger than Thread A&apos;s stack.

&gt; Source/JavaScriptCore/interpreter/JSStack.cpp:57
&gt; +    size_t capacity = Options::maxPerThreadRecursionStackUsage();

Let&apos;s take &quot;Recursion&quot; out of this name. The stack usage limit is independent of whether recursion happened.

&gt; Source/JavaScriptCore/interpreter/JSStack.cpp:152
&gt; +void JSStack::setHostZoneSize(size_t hostZoneSize)

It doesn&apos;t make sense for the JSStack class to have a concept of a &quot;host zone size&quot;. The whole point of the JSStack class is that, when it is in use, it is segregated from the host stack, and does not contain any host stack data.

&gt; Source/JavaScriptCore/interpreter/JSStackInlines.h:163
&gt; +    ptrdiff_t maxExcessInRegisters = maxExcessCapacity;

If the only point of this value is to work around a compilation issue, you should not give it a new name, which implies, incorrectly, that it has some different meaning than its right hand side. Instead, you should say &quot;ptrdiff_t maxExcessCapacity = JSStack::maxExcessCapacity;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965992</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-09 11:09:33 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 220745 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220745&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/ConservativeRoots.cpp:102
&gt; &gt; +    ASSERT(static_cast&lt;size_t&gt;(static_cast&lt;char*&gt;(end) - static_cast&lt;char*&gt;(begin)) &lt; wtfThreadData().stack().size());
&gt; 
&gt; This is wrong because it will fire if Thread A garbage collects and marks Thread B&apos;s stack, and Thread B&apos;s stack is larger than Thread A&apos;s stack.

Good point.  But that makes it hard to reinstate this assertion.  One option is to have the caller of gatherConservativeRoots() pass the stack bounds in and pipe it through.  Or do you have a better idea for how to do this assertion?

&gt; &gt; Source/JavaScriptCore/interpreter/JSStack.cpp:57
&gt; &gt; +    size_t capacity = Options::maxPerThreadRecursionStackUsage();
&gt; 
&gt; Let&apos;s take &quot;Recursion&quot; out of this name. The stack usage limit is independent of whether recursion happened.

OK.  Will do.

&gt; &gt; Source/JavaScriptCore/interpreter/JSStack.cpp:152
&gt; &gt; +void JSStack::setHostZoneSize(size_t hostZoneSize)
&gt; 
&gt; It doesn&apos;t make sense for the JSStack class to have a concept of a &quot;host zone size&quot;. The whole point of the JSStack class is that, when it is in use, it is segregated from the host stack, and does not contain any host stack data.

This is not true.  Some time back, you told me to remove the JSStack::entryChecks() at all the Interpreter::execute*() entry points.  And instead, we’ll have a host zone even in the C loop JSStack so that doCallJavaScript() can push the VMEntrySentinel frame without requiring a stack check first.  That’s why we have this host zone.   

&gt; &gt; Source/JavaScriptCore/interpreter/JSStackInlines.h:163
&gt; &gt; +    ptrdiff_t maxExcessInRegisters = maxExcessCapacity;
&gt; 
&gt; If the only point of this value is to work around a compilation issue, you should not give it a new name, which implies, incorrectly, that it has some different meaning than its right hand side. Instead, you should say &quot;ptrdiff_t maxExcessCapacity = JSStack::maxExcessCapacity;&quot;.

OK, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966025</commentid>
    <comment_count>15</comment_count>
      <attachid>220745</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-09 12:32:47 -0800</bug_when>
    <thetext>Comment on attachment 220745
patch 4: fixed some C loop bit rot from patch 3.

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

&gt;&gt;&gt; Source/JavaScriptCore/interpreter/JSStack.cpp:152
&gt;&gt;&gt; +void JSStack::setHostZoneSize(size_t hostZoneSize)
&gt;&gt; 
&gt;&gt; It doesn&apos;t make sense for the JSStack class to have a concept of a &quot;host zone size&quot;. The whole point of the JSStack class is that, when it is in use, it is segregated from the host stack, and does not contain any host stack data.
&gt; 
&gt; This is not true.  Some time back, you told me to remove the JSStack::entryChecks() at all the Interpreter::execute*() entry points.  And instead, we’ll have a host zone even in the C loop JSStack so that doCallJavaScript() can push the VMEntrySentinel frame without requiring a stack check first.  That’s why we have this host zone.

It sounds like you&apos;re using this zone for a few purposes: host code, bounded JS usage, and error recovery. So, &quot;host zone&quot; is probably not a great name anymore. How about &quot;reserved zone&quot;.

r=me, with a follow-up patch for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966032</commentid>
    <comment_count>16</comment_count>
      <attachid>220762</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-09 13:01:22 -0800</bug_when>
    <thetext>Created attachment 220762
patch 5: updated patch for landing.

Per our offline discussion, I did not re-instate the stack span assertion in ConservativeRoots::genericAddSpan() (removed it from the patch) because we don&apos;t have a meaningful the stack bounds value to assert against there.  I&apos;ll leave https://bugs.webkit.org/show_bug.cgi?id=126335 as the bug that removed the assertion and update its comment to indicate the reason for the removal of the assertion.

I also left the &quot;update&quot; comments in the ChangeLog (for prior commits that point to this change) as Filip and I both thought that it is helpful, with the understanding that these comments will be squashed when we merge back to trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966034</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-09 13:08:06 -0800</bug_when>
    <thetext>Thanks for all the reviews.  Landed on the jsCStack branch in r161575: &lt;http://trac.webkit.org/r161575&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966044</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-09 13:22:39 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; r=me, with a follow-up patch for that.

Bug to rename &quot;host zone&quot; to &quot;reserved zone&quot; is at https://bugs.webkit.org/show_bug.cgi?id=126716.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220154</attachid>
            <date>2013-12-31 02:15:54 -0800</date>
            <delta_ts>2014-01-07 18:36:05 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-126320.patch</filename>
            <type>text/plain</type>
            <size>16656</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxMTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBA
CisyMDEzLTEyLTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
U3RhY2s6IE5lZWQgYSBzZXBhcmF0ZSBzdGFjayBsaW1pdCBmb3IgdGhlIEpTIHN0YWNrIGFuZCB0
aGUgQyBzdGFjay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNjMyMC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaXRoIHRoaXMgcGF0Y2gsIHdlIG5vdyBhY2N1cmF0ZWx5IHRyYWNrIGhvdyBtdWNoIEpT
IHN0YWNrIHNwYWNlIHRoZQorICAgICAgICBWTSBoYXMgdXNlZCwgYW5kIGNhcCB0aGF0IGF0IHRo
ZSB2YWx1ZSBzcGVjaWZpZWQgYnkgT3B0aW9uczo6bWF4U3RhY2tTaXplKCkuCisKKyAgICAgICAg
VGhlIEpTIHN0YWNrIHNwYWNlIGlzIG1lYXN1cmVkIGluIGNodW5rcywgb25lIGZvciBlYWNoIFZN
RW50cnlTY29wZS4gRWFjaAorICAgICAgICBWTUVudHJ5U2NvcGUgd2lsbCBhbHNvIGtlZXAgYSBy
dW5uaW5nIHRvdGFsIG9mIHRoZSBzdW0gb2YgYWxsIHRoZSBzdGFjaworICAgICAgICB1c2FnZSBv
ZiBwcmV2aW91cyBWTUVudHJ5U2NvcGVzIHRvIHNpbXBsaWZ5IHRoZSBjYWxjdWxhdGlvbiBvZiB0
aGUgdG90YWwKKyAgICAgICAgdXNhZ2UuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToKKyAgICAgICAg
LSBJbiBJbnRlcnByZXRlcjo6ZXhlY3V0ZSgpIGZvciBwcm9ncmFtcywgd2Ugd2VyZSBpbnN0YWxs
aW5nIHRoZSBWTUVudHJ5U2NvcGUKKyAgICAgICAgICBldmVuIGlmIHdlIGVuZCB1cCBvbmx5IHBy
b2Nlc3NpbmcgYSBKU09OIG9iamVjdC4gVGhpcyBwb3NlcyBhIHByb2JsZW0KKyAgICAgICAgICBi
ZWNhdXNlIHRoZSBjb2RlIHRoYXQgcHJvY2Vzc2VzIHRoZSBKU09OIG9iamVjdCB3aWxsIGNhbGwg
ZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgICB3aWxsIHJlLWVudGVyIHRoZSBWTSB0aGVyZWJ5IGlu
c3RhbGxpbmcgYW5vdGhlciBWTUVudHJ5U2NvcGUuIEVhY2gKKyAgICAgICAgICBWTUVudHJ5U2Nv
cGUgZXhwZWN0cyBWTS50b3BDYWxsRnJhbWUgYW5kIFZNLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSB0
byBiZQorICAgICAgICAgIHNldCB1cCBwcm9wZXJseSBmb3IgdGhlIHByZXZpb3VzIFZNRW50cnlT
Y29wZS4gSG93ZXZlciwgaW4gdGhpcyBjYXNlLAorICAgICAgICAgIHdlJ3ZlIGluc3RhbGxlZCB0
aGUgVk1FbnRyeVNjb3BlIGZvciBhIHBvdGVudGlhbCBQcm9ncmFtRXhlY3V0YWJsZSBidXQKKyAg
ICAgICAgICBuZXZlciBleGVjdXRlZCBhIHByb2dyYW0gdG8gaW5pdGlhbGl6ZSBpdHMgdmFsdWVz
IGZvciBWTS50b3BDYWxsRnJhbWUgYW5kCisgICAgICAgICAgVk0uc3RhY2tQb2ludGVyQXRWTUVu
dHJ5LiBUaGlzIGluIHR1cm4gY2F1c2VzIGEgY3Jhc2ggd2hlbiB0aGUgc2Vjb25kCisgICAgICAg
ICAgVk1FbnRyeVNjb3BlIG1ha2VzIHVzZSBvZiBWTS50b3BDYWxsRnJhbWUuCisgICAgICAgICAg
ICAgIFRoZSBmaXggaXMgc2ltcGx5IHRvIGRlZmVyIGluc3RhbGxhdGlvbiBvZiB0aGUgVk1FbnRy
eVNjb3BlIGZvciB0aGUKKyAgICAgICAgICBwcm9ncmFtIHRpbGwgd2UgYXJlIGFjdHVhbGx5IHN1
cmUgdGhhdCB3ZSB3aWxsIGF0dGVtcHQgdG8gZXhlY3V0ZSBhCisgICAgICAgICAgcHJvZ3JhbS4K
KworICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKSk6CisgICAgICAgIC0gSW4gbGxp
bnRfc3RhY2tfY2hlY2soKSwgd2UgcG9wIHRoZSBmcmFtZSB0aGF0IHdlIGZhaWxlZCB0byBzZXQg
dXAgYmVmb3JlCisgICAgICAgICAgdGhyb3dpbmcgdGhlIFN0YWNrT3ZlcmZsb3dFcnJvci4gQWRk
ZWQgYW4gdXBkYXRlIG9mIHRvcENhbGxGcmFtZSBoZXJlIHRvCisgICAgICAgICAgcmVmbGVjdCB0
aGlzIHBvcHBpbmcgYWN0aW9uLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgLSBUaGUgVk1FbnRyeVNjb3BlIHdpbGwgaGF2ZSB0byBjYWxjdWxh
dGUgYW5kIHNldCB1cCBhIGpzU3RhY2tMaW1pdCB2YWx1ZQorICAgICAgICAgIGJlZm9yZSB3ZSBh
Y3R1YWxseSBrbm93IHdoYXQgdGhlIHN0YWNrIHBvaW50ZXIgaXMgYXQgdGhlIHBvaW50IHdoZW4g
d2UKKyAgICAgICAgICByZS1lbnRlciB0aGUgVk0uIFNvLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBy
ZWFsIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSBmb3IKKyAgICAgICAgICB0aGUganNTdGFja0xpbWl0
IGNhbGN1bGF0aW9uLCB3ZSB1c2UgYW4gZXN0aW1hdGUuCisgICAgICAgICAgICAgIGRvQ2FsbFRv
SmF2YVNjcmlwdCgpIGhlcmUgd2lsbCBzZXQgVk0uc3RhY2tQb2ludGVyQXRWTUVudHJ5IHRvIGl0
cworICAgICAgICAgIHJlYWwgdmFsdWUuIEJ1dCBiZWZvcmUgaXQgZG9lcyB0aGF0LCBpdCBuZWVk
cyB0byBhZGp1c3QgVk0uanNTdGFja0xpbWl0CisgICAgICAgICAgYnkgdGhlIGRlbHRhIGJldHdl
ZW4gdGhlIGVzdGltYXRlIGFuZCB0aGUgcmVhbCBzdGFja1BvaW50ZXJBdFZNRW50cnkuCisKKyAg
ICAgICAgLSBJZiBkb0NhbGxUb0phdmFTY3JpcHQoKSBmYWlscyBpdHMgc3RhY2sgY2hlY2sgZm9y
IGluY29taW5nIGFyZ3MsIGl0IGFsc28KKyAgICAgICAgICBuZWVkcyB0byBjbGVhciBWTS5zdGFj
a1BvaW50ZXJBdFZNRW50cnkgc28gdGhhdCBDIGNvZGUgY2FuIGFzc2VydCB0aGF0CisgICAgICAg
ICAgdGhlIHZhcmlvdXMgcG9pbnRlcnMgaW50byB0aGUgc3RhY2sgcmVtYWluIGNvbnNpc3RlbnQu
CisKKyAgICAgICAgICBCeSBjb25zaXN0ZW50LCBJIG1lYW4gdGhhdCwgZ2l2ZW4gdGhhdCB0aGUg
c3RhY2sgZ3Jvd3MgZG93biwgYW5kIHRoYXQKKyAgICAgICAgICBWTS5zdGFja1BvaW50ZXJBdFZN
RW50cnkgYW5kIFZNLnRvcENhbGxGcmFtZSBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQsCisgICAg
ICAgICAgdGhlbiB0aGUgZm9sbG93aW5nIHNob3VsZCBhbHdheXMgYmUgdHJ1ZToKKworICAgICAg
ICAgICAgICBsZXQgdG9wT2ZTdGFjayA9IFZNLnRvcENhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpOwor
ICAgICAgICAgICAgICBzdGFja1BvaW50ZXJBdFZNRW50cnkgPj0gdG9wT2ZTdGFjayA+PSBzdGFj
ayBwb2ludGVyIGluIGEgQyBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgICBhbmQKKyAgICAgICAg
ICAgICAgSlNTdGFjay5jb250YWluc0FkZHJlc3Moc3RhY2tQb2ludGVyQXRWTUVudHJ5KQorICAg
ICAgICAgIGFuZAorICAgICAgICAgICAgICBKU1N0YWNrLmNvbnRhaW5zQWRkcmVzcyh0b3BPZlN0
YWNrKQorCisgICAgICAgICAgQ2xlYXJpbmcgVk0uc3RhY2tQb2ludGVyQXRWTUVudHJ5LCBpZiB0
aGUgc3RhY2sgY2hlY2sgaW4gZG9DYWxsVG9KYXZhU2NyaXB0KCkKKyAgICAgICAgICBmYWlscywg
aW5kaWNhdGVzIHdlIGZhaWxlZCB0byBlbnRlciB0aGUgY3VycmVudCBWTUVudHJ5U2NvcGUgYW5k
IHRoYXQgd2UKKyAgICAgICAgICBzaG91bGQgYmUgdXNpbmcgdGhlIHByZXZpb3VzIFZNRW50cnlT
Y29wZSdzIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSBhbmQKKyAgICAgICAgICB0b3BDYWxsRnJhbWUg
Zm9yIHRoZSBhYm92ZSBhc3NlcnRpb25zLgorCisgICAgICAgICAgTk9URTogVGhlc2UgYXNzZXJ0
aW9ucyBhcmUgZG9uZSBpbiBWTUVudHJ5U2NvcGU6OnVwZGF0ZVN0YWNrTGltaXRzKCkuCisKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmg6CisgICAgICAgICogcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwOgorICAg
ICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZSk6CisgICAgICAgIChKU0M6OlZN
RW50cnlTY29wZTo6flZNRW50cnlTY29wZSk6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6
c3RhY2tVc2FnZUZvcik6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6dXBkYXRlU3RhY2tM
aW1pdHMpOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OmN1cnJlbnRTdGFja1BvaW50ZXIp
OgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OnJlcXVpcmVkQ2FwYWNpdHkpOgorICAgICAg
ICAtIHJlcXVpcmVkQ2FwYWNpdHkoKSBub3cgY29tcHV0ZXMgdGhlIGV4Y2VzcyBhbW91bnQgQyBz
dGFjayBjYXBhY2l0eSB0aGF0CisgICAgICAgICAgd2UgaGF2ZSBhdmFpbGFibGUsIGFuZCBkaXNj
b3VudCBpdCBpbiB0aGUgY29tcHV0YXRpb24gb2YgdGhlIEpTIHN0YWNrCisgICAgICAgICAgbGlt
aXQuIEJ5IGV4Y2VzcywgSSBtZWFuIHRoZSBhbW91bnQgb2YgdW51c2VkIEMgc3RhY2sgc3BhY2Ug
dGhhdAorICAgICAgICAgIGV4Y2VlZHMgdGhlIGFtb3VudCBvZiB1bnVzZWQgSlMgc3RhY2sgc3Bh
Y2UgY2FwYWNpdHkuCisKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5oOgorCiAyMDEz
LTEyLTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDU3RhY2s6
IHRoZSBHQyBzaG91bGQgbm90IGJlIGFzc3VtaW5nIGFueSBsaW1pdCBvbiB0aGUgc3RhY2sgc2l6
ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMTYxMTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcwLDcgKzc3MCw2
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICBpZiAodm0u
aXNDb2xsZWN0b3JCdXN5KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIFZNRW50
cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGlmICgh
dm0uaXNTYWZlVG9SZWN1cnNlKCkpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93
U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogCkBAIC04NzcsNiArODc2LDggQEAgZmFp
bGVkSlNPTlA6CiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRoZW4gd2UgaGF2ZSBhbHJlYWR5IHBy
b3ZlbiB0aGF0IHRoZSBzY3JpcHQgaXMgbm90IGEgSlNPTgogICAgIC8vIG9iamVjdC4KIAorICAg
IFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOworCiAg
ICAgLy8gQ29tcGlsZSBzb3VyY2UgdG8gYnl0ZWNvZGUgaWYgbmVjZXNzYXJ5OgogICAgIGlmIChK
U09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5pbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyh2bSwg
Y2FsbEZyYW1lLCBzY29wZSkpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFt
ZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGVycm9yKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE2
MTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1OCwxMiArNDU4LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHN0YWNrX2NoZWNrKQogICAgIC8vIEhlbmNlLCBpZiB3ZSBnZXQgaGVyZSwgdGhlbiB3ZSBrbm93
IGEgc3RhY2sgb3ZlcmZsb3cgaXMgaW1taW5lbnQuIFNvLCBqdXN0CiAgICAgLy8gdGhyb3cgdGhl
IFN0YWNrT3ZlcmZsb3dFcnJvciB1bmNvbmRpdGlvbmFsbHkuCiAjaWYgRU5BQkxFKExMSU5UX0Nf
TE9PUCkKLSAgICBBU1NFUlQoIWV4ZWMtPnZtKCkuaW50ZXJwcmV0ZXItPnN0YWNrKCkuY29udGFp
bnNBZGRyZXNzKGV4ZWMtPnRvcE9mRnJhbWUoKSkpOworICAgIEFTU0VSVCghdm0uaW50ZXJwcmV0
ZXItPnN0YWNrKCkuY29udGFpbnNBZGRyZXNzKGV4ZWMtPnRvcE9mRnJhbWUoKSkpOwogICAgIGlm
IChMSUtFTFkodm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuZW5zdXJlQ2FwYWNpdHlGb3IoZXhlYy0+
dG9wT2ZGcmFtZSgpKSkpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIDApOwogI2VuZGlm
CiAKICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICB2bS50b3BDYWxsRnJhbWUg
PSBleGVjOwogICAgIEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZSBtb2RlKGV4ZWMpOwog
ICAgIENvbW1vblNsb3dQYXRoczo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhy
b3duRXhjZXB0aW9uKGV4ZWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE2MTE3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzksNiArMTc5LDE1IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlw
dChtYWtlQ2FsbCkKIAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRlbXAyLCAweGJh
ZDBkYzAxKQogCisgICAgIyBUaGUganNTdGFja0xpbWl0IHdhcyBwcmV2aW91c2x5IGNvbXB1dGVk
IGluIFZNRW50cnlTY29wZSB1c2luZyBhbgorICAgICMgZXN0aW1hdGVkIHN0YWNrUG9pbnRlckF0
Vk1FbnRyeSB2YWx1ZS4gQWRqdXN0IHRoZSBqc1N0YWNrTGltaXQgYnkKKyAgICAjIHRoZSBkZWx0
YSBiZXR3ZWVuIHRoZSBhY3R1YWwgc3RhY2tQb2ludGVyQXRWTUVudHJ5IGFuZCB0aGUgZXN0aW1h
dGUKKyAgICAjIHRoYXQgd2UgdXNlZCBwcmV2aW91c2x5LgorICAgIHN1YnAgVk06OnN0YWNrUG9p
bnRlckF0Vk1FbnRyeVt2bV0sIHNwLCB0ZW1wMgorICAgIHN1YnAgVk06Om1fanNTdGFja0xpbWl0
W3ZtXSwgdGVtcDIsIHRlbXAyCisgICAgc3RvcmVwIHRlbXAyLCBWTTo6bV9qc1N0YWNrTGltaXRb
dm1dCisgICAgc3RvcmVwIHNwLCBWTTo6c3RhY2tQb2ludGVyQXRWTUVudHJ5W3ZtXQorCiAgICAg
IyBUaGUgc3RhY2sgaG9zdCB6b25lIGVuc3VyZXMgdGhhdCB3ZSBoYXZlIGFkZXF1YXRlIHNwYWNl
IGZvciB0aGUKICAgICAjIFZNRW50cnlTZW50aW5lbEZyYW1lLiBQcm9jZWVkIHdpdGggYWxsb2Nh
dGluZyBhbmQgaW5pdGlhbGl6aW5nIHRoZQogICAgICMgc2VudGluZWwgZnJhbWUuCkBAIC0yMTAs
NiArMjE5LDcgQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogICAgICMgdXAg
dGhyb3dpbmcgYSBTdGFja092ZXJmbG93RXJyb3IuCiAgICAgZW5kCiAKKyAgICBzdG9yZXAgMCwg
Vk06OnN0YWNrUG9pbnRlckF0Vk1FbnRyeVt2bV0KICAgICBjQ2FsbDIoX2xsaW50X3Rocm93X3N0
YWNrX292ZXJmbG93X2Vycm9yLCB2bSwgcHJvdG9DYWxsRnJhbWUpCiAgICAgY2FsbFRvSmF2YVNj
cmlwdEVwaWxvZ3VlKCkKICAgICByZXQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDE2MTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBAIFZNOjpWTShWTVR5cGUg
dm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBj
bGllbnREYXRhKDApCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQor
ICAgICwgc3RhY2tQb2ludGVyQXRWTUVudHJ5KDApCiAgICAgLCBhcnJheUNvbnN0cnVjdG9yVGFi
bGUoYWRvcHRQdHIobmV3IEhhc2hUYWJsZShKU0M6OmFycmF5Q29uc3RydWN0b3JUYWJsZSkpKQog
ICAgICwgYXJyYXlQcm90b3R5cGVUYWJsZShhZG9wdFB0cihuZXcgSGFzaFRhYmxlKEpTQzo6YXJy
YXlQcm90b3R5cGVUYWJsZSkpKQogICAgICwgYm9vbGVhblByb3RvdHlwZVRhYmxlKGFkb3B0UHRy
KG5ldyBIYXNoVGFibGUoSlNDOjpib29sZWFuUHJvdG90eXBlVGFibGUpKSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTYxMTc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDYgKzIyNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWTVR5cGUgdm1UeXBlOwogICAgICAgICBDbGllbnRE
YXRhKiBjbGllbnREYXRhOwogICAgICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFtZTsKKyAgICAg
ICAgdm9pZCogc3RhY2tQb2ludGVyQXRWTUVudHJ5OwogICAgICAgICBXYXRjaGRvZyB3YXRjaGRv
ZzsKIAogICAgICAgICBjb25zdCBPd25QdHI8Y29uc3QgSGFzaFRhYmxlPiBhcnJheUNvbnN0cnVj
dG9yVGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2Nv
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50
cnlTY29wZS5jcHAJKHJldmlzaW9uIDE2MTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKIAorI2luY2x1
ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5k
cy5oPgogCkBAIC0zNSw2ICszNiw3IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2
bSwgSlNHbG8KICAgICA6IG1fdm0odm0pCiAgICAgLCBtX3N0YWNrKHd0ZlRocmVhZERhdGEoKS5z
dGFjaygpKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQorICAgICwgbV9wcmV2
U3RhY2tVc2FnZSgwKQogICAgICwgbV9wcmV2Rmlyc3RFbnRyeVNjb3BlKHZtLmZpcnN0RW50cnlT
Y29wZSkKICAgICAsIG1fcHJldlRvcEVudHJ5U2NvcGUodm0udG9wRW50cnlTY29wZSkKICAgICAs
IG1fcHJldlN0YWNrTGltaXQodm0uc3RhY2tMaW1pdCgpKQpAQCAtNDIsNyArNDQsMjAgQEAgVk1F
bnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsbwogICAgICwgbV9wcmV2SlNTdGFj
a0xpbWl0KHZtLmpzU3RhY2tMaW1pdCgpKQogI2VuZGlmCiAgICAgLCBtX3ByZXZMYXN0U3RhY2tU
b3Aodm0ubGFzdFN0YWNrVG9wKCkpCisgICAgLCBtX3ByZXZTdGFja1BvaW50ZXJBdFZNRW50cnko
dm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5KQorICAgICwgbV9wcmV2VG9wQ2FsbEZyYW1lKHZtLnRv
cENhbGxGcmFtZSkKIHsKKyAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93
aW5nRG93bndhcmQoKSk7CisgICAgQVNTRVJUKCF2bS50b3BDYWxsRnJhbWUgfHwgY3VycmVudFN0
YWNrUG9pbnRlcigpIDw9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHZtLnRvcENhbGxGcmFtZS0+
dG9wT2ZGcmFtZSgpKSk7CisKKyAgICAvLyBTdGVwIDE6IENvbXB1dGUgdGhlIHN0YWNrIHVzYWdl
IG9mIHRoZSBsYXN0IFZNIGVudHJ5IGJlZm9yZSB3ZSBpbnN0YWxsCisgICAgLy8gdGhlIGN1cnJl
bnQgZW50cnkgc2NvcGUgYmVsb3cuCisgICAgaWYgKHZtLnRvcEVudHJ5U2NvcGUpIHsKKyAgICAg
ICAgY2hhciogdG9wT2ZTdGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHZtLnRvcENhbGxG
cmFtZS0+dG9wT2ZGcmFtZSgpKTsKKyAgICAgICAgbV9wcmV2U3RhY2tVc2FnZSA9IHZtLnRvcEVu
dHJ5U2NvcGUtPnN0YWNrVXNhZ2VGb3IodG9wT2ZTdGFjayk7CisgICAgfQorCisgICAgLy8gU3Rl
cCAyOiBJbnN0YWxsIHRoZSBjdXJyZW50IGVudHJ5IHNjb3BlLgogICAgIGlmICghdm0uZmlyc3RF
bnRyeVNjb3BlKSB7CiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKICAgICAgICAgaWYgKEV4ZWN1dGFi
bGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKQEAgLTU0LDEzICs2OSwxNiBAQCBW
TUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYgdm0sIEpTR2xvCiAgICAgICAgIC8vIG9ic2Vy
dmUgdGltZSB4b25lIGNoYW5nZXMuCiAgICAgICAgIHZtLnJlc2V0RGF0ZUNhY2hlKCk7CiAgICAg
fQorICAgIHZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IDA7CiAgICAgdm0udG9wRW50cnlTY29w
ZSA9IHRoaXM7CiAKICAgICAvLyBDbGVhciB0aGUgY2FwdHVyZWQgZXhjZXB0aW9uIHN0YWNrIGJl
dHdlZW4gZW50cmllcwogICAgIHZtLmNsZWFyRXhjZXB0aW9uU3RhY2soKTsKIAotICAgIHVwZGF0
ZVN0YWNrTGltaXRzKCk7CiAgICAgdm0uc2V0TGFzdFN0YWNrVG9wKG1fc3RhY2sub3JpZ2luKCkp
OworCisgICAgLy8gU3RlcCAzOiBDb21wdXRlIHRoZSBzdGFjayBsaW1pdCB1c2luZyB0aGUgaW5z
dGFsbGVkIGVudHJ5IHNjb3BlLgorICAgIHVwZGF0ZVN0YWNrTGltaXRzKCk7CiB9CiAKIFZNRW50
cnlTY29wZTo6flZNRW50cnlTY29wZSgpCkBAIC03MiwyMSArOTAsODggQEAgVk1FbnRyeVNjb3Bl
Ojp+Vk1FbnRyeVNjb3BlKCkKICAgICBtX3ZtLnNldEpTU3RhY2tMaW1pdChtX3ByZXZKU1N0YWNr
TGltaXQpOwogI2VuZGlmCiAgICAgbV92bS5zZXRMYXN0U3RhY2tUb3AobV9wcmV2TGFzdFN0YWNr
VG9wKTsKKyAgICBtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IG1fcHJldlN0YWNrUG9pbnRl
ckF0Vk1FbnRyeTsKKyAgICBtX3ZtLnRvcENhbGxGcmFtZSA9IG1fcHJldlRvcENhbGxGcmFtZTsK
K30KKworc2l6ZV90IFZNRW50cnlTY29wZTo6c3RhY2tVc2FnZUZvcihjaGFyKiB0b3BPZlN0YWNr
KSBjb25zdAoreworICAgIHNpemVfdCBjdXJyZW50U3RhY2tVc2FnZSA9IDA7CisgICAgQVNTRVJU
KG1fdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5KTsKKyAgICBjaGFyKiBzdGFydE9mU3RhY2sgPSBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSk7CisgICAg
QVNTRVJUKHRvcE9mU3RhY2sgPD0gc3RhcnRPZlN0YWNrKTsKKyAgICBjdXJyZW50U3RhY2tVc2Fn
ZSA9IHN0YXJ0T2ZTdGFjayAtIHRvcE9mU3RhY2s7CisKKyAgICBBU1NFUlQoT3B0aW9uczo6bWF4
U3RhY2tTaXplKCkgPj0gbV9wcmV2U3RhY2tVc2FnZSArIGN1cnJlbnRTdGFja1VzYWdlKTsKKyAg
ICByZXR1cm4gbV9wcmV2U3RhY2tVc2FnZSArIGN1cnJlbnRTdGFja1VzYWdlOwogfQogCiB2b2lk
IFZNRW50cnlTY29wZTo6dXBkYXRlU3RhY2tMaW1pdHMoKQogeworICAgIEFTU0VSVCh3dGZUaHJl
YWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKKyAgICBjaGFyKiB0b3BPZlN0
YWNrID0gY3VycmVudFN0YWNrUG9pbnRlcigpOworCiAjaWYgIUVOQUJMRShMTElOVF9DX0xPT1Ap
Ci0gICAgdm9pZCoganNTdGFja0xpbWl0ID0gbV9zdGFjay5yZWN1cnNpb25MaW1pdChyZXF1aXJl
ZENhcGFjaXR5KEpTU3RhY2tDYXBhY2l0eSkpOwotICAgIG1fdm0uc2V0SlNTdGFja0xpbWl0KGpz
U3RhY2tMaW1pdCk7CisgICAgY2hhciogdG9wT2ZKU1N0YWNrID0gbV92bS50b3BDYWxsRnJhbWUg
PyByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3ZtLnRvcENhbGxGcmFtZS0+dG9wT2ZGcmFtZSgp
KSA6IHRvcE9mU3RhY2s7CisKKyAgICAvLyBJZiB3ZSBoYXZlIG5vdCByZS1lbnRlcmVkIHRoZSBW
TSB5ZXQgdmlhIGNhbGxUb0phdmFTY3JpcHQgLyBjYWxsVG9OYXRpdmVGdW5jdGlvbiwKKyAgICAv
LyB0aGVuIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSB3aWxsIG5vdCBoYXZlIGJlZW4gc2V0IHVwIHll
dC4gSW5zdGVhZCwgd2UnbGwKKyAgICAvLyBjb21wdXRlIHRoZSBzdGFjayBsaW1pdCByZWxhdGl2
ZSB0byB0aGUgY3VycmVudCB0b3BPZkpTU3RhY2sgKGFzIGFuIGVzdGltYXRlCisgICAgLy8gb2Yg
c3RhY2tQb2ludGVyQXRWTUVudHJ5KS4gV2hlbiB3ZSBlbnRlciBjYWxsVG9KYXZhU2NyaXB0IGxh
dGVyLCB3ZSdsbCBhZGp1c3QKKyAgICAvLyB0aGUgc3RhY2sgbGltaXQgd2l0aCB0aGUgZGVsdGEg
YmV0d2VlbiB0aGUgYWN0dWFsIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSBhbmQKKyAgICAvLyB0aGUg
ZXN0aW1hdGUgdmFsdWUgdGhhdCB3ZSB1c2UgaGVyZS4KKyAgICBpZiAoIW1fdm0uc3RhY2tQb2lu
dGVyQXRWTUVudHJ5KQorICAgICAgICBtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IHRvcE9m
SlNTdGFjazsKKworICAgIHZvaWQqIGpzU3RhY2tMaW1pdCA9IG1fc3RhY2sucmVjdXJzaW9uTGlt
aXQocmVxdWlyZWRDYXBhY2l0eSh0b3BPZkpTU3RhY2ssIEpTU3RhY2tDYXBhY2l0eSkpOworI2lm
bmRlZiBOREVCVUcKKyAgICBjaGFyKiBzdGFydE9mU3RhY2sgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPihtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSk7CisgICAgY2hhciogc3RhY2tMaW1pdCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGpzU3RhY2tMaW1pdCk7CisgICAgQVNTRVJUKG1fcHJl
dlN0YWNrVXNhZ2UgKyAoc3RhcnRPZlN0YWNrIC0gc3RhY2tMaW1pdCkgPD0gT3B0aW9uczo6bWF4
U3RhY2tTaXplKCkpOwogI2VuZGlmCi0gICAgdm9pZCogbmF0aXZlU3RhY2tMaW1pdCA9IG1fc3Rh
Y2sucmVjdXJzaW9uTGltaXQocmVxdWlyZWRDYXBhY2l0eShOYXRpdmVTdGFja0NhcGFjaXR5KSk7
CisgICAgbV92bS5zZXRKU1N0YWNrTGltaXQoanNTdGFja0xpbWl0KTsKKworICAgIC8vIFNvbWUg
c2FuaXR5IGNoZWNrcyBmb3Igb3VyIHBvaW50ZXJzIGludG8gdGhlIHN0YWNrOgorICAgIEFTU0VS
VChtX3ZtLmludGVycHJldGVyLT5zdGFjaygpLmNvbnRhaW5zQWRkcmVzcyhyZWludGVycHJldF9j
YXN0PFJlZ2lzdGVyKj4obV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkpKSk7CisgICAgQVNTRVJU
KG1fdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuY29udGFpbnNBZGRyZXNzKHJlaW50ZXJwcmV0X2Nh
c3Q8UmVnaXN0ZXIqPih0b3BPZkpTU3RhY2spKSk7CisgICAgQVNTRVJUKGN1cnJlbnRTdGFja1Bv
aW50ZXIoKSA8PSB0b3BPZkpTU3RhY2spOworICAgIEFTU0VSVCh0b3BPZkpTU3RhY2sgPD0gbV92
bS5zdGFja1BvaW50ZXJBdFZNRW50cnkpOworI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19MT09Q
KQorCisgICAgdm9pZCogbmF0aXZlU3RhY2tMaW1pdCA9IG1fc3RhY2sucmVjdXJzaW9uTGltaXQo
cmVxdWlyZWRDYXBhY2l0eSh0b3BPZlN0YWNrLCBOYXRpdmVTdGFja0NhcGFjaXR5KSk7CiAgICAg
bV92bS5zZXRTdGFja0xpbWl0KG5hdGl2ZVN0YWNrTGltaXQpOwogfQogCi1zaXplX3QgVk1FbnRy
eVNjb3BlOjpyZXF1aXJlZENhcGFjaXR5KENhcGFjaXR5VHlwZSB0eXBlKSBjb25zdAorY2hhciog
Vk1FbnRyeVNjb3BlOjpjdXJyZW50U3RhY2tQb2ludGVyKCkgY29uc3QKK3sKKyAgICBjaGFyKiBw
OworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KG1fdm0udG9wQ2FsbEZyYW1lLT50b3BPZkZyYW1lKCkpOworI2Vsc2UKKyAgICBwID0gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oJnApOworI2VuZGlmCisgICAgcmV0dXJuIHA7Cit9CisKK3Np
emVfdCBWTUVudHJ5U2NvcGU6OnJlcXVpcmVkQ2FwYWNpdHkoY2hhciogdG9wT2ZTdGFjaywgQ2Fw
YWNpdHlUeXBlIHR5cGUpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1fc3RhY2suaXNHcm93aW5nRG93
bndhcmQoKSk7CisKKyAgICBzaXplX3QgZXhjZXNzQ1N0YWNrU2l6ZSA9IDA7CisjaWYgIUVOQUJM
RShMTElOVF9DX0xPT1ApCisgICAgaWYgKHR5cGUgPT0gSlNTdGFja0NhcGFjaXR5KSB7CisgICAg
ICAgIEFTU0VSVChPcHRpb25zOjptYXhTdGFja1NpemUoKSA+PSBzdGFja1VzYWdlRm9yKHRvcE9m
U3RhY2spKTsKKyAgICAgICAgc2l6ZV90IGF2YWlsYWJsZUpTU3RhY2sgPSBPcHRpb25zOjptYXhT
dGFja1NpemUoKSAtIHN0YWNrVXNhZ2VGb3IodG9wT2ZTdGFjayk7CisKKyAgICAgICAgY2hhciog
Ym90dG9tT2ZTdGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fc3RhY2sub3JpZ2luKCkp
OworICAgICAgICBzaXplX3QgYXZhaWxhYmxlQ1N0YWNrID0gbV9zdGFjay5zaXplKCkgLSAoYm90
dG9tT2ZTdGFjayAtIHRvcE9mU3RhY2spOworICAgICAgICBpZiAoYXZhaWxhYmxlQ1N0YWNrID4g
YXZhaWxhYmxlSlNTdGFjaykKKyAgICAgICAgICAgIGV4Y2Vzc0NTdGFja1NpemUgPSBhdmFpbGFi
bGVDU3RhY2sgLSBhdmFpbGFibGVKU1N0YWNrOworICAgIH0KKyNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHR5cGUpOworICAgIEFTU0VSVCh0eXBlID09IE5hdGl2ZVN0YWNrQ2FwYWNpdHkpOworI2Vu
ZGlmCiAKICAgICAvLyBXZSByZXF1aXJlIGEgc21hbGxlciBzdGFjayBidWRnZXQgZm9yIHRoZSBl
cnJvciBzdGFjay4gVGhpcyBpcyB0byBhbGxvdwogICAgIC8vIHNvbWUgbWluaW1hbCBKUyBleGVj
dXRpb24gdG8gcHJvY2VlZCBhbmQgZG8gdGhlIHdvcmsgb2YgdGhyb3dpbmcgYSBzdGFjawpAQCAt
MTAwLDYgKzE4NSw4IEBAIHNpemVfdCBWTUVudHJ5U2NvcGU6OnJlcXVpcmVkQ2FwYWNpdHkoQ2EK
IAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fdm0uaW50ZXJwcmV0ZXI7CiAgICAg
c2l6ZV90IHJlcXVpcmVkQ2FwYWNpdHkgPSBpbnRlcnByZXRlci0+aXNJbkVycm9ySGFuZGxpbmdN
b2RlKCkgPyBlcnJvck1vZGVSZXF1aXJlZFN0YWNrIDogcmVxdWlyZWRTdGFjazsKKyAgICByZXF1
aXJlZENhcGFjaXR5ICs9IGV4Y2Vzc0NTdGFja1NpemU7CisKICAgICBSRUxFQVNFX0FTU0VSVCht
X3N0YWNrLnNpemUoKSA+PSByZXF1aXJlZENhcGFjaXR5KTsKICAgICByZXR1cm4gcmVxdWlyZWRD
YXBhY2l0eTsgCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5
U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVu
dHJ5U2NvcGUuaAkocmV2aXNpb24gMTYxMTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEyICs0OCwxNSBAQCBw
cml2YXRlOgogICAgICAgICBKU1N0YWNrQ2FwYWNpdHksCiAgICAgICAgIE5hdGl2ZVN0YWNrQ2Fw
YWNpdHksCiAgICAgfTsKLSAgICBzaXplX3QgcmVxdWlyZWRDYXBhY2l0eShDYXBhY2l0eVR5cGUp
IGNvbnN0OworICAgIHNpemVfdCByZXF1aXJlZENhcGFjaXR5KGNoYXIqIHRvcE9mU3RhY2ssIENh
cGFjaXR5VHlwZSkgY29uc3Q7CisgICAgY2hhciogY3VycmVudFN0YWNrUG9pbnRlcigpIGNvbnN0
OworICAgIHNpemVfdCBzdGFja1VzYWdlRm9yKGNoYXIqIHRvcE9mU3RhY2spIGNvbnN0OwogCiAg
ICAgVk0mIG1fdm07CiAgICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBtX3N0YWNrQ2hlY2tQb2lu
dDsKICAgICBTdGFja0JvdW5kcyBtX3N0YWNrOwogICAgIEpTR2xvYmFsT2JqZWN0KiBtX2dsb2Jh
bE9iamVjdDsKKyAgICBzaXplX3QgbV9wcmV2U3RhY2tVc2FnZTsKIAogICAgIC8vIFRoZSBmb2xs
b3dpbmcgcG9pbnRlcnMgbWF5IHBvaW50IHRvIGEgZGlmZmVyZW50IHRocmVhZCdzIHN0YWNrLgog
ICAgIFZNRW50cnlTY29wZSogbV9wcmV2Rmlyc3RFbnRyeVNjb3BlOwpAQCAtNjMsNiArNjYsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQqIG1fcHJldkpTU3RhY2tMaW1pdDsKICNlbmRpZgogICAgIHZv
aWQqIG1fcHJldkxhc3RTdGFja1RvcDsKKyAgICB2b2lkKiBtX3ByZXZTdGFja1BvaW50ZXJBdFZN
RW50cnk7CisgICAgRXhlY1N0YXRlKiBtX3ByZXZUb3BDYWxsRnJhbWU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MK
</data>
<flag name="review"
          id="243831"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220579</attachid>
            <date>2014-01-07 18:36:05 -0800</date>
            <delta_ts>2014-01-08 17:02:59 -0800</delta_ts>
            <desc>patch 2: work in progress.  Uploading for personal inspection.  Not ready for review yet.</desc>
            <filename>bug-126320b.patch</filename>
            <type>text/plain</type>
            <size>50894</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE2MTM3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzA4LDYgKzMwOCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGlt
ZS9EdW1wQ29udGV4dC5jcHAKICAgICBydW50aW1lL0Vycm9yLmNwcAogICAgIHJ1bnRpbWUvRXJy
b3JDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5jcHAKICAg
ICBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAKICAgICBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTYxMzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTg0
NSw2ICs4NDUsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Nj
b3BlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Nj
b3BlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcCBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2MTM3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1MCw2ICs1NTAsNyBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxEdW1wQ29udGV4dC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JDb25zdHJ1Y3Rvci5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9ySGFuZGxpbmdTY29wZS5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9ySW5zdGFuY2UuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvclByb3RvdHlwZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEV4Y2VwdGlvbkhlbHBlcnMuY3BwIiAvPgpA
QCAtMTEyNyw2ICsxMTI4LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
RHVtcENvbnRleHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJy
b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JDb25zdHJ1
Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvckhhbmRs
aW5nU2NvcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JJ
bnN0YW5jZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvclBy
b3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFeGNlcHRp
b25IZWxwZXJzLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMJKHdvcmtpbmcgY29weSkKQEAgLTUwNyw2ICs1MDcsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxFcnJvckNvbnN0cnVjdG9yLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcRXJyb3JJbnN0YW5jZS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yMDM2LDYgKzIwMzksOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvckNvbnN0cnVjdG9yLmgiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEVycm9ySGFuZGxpbmdTY29wZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxFcnJvckluc3RhbmNlLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTYxMzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNzMsNiArMTI3
Myw4IEBACiAJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVB
MjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtw
b2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVB
MDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEwODYyMTE4MkI3QTA0MDBGNkQ4NTEg
LyogRGVidWdnZXJQcmltaXRpdmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRUEwODYxRjE4MkI3QTA0MDBGNkQ4NTEgLyogRGVidWdnZXJQcmltaXRp
dmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RkVCNThDMTQxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI1OEMxMjE4N0I4QjE2
MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCAqLzsgfTsKKwkJRkVCNThDMTUxODdC
OEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVy
cm9ySGFuZGxpbmdTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZFRDI4N0IyMTVFQzlBNTcwMERBODE2MSAvKiBMTEludE9wY29kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEMjg3QjExNUVD
OUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVEOTRGMkUxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNo
ZG9nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi87IH07CiAJCUZFRDk0RjJG
MTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9n
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2
MzUsNiArMjYzNyw4IEBACiAJCUZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBC
cmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyZWFrcG9pbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBMDg2MUYxODJCN0EwNDAwRjZEODUx
IC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZWJ1Z2dlclByaW1pdGl2ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVC
NThDMTIxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJy
b3JIYW5kbGluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVycm9y
SGFuZGxpbmdTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUQyODdCMTE1
RUM5QTU3MDBEQTgxNjEgLyogTExJbnRPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTExJbnRPcGNvZGUuaDsgcGF0aCA9IGxsaW50L0xMSW50T3Bjb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRj
aGRvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXRjaGRvZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRDk0RjJDMTcxRTNFMjMwMEJFNzdB
NCAvKiBXYXRjaGRvZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXRjaGRv
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ2OCw2ICszNDcyLDggQEAKIAkJ
CQlCQzMwNDYwNjBFMUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLywKIAkJCQlCQzAyRTkwNDBF
MTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMwMkU5MDUw
RTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuaCAqLywKKwkJCQlGRUI1OEMxMjE4
N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCAqLywKKwkJCQlGRUI1OEMx
MzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi8sCiAJCQkJQkMwMkU5
OEEwRTE4M0UzODAwMEY5Mjk3IC8qIEVycm9ySW5zdGFuY2UuY3BwICovLAogCQkJCUJDMDJFOThC
MEUxODNFMzgwMDBGOTI5NyAvKiBFcnJvckluc3RhbmNlLmggKi8sCiAJCQkJQkMwMkU5MDYwRTE4
MzlEQjAwMEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmNwcCAqLywKQEAgLTQyOTUsNiArNDMwMSw3
IEBACiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdp
c3RlclNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8q
IEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCRkYzQzAxNzk4Njg5
NDAwMDJGNDYyIC8qIERGR0ZpbHRyYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMy
RkNBRTExMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUJhc2ljQmxvY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyRkNBRTEzMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTQ2NSw2ICs1NDcyLDcgQEAKIAkJCQkwRjYzOTQ4
NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3RDlBMjk0MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNzE0Q0E0MTZFQTkyRjAwMEYzRUJFQiAvKiBERkdCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFQjU4QzE0MTg3QjhC
MTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJ
bnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDYgQEAKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgi
CiAjaW5jbHVkZSAiUHJvdGVjdC5oIgotI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogCiBuYW1l
c3BhY2UgewogCkBAIC0xOTYsOCArMTk1LDggQEAgdm9pZCBEZWJ1Z2dlcjo6cmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoVgogewogICAgIC8vIElmIEphdmFTY3JpcHQgaXMgcnVubmluZywgaXQncyBu
b3Qgc2FmZSB0byByZWNvbXBpbGUsIHNpbmNlIHdlJ2xsIGVuZAogICAgIC8vIHVwIHRocm93aW5n
IGF3YXkgY29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgotICAgIEFTU0VSVCghdm0tPmZp
cnN0RW50cnlTY29wZSk7Ci0gICAgaWYgKHZtLT5maXJzdEVudHJ5U2NvcGUpCisgICAgQVNTRVJU
KCF2bS0+ZW50cnlTY29wZSk7CisgICAgaWYgKHZtLT5lbnRyeVNjb3BlKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgdm0tPnByZXBhcmVUb0Rpc2NhcmRDb2RlKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJ
KHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiU3RhY2tW
aXNpdG9yLmgiCi0jaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTYxMzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5MSw3ICsyOTEsNyBAQCBib29sIEhlYXA6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQog
Ly8gUnVuIGFsbCBwZW5kaW5nIGZpbmFsaXplcnMgbm93IGJlY2F1c2Ugd2Ugd29uJ3QgZ2V0IGFu
b3RoZXIgY2hhbmNlLgogdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoIW1fdm0tPmZpcnN0RW50cnlTY29wZSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoIW1fdm0tPmVudHJ5U2NvcGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CiAKICAgICBtX29iamVjdFNwYWNlLmxhc3RDaGFuY2VU
b0ZpbmFsaXplKCk7CkBAIC02OTUsNyArNjk1LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb21w
aWxlZENvZGUoKQogewogICAgIC8vIElmIEphdmFTY3JpcHQgaXMgcnVubmluZywgaXQncyBub3Qg
c2FmZSB0byBkZWxldGUgY29kZSwgc2luY2Ugd2UnbGwgZW5kCiAgICAgLy8gdXAgZGVsZXRpbmcg
Y29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgotICAgIGlmIChtX3ZtLT5maXJzdEVudHJ5
U2NvcGUpCisgICAgaWYgKG1fdm0tPmVudHJ5U2NvcGUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGZvciAoRXhlY3V0YWJsZUJhc2UqIGN1cnJlbnQgPSBtX2NvbXBpbGVkQ29kZS5oZWFkKCk7IGN1
cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxNjEzNzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCw4IEBAIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6
OnZtRW50cnlHbG9iYWwKIAogICAgIC8vIEZvciBhbnkgRXhlY1N0YXRlIHRoYXQncyBub3QgYSBn
bG9iYWxFeGVjLCB0aGUgCiAgICAgLy8gZHluYW1pYyBnbG9iYWwgb2JqZWN0IG11c3QgYmUgc2V0
IHNpbmNlIGNvZGUgaXMgcnVubmluZwotICAgIEFTU0VSVCh2bSgpLmZpcnN0RW50cnlTY29wZSk7
Ci0gICAgcmV0dXJuIHZtKCkuZmlyc3RFbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKTsKKyAgICBB
U1NFUlQodm0oKS5lbnRyeVNjb3BlKTsKKyAgICByZXR1cm4gdm0oKS5lbnRyeVNjb3BlLT5nbG9i
YWxPYmplY3QoKTsgICAgCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lv
biAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSwyMSArOTEsNiBAQCB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2Rl
OjpFcnJvckhhbmRsaW5nTW9kZShFeGVjU3RhdGUgKmV4ZWMpCi0gICAgOiBtX2ludGVycHJldGVy
KCpleGVjLT5pbnRlcnByZXRlcigpKQotewotICAgIG1faW50ZXJwcmV0ZXIubV9lcnJvckhhbmRs
aW5nTW9kZVJlZW50cnkrKzsKLSAgICBtX2ludGVycHJldGVyLnN0YWNrKCkudXBkYXRlU3RhY2tM
aW1pdCgpOwotfQotCi1JbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGU6On5FcnJvckhhbmRs
aW5nTW9kZSgpCi17Ci0gICAgbV9pbnRlcnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRy
eS0tOwotICAgIEFTU0VSVChtX2ludGVycHJldGVyLm1fZXJyb3JIYW5kbGluZ01vZGVSZWVudHJ5
ID49IDApOwotICAgIGlmICghbV9pbnRlcnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRy
eSkKLSAgICAgICAgbV9pbnRlcnByZXRlci5zdGFjaygpLnVwZGF0ZVN0YWNrTGltaXQoKTsKLX0K
LQogSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGlmICghY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTYxMzcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE5MCwxNCArMTkwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBW
TTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgY2xhc3MgRXJyb3JIYW5kbGluZ01vZGUgewotICAg
ICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBFcnJvckhhbmRsaW5n
TW9kZShFeGVjU3RhdGUqKTsKLSAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5FcnJvckhh
bmRsaW5nTW9kZSgpOwotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgSW50ZXJwcmV0ZXIm
IG1faW50ZXJwcmV0ZXI7Ci0gICAgICAgIH07Ci0KICAgICAgICAgSW50ZXJwcmV0ZXIoVk0gJik7
CiAgICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKQEAgLTIzNyw4ICsyMjksNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFNhbXBsaW5nVG9vbCogc2FtcGxlcigp
IHsgcmV0dXJuIG1fc2FtcGxlci5nZXQoKTsgfQogCi0gICAgICAgIGJvb2wgaXNJbkVycm9ySGFu
ZGxpbmdNb2RlKCkgeyByZXR1cm4gbV9lcnJvckhhbmRsaW5nTW9kZVJlZW50cnk7IH0KLQogICAg
ICAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChDYWxsRnJhbWUqJiwgSlNWYWx1
ZSYpOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hv
b2tJRCk7CiAgICAgICAgIEpTU3RyaW5nKiBzdGFja1RyYWNlQXNTdHJpbmcoRXhlY1N0YXRlKiwg
VmVjdG9yPFN0YWNrRnJhbWU+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSlNTdGFjay5jcHAJKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyAr
MzEsNyBAQAogCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgotI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgorI2luY2x1ZGUgIk9wdGlvbnMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUzLDE2ICs1MywxOCBAQCBKU1N0YWNrOjpKU1N0
YWNrKFZNJiB2bSkKICNlbmRpZgogewogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAgc2l6
ZV90IGNhcGFjaXR5ID0gT3B0aW9uczo6bWF4U3RhY2tTaXplKCk7CisgICAgc2l6ZV90IGNhcGFj
aXR5ID0gT3B0aW9uczo6bWF4UGVyVGhyZWFkUmVjdXJzaW9uU3RhY2tVc2FnZSgpOwogICAgIEFT
U0VSVChjYXBhY2l0eSAmJiBpc1BhZ2VBbGlnbmVkKGNhcGFjaXR5KSk7CiAKLSAgICBtX3Jlc2Vy
dmF0aW9uID0gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKHJvdW5kVXBBbGxvY2F0aW9uU2l6ZShj
YXBhY2l0eSwgY29tbWl0U2l6ZSksIE9TQWxsb2NhdG9yOjpKU1ZNU3RhY2tQYWdlcyk7CisgICAg
bV9yZXNlcnZhdGlvbiA9IFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZShXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2YoY29tbWl0U2l6ZSwgY2FwYWNpdHkpLCBPU0FsbG9jYXRvcjo6SlNWTVN0YWNrUGFn
ZXMpOwogICAgIHNldFN0YWNrTGltaXQoaGlnaEFkZHJlc3MoKSk7CiAgICAgbV9jb21taXRUb3Ag
PSBoaWdoQWRkcmVzcygpOwogICAgIAogICAgIG1fbGFzdFN0YWNrVG9wID0gYmFzZU9mU3RhY2so
KTsKIAotICAgIGRpc2FibGVFcnJvclN0YWNrUmVzZXJ2ZSgpOworICAgIHB0cmRpZmZfdCBob3N0
Wm9uZVNpemUgPSBPcHRpb25zOjpob3N0Wm9uZVNpemUoKTsKKyAgICBzZXRIb3N0Wm9uZVNpemUo
aG9zdFpvbmVTaXplKTsKKyAgICBncm93U2xvd0Nhc2UoaGlnaEFkZHJlc3MoKSk7CiAjZW5kaWYg
Ly8gRU5BQkxFKExMSU5UX0NfTE9PUCkKIAogICAgIG1fdG9wQ2FsbEZyYW1lID0gMDsKQEAgLTcy
LDE2ICs3NCwxOSBAQCBKU1N0YWNrOjpKU1N0YWNrKFZNJiB2bSkKIEpTU3RhY2s6On5KU1N0YWNr
KCkKIHsKICAgICB2b2lkKiBoaWdoQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0
YXRpY19jYXN0PGNoYXIqPihtX3Jlc2VydmF0aW9uLmJhc2UoKSkgKyBtX3Jlc2VydmF0aW9uLnNp
emUoKSk7Ci0gICAgbV9yZXNlcnZhdGlvbi5kZWNvbW1pdChyZWludGVycHJldF9jYXN0PHZvaWQq
PihtX2NvbW1pdFRvcCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGhpZ2hBZGRyZXNzKSAt
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fY29tbWl0VG9wKSk7Ci0gICAgYWRkVG9Db21t
aXR0ZWRCeXRlQ291bnQoLShyZWludGVycHJldF9jYXN0PGludHB0cl90PihoaWdoQWRkcmVzcykg
LSByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX2NvbW1pdFRvcCkpKTsKKyAgICBsb25nIHNp
emVUb0RlY29tbWl0ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaGlnaEFkZHJlc3MpIC0gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4obV9jb21taXRUb3ApOworICAgIG1fcmVzZXJ2YXRpb24uZGVj
b21taXQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obV9jb21taXRUb3ApLCBzaXplVG9EZWNvbW1p
dCk7CisgICAgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQoLXNpemVUb0RlY29tbWl0KTsKICAgICBt
X3Jlc2VydmF0aW9uLmRlYWxsb2NhdGUoKTsKIH0KIAogYm9vbCBKU1N0YWNrOjpncm93U2xvd0Nh
c2UoUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spCiB7CisgICAgUmVnaXN0ZXIqIG5ld1RvcE9mU3Rh
Y2tXaXRoSG9zdFpvbmUgPSBuZXdUb3BPZlN0YWNrIC0gbV9ob3N0Wm9uZVNpemVJblJlZ2lzdGVy
czsKKwogICAgIC8vIElmIHdlIGhhdmUgYWxyZWFkeSBjb21taXR0ZWQgZW5vdWdoIG1lbW9yeSB0
byBzYXRpc2Z5IHRoaXMgcmVxdWVzdCwKICAgICAvLyBqdXN0IHVwZGF0ZSB0aGUgZW5kIHBvaW50
ZXIgYW5kIHJldHVybi4KLSAgICBpZiAobmV3VG9wT2ZTdGFjayA+PSBtX2NvbW1pdFRvcCkgewor
ICAgIGlmIChuZXdUb3BPZlN0YWNrV2l0aEhvc3Rab25lID49IG1fY29tbWl0VG9wKSB7CiAgICAg
ICAgIHNldFN0YWNrTGltaXQobmV3VG9wT2ZTdGFjayk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTg5LDE1ICs5NCwxNyBAQCBib29sIEpTU3RhY2s6Omdyb3dTbG93Q2FzZShSZWdp
c3RlciogbmV3CiAgICAgLy8gQ29tcHV0ZSB0aGUgY2h1bmsgc2l6ZSBvZiBhZGRpdGlvbmFsIG1l
bW9yeSB0byBjb21taXQsIGFuZCBzZWUgaWYgd2UKICAgICAvLyBoYXZlIGl0IGlzIHN0aWxsIHdp
dGhpbiBvdXIgYnVkZ2V0LiBJZiBub3QsIHdlJ2xsIGZhaWwgdG8gZ3JvdyBhbmQKICAgICAvLyBy
ZXR1cm4gZmFsc2UuCi0gICAgbG9uZyBkZWx0YSA9IHJvdW5kVXBBbGxvY2F0aW9uU2l6ZShyZWlu
dGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdFRvcCkgLSByZWludGVycHJldF9jYXN0PGNoYXIq
PihuZXdUb3BPZlN0YWNrKSwgY29tbWl0U2l6ZSk7Ci0gICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KG1fY29tbWl0VG9wKSAtIGRlbHRhIDw9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1f
dXNlYWJsZVRvcCkpCisgICAgbG9uZyBkZWx0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1f
Y29tbWl0VG9wKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG5ld1RvcE9mU3RhY2tXaXRoSG9z
dFpvbmUpOworICAgIGRlbHRhID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKGNvbW1pdFNpemUs
IGRlbHRhKTsKKyAgICBSZWdpc3RlciogbmV3Q29tbWl0VG9wID0gbV9jb21taXRUb3AgLSAoZGVs
dGEgLyBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICBpZiAobmV3Q29tbWl0VG9wIDwgcmVzZXJ2YXRp
b25Ub3AoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUg
Z3Jvd3RoIGlzIHN0aWxsIHdpdGhpbiBvdXIgYnVkZ2V0LiBHbyBhaGVhZCBhbmQgY29tbWl0CiAg
ICAgLy8gaXQgYW5kIHJldHVybiB0cnVlLgotICAgIG1fcmVzZXJ2YXRpb24uY29tbWl0KHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0VG9wKSAtIGRlbHRhLCBkZWx0YSk7CisgICAgbV9y
ZXNlcnZhdGlvbi5jb21taXQobmV3Q29tbWl0VG9wLCBkZWx0YSk7CiAgICAgYWRkVG9Db21taXR0
ZWRCeXRlQ291bnQoZGVsdGEpOwotICAgIG1fY29tbWl0VG9wID0gcmVpbnRlcnByZXRfY2FzdF9w
dHI8UmVnaXN0ZXIqPihyZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdFRvcCkgLSBkZWx0
YSk7CisgICAgbV9jb21taXRUb3AgPSBuZXdDb21taXRUb3A7CiAgICAgc2V0U3RhY2tMaW1pdChu
ZXdUb3BPZlN0YWNrKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEyNywxMCArMTM0LDExIEBA
IHZvaWQgSlNTdGFjazo6c2FuaXRpemVTdGFjaygpCiAKIHZvaWQgSlNTdGFjazo6cmVsZWFzZUV4
Y2Vzc0NhcGFjaXR5KCkKIHsKLSAgICBwdHJkaWZmX3QgZGVsdGEgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oaGlnaEFkZHJlc3MoKSkgLSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
bV9jb21taXRUb3ApOworICAgIFJlZ2lzdGVyKiBoaWdoQWRkcmVzc1dpdGhIb3N0Wm9uZSA9IGhp
Z2hBZGRyZXNzKCkgLSBtX2hvc3Rab25lU2l6ZUluUmVnaXN0ZXJzOworICAgIHB0cmRpZmZfdCBk
ZWx0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGhpZ2hBZGRyZXNzV2l0aEhvc3Rab25lKSAt
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0VG9wKTsKICAgICBtX3Jlc2VydmF0aW9u
LmRlY29tbWl0KG1fY29tbWl0VG9wLCBkZWx0YSk7CiAgICAgYWRkVG9Db21taXR0ZWRCeXRlQ291
bnQoLWRlbHRhKTsKLSAgICBtX2NvbW1pdFRvcCA9IGhpZ2hBZGRyZXNzKCk7CisgICAgbV9jb21t
aXRUb3AgPSBoaWdoQWRkcmVzc1dpdGhIb3N0Wm9uZTsKIH0KIAogdm9pZCBKU1N0YWNrOjppbml0
aWFsaXplVGhyZWFkaW5nKCkKQEAgLTE0NSwyNCArMTUzLDE2IEBAIHZvaWQgSlNTdGFjazo6YWRk
VG9Db21taXR0ZWRCeXRlQ291bnQobG8KICAgICBjb21taXR0ZWRCeXRlc0NvdW50ICs9IGJ5dGVD
b3VudDsKIH0KIAotdm9pZCBKU1N0YWNrOjplbmFibGVFcnJvclN0YWNrUmVzZXJ2ZSgpCi17Ci0g
ICAgbV91c2VhYmxlVG9wID0gcmVzZXJ2YXRpb25Ub3AoKTsKLX0KLQotdm9pZCBKU1N0YWNrOjpk
aXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKQordm9pZCBKU1N0YWNrOjpzZXRIb3N0Wm9uZVNpemUo
cHRyZGlmZl90IGhvc3Rab25lU2l6ZSkKIHsKLSAgICBjaGFyKiB1c2VhYmxlVG9wID0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4ocmVzZXJ2YXRpb25Ub3AoKSkgKyBjb21taXRTaXplOwotICAgIG1f
dXNlYWJsZVRvcCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFJlZ2lzdGVyKj4odXNlYWJsZVRvcCk7
CisgICAgbV9ob3N0Wm9uZVNpemVJblJlZ2lzdGVycyA9IGhvc3Rab25lU2l6ZSAvIHNpemVvZihS
ZWdpc3Rlcik7CisgICAgUmVnaXN0ZXIqIHVzZWFibGVUb3AgPSByZXNlcnZhdGlvblRvcCgpICsg
bV9ob3N0Wm9uZVNpemVJblJlZ2lzdGVyczsKIAotICAgIC8vIEJ5IHRoZSB0aW1lIHdlIGdldCBo
ZXJlLCB3ZSBhcmUgZ3VhcmFudGVlZCB0byBiZSBkZXN0cnVjdGluZyB0aGUgbGFzdAotICAgIC8v
IEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZSB0aGF0IGVuYWJsZWQgdGhpcyByZXNlcnZl
IGluIHRoZSBmaXJzdAotICAgIC8vIHBsYWNlLiBUaGF0IG1lYW5zIHRoZSBzdGFjayBzcGFjZSBi
ZXlvbmQgbV91c2VhYmxlVG9wIGJlZm9yZSB3ZQotICAgIC8vIGVuYWJsZWQgdGhlIHJlc2VydmUg
d2FzIG5vdCBwcmV2aW91c2x5IGluIHVzZS4gSGVuY2UsIGl0IGlzIHNhZmUgdG8KLSAgICAvLyBz
aHJpbmsgYmFjayB0byB0aGF0IG1fdXNlYWJsZVRvcC4KLSAgICBpZiAobV9lbmQgKyAxIDwgbV91
c2VhYmxlVG9wKSB7Ci0gICAgICAgIEFTU0VSVChtX3RvcENhbGxGcmFtZS0+dG9wT2ZGcmFtZSgp
ID4gbV91c2VhYmxlVG9wKTsKLSAgICAgICAgc2hyaW5rKG1fdXNlYWJsZVRvcCk7CisgICAgaWYg
KG1fZW5kICsgMSA8IHVzZWFibGVUb3ApIHsKKyAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHRo
ZW4gd2UgbXVzdCBoYXZlIGluY3JlYXNlZCB0aGUgaG9zdFpvbmVTaXplLgorICAgICAgICAvLyBS
ZWxlYXNlIHRoZSBub3cgdW51c2VhYmxlIHJlZ2lvbiBiZWxvdyB1c2VhYmxlVG9wLgorICAgICAg
ICBBU1NFUlQobV90b3BDYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSA+IHVzZWFibGVUb3ApOworICAg
ICAgICBzaHJpbmsodXNlYWJsZVRvcCk7CiAgICAgfQogfQogI2VuZGlmIC8vIEVOQUJMRShMTElO
VF9DX0xPT1ApCkBAIC0xOTYsMTYgKzE5Niw0IEBAIHNpemVfdCBKU1N0YWNrOjpjb21taXR0ZWRC
eXRlQ291bnQoKQogI2VuZGlmCiB9CiAKLXZvaWQgSlNTdGFjazo6dXBkYXRlU3RhY2tMaW1pdCgp
Ci17Ci0jaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKLSAgICBpZiAobV92bS5pbnRlcnByZXRlci0+
aXNJbkVycm9ySGFuZGxpbmdNb2RlKCkpCi0gICAgICAgIGVuYWJsZUVycm9yU3RhY2tSZXNlcnZl
KCk7Ci0gICAgZWxzZQotICAgICAgICBkaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKLSNlbmRp
ZgotICAgIGlmIChtX3ZtLnRvcEVudHJ5U2NvcGUpCi0gICAgICAgIG1fdm0udG9wRW50cnlTY29w
ZS0+dXBkYXRlU3RhY2tMaW1pdHMoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHJldmlzaW9uIDE2
MTM3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDggKzgzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBib29sIGVuc3VyZUNhcGFjaXR5Rm9yKFJlZ2lzdGVyKiBuZXdUb3BPZlN0YWNrKTsK
IAotICAgICAgICB2b2lkIHVwZGF0ZVN0YWNrTGltaXQoKTsKLQogICAgICAgICBib29sIGNvbnRh
aW5zQWRkcmVzcyhSZWdpc3RlciogYWRkcmVzcykgeyByZXR1cm4gKGxvd0FkZHJlc3MoKSA8PSBh
ZGRyZXNzICYmIGFkZHJlc3MgPCBoaWdoQWRkcmVzcygpKTsgfQogICAgICAgICBzdGF0aWMgc2l6
ZV90IGNvbW1pdHRlZEJ5dGVDb3VudCgpOwogCkBAIC0xMDksNiArMTA3LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCisg
ICAgICAgIHZvaWQgc2V0SG9zdFpvbmVTaXplKHB0cmRpZmZfdCk7CisKICAgICAgICAgQ2FsbEZy
YW1lKiBwdXNoRnJhbWUoY2xhc3MgQ29kZUJsb2NrKiwgSlNTY29wZSosIGludCBhcmdzQ291bnQs
IEpTT2JqZWN0KiBjYWxsZWUpOwogCiAgICAgICAgIHZvaWQgcG9wRnJhbWUoQ2FsbEZyYW1lKik7
CkBAIC0xNjcsMTcgKzE2NywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRT
dGFja0xpbWl0KFJlZ2lzdGVyKiBuZXdUb3BPZlN0YWNrKTsKICNlbmRpZiAvLyBFTkFCTEUoTExJ
TlRfQ19MT09QKQogCi0gICAgICAgIHZvaWQgZW5hYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKLSAg
ICAgICAgdm9pZCBkaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKLQogICAgICAgICBWTSYgbV92
bTsKICAgICAgICAgQ2FsbEZyYW1lKiYgbV90b3BDYWxsRnJhbWU7CiAjaWYgRU5BQkxFKExMSU5U
X0NfTE9PUCkKICAgICAgICAgUmVnaXN0ZXIqIG1fZW5kOwogICAgICAgICBSZWdpc3RlciogbV9j
b21taXRUb3A7Ci0gICAgICAgIFJlZ2lzdGVyKiBtX3VzZWFibGVUb3A7CiAgICAgICAgIFBhZ2VS
ZXNlcnZhdGlvbiBtX3Jlc2VydmF0aW9uOwogICAgICAgICBSZWdpc3RlciogbV9sYXN0U3RhY2tU
b3A7CisgICAgICAgIHB0cmRpZmZfdCBtX2hvc3Rab25lU2l6ZUluUmVnaXN0ZXJzOwogI2VuZGlm
IC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCiAKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9K
U1N0YWNrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9KU1N0YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTU3LDcgKzE1NywxMyBAQCBpbmxpbmUgdm9pZCBKU1N0YWNrOjpzaHJpbmsoUmVnaXN0ZXIq
IG5lCiAgICAgaWYgKG5ld0VuZCA+PSBtX2VuZCkKICAgICAgICAgcmV0dXJuOwogICAgIHNldFN0
YWNrTGltaXQobmV3VG9wT2ZTdGFjayk7Ci0gICAgaWYgKG1fZW5kID09IGJhc2VPZlN0YWNrKCkg
JiYgKGhpZ2hBZGRyZXNzKCkgLSBtX2NvbW1pdFRvcCkgPj0gbWF4RXhjZXNzQ2FwYWNpdHkpCisg
ICAgLy8gTm90ZTogd2UgYXNzaWduIG1heEV4Y2Vzc0NhcGFjaXR5IHRvIG1heEV4Y2Vzc0luUmVn
aXN0ZXJzIGZpcnN0IGJlZm9yZSB3ZQorICAgIC8vIGNvbXB1dGUgdGhlIHN0ZDo6bWF4KCkgb24g
aXQgdG8gd29yayBhcm91bmQgYSBjbGFuZyBpc3N1ZS4gV2l0aG91dCB0aGlzLAorICAgIC8vIENs
YW5nIHdpbGwgY29tcGxhaW4gYWJvdXQgYW4gdW5yZXNvbHZlZCBsaW5rYWdlIHRvIG1heEV4Y2Vz
c0NhcGFjaXR5IHRob3VnaAorICAgIC8vIGl0IHNob3VsZCBiZSBhbiBpbmxpbmVkIGNvbnN0YW50
LgorICAgIHB0cmRpZmZfdCBtYXhFeGNlc3NJblJlZ2lzdGVycyA9IG1heEV4Y2Vzc0NhcGFjaXR5
OworICAgIG1heEV4Y2Vzc0luUmVnaXN0ZXJzID0gc3RkOjptYXgobWF4RXhjZXNzSW5SZWdpc3Rl
cnMsIG1faG9zdFpvbmVTaXplSW5SZWdpc3RlcnMpOworICAgIGlmIChtX2VuZCA9PSBiYXNlT2ZT
dGFjaygpICYmICgoaGlnaEFkZHJlc3MoKSAtIG1fY29tbWl0VG9wKSA+PSBtYXhFeGNlc3NJblJl
Z2lzdGVycykpCiAgICAgICAgIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAkocmV2
aXNpb24gMTYxMzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIxICs3OCw2IEBAIHZvaWQgcmVsZWFzZUV4
ZWN1dGFibGVNZW1vcnkoVk0mKTsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGppdEFsbG9jYXRp
b25HcmFudWxlID0gMzI7CiAKLWlubGluZSBzaXplX3Qgcm91bmRVcEFsbG9jYXRpb25TaXplKHNp
emVfdCByZXF1ZXN0LCBzaXplX3QgZ3JhbnVsYXJpdHkpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQo
KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBncmFudWxhcml0eSkgPiByZXF1
ZXN0KTsKLSAgICAKLSAgICAvLyBSb3VuZCB1cCB0byBuZXh0IHBhZ2UgYm91bmRhcnkKLSAgICBz
aXplX3Qgc2l6ZSA9IHJlcXVlc3QgKyAoZ3JhbnVsYXJpdHkgLSAxKTsKLSAgICBzaXplID0gc2l6
ZSAmIH4oZ3JhbnVsYXJpdHkgLSAxKTsKLSAgICBBU1NFUlQoc2l6ZSA+PSByZXF1ZXN0KTsKLSAg
ICByZXR1cm4gc2l6ZTsKLX0KLQotfQotCi1uYW1lc3BhY2UgSlNDIHsKLQogdHlwZWRlZiBXVEY6
Ok1ldGFBbGxvY2F0b3JIYW5kbGUgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZTsKIAogI2lmIEVOQUJM
RShBU1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJERkdPU1JFbnRyeS5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAi
RXJyb3IuaCIKKyNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAi
SklULmgiCkBAIC03OSw3ICs4MCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJv
d1N0YWNrT3YKICAgICAgICAgY2FsbGVyRnJhbWUgPSBleGVjOwogCiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVyRnJhbWUpOwotICAgIEludGVycHJldGVyOjpFcnJv
ckhhbmRsaW5nTW9kZSBtb2RlKGNhbGxlckZyYW1lKTsKKyAgICBFcnJvckhhbmRsaW5nU2NvcGUg
ZXJyb3JTY29wZSgqdm0pOwogICAgIHZtLT50aHJvd0V4Y2VwdGlvbihjYWxsZXJGcmFtZSwgY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTYx
MzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0V4
Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTQ2NSw3ICs0NjYsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzdGFja19jaGVjaykKIAogICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwogICAgIHZt
LnRvcENhbGxGcmFtZSA9IGV4ZWM7Ci0gICAgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2Rl
IG1vZGUoZXhlYyk7CisgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0pOwogICAg
IENvbW1vblNsb3dQYXRoczo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0ZVN0
YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3du
RXhjZXB0aW9uKGV4ZWMpOwogICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsMjMgKzEy
MSw2IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKIAogICAgIGNoZWNrU3Rh
Y2tQb2ludGVyQWxpZ25tZW50KHRlbXAyLCAweGJhZDBkYzAxKQogCi0gICAgIyBUaGUganNTdGFj
a0xpbWl0IHdhcyBwcmV2aW91c2x5IGNvbXB1dGVkIGluIFZNRW50cnlTY29wZSB1c2luZyBhbgot
ICAgICMgZXN0aW1hdGVkIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSB2YWx1ZS4gQWRqdXN0IHRoZSBq
c1N0YWNrTGltaXQgYnkKLSAgICAjIHRoZSBkZWx0YSBiZXR3ZWVuIHRoZSBhY3R1YWwgc3RhY2tQ
b2ludGVyQXRWTUVudHJ5IGFuZCB0aGUgZXN0aW1hdGUKLSAgICAjIHRoYXQgd2UgdXNlZCBwcmV2
aW91c2x5LgotICAgIG1vdmUgc3AsIHRlbXAyCi0gICAgc3VicCBWTTo6c3RhY2tQb2ludGVyQXRW
TUVudHJ5W3ZtXSwgdGVtcDIsIHRlbXAyCi0gICAgc3VicCBWTTo6bV9qc1N0YWNrTGltaXRbdm1d
LCB0ZW1wMiwgdGVtcDIKLWlmIENfTE9PUAotZWxzZQotICAgIGJwYWVxIHRlbXAyLCBWTTo6bV9z
dGFja0xpbWl0W3ZtXSwgLm5vTmVlZFRvQ2FwSlNTdGFja1RvTmF0aXZlU3RhY2tMaW1pdAotICAg
IGxvYWRwIFZNOjptX3N0YWNrTGltaXRbdm1dLCB0ZW1wMgotLm5vTmVlZFRvQ2FwSlNTdGFja1Rv
TmF0aXZlU3RhY2tMaW1pdDoKLWVuZAotICAgIHN0b3JlcCB0ZW1wMiwgVk06Om1fanNTdGFja0xp
bWl0W3ZtXQotICAgIG1vdmUgc3AsIHRlbXAyCi0gICAgc3RvcmVwIHRlbXAyLCBWTTo6c3RhY2tQ
b2ludGVyQXRWTUVudHJ5W3ZtXQotCiAgICAgIyBUaGUgc3RhY2sgaG9zdCB6b25lIGVuc3VyZXMg
dGhhdCB3ZSBoYXZlIGFkZXF1YXRlIHNwYWNlIGZvciB0aGUKICAgICAjIFZNRW50cnlTZW50aW5l
bEZyYW1lLiBQcm9jZWVkIHdpdGggYWxsb2NhdGluZyBhbmQgaW5pdGlhbGl6aW5nIHRoZQogICAg
ICMgc2VudGluZWwgZnJhbWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlckVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJFcnJvci5oCShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlckVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgUGFyc2VyRXJyb3JfaAogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFcnJv
ckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiUGFyc2VyVG9rZW5zLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05
NSw3ICs5Niw3IEBAIHN0cnVjdCBQYXJzZXJFcnJvciB7CiAgICAgICAgIGNhc2UgRXZhbEVycm9y
OgogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgbV9t
ZXNzYWdlKTsKICAgICAgICAgY2FzZSBTdGFja092ZXJmbG93OiB7Ci0gICAgICAgICAgICBJbnRl
cnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGUgbW9kZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSk7CisgICAgICAgICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZShnbG9iYWxPYmpl
Y3QtPnZtKCkpOwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihn
bG9iYWxPYmplY3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgT3V0T2ZNZW1vcnk6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAJKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlUHJvZmlsaW5nLmgiCiAjaW5jbHVkZSAi
Q29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29w
ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMTkzLDcgKzE5NCw3IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2sKICAgICBpbnQgc2xvdHNUb0Fk
ZCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXIt
PnN0YWNrKCksIENvZGVGb3JDYWxsKTsKICAgICBpZiAoc2xvdHNUb0FkZCA8IDApIHsKICAgICAg
ICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7Ci0gICAgICAgIEludGVycHJldGVyOjpFcnJv
ckhhbmRsaW5nTW9kZSBtb2RlKGV4ZWMpOworICAgICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJy
b3JTY29wZShleGVjLT52bSgpKTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjppbnRlcnByZXRl
clRocm93SW5DYWxsZXIoZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAg
ICAgICAgUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSkpLCBleGVjKTsKICAgICB9CkBAIC0yMDYsNyArMjA3LDcgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eQogICAgIGludCBzbG90c1RvQWRkID0gQ29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29k
ZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKHNsb3RzVG9BZGQgPCAwKSB7CiAgICAgICAgIGV4ZWMg
PSBleGVjLT5jYWxsZXJGcmFtZSgpOwotICAgICAgICBJbnRlcnByZXRlcjo6RXJyb3JIYW5kbGlu
Z01vZGUgbW9kZShleGVjKTsKKyAgICAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUo
ZXhlYy0+dm0oKSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6aW50ZXJwcmV0ZXJUaHJvd0lu
Q2FsbGVyKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAgICAgICAgIFJF
VFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwg
ZXhlYyk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JI
YW5kbGluZ1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckhhbmRsaW5nU2NvcGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUu
aCIKKworI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworRXJyb3JIYW5kbGluZ1Njb3BlOjpFcnJvckhhbmRsaW5nU2NvcGUoVk0mIHZtKQor
ICAgIDogbV92bSh2bSkKKyAgICAsIG1fcHJldlN0YWNrTGltaXQodm0uc3RhY2tMaW1pdCgpKQor
eworICAgIG1fdm0uc2V0U3RhY2tMaW1pdFdpdGhIb3N0Wm9uZVNpemUoT3B0aW9uczo6ZXJyb3JN
b2RlSG9zdFpvbmVTaXplKCkpOworfQorCitFcnJvckhhbmRsaW5nU2NvcGU6On5FcnJvckhhbmRs
aW5nU2NvcGUoKQoreworICAgIG1fdm0uc2V0U3RhY2tMaW1pdChtX3ByZXZTdGFja0xpbWl0KTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckhhbmRsaW5nU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBFcnJvckhhbmRsaW5nU2NvcGVfaAorI2RlZmluZSBFcnJvckhh
bmRsaW5nU2NvcGVfaAorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVk07CisKK2NsYXNzIEVy
cm9ySGFuZGxpbmdTY29wZSB7CitwdWJsaWM6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgRXJyb3JI
YW5kbGluZ1Njb3BlKFZNJiB2bSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkVycm9ySGFuZGxp
bmdTY29wZSgpOworcHJpdmF0ZToKKyAgICBWTSYgbV92bTsKKyAgICB2b2lkKiBtX3ByZXZTdGFj
a0xpbWl0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFcnJvckhhbmRs
aW5nU2NvcGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkocmV2aXNpb24gMTYxMzcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgorI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkVycm9y
SW5zdGFuY2UuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCkBAIC0xNjAsMTQgKzE2MSwxNiBAQCBKU09iamVjdCogdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKEV4ZWNTdGF0CiAKIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2Rl
IG1vZGUoZXhlYyk7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKKyAgICByZXR1cm4gdm0u
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKIH0K
IAogSlNPYmplY3QqIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG1vZGUoZXhlYyk7
Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmZXhlYy0+dm0oKSkpOworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0pOworICAgIHJldHVy
biB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKCZ2bSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24gMTYxMzcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYg
KzI5MCw3IEBAIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoRXhlY1MKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgU3BpbkxvY2tIb2xkZXIgaG9sZGVyKCZzcGluTG9jayk7CiAjZW5k
aWYKKyAgICBtX3ByZXZKU1N0YWNrTGltaXQgPSBtX3ZtLT5qc1N0YWNrTGltaXQoKTsKICAgICBp
ZiAoYWx3YXlzRHJvcExvY2tzKQogICAgICAgICBtX2xvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2so
KS5kcm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoc3BpbkxvY2spOwogICAgIGVsc2UKQEAgLTMw
Niw2ICszMDcsNyBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKFZNKiB2CiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOwog
I2VuZGlmCisgICAgbV9wcmV2SlNTdGFja0xpbWl0ID0gbV92bS0+anNTdGFja0xpbWl0KCk7CiAg
ICAgaWYgKGFsd2F5c0Ryb3BMb2NrcykKICAgICAgICAgbV9sb2NrQ291bnQgPSBtX3ZtLT5hcGlM
b2NrKCkuZHJvcEFsbExvY2tzVW5jb25kaXRpb25hbGx5KHNwaW5Mb2NrKTsKICAgICBlbHNlCkBA
IC0zMjEsNiArMzIzLDcgQEAgSlNMb2NrOjpEcm9wQWxsTG9ja3M6On5Ecm9wQWxsTG9ja3MoKQog
ICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOwogI2VuZGlmCiAgICAgbV92bS0+
YXBpTG9jaygpLmdyYWJBbGxMb2NrcyhtX2xvY2tDb3VudCwgc3BpbkxvY2spOworICAgIG1fdm0t
PnNldEpTU3RhY2tMaW1pdChtX3ByZXZKU1N0YWNrTGltaXQpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCShyZXZpc2lv
biAxNjEzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBw
cml2YXRlOgogICAgICAgICAgICAgaW50cHRyX3QgbV9sb2NrQ291bnQ7CiAgICAgICAgICAgICBS
ZWZQdHI8Vk0+IG1fdm07CisgICAgICAgICAgICB2b2lkKiBtX3ByZXZKU1N0YWNrTGltaXQ7CiAg
ICAgICAgIH07CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTYxMzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw5IEBAIHR5cGVk
ZWYgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2U7CiAgICAgdihib29sLCB1c2VERkdKSVQsIHRydWUp
IFwKICAgICB2KGJvb2wsIHVzZVJlZ0V4cEpJVCwgdHJ1ZSkgXAogICAgIFwKLSAgICB2KHVuc2ln
bmVkLCBtYXhTdGFja1NpemUsIDQgKiBNQikgXAorICAgIHYodW5zaWduZWQsIG1heFBlclRocmVh
ZFJlY3Vyc2lvblN0YWNrVXNhZ2UsIDQgKiBNQikgXAorICAgIHYodW5zaWduZWQsIGhvc3Rab25l
U2l6ZSwgMTI4ICogS0IpIFwKKyAgICB2KHVuc2lnbmVkLCBlcnJvck1vZGVIb3N0Wm9uZVNpemUs
IDY0ICogS0IpIFwKICAgICBcCiAgICAgdihib29sLCBjcmFzaElmQ2FudEFsbG9jYXRlSklUTWVt
b3J5LCBmYWxzZSkgXAogICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAJKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDggKzIwMCw3IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGpzQXJyYXlDbGFzc0luZm8oSlNBcnJheTo6
aW5mbygpKQogICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbyhKU0ZpbmFsT2JqZWN0OjppbmZv
KCkpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQotICAgICwgZmlyc3RFbnRyeVNj
b3BlKDApCi0gICAgLCB0b3BFbnRyeVNjb3BlKDApCisgICAgLCBlbnRyeVNjb3BlKDApCiAgICAg
LCBtX2VuYWJsZWRQcm9maWxlcigwKQogICAgICwgbV9yZWdFeHBDYWNoZShuZXcgUmVnRXhwQ2Fj
aGUodGhpcykpCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtNTUzLDcgKzU1Miw3IEBA
IHZvaWQgVk06OnJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KCkKIHsKICAgICBwcmVwYXJlVG9EaXNj
YXJkQ29kZSgpOwogICAgIAotICAgIGlmIChmaXJzdEVudHJ5U2NvcGUpIHsKKyAgICBpZiAoZW50
cnlTY29wZSkgewogICAgICAgICBTdGFja1ByZXNlcnZpbmdSZWNvbXBpbGVyIHJlY29tcGlsZXI7
CiAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZShoZWFwKTsKICAgICAg
ICAgSGFzaFNldDxKU0NlbGwqPiByb290czsKQEAgLTcxMyw2ICs3MTIsMjEgQEAgdm9pZCBWTTo6
IGNsZWFyRXhjZXB0aW9uU3RhY2soKQogICAgIG1fZXhjZXB0aW9uU3RhY2sgPSBSZWZDb3VudGVk
QXJyYXk8U3RhY2tGcmFtZT4oKTsKIH0KIAordm9pZCBWTTo6c2V0U3RhY2tMaW1pdFdpdGhIb3N0
Wm9uZVNpemUoc2l6ZV90IGhvc3Rab25lU2l6ZSkKK3sKKyAgICBBU1NFUlQod3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7CisgICAgQVNTRVJUKHN0YWNrUG9pbnRl
ckF0Vk1FbnRyeSk7CisKKyAgICBjaGFyKiBzdGFydE9mU3RhY2sgPSByZWludGVycHJldF9jYXN0
PGNoYXIqPihzdGFja1BvaW50ZXJBdFZNRW50cnkpOworICAgIGNoYXIqIGRlc2lyZWRTdGFja0xp
bWl0ID0gc3RhcnRPZlN0YWNrIC0gT3B0aW9uczo6bWF4UGVyVGhyZWFkUmVjdXJzaW9uU3RhY2tV
c2FnZSgpOworICAgIHZvaWQqIHN0YWNrTGltaXQgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5y
ZWN1cnNpb25MaW1pdEZvcihob3N0Wm9uZVNpemUsIGRlc2lyZWRTdGFja0xpbWl0KTsKKyAgICBz
ZXRTdGFja0xpbWl0KHN0YWNrTGltaXQpOworCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAg
ICBpbnRlcnByZXRlci0+c3RhY2soKS5zZXRIb3N0Wm9uZVNpemUoaG9zdFpvbmVTaXplKTsKKyNl
bmRpZgorfQorCiB2b2lkIHJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KFZNJiB2bSkKIHsKICAgICB2
bS5yZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzUsNiArMzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhlY1N0
YXRlKiwgSlNWYWx1ZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJv
d0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCopOwogICAgICAgICAKKyAgICAgICAgdm9p
ZCBzZXRTdGFja0xpbWl0V2l0aEhvc3Rab25lU2l6ZShzaXplX3QgaG9zdFpvbmVTaXplKTsKKwog
ICAgICAgICB2b2lkKiogYWRkcmVzc09mSlNTdGFja0xpbWl0KCkgeyByZXR1cm4gJm1fanNTdGFj
a0xpbWl0OyB9CiAgICAgICAgIHZvaWQqIGpzU3RhY2tMaW1pdCgpIHsgcmV0dXJuIG1fanNTdGFj
a0xpbWl0OyB9CiAgICAgICAgIHZvaWQgc2V0SlNTdGFja0xpbWl0KHZvaWQqIGxpbWl0KSB7IG1f
anNTdGFja0xpbWl0ID0gbGltaXQ7IH0KQEAgLTQyNyw4ICs0MjksNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJv
b3RzJik7CiAKLSAgICAgICAgVk1FbnRyeVNjb3BlKiBmaXJzdEVudHJ5U2NvcGU7Ci0gICAgICAg
IFZNRW50cnlTY29wZSogdG9wRW50cnlTY29wZTsKKyAgICAgICAgVk1FbnRyeVNjb3BlKiBlbnRy
eVNjb3BlOwogCiAgICAgICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBzdHJpbmdSZWN1cnNpb25DaGVj
a1Zpc2l0ZWRPYmplY3RzOwogCkBAIC01MDcsOCArNTA4LDE3IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1faW5p
dGlhbGl6aW5nT2JqZWN0Q2xhc3M7CiAjZW5kaWYKLSAgICAgICAgdm9pZCogbV9zdGFja0xpbWl0
OwotICAgICAgICB2b2lkKiBtX2pzU3RhY2tMaW1pdDsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdm9pZCogbV9zdGFja0xpbWl0OworICAg
ICAgICAgICAgdm9pZCogbV9qc1N0YWNrTGltaXQ7CisgICAgICAgIH07CisjZWxzZQorICAgICAg
ICB1bmlvbiB7CisgICAgICAgICAgICB2b2lkKiBtX3N0YWNrTGltaXQ7CisgICAgICAgICAgICB2
b2lkKiBtX2pzU3RhY2tMaW1pdDsKKyAgICAgICAgfTsKKyNlbmRpZgogICAgICAgICB2b2lkKiBt
X2xhc3RTdGFja1RvcDsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2VwdGlvbjsKICAgICAgICAgYm9v
bCBtX2luRGVmaW5lT3duUHJvcGVydHk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1
LDcgKzE1LDcgQEAKICAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgogICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKICAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVFRCBUTywKICAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgogICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CkBAIC0zNCwxNjMgKzM0LDM2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBWTUVudHJ5U2NvcGU6OlZN
RW50cnlTY29wZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBt
X3ZtKHZtKQotICAgICwgbV9zdGFjayh3dGZUaHJlYWREYXRhKCkuc3RhY2soKSkKICAgICAsIG1f
Z2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKLSAgICAsIG1fcHJldlN0YWNrVXNhZ2UoMCkKLSAg
ICAsIG1fcHJldlRvcEVudHJ5U2NvcGUodm0udG9wRW50cnlTY29wZSkKLSAgICAsIG1fcHJldlN0
YWNrTGltaXQodm0uc3RhY2tMaW1pdCgpKQotI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQotICAg
ICwgbV9wcmV2SlNTdGFja0xpbWl0KHZtLmpzU3RhY2tMaW1pdCgpKQotI2VuZGlmCi0gICAgLCBt
X3ByZXZMYXN0U3RhY2tUb3Aodm0ubGFzdFN0YWNrVG9wKCkpCi0gICAgLCBtX3ByZXZTdGFja1Bv
aW50ZXJBdFZNRW50cnkodm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5KQotICAgICwgbV9wcmV2VG9w
Q2FsbEZyYW1lKHZtLnRvcENhbGxGcmFtZSkKIHsKICAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgp
LnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7Ci0gICAgQVNTRVJUKCF2bS50b3BDYWxsRnJh
bWUgfHwgY3VycmVudFN0YWNrUG9pbnRlcigpIDw9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHZt
LnRvcENhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpKSk7Ci0KLSAgICAvLyBTdGVwIDE6IENvbXB1dGUg
dGhlIHN0YWNrIHVzYWdlIG9mIHRoZSBsYXN0IFZNIGVudHJ5IGJlZm9yZSB3ZSBpbnN0YWxsCi0g
ICAgLy8gdGhlIGN1cnJlbnQgZW50cnkgc2NvcGUgYmVsb3cuCi0gICAgaWYgKHZtLnRvcEVudHJ5
U2NvcGUpIHsKLSAgICAgICAgY2hhciogdG9wT2ZTdGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KHZtLnRvcENhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpKTsKLSAgICAgICAgbV9wcmV2U3RhY2tV
c2FnZSA9IHZtLnRvcEVudHJ5U2NvcGUtPnN0YWNrVXNhZ2VGb3IodG9wT2ZTdGFjayk7Ci0gICAg
fQotCi0gICAgLy8gU3RlcCAyOiBJbnN0YWxsIHRoZSBjdXJyZW50IGVudHJ5IHNjb3BlLgotICAg
IGlmICghdm0uZmlyc3RFbnRyeVNjb3BlKSB7CisgICAgaWYgKCF2bS5lbnRyeVNjb3BlKSB7CiAj
aWYgRU5BQkxFKEFTU0VNQkxFUikKICAgICAgICAgaWYgKEV4ZWN1dGFibGVBbGxvY2F0b3I6OnVu
ZGVyTWVtb3J5UHJlc3N1cmUoKSkKICAgICAgICAgICAgIHZtLmhlYXAuZGVsZXRlQWxsQ29tcGls
ZWRDb2RlKCk7CiAjZW5kaWYKLSAgICAgICAgdm0uZmlyc3RFbnRyeVNjb3BlID0gdGhpczsKKyAg
ICAgICAgdm0uZW50cnlTY29wZSA9IHRoaXM7CiAKICAgICAgICAgLy8gUmVzZXQgdGhlIGRhdGUg
Y2FjaGUgYmV0d2VlbiBKUyBpbnZvY2F0aW9ucyB0byBmb3JjZSB0aGUgVk0gdG8KICAgICAgICAg
Ly8gb2JzZXJ2ZSB0aW1lIHhvbmUgY2hhbmdlcy4KICAgICAgICAgdm0ucmVzZXREYXRlQ2FjaGUo
KTsKICAgICB9Ci0gICAgdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gMDsKLSAgICB2bS50b3BF
bnRyeVNjb3BlID0gdGhpczsKKworICAgIGlmICghbV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkp
CisgICAgICAgIG1fdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gdGhpczsKIAogICAgIC8vIENs
ZWFyIHRoZSBjYXB0dXJlZCBleGNlcHRpb24gc3RhY2sgYmV0d2VlbiBlbnRyaWVzCiAgICAgdm0u
Y2xlYXJFeGNlcHRpb25TdGFjaygpOwogCi0gICAgdm0uc2V0TGFzdFN0YWNrVG9wKG1fc3RhY2su
b3JpZ2luKCkpOwotCi0gICAgLy8gU3RlcCAzOiBDb21wdXRlIHRoZSBzdGFjayBsaW1pdCB1c2lu
ZyB0aGUgaW5zdGFsbGVkIGVudHJ5IHNjb3BlLgotICAgIHVwZGF0ZVN0YWNrTGltaXRzKCk7Cisg
ICAgdm0uc2V0U3RhY2tMaW1pdFdpdGhIb3N0Wm9uZVNpemUoT3B0aW9uczo6aG9zdFpvbmVTaXpl
KCkpOwogfQogCiBWTUVudHJ5U2NvcGU6On5WTUVudHJ5U2NvcGUoKQogewotICAgIGlmIChtX3Zt
LmZpcnN0RW50cnlTY29wZSA9PSB0aGlzKQotICAgICAgICBtX3ZtLmZpcnN0RW50cnlTY29wZSA9
IG51bGxwdHI7Ci0gICAgbV92bS50b3BFbnRyeVNjb3BlID0gbV9wcmV2VG9wRW50cnlTY29wZTsK
LSAgICBtX3ZtLnNldFN0YWNrTGltaXQobV9wcmV2U3RhY2tMaW1pdCk7Ci0jaWYgIUVOQUJMRShM
TElOVF9DX0xPT1ApCi0gICAgbV92bS5zZXRKU1N0YWNrTGltaXQobV9wcmV2SlNTdGFja0xpbWl0
KTsKLSNlbmRpZgotICAgIG1fdm0uc2V0TGFzdFN0YWNrVG9wKG1fcHJldkxhc3RTdGFja1RvcCk7
Ci0gICAgbV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkgPSBtX3ByZXZTdGFja1BvaW50ZXJBdFZN
RW50cnk7Ci0gICAgbV92bS50b3BDYWxsRnJhbWUgPSBtX3ByZXZUb3BDYWxsRnJhbWU7Ci19Ci0K
LXNpemVfdCBWTUVudHJ5U2NvcGU6OnN0YWNrVXNhZ2VGb3IoY2hhciogdG9wT2ZTdGFjaykgY29u
c3QKLXsKLSAgICBzaXplX3QgY3VycmVudFN0YWNrVXNhZ2UgPSAwOwotICAgIEFTU0VSVChtX3Zt
LnN0YWNrUG9pbnRlckF0Vk1FbnRyeSk7Ci0gICAgY2hhciogc3RhcnRPZlN0YWNrID0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4obV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkpOwotICAgIEFTU0VS
VCh0b3BPZlN0YWNrIDw9IHN0YXJ0T2ZTdGFjayk7Ci0gICAgY3VycmVudFN0YWNrVXNhZ2UgPSBz
dGFydE9mU3RhY2sgLSB0b3BPZlN0YWNrOwotCi0gICAgQVNTRVJUKE9wdGlvbnM6Om1heFN0YWNr
U2l6ZSgpID49IG1fcHJldlN0YWNrVXNhZ2UgKyBjdXJyZW50U3RhY2tVc2FnZSk7Ci0gICAgcmV0
dXJuIG1fcHJldlN0YWNrVXNhZ2UgKyBjdXJyZW50U3RhY2tVc2FnZTsKLX0KLQotdm9pZCBWTUVu
dHJ5U2NvcGU6OnVwZGF0ZVN0YWNrTGltaXRzKCkKLXsKLSAgICBBU1NFUlQod3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7Ci0gICAgY2hhciogdG9wT2ZTdGFjayA9
IGN1cnJlbnRTdGFja1BvaW50ZXIoKTsKLQotI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQotICAg
IGNoYXIqIHRvcE9mSlNTdGFjayA9IG1fdm0udG9wQ2FsbEZyYW1lID8gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obV92bS50b3BDYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSkgOiB0b3BPZlN0YWNrOwot
Ci0gICAgLy8gSWYgd2UgaGF2ZSBub3QgcmUtZW50ZXJlZCB0aGUgVk0geWV0IHZpYSBjYWxsVG9K
YXZhU2NyaXB0IC8gY2FsbFRvTmF0aXZlRnVuY3Rpb24sCi0gICAgLy8gdGhlbiBzdGFja1BvaW50
ZXJBdFZNRW50cnkgd2lsbCBub3QgaGF2ZSBiZWVuIHNldCB1cCB5ZXQuIEluc3RlYWQsIHdlJ2xs
Ci0gICAgLy8gY29tcHV0ZSB0aGUgc3RhY2sgbGltaXQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQg
dG9wT2ZKU1N0YWNrIChhcyBhbiBlc3RpbWF0ZQotICAgIC8vIG9mIHN0YWNrUG9pbnRlckF0Vk1F
bnRyeSkuIFdoZW4gd2UgZW50ZXIgY2FsbFRvSmF2YVNjcmlwdCBsYXRlciwgd2UnbGwgYWRqdXN0
Ci0gICAgLy8gdGhlIHN0YWNrIGxpbWl0IHdpdGggdGhlIGRlbHRhIGJldHdlZW4gdGhlIGFjdHVh
bCBzdGFja1BvaW50ZXJBdFZNRW50cnkgYW5kCi0gICAgLy8gdGhlIGVzdGltYXRlIHZhbHVlIHRo
YXQgd2UgdXNlIGhlcmUuCi0gICAgaWYgKCFtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSkKLSAg
ICAgICAgbV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkgPSB0b3BPZkpTU3RhY2s7Ci0KLSAgICB2
b2lkKiBqc1N0YWNrTGltaXQgPSBtX3N0YWNrLnJlY3Vyc2lvbkxpbWl0KHJlcXVpcmVkQ2FwYWNp
dHkodG9wT2ZKU1N0YWNrLCBKU1N0YWNrQ2FwYWNpdHkpKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAg
Y2hhciogc3RhcnRPZlN0YWNrID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV92bS5zdGFja1Bv
aW50ZXJBdFZNRW50cnkpOwotICAgIGNoYXIqIHN0YWNrTGltaXQgPSByZWludGVycHJldF9jYXN0
PGNoYXIqPihqc1N0YWNrTGltaXQpOwotICAgIEFTU0VSVChtX3ByZXZTdGFja1VzYWdlICsgKHN0
YXJ0T2ZTdGFjayAtIHN0YWNrTGltaXQpIDw9IE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgpKTsKLSNl
bmRpZgotICAgIG1fdm0uc2V0SlNTdGFja0xpbWl0KGpzU3RhY2tMaW1pdCk7Ci0KLSAgICAvLyBT
b21lIHNhbml0eSBjaGVja3MgZm9yIG91ciBwb2ludGVycyBpbnRvIHRoZSBzdGFjazoKLSAgICBB
U1NFUlQobV92bS5pbnRlcnByZXRlci0+c3RhY2soKS5jb250YWluc0FkZHJlc3MocmVpbnRlcnBy
ZXRfY2FzdDxSZWdpc3Rlcio+KG1fdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5KSkpOwotICAgIEFT
U0VSVChtX3ZtLmludGVycHJldGVyLT5zdGFjaygpLmNvbnRhaW5zQWRkcmVzcyhyZWludGVycHJl
dF9jYXN0PFJlZ2lzdGVyKj4odG9wT2ZKU1N0YWNrKSkpOwotICAgIEFTU0VSVChjdXJyZW50U3Rh
Y2tQb2ludGVyKCkgPD0gdG9wT2ZKU1N0YWNrKTsKLSAgICBBU1NFUlQodG9wT2ZKU1N0YWNrIDw9
IG1fdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5KTsKLSNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0Nf
TE9PUCkKLQotICAgIHZvaWQqIG5hdGl2ZVN0YWNrTGltaXQgPSBtX3N0YWNrLnJlY3Vyc2lvbkxp
bWl0KHJlcXVpcmVkQ2FwYWNpdHkodG9wT2ZTdGFjaywgTmF0aXZlU3RhY2tDYXBhY2l0eSkpOwot
ICAgIG1fdm0uc2V0U3RhY2tMaW1pdChuYXRpdmVTdGFja0xpbWl0KTsKLX0KLQotY2hhciogVk1F
bnRyeVNjb3BlOjpjdXJyZW50U3RhY2tQb2ludGVyKCkgY29uc3QKLXsKLSAgICBjaGFyKiBwOwot
I2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAgcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KG1fdm0udG9wQ2FsbEZyYW1lLT50b3BPZkZyYW1lKCkpOwotI2Vsc2UKLSAgICBwID0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oJnApOwotI2VuZGlmCi0gICAgcmV0dXJuIHA7Ci19Ci0KLXNpemVf
dCBWTUVudHJ5U2NvcGU6OnJlcXVpcmVkQ2FwYWNpdHkoY2hhciogdG9wT2ZTdGFjaywgQ2FwYWNp
dHlUeXBlIHR5cGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fc3RhY2suaXNHcm93aW5nRG93bndh
cmQoKSk7Ci0KLSAgICBzaXplX3QgZXhjZXNzQ1N0YWNrU2l6ZSA9IDA7Ci0jaWYgIUVOQUJMRShM
TElOVF9DX0xPT1ApCi0gICAgaWYgKHR5cGUgPT0gSlNTdGFja0NhcGFjaXR5KSB7Ci0gICAgICAg
IEFTU0VSVChPcHRpb25zOjptYXhTdGFja1NpemUoKSA+PSBzdGFja1VzYWdlRm9yKHRvcE9mU3Rh
Y2spKTsKLSAgICAgICAgc2l6ZV90IGF2YWlsYWJsZUpTU3RhY2sgPSBPcHRpb25zOjptYXhTdGFj
a1NpemUoKSAtIHN0YWNrVXNhZ2VGb3IodG9wT2ZTdGFjayk7Ci0KLSAgICAgICAgY2hhciogYm90
dG9tT2ZTdGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fc3RhY2sub3JpZ2luKCkpOwot
ICAgICAgICBzaXplX3QgYXZhaWxhYmxlQ1N0YWNrID0gbV9zdGFjay5zaXplKCkgLSAoYm90dG9t
T2ZTdGFjayAtIHRvcE9mU3RhY2spOwotICAgICAgICBpZiAoYXZhaWxhYmxlQ1N0YWNrID4gYXZh
aWxhYmxlSlNTdGFjaykKLSAgICAgICAgICAgIGV4Y2Vzc0NTdGFja1NpemUgPSBhdmFpbGFibGVD
U3RhY2sgLSBhdmFpbGFibGVKU1N0YWNrOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHRvcE9mU3RhY2spOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBBU1NFUlQodHlwZSA9
PSBOYXRpdmVTdGFja0NhcGFjaXR5KTsKLSNlbmRpZgotCi0gICAgLy8gV2UgcmVxdWlyZSBhIHNt
YWxsZXIgc3RhY2sgYnVkZ2V0IGZvciB0aGUgZXJyb3Igc3RhY2suIFRoaXMgaXMgdG8gYWxsb3cK
LSAgICAvLyBzb21lIG1pbmltYWwgSlMgZXhlY3V0aW9uIHRvIHByb2NlZWQgYW5kIGRvIHRoZSB3
b3JrIG9mIHRocm93aW5nIGEgc3RhY2sKLSAgICAvLyBvdmVyZmxvdyBlcnJvciBpZiBuZWVkZWQu
IEluIGNvbnRyYXN0LCBhcmJpdHJhcnkgSlMgY29kZSB3aWxsIHJlcXVpcmUgdGhlCi0gICAgLy8g
bW9yZSBnZW5lcm91cyBzdGFjayBidWRnZXQgaW4gb3JkZXIgdG8gcHJvY2VlZC4KLSAgICAvLwot
ICAgIC8vIFRoZXNlIHNpemVzIHdlcmUgZGVyaXZlZCBmcm9tIHRoZSBzdGFjayB1c2FnZSBvZiBh
IG51bWJlciBvZiBzaXRlcyB3aGVuCi0gICAgLy8gbGF5b3V0IG9jY3VycyB3aGVuIHdlJ3ZlIGFs
cmVhZHkgY29uc3VtZWQgbW9zdCBvZiB0aGUgQyBzdGFjay4KLSAgICBjb25zdCBzaXplX3QgcmVx
dWlyZWRTdGFjayA9IDEyOCAqIEtCOwotICAgIGNvbnN0IHNpemVfdCBlcnJvck1vZGVSZXF1aXJl
ZFN0YWNrID0gNjQgKiBLQjsKLQotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fdm0u
aW50ZXJwcmV0ZXI7Ci0gICAgc2l6ZV90IHJlcXVpcmVkQ2FwYWNpdHkgPSBpbnRlcnByZXRlci0+
aXNJbkVycm9ySGFuZGxpbmdNb2RlKCkgPyBlcnJvck1vZGVSZXF1aXJlZFN0YWNrIDogcmVxdWly
ZWRTdGFjazsKLSAgICByZXF1aXJlZENhcGFjaXR5ICs9IGV4Y2Vzc0NTdGFja1NpemU7Ci0KLSAg
ICBSRUxFQVNFX0FTU0VSVChtX3N0YWNrLnNpemUoKSA+PSByZXF1aXJlZENhcGFjaXR5KTsKLSAg
ICByZXR1cm4gcmVxdWlyZWRDYXBhY2l0eTsgCisgICAgaWYgKG1fdm0uc3RhY2tQb2ludGVyQXRW
TUVudHJ5ID09IHRoaXMpCisgICAgICAgIG1fdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gbnVs
bHB0cjsKKyAgICBpZiAobV92bS5lbnRyeVNjb3BlID09IHRoaXMpCisgICAgICAgIG1fdm0uZW50
cnlTY29wZSA9IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwotCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkocmV2aXNpb24gMTYx
MzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQwLDMzICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgVk1FbnRyeVNjb3BlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB+Vk1FbnRyeVNjb3BlKCk7CiAKLSAgICB2b2lkIHVwZGF0ZVN0YWNrTGltaXRzKCk7CiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFs
T2JqZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgZW51bSBDYXBhY2l0eVR5cGUgewotICAgICAgICBK
U1N0YWNrQ2FwYWNpdHksCi0gICAgICAgIE5hdGl2ZVN0YWNrQ2FwYWNpdHksCi0gICAgfTsKLSAg
ICBzaXplX3QgcmVxdWlyZWRDYXBhY2l0eShjaGFyKiB0b3BPZlN0YWNrLCBDYXBhY2l0eVR5cGUp
IGNvbnN0OwotICAgIGNoYXIqIGN1cnJlbnRTdGFja1BvaW50ZXIoKSBjb25zdDsKLSAgICBzaXpl
X3Qgc3RhY2tVc2FnZUZvcihjaGFyKiB0b3BPZlN0YWNrKSBjb25zdDsKLQogICAgIFZNJiBtX3Zt
OwogICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgbV9zdGFja0NoZWNrUG9pbnQ7Ci0gICAgU3Rh
Y2tCb3VuZHMgbV9zdGFjazsKICAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7Ci0g
ICAgc2l6ZV90IG1fcHJldlN0YWNrVXNhZ2U7Ci0KLSAgICAvLyBUaGUgZm9sbG93aW5nIHBvaW50
ZXJzIG1heSBwb2ludCB0byBhIGRpZmZlcmVudCB0aHJlYWQncyBzdGFjay4KLSAgICBWTUVudHJ5
U2NvcGUqIG1fcHJldlRvcEVudHJ5U2NvcGU7Ci0gICAgdm9pZCogbV9wcmV2U3RhY2tMaW1pdDsK
LSNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKLSAgICB2b2lkKiBtX3ByZXZKU1N0YWNrTGltaXQ7
Ci0jZW5kaWYKLSAgICB2b2lkKiBtX3ByZXZMYXN0U3RhY2tUb3A7Ci0gICAgdm9pZCogbV9wcmV2
U3RhY2tQb2ludGVyQXRWTUVudHJ5OwotICAgIEV4ZWNTdGF0ZSogbV9wcmV2VG9wQ2FsbEZyYW1l
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGFja0Jv
dW5kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgJKHJldmlz
aW9uIDE2MTM3MCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDggQEAKICNpZm5kZWYgU3RhY2tCb3VuZHNfaAogI2RlZmluZSBTdGFj
a0JvdW5kc19oCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKIG5hbWVzcGFjZSBXVEYgewogCiBj
bGFzcyBTdGFja0JvdW5kcyB7CkBAIC02Nyw2ICs2OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgLSBtaW5BdmFpbGFibGVEZWx0YTsKICAg
ICB9CiAKKyAgICB2b2lkKiByZWN1cnNpb25MaW1pdEZvcihzaXplX3QgaG9zdFpvbmVTaXplLCB2
b2lkKiBkZXNpcmVkTGltaXQpIGNvbnN0CisgICAgeworICAgICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CisgICAgICAgIGlmIChpc0dyb3dpbmdEb3dud2FyZCgpKSB7CisgICAgICAgICAgICBjaGFy
KiBib3VuZHNXaXRoSG9zdFpvbmUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgKyBob3N0
Wm9uZVNpemU7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgocmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oZGVzaXJlZExpbWl0KSwgYm91bmRzV2l0aEhvc3Rab25lKTsKKyAgICAgICAgfQorICAg
ICAgICBjaGFyKiBib3VuZHNXaXRoSG9zdFpvbmUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3Vu
ZCkgLSBob3N0Wm9uZVNpemU7CisgICAgICAgIHJldHVybiBzdGQ6Om1pbihyZWludGVycHJldF9j
YXN0PGNoYXIqPihkZXNpcmVkTGltaXQpLCBib3VuZHNXaXRoSG9zdFpvbmUpOworICAgIH0KKwog
ICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fb3JpZ2luICYmIG1fYm91bmQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9F
cnJvckhhbmRsaW5nU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfRXJyb3JIYW5kbGluZ1Njb3BlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
RXJyb3JIYW5kbGluZ1Njb3BlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJvckhhbmRs
aW5nU2NvcGUuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODU5
MSw2ICsxODU5MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVh
ZGVyc1xydW50aW1lXENvbnN0cnVjdERhdGEuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcRGF0ZUluc3RhbmNlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEVycm9yLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEVy
cm9ySGFuZGxpbmdTY29wZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNccnVudGltZVxFcnJvclByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxFeGNlcHRpb25IZWxwZXJzLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1l
XEV4ZWN1dGFibGUuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE2MTM3MCkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwko
d29ya2luZyBjb3B5KQpAQCAtMTI2MzQsNiArMTI2MzQsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxFcnJvci5oIj4KICAgICAgIDxGaWx0
ZXI+Rm9yd2FyZGluZ0hlYWRlcnNccnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxFcnJv
ckhhbmRsaW5nU2NvcGUuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXHJ1bnRp
bWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcRXJyb3JQcm90b3R5cGUuaCI+CiAgICAgICA8Rmls
dGVyPkZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2
aXNpb24gMTYxMzcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPGludGVycHJl
dGVyL0ludGVycHJldGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KICNp
bmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8cnVudGltZS9FcnJvckhhbmRsaW5n
U2NvcGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAt
MTQ5LDcgKzE1MCw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlMK
ICAgICBpZiAoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbikpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZSBtb2RlKGV4
ZWMpOworICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKGV4ZWMtPnZtKCkpOwogCiAg
ICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFj
a0Zyb21FeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxT
dGFja1NpemVUb0NhcHR1cmUpKTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220677</attachid>
            <date>2014-01-08 17:02:59 -0800</date>
            <delta_ts>2014-01-09 09:27:46 -0800</delta_ts>
            <desc>patch 3: with lots of bug fixes and refinements.</desc>
            <filename>bug-126320b.patch</filename>
            <type>text/plain</type>
            <size>71266</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MCBA
QAorMjAxNC0wMS0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
Q1N0YWNrOiBOZWVkIGEgc2VwYXJhdGUgc3RhY2sgbGltaXQgZm9yIHRoZSBKUyBzdGFjayBhbmQg
dGhlIEMgc3RhY2suCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjYzMjAuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXRjaCBpcyBtYWlubHkgdG8gY2hhbmdlIHRoZSB3
YXkgd2UgY29tcHV0ZSB0aGUgc3RhY2sKKyAgICAgICAgbGltaXQgZm9yIEpTIHN0YWNrIGNoZWNr
cy4gUHJldmlvdXNseSwgd2UgdGFsbHkgdXAgdGhlIHN0YWNrIHVzYWdlIHBlcgorICAgICAgICBz
ZXNzaW9uIG9mIFZNIHJlLWVudHJ5IGFzIHRyYWNrZWQgYnkgdGhlIFZNRW50cnlTY29wZSwgYW5k
IHdlIGVuc3VyZSB0aGF0CisgICAgICAgIHRoZSB0b3RhbCB1c2FnZSBkb2VzIG5vdCBleGNlZWQg
T3B0aW9uczo6bWF4U3RhY2tTaXplKCksIGFuZCBvZiBjb3Vyc2UsIGlzCisgICAgICAgIGFsc28g
Y2FwcGVkIGJ5IHRoZSBhbW91bnQgb2YgbmF0aXZlIEMgc3RhY2sgYXZhaWxhYmxlLiBUaGUgdXNh
Z2UgdHJhY2tpbmcKKyAgICAgICAgaGVyZSBkb2VzIG5vdCBjb3VudCBob3N0IC8gbmF0aXZlIGZ1
bmN0aW9uIHN0YWNrIHVzYWdlIGFnYWluc3QgdGhlIG1heAorICAgICAgICBzdGFjayB1c2FnZS4K
KworICAgICAgICBUaGUgbmV3IHdheSBpcyB0byBjb21wdXRlIGEgbGltaXQgYXMgYW4gb2Zmc2V0
IGZyb20gdGhlIFZNRW50cnlTY29wZSBvZgorICAgICAgICB0aGUgZmlyc3QgZW50cnkgaW50byB0
aGUgVk0uIE9wdGlvbnM6Om1heFBlclRocmVhZFJlY3Vyc2lvblN0YWNrVXNhZ2UoKQorICAgICAg
ICB3aWxsIHByb3ZpZGUgdGhhdCBvZmZzZXQuIEFueSBob3N0IC8gbmF0aXZlIGZ1bmN0aW9uIHN0
YWNrIHVzYWdlIGFmdGVyCisgICAgICAgIHdlJ3ZlIGVudGVyZWQgdGhlIFZNIHdpbGwgYmUgY291
bnRlZCBhZ2FpbnN0IHRoZSBtYXggc3RhY2sgdXNhZ2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBz
dXBwbGFudHMgcGFydHMgb3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcgcHJldmlvdXNseSBjb21taXR0
ZWQKKyAgICAgICAgcGF0Y2hlczoKKworICAgICAgICAgICAgcjE2MTEwNDogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjI2NgorICAgICAgICAgICAgICAgICAgICAg
UmVuYW1lIFZNOjplbnRyeVNjb3BlIHRvIGZpcnN0RW50cnlTY29wZS4KKyAgICAgICAgICAgIHIx
NjEyMzI6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjEKKyAg
ICAgICAgICAgICAgICAgICAgIEludHJvZHVjaW5nIE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgpLgor
ICAgICAgICAgICAgcjE2MTE3MjogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNjMzMQorICAgICAgICAgICAgICAgICAgICAgUmVmYWN0b3IgdG8gc3BsaXQgdGhlIHRy
YWNraW5nIG9mIHRoZSBqc1N0YWNrTGltaXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAg
IG5hdGl2ZSBzdGFja0xpbWl0LgorICAgICAgICAgICAgcjE2MTE3NDogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMzNAorICAgICAgICAgICAgICAgICAgICAgSW50
cm9kdWNlIHRyYWNraW5nIG9mIHRoZSB0b3AgVk1FbnRyeVNjb3BlLgorICAgICAgICAgICAgcjE2
MTE3NTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMzNQorICAg
ICAgICAgICAgICAgICAgICAgVGhlIEdDIHNob3VsZCBub3QgYmUgYXNzdW1pbmcgYW55IGxpbWl0
IG9uIHRoZSBzdGFjayBzaXplLgorICAgICAgICAgICAgcjE2MTM2MTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjQ4NworICAgICAgICAgICAgICAgICAgICAgVGhl
IGZpeGVkIHVwIGpzU3RhY2tMaW1pdCBpbiBkb0NhbGxUb0phdmFTY3JpcHQgc2hvdWxkIG5vdAor
ICAgICAgICAgICAgICAgICAgICAgZXhjZWVkIHRoZSBuYXRpdmUgc3RhY2sgbGltaXQuCisgICAg
ICAgICAgICByMTYxMTgwOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI2MzIwCisgICAgICAgICAgICAgICAgICAgICBOZWVkIGEgc2VwYXJhdGUgc3RhY2sgbGltaXQg
Zm9yIHRoZSBKUyBzdGFjayBhbmQgdGhlIEMgc3RhY2suCisgICAgICAgICAgICAgICAgICAgICBU
aGlzIHdhcyBmb3IgdGhlIG9sZCB3YXkgb2YgdHJhY2tpbmcgY2h1bmtzIG9mIHN0YWNrIHVzYWdl
CisgICAgICAgICAgICAgICAgICAgICBwZXIgVk1FbnRyeVNjb3BlLgorCisgICAgICAgIERldGFp
bHMgb2YgdGhpcyBwYXRjaDoKKworICAgICAgICAxLiBSZW5hbWVkIFZNOjpmaXJzdEVudHJ5U2Nv
cGUgYmFjayB0byBWTTo6ZW50cnlTY29wZS4KKyAgICAgICAgICAgUmVtb3ZlZCB0aGUgdHJhY2tp
bmcgb2YgdG9wRW50cnlTY29wZSBhbmQgcmVsYXRlZCBjb2RlLgorCisgICAgICAgIDIuIFJlaW5z
dGF0ZSBhbiBhc3NlcnRpb24gdGhhdCB0aGUgQ29uc2VydmF0aXZlUm9vdHMgc3BhbiBzaXplIHNo
b3VsZAorICAgICAgICAgICBub3QgZXhjZWVkIHRoZSBzaXplIG9mIHRoZSBuYXRpdmUgQyBzdGFj
ay4KKworICAgICAgICAzLiBSZW5hbWVkIE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgpIHRvIG1heFBl
clRocmVhZFJlY3Vyc2lvblN0YWNrVXNhZ2UoKS4KKyAgICAgICAgICAgQWRkZWQgT3B0aW9uczo6
aG9zdFpvbmVTaXplKCkgYW5kIE9wdGlvbnM6OmVycm9yTW9kZUhvc3Rab25lU2l6ZSgpLgorCisg
ICAgICAgIDQuIFRoZSBWTSBub3cgdHJhY2tzIGl0cyBjdXJyZW50IGhvc3Rab25lU2l6ZSBhbmQg
c3RhY2sgbGltaXRzLgorICAgICAgICAgICBWTTo6bV9zdGFja0xpbWl0IGlzIGNvbXB1dGVkIHdo
ZW4gdGhlIGhvc3Rab25lU2l6ZSBpcyBzZXQgdmlhCisgICAgICAgICAgIFZNOjp1cGRhdGVTdGFj
a0xpbWl0V2l0aEhvc3Rab25lU2l6ZSgpLgorCisgICAgICAgICAgIEluIHRoZSBDIExvb3AgTExJ
TlQgY2FzZSwgdGhlIFZNIGFsc28gcHJvdmlkZXMgYSBzZXRKU1N0YWNrTGltaXQoKQorICAgICAg
ICAgICBzaW5jZSBWTTo6bV9zdGFja0xpbWl0IGFuZCBWTTo6bV9qc1N0YWNrTGltaXQgYXJlIDIg
ZGlmZmVyZW50IHZhbHVlcworICAgICAgICAgICBpbiB0aGF0IGNhc2UuCisKKyAgICAgICAgNS4g
UmVwbGFjZWQgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIHdpdGggRXJyb3JIYW5kbGlu
Z1Njb3BlLgorICAgICAgICAgICBUaGUgRXJyb3JIYW5kbGluZ1Njb3BlIGNvbnN0cnVjdG9yIHdp
bGwgc2V0IHRoZSBWTSBob3N0IHpvbmUgc2l6ZSB0bworICAgICAgICAgICBPcHRpb25zOjplcnJv
ck1vZGVIb3N0Wm9uZVNpemUoKSwgYW5kIHJlc3RvcmUgdGhlIHByZXZpb3VzIGhvc3Qgem9uZQor
ICAgICAgICAgICBzaXplLgorCisgICAgICAgICAgIFRoZSBkZXN0cnVjdG9yIGZvciBFcnJvckhh
bmRsaW5nU2NvcGUgd2lsbCByZXN0b3JlIHRoZSBwcmV2aW91cyBzdGFjaworICAgICAgICAgICBs
aW1pdC4gV2UgY2FuIGVudGVyIG11bHRpcGxlIEVycm9ySGFuZGxpbmdTY29wZXMuIE9ubHkgdGhl
IGRlc3RydWN0aW9uCisgICAgICAgICAgIG9mIHRoZSB2ZXJ5IGZpcnN0IG9uZSB3aWxsIHJlc3Rp
cmUgdGhlIHN0YWNrIGxpbWl0IHdpdGggdGhlIG5vbi1lcnJvcgorICAgICAgICAgICBtb2RlIGhv
c3Qgem9uZS4KKworICAgICAgICA2LiBMTElOVCBDIGxvb3AgSlNTdGFjayBjaGFuZ2VzOgorICAg
ICAgICAgICA2LjEgUmVwbGFjZWQgY2FsbHMgdG8gcm91bmRVcFRvQWxsb2NhdGlvblNpemUoKSB3
aXRoIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigpLgorICAgICAgICAgICAgICAgcm91bmRVcFRv
QWxsb2NhdGlvblNpemUoKSBpcyByZWR1bmRhbnQgYW5kIGlzIG5vdyByZW1vdmVkLgorCisgICAg
ICAgICAgIDYuMiBSZW1vdmVkIGVuYWJsZS9kaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKSBhbmQg
dXBkYXRlU3RhY2tMaW1pdCgpLgorICAgICAgICAgICAgICAgVGhlaXIgZnVuY3Rpb24gaXMgbm93
IGhhbmRsZWQgYnkgSlNTdGFjazo6c2V0SG9zdFpvbmVTaXplKCkuCisKKyAgICAgICAgICAgNi4z
IEFkZGVkIGFjY291bnRpbmcgZm9yIGEgaG9zdCB6b25lIGluIHRoZSBMTElOVCBDIGxvb3AgSlNT
dGFjay4KKyAgICAgICAgICAgICAgIFRoaXMgaW5jbHVkZXMgZ3Jvd2luZyB0aGUgSlMgc3RhY2sg
dG8gYWxsb3cgc3BhY2UgZm9yIHRoZSBob3N0IHpvbmUKKyAgICAgICAgICAgICAgIHdoZW5ldmVy
IHRoZSBob3N0IHpvbmUgc2l6ZSBpcyBhZGp1c3RlZCB2aWEgSlNTdGFjazo6c2V0SG9zdFpvbmVT
aXplKCkuCisKKyAgICAgICAgICAgICAgIE5vdGU6IHRob3VnaCBzZXRIb3N0Wm9uZVNpemUoKSBp
cyBiYXNlZCBvbiBkaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKSwKKyAgICAgICAgICAgICAgIHdl
IGRvbid0IHJldGFpbiB0aGUgbG9naWMgdG8gc2hyaW5rIHRoZSBzdGFjayB0aGVyZS4gVGhhdCBs
b2dpYyB3YXMKKyAgICAgICAgICAgICAgIGFsd2F5cyBkZWFkIGNvZGU6IHdlIG9ubHkgY2FsbCBz
aHJpbmsoKSBpZiBtX2VuZCArIDEgPCBtX3VzZWFibGVUb3AsCisgICAgICAgICAgICAgICBidXQg
c2hyaW5rKCkgd2lsbCBvbmx5IHNocmluayB0aGUgc3RhY2sgaWYgbV9lbmQgaXMgcG9pbnRpbmcg
dG8gdGhlCisgICAgICAgICAgICAgICBiYXNlIG9mIHRoZSBzdGFjayBpLmUuIHRoZSAyIGNvbmRp
dGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgYW5kCisgICAgICAgICAgICAgICBubyB3b3Jr
IHRvIHNocmluayB0aGUgc3RhY2sgd2lsbCBldmVyIGJlIGRvbmUgaGVyZS4KKworICAgICAgICAg
ICA2LjQgU2luY2Ugd2Ugbm93IHRyYWNrIEpTU3RhY2s6Om1faG9zdFpvbmVTaXplSW5SZWdpc3Rl
cnMsIG1fdXNlYWJsZVRvcAorICAgICAgICAgICAgICAgY2FuIGJlIHJlbW92ZWQuIFdlIGNhbiBh
bHdheXMgY29tcHV0ZSB0aGUgdG9wIG9mIHRoZSB1c2VhYmxlIHBhcnQgb2YKKyAgICAgICAgICAg
ICAgIHRoZSBzdGFjayBieSBhZGRpbmcgdGhlIGhvc3Qgem9uZSBzaXplIHRvIHRoZSByZXNlcnZh
dGlvblRvcCgpLgorCisgICAgICAgICAgIDYuNSBDaGFuZ2UgYWxsIG5vbiBDIGxvb3AgY29kZSB0
byByZWZlcmVuY2UgVk06OnN0YWNrTGltaXQoKSBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICBW
TTo6anNTdGFja0xpbWl0KCkuIFRob3VnaCB0aGUgMiBhcmUgdGhlIHNhbWUgZm9yIG5vbiBDIGxv
b3AgYnVpbGRzLAorICAgICAgICAgICAgICAgdGhpcyBtYWtlcyBpdCBtb3JlIHN0cmFpZ2h0Zm9y
d2FyZC4gV2Ugbm93IG9ubHkgcmVmZXJlbmNlIHRoZQorICAgICAgICAgICAgICAganNTdGFja0xp
bWl0IGluIDIgY2FzZXM6CisKKyAgICAgICAgICAgICAgIGEuIExMSU5UIGFuZCBKSVQgY29kZSBw
ZXJmb3JtaW5nIHN0YWNrIGNoZWNrcyB3aGVyZSB0aGUgZXhwZWN0IHRoZQorICAgICAgICAgICAg
ICAgICAganNTdGFja0xpbWl0IHRvIGJlIGEgcHNldWRvbnltIGZvciB0aGUgc3RhY2tMaW1pdCBp
biBub24gQyBsb29wCisgICAgICAgICAgICAgICAgICBidWlsZC4KKworICAgICAgICAgICAgICAg
Yi4gSW4gdGhlIEMgbG9vcCBidWlsZCwgdGhlIEpTU3RhY2sgaXRzZWxmIHNldHMgVk06Om1fanNT
dGFja0xpbWl0KCkKKyAgICAgICAgICAgICAgICAgIHdoZW4gaXQgYWRqdXN0cyBpdHMgaG9zdCB6
b25lIHNpemUuCisKKyAgICAgICAgICAgICAgIEluIGFsbCBvdGhlciBjYXNlcywgd2Ugd29yayBk
aXJlY3RseSB3aXRoIFZNOjpzdGFja0xpbWl0KCkuCisKKyAgICAgICAgNy4gU2ltcGxpZnkgdGhl
IHRyYWNraW5nIG9mIFZNOjpzdGFja1BvaW50ZXJBdFZNRW50cnkuIFdlIG5vdyBzZXQKKyAgICAg
ICAgICAgVk06OnN0YWNrUG9pbnRlckF0Vk1FbnRyeSB3aGVuIHdlIGluc3RhbGwgYSBWTUVudHJ5
U2NvcGUgaWYgYW5kIG9ubHkgaWYKKyAgICAgICAgICAgaXQgaXNuJ3QgYWxyZWFkeSBzZXQuCisK
KyAgICAgICAgICAgV2hlbiB3ZSBkcm9wIHRoZSBBUEkgbG9ja3MsIHdlJ2xsIHNhdmUgdGhlIGN1
cnJlbnQgc3RhY2tQb2ludGVyQXRWTUVudHJ5CisgICAgICAgICAgIGFuZCBzdGFjayBsaW1pdCB2
YWx1ZSwgYW5kIGNsZWFyIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSB0byBhbGxvdyBhIG5ldworICAg
ICAgICAgICB0aHJlYWQgYWNxdWlyaW5nIHRoZSBBUEkgbG9ja3MgdG8gcmUtc2V0IGl0IHdoZW4g
aXQgaW5zdGFsbHMgYSBWTUVudHJ5U2NvcGUuCisgICAgICAgICAgIFdoZW4gd2UgcmUtYWNxdWly
ZSB0aGUgQVBJIGxvY2tzIGFnYWluLCB3ZSdsbCByZXN0b3JlIHRoZSBwcmV2aW91c2x5IHNhdmVk
CisgICAgICAgICAgIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSBhbmQgc3RhY2sgbGltaXQuCisKKyAg
ICAgICAgICAgV2l0aCB0aGlzIGNoYW5nZSwgd2UgYWxzbyBubyBsb25nZXIgbmVlZCB0aGUgc3Rh
Y2tQb2ludGVyQXRWTUVudHJ5IGZpeCB1cAorICAgICAgICAgICBjb2RlIGluIGRvQ2FsbFRvSmF2
YVNjcmlwdCgpLiBUaGF0IGNvZGUgaXMgbm93IHJlbW92ZWQuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlY29tcGls
ZUFsbEpTRnVuY3Rpb25zKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHA6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENo
YW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjpkZWxldGVBbGxDb21waWxlZENv
ZGUpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkNhbGxGcmFtZTo6dm1FbnRyeUdsb2JhbE9iamVjdCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHA6CisgICAgICAgIChKU0M6OkpTU3RhY2s6
OkpTU3RhY2spOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjp+SlNTdGFjayk6CisgICAgICAgIChK
U0M6OkpTU3RhY2s6Omdyb3dTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnJlbGVh
c2VFeGNlc3NDYXBhY2l0eSk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnNldEhvc3Rab25lU2l6
ZSk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6Omxvd0FkZHJlc3MpOgorICAgICAgICAqIGludGVy
cHJldGVyL0pTU3RhY2suaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU1N0YWNrOjplbnN1cmVDYXBhY2l0eUZvcik6CisgICAgICAgIChK
U0M6OkpTU3RhY2s6OnNocmluayk6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
aDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAg
ICogcGFyc2VyL1BhcnNlckVycm9yLmg6CisgICAgICAgIChKU0M6OlBhcnNlckVycm9yOjp0b0Vy
cm9yT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAg
ICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySGFuZGxp
bmdTY29wZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpFcnJvckhhbmRsaW5nU2NvcGU6OkVy
cm9ySGFuZGxpbmdTY29wZSk6CisgICAgICAgIChKU0M6OkVycm9ySGFuZGxpbmdTY29wZTo6fkVy
cm9ySGFuZGxpbmdTY29wZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUu
aDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAg
ICAgKEpTQzo6dGhyb3dTdGFja092ZXJmbG93RXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2Nrcyk6Cisg
ICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjp+RHJvcEFsbExvY2tzKToKKyAgICAg
ICAgKiBydW50aW1lL0pTTG9jay5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAo
SlNDOjpWTTo6cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpWTTo6dXBk
YXRlU3RhY2tMaW1pdFdpdGhIb3N0Wm9uZVNpemUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5jcHA6CisgICAgICAgIChKU0M6OlZNRW50
cnlTY29wZTo6Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjp+Vk1F
bnRyeVNjb3BlKToKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5oOgorCiAyMDE0LTAx
LTA3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIENTdGFj
ayBCcmFuY2g6IEFSTTY0IERGRyBwcm9kdWNlcyB0aGUgd3JvbmcgYW5zd2VyIGZvciBYICUgMApA
QCAtMjkyLDYgKzQ2OSw3IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjY0ODcuCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBTYWJvZmYu
CisgICAgICAgIFVwZGF0ZTogdGhpcyBpcyBzdXBwbGFudGVkIGJ5IHRoZSAyMDE0LTAxLTA4IHBh
dGNoIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzIwLgog
CiAgICAgICAgIEluIGRvQ2FsbFRvSmF2YVNjcmlwdCwgd2UgZml4dXAgVk06Om1fanNTdGFja0xp
bWl0IG9uY2Ugd2Uga25vdyB3aGF0IHRoZQogICAgICAgICBzdGFja1BvaW50ZXJBdFZNRW50cnkg
aXMuIEhvd2V2ZXIsIHdlIGFsc28gbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgZml4ZWQKQEAgLTYw
OSw3ICs3ODcsOCBAQAogICAgICAgICBDU3RhY2s6IE5lZWQgYSBzZXBhcmF0ZSBzdGFjayBsaW1p
dCBmb3IgdGhlIEpTIHN0YWNrIGFuZCB0aGUgQyBzdGFjay4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMyMC4KIAotICAgICAgICBOb3QgeWV0IHJl
dmlld2VkLgorICAgICAgICBSZWplY3RlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgVXBk
YXRlOiB0aGlzIGlzIHN1cHBsYW50ZWQgYnkgdGhlIDIwMTQtMDEtMDggcGF0Y2ggZm9yIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjAuCiAKICAgICAgICAgV2l0
aCB0aGlzIHBhdGNoLCB3ZSBub3cgYWNjdXJhdGVseSB0cmFjayBob3cgbXVjaCBKUyBzdGFjayBz
cGFjZSB0aGUKICAgICAgICAgVk0gaGFzIHVzZWQsIGFuZCBjYXAgdGhhdCBhdCB0aGUgdmFsdWUg
c3BlY2lmaWVkIGJ5IE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgpLgpAQCAtNjk0LDcgKzg3Myw4IEBA
CiAgICAgICAgIENTdGFjazogdGhlIEdDIHNob3VsZCBub3QgYmUgYXNzdW1pbmcgYW55IGxpbWl0
IG9uIHRoZSBzdGFjayBzaXplLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI2MzM1LgogCi0gICAgICAgIE5vdCB5ZXQgcmV2aWV3ZWQuCisgICAgICAg
IFJlamVjdGVkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICBVcGRhdGU6IHRoaXMgaXMgc3Vw
cGxhbnRlZCBieSB0aGUgMjAxNC0wMS0wOCBwYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjMyMC4KIAogICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZl
Um9vdHMuY3BwOgogICAgICAgICAoSlNDOjpDb25zZXJ2YXRpdmVSb290czo6Z2VuZXJpY0FkZFNw
YW4pOgpAQCAtNzA1LDYgKzg4NSw3IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjYzMzQuCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCisgICAgICAgIFVwZGF0ZTogdGhpcyBpcyBzdXBwbGFudGVkIGJ5IHRoZSAyMDE0LTAx
LTA4IHBhdGNoIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2
MzIwLgogCiAgICAgICAgIFdoZW4gd2Ugc3RhcnQgbWVhc3VyaW5nIHRoZSBzdGFjayB1c2FnZSBv
ZiBlYWNoIFZNRW50cnlTY29wZSwgd2UnbGwgbmVlZAogICAgICAgICB0byBrbm93IHdoaWNoIFZN
RW50cnlTY29wZSBpcyB0aGUgdG9wIChtb3N0IHJlY2VudCkgb25lLCBub3QganVzdCB0aGUKQEAg
LTczNCw3ICs5MTUsOCBAQAogICAgICAgICBDU3RhY2s6IFJlZmFjdG9yIHRvIHNwbGl0IHRoZSB0
cmFja2luZyBvZiB0aGUganNTdGFja0xpbWl0IGZyb20gdGhlIG5hdGl2ZSBzdGFja0xpbWl0Lgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzMxLgog
Ci0gICAgICAgIE5vdCB5ZXQgcmV2aWV3ZWQuCisgICAgICAgIFJlamVjdGVkIGJ5IEdlb2ZmcmV5
IEdhcmVuLgorICAgICAgICBVcGRhdGU6IHRoaXMgaXMgc3VwcGxhbnRlZCBieSB0aGUgMjAxNC0w
MS0wOCBwYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NjMyMC4KIAogICAgICAgICBQcmV2aW91c2x5LCB3aGVuIHVzaW5nIHRoZSBDIHN0YWNrIGZvciB0
aGUgSlMgc3RhY2ssIFZNOjptX2pzU3RhY2tMaW1pdCBpcyBhIHVuaW9uCiAgICAgICAgIHdpdGgg
Vk06Om1fc3RhY2tMaW1pdC4gV2Ugbm93IHNlcGFyYXRlIHRoZW0gaW50byAyIGRpc3RpbmN0IGZp
ZWxkcyBidXQgaGF2ZW4ndCB5ZXQKQEAgLTc2OSw2ICs5NTEsNyBAQAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzIxLgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICBVcGRhdGU6IHRoaXMgaXMgc3VwcGxhbnRl
ZCBieSB0aGUgMjAxNC0wMS0wOCBwYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjMyMC4KIAogICAgICAgICBXZSBuZWVkIGFuIG9wdGlvbiB0byBsaW1p
dCB0aGUgSlMgc3RhY2sgc2l6ZS4gQ3VycmVudGx5LCB3ZSBqdXN0IGNoYW5nZQogICAgICAgICB0
aGUgSlNTdGFjayBjbGFzcyB0byB1c2UgdGhpcyBsaW1pdC4KQEAgLTc5OSw3ICs5ODIsOCBAQAog
ICAgICAgICBDU3RhY2s6IENvc21ldGljOiByZW5hbWUgVk06OmVudHJ5U2NvcGUgdG8gZmlyc3RF
bnRyeVNjb3BlLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI2MjY2LgogCi0gICAgICAgIE5vdCB5ZXQgcmV2aWV3ZWQuCisgICAgICAgIFJlamVjdGVk
IGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICBVcGRhdGU6IHRoaXMgaXMgc3VwcGxhbnRlZCBi
eSB0aGUgMjAxNC0wMS0wOCBwYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjMyMC4KIAogICAgICAgICBUaGlzIHBhdGNoIGlzIHNvIHRoYXQgd2UgY2Fu
IGRpc3Rpbmd1aXNoIGZpcnN0RW50cnlTY29wZSBmcm9tIHRvcEVudHJ5U2NvcGUKICAgICAgICAg
d2hpY2ggd2lsbCBiZSBpbnRyb2R1Y2VkIGxhdGVyIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjYzMzQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICszMDgsNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRHVtcENvbnRleHQuY3BwCiAgICAgcnVudGltZS9F
cnJvci5jcHAKICAgICBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9F
cnJvckhhbmRsaW5nU2NvcGUuY3BwCiAgICAgcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAogICAg
IHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC04NDUsNiArODQ1LDggQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JJbnN0YW5jZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clByb3RvdHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01
NTAsNiArNTUwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRHVtcENv
bnRleHQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvci5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9yQ29uc3RydWN0
b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvckhhbmRs
aW5nU2NvcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJv
ckluc3RhbmNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJy
b3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxF
eGNlcHRpb25IZWxwZXJzLmNwcCIgLz4KQEAgLTExMjcsNiArMTEyOCw3IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXER1bXBDb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEVycm9yQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JIYW5kbGluZ1Njb3BlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEVycm9ySW5zdGFuY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JQcm90b3R5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRXhjZXB0aW9uSGVscGVycy5oIiAvPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTYx
MzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC01MDcsNiArNTA3
LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9ySGFuZGxpbmdTY29wZS5j
cHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9ySW5zdGFuY2UuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjAzNiw2
ICsyMDM5LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JDb25z
dHJ1Y3Rvci5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvckhhbmRsaW5nU2Nv
cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JJbnN0YW5jZS5oIj4KICAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjczLDYgKzEyNzMsOCBAQAogCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVD
Q0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVBMDg2MjAx
ODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3Bv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkVBMDg2MjExODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUYxODJCN0EwNDAw
RjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFQjU4QzE0MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJv
ckhhbmRsaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVCNThDMTIxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5j
cHAgKi87IH07CisJCUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjU4
QzEzMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUQyODdCMjE1RUM5QTU3MDBE
QTgxNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFRDI4N0IxMTVFQzlBNTcwMERBODE2MSAvKiBMTEludE9wY29kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRDk0RjJF
MTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hk
b2cuY3BwICovOyB9OwogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcx
RTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yNjM1LDYgKzI2MzcsOCBAQAogCQlGRTU5MzJBNjE4M0M1
QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZNRW50cnlTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUEw
ODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCcmVha3BvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclByaW1pdGl2ZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJQcmltaXRpdmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhh
bmRsaW5nU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJy
b3JIYW5kbGluZ1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCNThD
MTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVEMjg3QjExNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T3Bjb2RlLmg7IHBhdGggPSBs
bGludC9MTEludE9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUQ5NEYy
QjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2F0Y2hkb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2F0Y2hkb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTM0NjgsNiArMzQ3Miw4IEBACiAJCQkJQkMzMDQ2MDYwRTFGNDk3RjAwMzIzMkNGIC8qIEVy
cm9yLmggKi8sCiAJCQkJQkMwMkU5MDQwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0
b3IuY3BwICovLAogCQkJCUJDMDJFOTA1MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVj
dG9yLmggKi8sCisJCQkJRkVCNThDMTIxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdT
Y29wZS5jcHAgKi8sCisJCQkJRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxp
bmdTY29wZS5oICovLAogCQkJCUJDMDJFOThBMEUxODNFMzgwMDBGOTI5NyAvKiBFcnJvckluc3Rh
bmNlLmNwcCAqLywKIAkJCQlCQzAyRTk4QjBFMTgzRTM4MDAwRjkyOTcgLyogRXJyb3JJbnN0YW5j
ZS5oICovLAogCQkJCUJDMDJFOTA2MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvclByb3RvdHlwZS5j
cHAgKi8sCkBAIC00Mjk1LDYgKzQzMDEsNyBAQAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUz
NSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTkzMkE4MTgzQzVBMjYw
MEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdF
RTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZF
QjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3QkZGM0MwMTc5ODY4OTQwMDAyRjQ2MiAvKiBERkdGaWx0cmF0aW9uUmVzdWx0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUxMTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUxMzE3QTlDMjRFMDAzNEM3
MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKQEAgLTU0NjUs
NiArNTQ3Miw3IEBACiAJCQkJMEY2Mzk0ODQxNUU0ODExODAwNkE1OTdDIC8qIERGR0FycmF5TW9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q5QTI5NDE3QTBCQzc0MDBFRTI2MTggLyogREZH
QXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcxNENBNDE2RUE5
MkYwMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGRUI1OEMxNDE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3Bl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
YXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0
QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjMxN0Ew
QjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCShyZXZp
c2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKLSNpbmNsdWRl
ICJWTUVudHJ5U2NvcGUuaCIKIAogbmFtZXNwYWNlIHsKIApAQCAtMTk2LDggKzE5NSw4IEBAIHZv
aWQgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFYKIHsKICAgICAvLyBJZiBKYXZh
U2NyaXB0IGlzIHJ1bm5pbmcsIGl0J3Mgbm90IHNhZmUgdG8gcmVjb21waWxlLCBzaW5jZSB3ZSds
bCBlbmQKICAgICAvLyB1cCB0aHJvd2luZyBhd2F5IGNvZGUgdGhhdCBpcyBsaXZlIG9uIHRoZSBz
dGFjay4KLSAgICBBU1NFUlQoIXZtLT5maXJzdEVudHJ5U2NvcGUpOwotICAgIGlmICh2bS0+Zmly
c3RFbnRyeVNjb3BlKQorICAgIEFTU0VSVCghdm0tPmVudHJ5U2NvcGUpOworICAgIGlmICh2bS0+
ZW50cnlTY29wZSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHZtLT5wcmVwYXJlVG9EaXNj
YXJkQ29kZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
Q2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBh
cnNlci5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgotI2luY2x1ZGUgIlZNRW50cnlTY29w
ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAkocmV2aXNpb24gMTYxMzcwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05OSw2ICs5OSw3IEBAIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6OmdlbmVyaWNBZGRT
cGFuKHYKICAgICAgICAgZW5kID0gc3dhcFRlbXA7CiAgICAgfQogCisgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PHNpemVfdD4oc3RhdGljX2Nhc3Q8Y2hhcio+KGVuZCkgLSBzdGF0aWNfY2FzdDxjaGFy
Kj4oYmVnaW4pKSA8IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLnNpemUoKSk7CiAgICAgQVNTRVJU
KGlzUG9pbnRlckFsaWduZWQoYmVnaW4pKTsKICAgICBBU1NFUlQoaXNQb2ludGVyQWxpZ25lZChl
bmQpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE2
MTM3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTEsNyArMjkxLDcgQEAgYm9vbCBIZWFwOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFk
bGluZSkKIC8vIFJ1biBhbGwgcGVuZGluZyBmaW5hbGl6ZXJzIG5vdyBiZWNhdXNlIHdlIHdvbid0
IGdldCBhbm90aGVyIGNoYW5jZS4KIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQog
ewotICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZtLT5maXJzdEVudHJ5U2NvcGUpOworICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3ZtLT5lbnRyeVNjb3BlKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwogCiAgICAgbV9vYmplY3RTcGFjZS5sYXN0
Q2hhbmNlVG9GaW5hbGl6ZSgpOwpAQCAtNjk1LDcgKzY5NSw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRl
QWxsQ29tcGlsZWRDb2RlKCkKIHsKICAgICAvLyBJZiBKYXZhU2NyaXB0IGlzIHJ1bm5pbmcsIGl0
J3Mgbm90IHNhZmUgdG8gZGVsZXRlIGNvZGUsIHNpbmNlIHdlJ2xsIGVuZAogICAgIC8vIHVwIGRl
bGV0aW5nIGNvZGUgdGhhdCBpcyBsaXZlIG9uIHRoZSBzdGFjay4KLSAgICBpZiAobV92bS0+Zmly
c3RFbnRyeVNjb3BlKQorICAgIGlmIChtX3ZtLT5lbnRyeVNjb3BlKQogICAgICAgICByZXR1cm47
CiAKICAgICBmb3IgKEV4ZWN1dGFibGVCYXNlKiBjdXJyZW50ID0gbV9jb21waWxlZENvZGUuaGVh
ZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpKSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24g
MTYxMzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw4ICsxMzAsOCBAQCBKU0dsb2JhbE9iamVjdCogQ2Fs
bEZyYW1lOjp2bUVudHJ5R2xvYmFsCiAKICAgICAvLyBGb3IgYW55IEV4ZWNTdGF0ZSB0aGF0J3Mg
bm90IGEgZ2xvYmFsRXhlYywgdGhlIAogICAgIC8vIGR5bmFtaWMgZ2xvYmFsIG9iamVjdCBtdXN0
IGJlIHNldCBzaW5jZSBjb2RlIGlzIHJ1bm5pbmcKLSAgICBBU1NFUlQodm0oKS5maXJzdEVudHJ5
U2NvcGUpOwotICAgIHJldHVybiB2bSgpLmZpcnN0RW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgQVNTRVJUKHZtKCkuZW50cnlTY29wZSk7CisgICAgcmV0dXJuIHZtKCkuZW50cnlTY29w
ZS0+Z2xvYmFsT2JqZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZp
c2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSwyMSArOTEsNiBAQCB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdN
b2RlOjpFcnJvckhhbmRsaW5nTW9kZShFeGVjU3RhdGUgKmV4ZWMpCi0gICAgOiBtX2ludGVycHJl
dGVyKCpleGVjLT5pbnRlcnByZXRlcigpKQotewotICAgIG1faW50ZXJwcmV0ZXIubV9lcnJvckhh
bmRsaW5nTW9kZVJlZW50cnkrKzsKLSAgICBtX2ludGVycHJldGVyLnN0YWNrKCkudXBkYXRlU3Rh
Y2tMaW1pdCgpOwotfQotCi1JbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGU6On5FcnJvckhh
bmRsaW5nTW9kZSgpCi17Ci0gICAgbV9pbnRlcnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVl
bnRyeS0tOwotICAgIEFTU0VSVChtX2ludGVycHJldGVyLm1fZXJyb3JIYW5kbGluZ01vZGVSZWVu
dHJ5ID49IDApOwotICAgIGlmICghbV9pbnRlcnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVl
bnRyeSkKLSAgICAgICAgbV9pbnRlcnByZXRlci5zdGFjaygpLnVwZGF0ZVN0YWNrTGltaXQoKTsK
LX0KLQogSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGlmICghY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTYxMzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5MCwxNCArMTkwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBWTTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgY2xhc3MgRXJyb3JIYW5kbGluZ01vZGUgewot
ICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBFcnJvckhhbmRs
aW5nTW9kZShFeGVjU3RhdGUqKTsKLSAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5FcnJv
ckhhbmRsaW5nTW9kZSgpOwotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgSW50ZXJwcmV0
ZXImIG1faW50ZXJwcmV0ZXI7Ci0gICAgICAgIH07Ci0KICAgICAgICAgSW50ZXJwcmV0ZXIoVk0g
Jik7CiAgICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKQEAgLTIzNyw4ICsyMjksNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFNhbXBsaW5nVG9vbCogc2FtcGxl
cigpIHsgcmV0dXJuIG1fc2FtcGxlci5nZXQoKTsgfQogCi0gICAgICAgIGJvb2wgaXNJbkVycm9y
SGFuZGxpbmdNb2RlKCkgeyByZXR1cm4gbV9lcnJvckhhbmRsaW5nTW9kZVJlZW50cnk7IH0KLQog
ICAgICAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChDYWxsRnJhbWUqJiwgSlNW
YWx1ZSYpOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1
Z0hvb2tJRCk7CiAgICAgICAgIEpTU3RyaW5nKiBzdGFja1RyYWNlQXNTdHJpbmcoRXhlY1N0YXRl
KiwgVmVjdG9yPFN0YWNrRnJhbWU+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9KU1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAJKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgotI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgorI2luY2x1
ZGUgIk9wdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUwLDE5ICs1MCwxOCBAQCBK
U1N0YWNrOjpKU1N0YWNrKFZNJiB2bSkKICAgICAsIG1fdG9wQ2FsbEZyYW1lKHZtLnRvcENhbGxG
cmFtZSkKICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICwgbV9lbmQoMCkKKyAgICAsIG1f
aG9zdFpvbmVTaXplSW5SZWdpc3RlcnMoMCkKICNlbmRpZgogewogI2lmIEVOQUJMRShMTElOVF9D
X0xPT1ApCi0gICAgc2l6ZV90IGNhcGFjaXR5ID0gT3B0aW9uczo6bWF4U3RhY2tTaXplKCk7Cisg
ICAgc2l6ZV90IGNhcGFjaXR5ID0gT3B0aW9uczo6bWF4UGVyVGhyZWFkUmVjdXJzaW9uU3RhY2tV
c2FnZSgpOwogICAgIEFTU0VSVChjYXBhY2l0eSAmJiBpc1BhZ2VBbGlnbmVkKGNhcGFjaXR5KSk7
CiAKLSAgICBtX3Jlc2VydmF0aW9uID0gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKHJvdW5kVXBB
bGxvY2F0aW9uU2l6ZShjYXBhY2l0eSwgY29tbWl0U2l6ZSksIE9TQWxsb2NhdG9yOjpKU1ZNU3Rh
Y2tQYWdlcyk7CisgICAgbV9yZXNlcnZhdGlvbiA9IFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZShX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2YoY29tbWl0U2l6ZSwgY2FwYWNpdHkpLCBPU0FsbG9jYXRv
cjo6SlNWTVN0YWNrUGFnZXMpOwogICAgIHNldFN0YWNrTGltaXQoaGlnaEFkZHJlc3MoKSk7CiAg
ICAgbV9jb21taXRUb3AgPSBoaWdoQWRkcmVzcygpOwogICAgIAogICAgIG1fbGFzdFN0YWNrVG9w
ID0gYmFzZU9mU3RhY2soKTsKLQotICAgIGRpc2FibGVFcnJvclN0YWNrUmVzZXJ2ZSgpOwogI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCiAKICAgICBtX3RvcENhbGxGcmFtZSA9IDA7CkBA
IC03MSwxNyArNzAsMTkgQEAgSlNTdGFjazo6SlNTdGFjayhWTSYgdm0pCiAjaWYgRU5BQkxFKExM
SU5UX0NfTE9PUCkKIEpTU3RhY2s6On5KU1N0YWNrKCkKIHsKLSAgICB2b2lkKiBoaWdoQWRkcmVz
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jlc2VydmF0
aW9uLmJhc2UoKSkgKyBtX3Jlc2VydmF0aW9uLnNpemUoKSk7Ci0gICAgbV9yZXNlcnZhdGlvbi5k
ZWNvbW1pdChyZWludGVycHJldF9jYXN0PHZvaWQqPihtX2NvbW1pdFRvcCksIHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGhpZ2hBZGRyZXNzKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KG1fY29tbWl0VG9wKSk7Ci0gICAgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQoLShyZWludGVycHJl
dF9jYXN0PGludHB0cl90PihoaWdoQWRkcmVzcykgLSByZWludGVycHJldF9jYXN0PGludHB0cl90
PihtX2NvbW1pdFRvcCkpKTsKKyAgICBwdHJkaWZmX3Qgc2l6ZVRvRGVjb21taXQgPSByZWludGVy
cHJldF9jYXN0PGNoYXIqPihoaWdoQWRkcmVzcygpKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KG1fY29tbWl0VG9wKTsKKyAgICBtX3Jlc2VydmF0aW9uLmRlY29tbWl0KHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KG1fY29tbWl0VG9wKSwgc2l6ZVRvRGVjb21taXQpOworICAgIGFkZFRvQ29tbWl0
dGVkQnl0ZUNvdW50KC1zaXplVG9EZWNvbW1pdCk7CiAgICAgbV9yZXNlcnZhdGlvbi5kZWFsbG9j
YXRlKCk7CiB9CiAKIGJvb2wgSlNTdGFjazo6Z3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKiBuZXdUb3BP
ZlN0YWNrKQogeworICAgIFJlZ2lzdGVyKiBuZXdUb3BPZlN0YWNrV2l0aEhvc3Rab25lID0gbmV3
VG9wT2ZTdGFjayAtIG1faG9zdFpvbmVTaXplSW5SZWdpc3RlcnM7CisKICAgICAvLyBJZiB3ZSBo
YXZlIGFscmVhZHkgY29tbWl0dGVkIGVub3VnaCBtZW1vcnkgdG8gc2F0aXNmeSB0aGlzIHJlcXVl
c3QsCiAgICAgLy8ganVzdCB1cGRhdGUgdGhlIGVuZCBwb2ludGVyIGFuZCByZXR1cm4uCi0gICAg
aWYgKG5ld1RvcE9mU3RhY2sgPj0gbV9jb21taXRUb3ApIHsKKyAgICBpZiAobmV3VG9wT2ZTdGFj
a1dpdGhIb3N0Wm9uZSA+PSBtX2NvbW1pdFRvcCkgewogICAgICAgICBzZXRTdGFja0xpbWl0KG5l
d1RvcE9mU3RhY2spOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC04OSwxNSArOTAs
MTcgQEAgYm9vbCBKU1N0YWNrOjpncm93U2xvd0Nhc2UoUmVnaXN0ZXIqIG5ldwogICAgIC8vIENv
bXB1dGUgdGhlIGNodW5rIHNpemUgb2YgYWRkaXRpb25hbCBtZW1vcnkgdG8gY29tbWl0LCBhbmQg
c2VlIGlmIHdlCiAgICAgLy8gaGF2ZSBpdCBpcyBzdGlsbCB3aXRoaW4gb3VyIGJ1ZGdldC4gSWYg
bm90LCB3ZSdsbCBmYWlsIHRvIGdyb3cgYW5kCiAgICAgLy8gcmV0dXJuIGZhbHNlLgotICAgIGxv
bmcgZGVsdGEgPSByb3VuZFVwQWxsb2NhdGlvblNpemUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bV9jb21taXRUb3ApIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obmV3VG9wT2ZTdGFjayksIGNv
bW1pdFNpemUpOwotICAgIGlmIChyZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdFRvcCkg
LSBkZWx0YSA8PSByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3VzZWFibGVUb3ApKQorICAgIHB0
cmRpZmZfdCBkZWx0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0VG9wKSAtIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG5ld1RvcE9mU3RhY2tXaXRoSG9zdFpvbmUpOworICAgIGRl
bHRhID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKGNvbW1pdFNpemUsIGRlbHRhKTsKKyAgICBS
ZWdpc3RlciogbmV3Q29tbWl0VG9wID0gbV9jb21taXRUb3AgLSAoZGVsdGEgLyBzaXplb2YoUmVn
aXN0ZXIpKTsKKyAgICBpZiAobmV3Q29tbWl0VG9wIDwgcmVzZXJ2YXRpb25Ub3AoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZ3Jvd3RoIGlzIHN0aWxs
IHdpdGhpbiBvdXIgYnVkZ2V0LiBHbyBhaGVhZCBhbmQgY29tbWl0CiAgICAgLy8gaXQgYW5kIHJl
dHVybiB0cnVlLgotICAgIG1fcmVzZXJ2YXRpb24uY29tbWl0KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KG1fY29tbWl0VG9wKSAtIGRlbHRhLCBkZWx0YSk7CisgICAgbV9yZXNlcnZhdGlvbi5jb21t
aXQobmV3Q29tbWl0VG9wLCBkZWx0YSk7CiAgICAgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQoZGVs
dGEpOwotICAgIG1fY29tbWl0VG9wID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UmVnaXN0ZXIqPihy
ZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdFRvcCkgLSBkZWx0YSk7CisgICAgbV9jb21t
aXRUb3AgPSBuZXdDb21taXRUb3A7CiAgICAgc2V0U3RhY2tMaW1pdChuZXdUb3BPZlN0YWNrKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEyNywxMCArMTMwLDExIEBAIHZvaWQgSlNTdGFjazo6
c2FuaXRpemVTdGFjaygpCiAKIHZvaWQgSlNTdGFjazo6cmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCkK
IHsKLSAgICBwdHJkaWZmX3QgZGVsdGEgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaGln
aEFkZHJlc3MoKSkgLSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9jb21taXRUb3ApOwor
ICAgIFJlZ2lzdGVyKiBoaWdoQWRkcmVzc1dpdGhIb3N0Wm9uZSA9IGhpZ2hBZGRyZXNzKCkgLSBt
X2hvc3Rab25lU2l6ZUluUmVnaXN0ZXJzOworICAgIHB0cmRpZmZfdCBkZWx0YSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGhpZ2hBZGRyZXNzV2l0aEhvc3Rab25lKSAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KG1fY29tbWl0VG9wKTsKICAgICBtX3Jlc2VydmF0aW9uLmRlY29tbWl0KG1fY29t
bWl0VG9wLCBkZWx0YSk7CiAgICAgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQoLWRlbHRhKTsKLSAg
ICBtX2NvbW1pdFRvcCA9IGhpZ2hBZGRyZXNzKCk7CisgICAgbV9jb21taXRUb3AgPSBoaWdoQWRk
cmVzc1dpdGhIb3N0Wm9uZTsKIH0KIAogdm9pZCBKU1N0YWNrOjppbml0aWFsaXplVGhyZWFkaW5n
KCkKQEAgLTE0NSwyNSArMTQ5LDEzIEBAIHZvaWQgSlNTdGFjazo6YWRkVG9Db21taXR0ZWRCeXRl
Q291bnQobG8KICAgICBjb21taXR0ZWRCeXRlc0NvdW50ICs9IGJ5dGVDb3VudDsKIH0KIAotdm9p
ZCBKU1N0YWNrOjplbmFibGVFcnJvclN0YWNrUmVzZXJ2ZSgpCi17Ci0gICAgbV91c2VhYmxlVG9w
ID0gcmVzZXJ2YXRpb25Ub3AoKTsKLX0KLQotdm9pZCBKU1N0YWNrOjpkaXNhYmxlRXJyb3JTdGFj
a1Jlc2VydmUoKQordm9pZCBKU1N0YWNrOjpzZXRIb3N0Wm9uZVNpemUoc2l6ZV90IGhvc3Rab25l
U2l6ZSkKIHsKLSAgICBjaGFyKiB1c2VhYmxlVG9wID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
cmVzZXJ2YXRpb25Ub3AoKSkgKyBjb21taXRTaXplOwotICAgIG1fdXNlYWJsZVRvcCA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPFJlZ2lzdGVyKj4odXNlYWJsZVRvcCk7CisgICAgbV9ob3N0Wm9uZVNp
emVJblJlZ2lzdGVycyA9IGhvc3Rab25lU2l6ZSAvIHNpemVvZihSZWdpc3Rlcik7CisgICAgUmVn
aXN0ZXIqIHVzZWFibGVUb3AgPSByZXNlcnZhdGlvblRvcCgpICsgbV9ob3N0Wm9uZVNpemVJblJl
Z2lzdGVyczsKIAotICAgIC8vIEJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLCB3ZSBhcmUgZ3VhcmFu
dGVlZCB0byBiZSBkZXN0cnVjdGluZyB0aGUgbGFzdAotICAgIC8vIEludGVycHJldGVyOjpFcnJv
ckhhbmRsaW5nTW9kZSB0aGF0IGVuYWJsZWQgdGhpcyByZXNlcnZlIGluIHRoZSBmaXJzdAotICAg
IC8vIHBsYWNlLiBUaGF0IG1lYW5zIHRoZSBzdGFjayBzcGFjZSBiZXlvbmQgbV91c2VhYmxlVG9w
IGJlZm9yZSB3ZQotICAgIC8vIGVuYWJsZWQgdGhlIHJlc2VydmUgd2FzIG5vdCBwcmV2aW91c2x5
IGluIHVzZS4gSGVuY2UsIGl0IGlzIHNhZmUgdG8KLSAgICAvLyBzaHJpbmsgYmFjayB0byB0aGF0
IG1fdXNlYWJsZVRvcC4KLSAgICBpZiAobV9lbmQgKyAxIDwgbV91c2VhYmxlVG9wKSB7Ci0gICAg
ICAgIEFTU0VSVChtX3RvcENhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpID4gbV91c2VhYmxlVG9wKTsK
LSAgICAgICAgc2hyaW5rKG1fdXNlYWJsZVRvcCk7Ci0gICAgfQorICAgIGlmIChtX2NvbW1pdFRv
cCA+PSAobV9lbmQgKyAxKSAtIG1faG9zdFpvbmVTaXplSW5SZWdpc3RlcnMpCisgICAgICAgIGdy
b3dTbG93Q2FzZShtX2VuZCArIDEpOwogfQogI2VuZGlmIC8vIEVOQUJMRShMTElOVF9DX0xPT1Ap
CiAKQEAgLTE3MSw3ICsxNjMsNyBAQCB2b2lkIEpTU3RhY2s6OmRpc2FibGVFcnJvclN0YWNrUmVz
ZXJ2ZSgpCiBSZWdpc3RlciogSlNTdGFjazo6bG93QWRkcmVzcygpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4obV92bS5qc1N0YWNrTGltaXQoKSk7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPihtX3ZtLnN0YWNrTGltaXQoKSk7
CiB9CiAKIFJlZ2lzdGVyKiBKU1N0YWNrOjpoaWdoQWRkcmVzcygpIGNvbnN0CkBAIC0xOTYsMTYg
KzE4OCw0IEBAIHNpemVfdCBKU1N0YWNrOjpjb21taXR0ZWRCeXRlQ291bnQoKQogI2VuZGlmCiB9
CiAKLXZvaWQgSlNTdGFjazo6dXBkYXRlU3RhY2tMaW1pdCgpCi17Ci0jaWYgRU5BQkxFKExMSU5U
X0NfTE9PUCkKLSAgICBpZiAobV92bS5pbnRlcnByZXRlci0+aXNJbkVycm9ySGFuZGxpbmdNb2Rl
KCkpCi0gICAgICAgIGVuYWJsZUVycm9yU3RhY2tSZXNlcnZlKCk7Ci0gICAgZWxzZQotICAgICAg
ICBkaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKLSNlbmRpZgotICAgIGlmIChtX3ZtLnRvcEVu
dHJ5U2NvcGUpCi0gICAgICAgIG1fdm0udG9wRW50cnlTY29wZS0+dXBkYXRlU3RhY2tMaW1pdHMo
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSlNTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTgzLDggKzgzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBib29sIGVuc3VyZUNhcGFjaXR5Rm9yKFJlZ2lzdGVyKiBuZXdUb3BPZlN0YWNrKTsK
IAotICAgICAgICB2b2lkIHVwZGF0ZVN0YWNrTGltaXQoKTsKLQogICAgICAgICBib29sIGNvbnRh
aW5zQWRkcmVzcyhSZWdpc3RlciogYWRkcmVzcykgeyByZXR1cm4gKGxvd0FkZHJlc3MoKSA8PSBh
ZGRyZXNzICYmIGFkZHJlc3MgPCBoaWdoQWRkcmVzcygpKTsgfQogICAgICAgICBzdGF0aWMgc2l6
ZV90IGNvbW1pdHRlZEJ5dGVDb3VudCgpOwogCkBAIC0xMDksNiArMTA3LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCisg
ICAgICAgIHZvaWQgc2V0SG9zdFpvbmVTaXplKHNpemVfdCk7CisKICAgICAgICAgQ2FsbEZyYW1l
KiBwdXNoRnJhbWUoY2xhc3MgQ29kZUJsb2NrKiwgSlNTY29wZSosIGludCBhcmdzQ291bnQsIEpT
T2JqZWN0KiBjYWxsZWUpOwogCiAgICAgICAgIHZvaWQgcG9wRnJhbWUoQ2FsbEZyYW1lKik7CkBA
IC0xNjcsMTcgKzE2NywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRTdGFj
a0xpbWl0KFJlZ2lzdGVyKiBuZXdUb3BPZlN0YWNrKTsKICNlbmRpZiAvLyBFTkFCTEUoTExJTlRf
Q19MT09QKQogCi0gICAgICAgIHZvaWQgZW5hYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKLSAgICAg
ICAgdm9pZCBkaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKLQogICAgICAgICBWTSYgbV92bTsK
ICAgICAgICAgQ2FsbEZyYW1lKiYgbV90b3BDYWxsRnJhbWU7CiAjaWYgRU5BQkxFKExMSU5UX0Nf
TE9PUCkKICAgICAgICAgUmVnaXN0ZXIqIG1fZW5kOwogICAgICAgICBSZWdpc3RlciogbV9jb21t
aXRUb3A7Ci0gICAgICAgIFJlZ2lzdGVyKiBtX3VzZWFibGVUb3A7CiAgICAgICAgIFBhZ2VSZXNl
cnZhdGlvbiBtX3Jlc2VydmF0aW9uOwogICAgICAgICBSZWdpc3RlciogbV9sYXN0U3RhY2tUb3A7
CisgICAgICAgIHB0cmRpZmZfdCBtX2hvc3Rab25lU2l6ZUluUmVnaXN0ZXJzOwogI2VuZGlmIC8v
IEVOQUJMRShMTElOVF9DX0xPT1ApCiAKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0
YWNrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzksNyArMzksNyBAQCBpbmxpbmUgYm9vbCBKU1N0YWNrOjplbnN1cmVDYXBhY2l0
eUZvcihSCiAgICAgcmV0dXJuIGdyb3cobmV3VG9wT2ZTdGFjayk7CiAjZWxzZQogICAgIEFTU0VS
VCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKLSAgICByZXR1
cm4gbmV3VG9wT2ZTdGFjayA+PSBtX3ZtLmpzU3RhY2tMaW1pdCgpOworICAgIHJldHVybiBuZXdU
b3BPZlN0YWNrID49IG1fdm0uc3RhY2tMaW1pdCgpOwogI2VuZGlmCiB9CiAKQEAgLTE1Nyw3ICsx
NTcsMTIgQEAgaW5saW5lIHZvaWQgSlNTdGFjazo6c2hyaW5rKFJlZ2lzdGVyKiBuZQogICAgIGlm
IChuZXdFbmQgPj0gbV9lbmQpCiAgICAgICAgIHJldHVybjsKICAgICBzZXRTdGFja0xpbWl0KG5l
d1RvcE9mU3RhY2spOwotICAgIGlmIChtX2VuZCA9PSBiYXNlT2ZTdGFjaygpICYmIChoaWdoQWRk
cmVzcygpIC0gbV9jb21taXRUb3ApID49IG1heEV4Y2Vzc0NhcGFjaXR5KQorICAgIC8vIE5vdGU6
IENsYW5nIGNvbXBsYWlucyBvZiBhbiB1bnJlc29sdmVkIGxpbmthZ2UgdG8gbWF4RXhjZXNzQ2Fw
YWNpdHkgaWYKKyAgICAvLyBpbnZva2Ugc3RkOjptYXgoKSB3aXRoIGl0IGFzIGFuIGFyZ3VtZW50
LiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBmaXJzdAorICAgIC8vIGFzc2lnbiB0aGUgY29uc3Rh
bnQgdG8gYSBsb2NhbCB2YXJpYWJsZSwgYW5kIHVzZSB0aGUgbG9jYWwgaW5zdGVhZC4KKyAgICBw
dHJkaWZmX3QgbWF4RXhjZXNzSW5SZWdpc3RlcnMgPSBtYXhFeGNlc3NDYXBhY2l0eTsKKyAgICBt
YXhFeGNlc3NJblJlZ2lzdGVycyA9IHN0ZDo6bWF4KG1heEV4Y2Vzc0luUmVnaXN0ZXJzLCBtX2hv
c3Rab25lU2l6ZUluUmVnaXN0ZXJzKTsKKyAgICBpZiAobV9lbmQgPT0gYmFzZU9mU3RhY2soKSAm
JiAoaGlnaEFkZHJlc3MoKSAtIG1fY29tbWl0VG9wKSA+PSBtYXhFeGNlc3NJblJlZ2lzdGVycykK
ICAgICAgICAgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCShyZXZpc2lvbiAxNjEz
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNzgsMjEgKzc4LDYgQEAgdm9pZCByZWxlYXNlRXhlY3V0YWJsZU1l
bW9yeShWTSYpOwogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaml0QWxsb2NhdGlvbkdyYW51bGUg
PSAzMjsKIAotaW5saW5lIHNpemVfdCByb3VuZFVwQWxsb2NhdGlvblNpemUoc2l6ZV90IHJlcXVl
c3QsIHNpemVfdCBncmFudWxhcml0eSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVCgoc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIGdyYW51bGFyaXR5KSA+IHJlcXVlc3QpOwotICAg
IAotICAgIC8vIFJvdW5kIHVwIHRvIG5leHQgcGFnZSBib3VuZGFyeQotICAgIHNpemVfdCBzaXpl
ID0gcmVxdWVzdCArIChncmFudWxhcml0eSAtIDEpOwotICAgIHNpemUgPSBzaXplICYgfihncmFu
dWxhcml0eSAtIDEpOwotICAgIEFTU0VSVChzaXplID49IHJlcXVlc3QpOwotICAgIHJldHVybiBz
aXplOwotfQotCi19Ci0KLW5hbWVzcGFjZSBKU0MgewotCiB0eXBlZGVmIFdURjo6TWV0YUFsbG9j
YXRvckhhbmRsZSBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlOwogCiAjaWYgRU5BQkxFKEFTU0VNQkxF
UikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMTYxMzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRGR09T
UkVudHJ5LmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJKSVQuaCIKQEAg
LTc5LDcgKzgwLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgog
ICAgICAgICBjYWxsZXJGcmFtZSA9IGV4ZWM7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsZXJGcmFtZSk7Ci0gICAgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdN
b2RlIG1vZGUoY2FsbGVyRnJhbWUpOworICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3Bl
KCp2bSk7CiAgICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNjEzNzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
Q29tbW9uU2xvd1BhdGhzLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5o
IgorI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgpAQCAtNDY1LDcgKzQ2Niw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2No
ZWNrKQogCiAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAgdm0udG9wQ2FsbEZy
YW1lID0gZXhlYzsKLSAgICBJbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGUgbW9kZShleGVj
KTsKKyAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgQ29tbW9uU2xv
d1BhdGhzOjppbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpKTsKICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24o
ZXhlYyk7CiAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
cmV2aXNpb24gMTYxMzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEyMSwyMyArMTIxLDYgQEAgbWFj
cm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogCiAgICAgY2hlY2tTdGFja1BvaW50ZXJB
bGlnbm1lbnQodGVtcDIsIDB4YmFkMGRjMDEpCiAKLSAgICAjIFRoZSBqc1N0YWNrTGltaXQgd2Fz
IHByZXZpb3VzbHkgY29tcHV0ZWQgaW4gVk1FbnRyeVNjb3BlIHVzaW5nIGFuCi0gICAgIyBlc3Rp
bWF0ZWQgc3RhY2tQb2ludGVyQXRWTUVudHJ5IHZhbHVlLiBBZGp1c3QgdGhlIGpzU3RhY2tMaW1p
dCBieQotICAgICMgdGhlIGRlbHRhIGJldHdlZW4gdGhlIGFjdHVhbCBzdGFja1BvaW50ZXJBdFZN
RW50cnkgYW5kIHRoZSBlc3RpbWF0ZQotICAgICMgdGhhdCB3ZSB1c2VkIHByZXZpb3VzbHkuCi0g
ICAgbW92ZSBzcCwgdGVtcDIKLSAgICBzdWJwIFZNOjpzdGFja1BvaW50ZXJBdFZNRW50cnlbdm1d
LCB0ZW1wMiwgdGVtcDIKLSAgICBzdWJwIFZNOjptX2pzU3RhY2tMaW1pdFt2bV0sIHRlbXAyLCB0
ZW1wMgotaWYgQ19MT09QCi1lbHNlCi0gICAgYnBhZXEgdGVtcDIsIFZNOjptX3N0YWNrTGltaXRb
dm1dLCAubm9OZWVkVG9DYXBKU1N0YWNrVG9OYXRpdmVTdGFja0xpbWl0Ci0gICAgbG9hZHAgVk06
Om1fc3RhY2tMaW1pdFt2bV0sIHRlbXAyCi0ubm9OZWVkVG9DYXBKU1N0YWNrVG9OYXRpdmVTdGFj
a0xpbWl0OgotZW5kCi0gICAgc3RvcmVwIHRlbXAyLCBWTTo6bV9qc1N0YWNrTGltaXRbdm1dCi0g
ICAgbW92ZSBzcCwgdGVtcDIKLSAgICBzdG9yZXAgdGVtcDIsIFZNOjpzdGFja1BvaW50ZXJBdFZN
RW50cnlbdm1dCi0KICAgICAjIFRoZSBzdGFjayBob3N0IHpvbmUgZW5zdXJlcyB0aGF0IHdlIGhh
dmUgYWRlcXVhdGUgc3BhY2UgZm9yIHRoZQogICAgICMgVk1FbnRyeVNlbnRpbmVsRnJhbWUuIFBy
b2NlZWQgd2l0aCBhbGxvY2F0aW5nIGFuZCBpbml0aWFsaXppbmcgdGhlCiAgICAgIyBzZW50aW5l
bCBmcmFtZS4KQEAgLTE2OSw3ICsxNTIsNiBAQCBlbmQKICAgICAjIHVwIHRocm93aW5nIGEgU3Rh
Y2tPdmVyZmxvd0Vycm9yLgogICAgIGVuZAogCi0gICAgc3RvcmVwIDAsIFZNOjpzdGFja1BvaW50
ZXJBdFZNRW50cnlbdm1dCiAgICAgY0NhbGwyKF9sbGludF90aHJvd19zdGFja19vdmVyZmxvd19l
cnJvciwgdm0sIHByb3RvQ2FsbEZyYW1lKQogICAgIGNhbGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgp
CiAgICAgcmV0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJv
ci5oCShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlckVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGFy
c2VyRXJyb3JfaAogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFcnJvckhhbmRsaW5n
U2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2Vy
VG9rZW5zLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05NSw3ICs5Niw3
IEBAIHN0cnVjdCBQYXJzZXJFcnJvciB7CiAgICAgICAgIGNhc2UgRXZhbEVycm9yOgogICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgbV9tZXNzYWdlKTsK
ICAgICAgICAgY2FzZSBTdGFja092ZXJmbG93OiB7Ci0gICAgICAgICAgICBJbnRlcnByZXRlcjo6
RXJyb3JIYW5kbGluZ01vZGUgbW9kZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7CisgICAg
ICAgICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZShnbG9iYWxPYmplY3QtPnZtKCkp
OwogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmpl
Y3QpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgT3V0T2ZNZW1vcnk6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlz
aW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKICNpbmNsdWRlICJDb2RlUHJvZmlsaW5nLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMTkzLDcgKzE5NCw3IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2sKICAgICBpbnQgc2xvdHNUb0FkZCA9IENvbW1v
blNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCks
IENvZGVGb3JDYWxsKTsKICAgICBpZiAoc2xvdHNUb0FkZCA8IDApIHsKICAgICAgICAgZXhlYyA9
IGV4ZWMtPmNhbGxlckZyYW1lKCk7Ci0gICAgICAgIEludGVycHJldGVyOjpFcnJvckhhbmRsaW5n
TW9kZSBtb2RlKGV4ZWMpOworICAgICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZShl
eGVjLT52bSgpKTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjppbnRlcnByZXRlclRocm93SW5D
YWxsZXIoZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAgICAgICAgUkVU
VVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBl
eGVjKTsKICAgICB9CkBAIC0yMDYsNyArMjA3LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NvbnN0cnVjdF9hcml0eQogICAgIGludCBzbG90c1RvQWRkID0gQ29tbW9uU2xvd1BhdGhzOjph
cml0eUNoZWNrRm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNvbnN0
cnVjdCk7CiAgICAgaWYgKHNsb3RzVG9BZGQgPCAwKSB7CiAgICAgICAgIGV4ZWMgPSBleGVjLT5j
YWxsZXJGcmFtZSgpOwotICAgICAgICBJbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGUgbW9k
ZShleGVjKTsKKyAgICAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoZXhlYy0+dm0o
KSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4
ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAgICAgICAgIFJFVFVSTl9UV08o
Yml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Nj
b3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckhhbmRsaW5nU2NvcGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKKworI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
RXJyb3JIYW5kbGluZ1Njb3BlOjpFcnJvckhhbmRsaW5nU2NvcGUoVk0mIHZtKQorICAgIDogbV92
bSh2bSkKK3sKKyAgICBpZiAoIW1fdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5KQorICAgICAgICBt
X3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IHRoaXM7CisgICAgc2l6ZV90IG5ld0hvc3Rab25l
U2l6ZSA9IE9wdGlvbnM6OmVycm9yTW9kZUhvc3Rab25lU2l6ZSgpOworICAgIG1fc2F2ZWRIb3N0
Wm9uZVNpemUgPSBtX3ZtLnVwZGF0ZVN0YWNrTGltaXRXaXRoSG9zdFpvbmVTaXplKG5ld0hvc3Ra
b25lU2l6ZSk7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICBpbnRlcnByZXRlci0+c3Rh
Y2soKS5zZXRIb3N0Wm9uZVNpemUobmV3SG9zdFpvbmVTaXplKTsKKyNlbmRpZgorfQorCitFcnJv
ckhhbmRsaW5nU2NvcGU6On5FcnJvckhhbmRsaW5nU2NvcGUoKQoreworICAgIGlmIChtX3ZtLnN0
YWNrUG9pbnRlckF0Vk1FbnRyeSA9PSB0aGlzKQorICAgICAgICBtX3ZtLnN0YWNrUG9pbnRlckF0
Vk1FbnRyeSA9IG51bGxwdHI7CisgICAgbV92bS51cGRhdGVTdGFja0xpbWl0V2l0aEhvc3Rab25l
U2l6ZShtX3NhdmVkSG9zdFpvbmVTaXplKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAg
IGludGVycHJldGVyLT5zdGFjaygpLnNldEhvc3Rab25lU2l6ZShtX3NhdmVkSG9zdFpvbmVTaXpl
KTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEVycm9ySGFuZGxpbmdTY29wZV9oCisjZGVm
aW5lIEVycm9ySGFuZGxpbmdTY29wZV9oCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsK
KworY2xhc3MgRXJyb3JIYW5kbGluZ1Njb3BlIHsKK3B1YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBFcnJvckhhbmRsaW5nU2NvcGUoVk0mKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+RXJy
b3JIYW5kbGluZ1Njb3BlKCk7Citwcml2YXRlOgorICAgIFZNJiBtX3ZtOworICAgIHNpemVfdCBt
X3NhdmVkSG9zdFpvbmVTaXplOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFcnJvckhhbmRsaW5nU2NvcGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkocmV2aXNpb24gMTYxMzcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2lu
Y2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC0xNjAsMTQgKzE2MSwxNiBAQCBKU09iamVj
dCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0CiAKIEpTT2JqZWN0KiB0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSW50ZXJwcmV0ZXI6OkVycm9y
SGFuZGxpbmdNb2RlIG1vZGUoZXhlYyk7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKKyAg
ICByZXR1cm4gdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMpKTsKIH0KIAogSlNPYmplY3QqIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2Rl
IG1vZGUoZXhlYyk7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmZXhlYy0+dm0oKSkpOworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0p
OworICAgIHJldHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKCZ2bSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24gMTYxMzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjkwLDYgKzI5MCwxMCBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tz
KEV4ZWNTCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcigmc3Bp
bkxvY2spOwogI2VuZGlmCisgICAgbV9zYXZlZEhvc3Rab25lU2l6ZSA9IG1fdm0tPmhvc3Rab25l
U2l6ZSgpOworICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgPSBtX3ZtLT5zdGFja1Bv
aW50ZXJBdFZNRW50cnk7CisgICAgbV92bS0+c3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gbnVsbHB0
cjsKKwogICAgIGlmIChhbHdheXNEcm9wTG9ja3MpCiAgICAgICAgIG1fbG9ja0NvdW50ID0gbV92
bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrc1VuY29uZGl0aW9uYWxseShzcGluTG9jayk7CiAgICAg
ZWxzZQpAQCAtMzA2LDYgKzMxMCwxMCBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExv
Y2tzKFZNKiB2CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcigm
c3BpbkxvY2spOwogI2VuZGlmCisgICAgbV9zYXZlZEhvc3Rab25lU2l6ZSA9IG1fdm0tPmhvc3Ra
b25lU2l6ZSgpOworICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgPSBtX3ZtLT5zdGFj
a1BvaW50ZXJBdFZNRW50cnk7CisgICAgbV92bS0+c3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gbnVs
bHB0cjsKKwogICAgIGlmIChhbHdheXNEcm9wTG9ja3MpCiAgICAgICAgIG1fbG9ja0NvdW50ID0g
bV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrc1VuY29uZGl0aW9uYWxseShzcGluTG9jayk7CiAg
ICAgZWxzZQpAQCAtMzIxLDYgKzMyOSw5IEBAIEpTTG9jazo6RHJvcEFsbExvY2tzOjp+RHJvcEFs
bExvY2tzKCkKICAgICBTcGluTG9ja0hvbGRlciBob2xkZXIoJnNwaW5Mb2NrKTsKICNlbmRpZgog
ICAgIG1fdm0tPmFwaUxvY2soKS5ncmFiQWxsTG9ja3MobV9sb2NrQ291bnQsIHNwaW5Mb2NrKTsK
KworICAgIG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IG1fc2F2ZWRTdGFja1BvaW50ZXJB
dFZNRW50cnk7CisgICAgbV92bS0+dXBkYXRlU3RhY2tMaW1pdFdpdGhIb3N0Wm9uZVNpemUobV9z
YXZlZEhvc3Rab25lU2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDE2MTM3MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAs
NiArMTEwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAg
ICBpbnRwdHJfdCBtX2xvY2tDb3VudDsKICAgICAgICAgICAgIFJlZlB0cjxWTT4gbV92bTsKKyAg
ICAgICAgICAgIHNpemVfdCBtX3NhdmVkSG9zdFpvbmVTaXplOworICAgICAgICAgICAgdm9pZCog
bV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICAgICAgfTsKIAogICAgIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAx
NjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk1LDcgKzk1LDkgQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5n
ZTsKICAgICB2KGJvb2wsIHVzZURGR0pJVCwgdHJ1ZSkgXAogICAgIHYoYm9vbCwgdXNlUmVnRXhw
SklULCB0cnVlKSBcCiAgICAgXAotICAgIHYodW5zaWduZWQsIG1heFN0YWNrU2l6ZSwgNCAqIE1C
KSBcCisgICAgdih1bnNpZ25lZCwgbWF4UGVyVGhyZWFkUmVjdXJzaW9uU3RhY2tVc2FnZSwgNCAq
IE1CKSBcCisgICAgdih1bnNpZ25lZCwgaG9zdFpvbmVTaXplLCAxMjggKiBLQikgXAorICAgIHYo
dW5zaWduZWQsIGVycm9yTW9kZUhvc3Rab25lU2l6ZSwgNjQgKiBLQikgXAogICAgIFwKICAgICB2
KGJvb2wsIGNyYXNoSWZDYW50QWxsb2NhdGVKSVRNZW1vcnksIGZhbHNlKSBcCiAgICAgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTYxMzcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDAsOCArMjAwLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgICwganNBcnJheUNsYXNzSW5mbyhKU0FycmF5OjppbmZvKCkpCiAgICAgLCBqc0ZpbmFsT2Jq
ZWN0Q2xhc3NJbmZvKEpTRmluYWxPYmplY3Q6OmluZm8oKSkKICAgICAsIHNpemVPZkxhc3RTY3Jh
dGNoQnVmZmVyKDApCi0gICAgLCBmaXJzdEVudHJ5U2NvcGUoMCkKLSAgICAsIHRvcEVudHJ5U2Nv
cGUoMCkKKyAgICAsIGVudHJ5U2NvcGUoMCkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKDApCiAg
ICAgLCBtX3JlZ0V4cENhY2hlKG5ldyBSZWdFeHBDYWNoZSh0aGlzKSkKICNpZiBFTkFCTEUoUkVH
RVhQX1RSQUNJTkcpCkBAIC0yMzAsNyArMjI5LDEwIEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigq
dGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsK
LSAgICBzZXRTdGFja0xpbWl0KHN0YWNrLnJlY3Vyc2lvbkxpbWl0KCkpOworICAgIHVwZGF0ZVN0
YWNrTGltaXRXaXRoSG9zdFpvbmVTaXplKE9wdGlvbnM6Omhvc3Rab25lU2l6ZSgpKTsKKyNpZiBF
TkFCTEUoTExJTlRfQ19MT09QKQorICAgIGludGVycHJldGVyLT5zdGFjaygpLnNldEhvc3Rab25l
U2l6ZShPcHRpb25zOjpob3N0Wm9uZVNpemUoKSk7CisjZW5kaWYKICAgICBzZXRMYXN0U3RhY2tU
b3Aoc3RhY2sub3JpZ2luKCkpOwogCiAgICAgLy8gTmVlZCB0byBiZSBjYXJlZnVsIHRvIGtlZXAg
ZXZlcnl0aGluZyBjb25zaXN0ZW50IGhlcmUKQEAgLTU1Myw3ICs1NTUsNyBAQCB2b2lkIFZNOjpy
ZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpCiB7CiAgICAgcHJlcGFyZVRvRGlzY2FyZENvZGUoKTsK
ICAgICAKLSAgICBpZiAoZmlyc3RFbnRyeVNjb3BlKSB7CisgICAgaWYgKGVudHJ5U2NvcGUpIHsK
ICAgICAgICAgU3RhY2tQcmVzZXJ2aW5nUmVjb21waWxlciByZWNvbXBpbGVyOwogICAgICAgICBI
ZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoaGVhcCk7CiAgICAgICAgIEhhc2hTZXQ8
SlNDZWxsKj4gcm9vdHM7CkBAIC03MTMsNiArNzE1LDI0IEBAIHZvaWQgVk06OiBjbGVhckV4Y2Vw
dGlvblN0YWNrKCkKICAgICBtX2V4Y2VwdGlvblN0YWNrID0gUmVmQ291bnRlZEFycmF5PFN0YWNr
RnJhbWU+KCk7CiB9CiAKK3NpemVfdCBWTTo6dXBkYXRlU3RhY2tMaW1pdFdpdGhIb3N0Wm9uZVNp
emUoc2l6ZV90IGhvc3Rab25lU2l6ZSkKK3sKKyAgICBzaXplX3Qgb2xkSG9zdFpvbmVTaXplID0g
bV9ob3N0Wm9uZVNpemU7CisgICAgbV9ob3N0Wm9uZVNpemUgPSBob3N0Wm9uZVNpemU7CisKKyAg
ICB2b2lkKiBzdGFja0xpbWl0OworICAgIGlmIChzdGFja1BvaW50ZXJBdFZNRW50cnkpIHsKKyAg
ICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkp
OworICAgICAgICBjaGFyKiBzdGFydE9mU3RhY2sgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihz
dGFja1BvaW50ZXJBdFZNRW50cnkpOworICAgICAgICBjaGFyKiBkZXNpcmVkU3RhY2tMaW1pdCA9
IHN0YXJ0T2ZTdGFjayAtIE9wdGlvbnM6Om1heFBlclRocmVhZFJlY3Vyc2lvblN0YWNrVXNhZ2Uo
KSArIGhvc3Rab25lU2l6ZTsKKyAgICAgICAgc3RhY2tMaW1pdCA9IHd0ZlRocmVhZERhdGEoKS5z
dGFjaygpLnJlY3Vyc2lvbkxpbWl0KGhvc3Rab25lU2l6ZSwgZGVzaXJlZFN0YWNrTGltaXQpOwor
ICAgIH0gZWxzZQorICAgICAgICBzdGFja0xpbWl0ID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCku
cmVjdXJzaW9uTGltaXQoaG9zdFpvbmVTaXplKTsKKworICAgIHNldFN0YWNrTGltaXQoc3RhY2tM
aW1pdCk7CisgICAgcmV0dXJuIG9sZEhvc3Rab25lU2l6ZTsKK30KKwogdm9pZCByZWxlYXNlRXhl
Y3V0YWJsZU1lbW9yeShWTSYgdm0pCiB7CiAgICAgdm0ucmVsZWFzZUV4ZWN1dGFibGVNZW1vcnko
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTYxMzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAt
Mzc1LDEyICszNzUsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBK
U09iamVjdCopOwogICAgICAgICAKKyAgICAgICAgc2l6ZV90IGhvc3Rab25lU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faG9zdFpvbmVTaXplOyB9CisgICAgICAgIHNpemVfdCB1cGRhdGVTdGFja0xp
bWl0V2l0aEhvc3Rab25lU2l6ZShzaXplX3QgaG9zdFpvbmVTaXplKTsKKwogICAgICAgICB2b2lk
KiogYWRkcmVzc09mSlNTdGFja0xpbWl0KCkgeyByZXR1cm4gJm1fanNTdGFja0xpbWl0OyB9Cisj
aWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgdm9pZCoganNTdGFja0xpbWl0KCkgeyBy
ZXR1cm4gbV9qc1N0YWNrTGltaXQ7IH0KICAgICAgICAgdm9pZCBzZXRKU1N0YWNrTGltaXQodm9p
ZCogbGltaXQpIHsgbV9qc1N0YWNrTGltaXQgPSBsaW1pdDsgfQotCisjZW5kaWYKICAgICAgICAg
dm9pZCogc3RhY2tMaW1pdCgpIHsgcmV0dXJuIG1fc3RhY2tMaW1pdDsgfQotICAgICAgICB2b2lk
IHNldFN0YWNrTGltaXQodm9pZCogbGltaXQpIHsgbV9zdGFja0xpbWl0ID0gbGltaXQ7IH0KKwog
ICAgICAgICBib29sIGlzU2FmZVRvUmVjdXJzZShzaXplX3QgbmVlZGVkU3RhY2tJbkJ5dGVzID0g
MCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5z
dGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwpAQCAtNDI3LDggKzQzMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0
aXZlUm9vdHMmKTsKIAotICAgICAgICBWTUVudHJ5U2NvcGUqIGZpcnN0RW50cnlTY29wZTsKLSAg
ICAgICAgVk1FbnRyeVNjb3BlKiB0b3BFbnRyeVNjb3BlOworICAgICAgICBWTUVudHJ5U2NvcGUq
IGVudHJ5U2NvcGU7CiAKICAgICAgICAgSGFzaFNldDxKU09iamVjdCo+IHN0cmluZ1JlY3Vyc2lv
bkNoZWNrVmlzaXRlZE9iamVjdHM7CiAKQEAgLTQ5NSw2ICs0OTgsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgVk0oVk1UeXBlLCBIZWFwVHlwZSk7CiAgICAgICAgIHN0YXRpYyBWTSomIHNo
YXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygp
OworCisgICAgICAgIHZvaWQgc2V0U3RhY2tMaW1pdCh2b2lkKiBsaW1pdCkgeyBtX3N0YWNrTGlt
aXQgPSBsaW1pdDsgfQorCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKICAgICAgICAgYm9vbCBtX2Nh
blVzZUFzc2VtYmxlcjsKICNlbmRpZgpAQCAtNTA3LDggKzUxMywxOCBAQCBuYW1lc3BhY2UgSlND
IHsKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBt
X2luaXRpYWxpemluZ09iamVjdENsYXNzOwogI2VuZGlmCi0gICAgICAgIHZvaWQqIG1fc3RhY2tM
aW1pdDsKLSAgICAgICAgdm9pZCogbV9qc1N0YWNrTGltaXQ7CisgICAgICAgIHNpemVfdCBtX2hv
c3Rab25lU2l6ZTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICBzdHJ1Y3Qgewor
ICAgICAgICAgICAgdm9pZCogbV9zdGFja0xpbWl0OworICAgICAgICAgICAgdm9pZCogbV9qc1N0
YWNrTGltaXQ7CisgICAgICAgIH07CisjZWxzZQorICAgICAgICB1bmlvbiB7CisgICAgICAgICAg
ICB2b2lkKiBtX3N0YWNrTGltaXQ7CisgICAgICAgICAgICB2b2lkKiBtX2pzU3RhY2tMaW1pdDsK
KyAgICAgICAgfTsKKyNlbmRpZgogICAgICAgICB2b2lkKiBtX2xhc3RTdGFja1RvcDsKICAgICAg
ICAgSlNWYWx1ZSBtX2V4Y2VwdGlvbjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVy
dHk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29w
ZS5jcHAJKHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNRW50cnlTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDE2MyArMzQsMzggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IG1fdm0odm0pCi0gICAgLCBtX3N0YWNrKHd0ZlRo
cmVhZERhdGEoKS5zdGFjaygpKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQot
ICAgICwgbV9wcmV2U3RhY2tVc2FnZSgwKQotICAgICwgbV9wcmV2VG9wRW50cnlTY29wZSh2bS50
b3BFbnRyeVNjb3BlKQotICAgICwgbV9wcmV2U3RhY2tMaW1pdCh2bS5zdGFja0xpbWl0KCkpCi0j
aWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAgLCBtX3ByZXZKU1N0YWNrTGltaXQodm0uanNT
dGFja0xpbWl0KCkpCi0jZW5kaWYKLSAgICAsIG1fcHJldkxhc3RTdGFja1RvcCh2bS5sYXN0U3Rh
Y2tUb3AoKSkKLSAgICAsIG1fcHJldlN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2bS5zdGFja1BvaW50
ZXJBdFZNRW50cnkpCi0gICAgLCBtX3ByZXZUb3BDYWxsRnJhbWUodm0udG9wQ2FsbEZyYW1lKQog
ewogICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgp
KTsKLSAgICBBU1NFUlQoIXZtLnRvcENhbGxGcmFtZSB8fCBjdXJyZW50U3RhY2tQb2ludGVyKCkg
PD0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0udG9wQ2FsbEZyYW1lLT50b3BPZkZyYW1lKCkp
KTsKLQotICAgIC8vIFN0ZXAgMTogQ29tcHV0ZSB0aGUgc3RhY2sgdXNhZ2Ugb2YgdGhlIGxhc3Qg
Vk0gZW50cnkgYmVmb3JlIHdlIGluc3RhbGwKLSAgICAvLyB0aGUgY3VycmVudCBlbnRyeSBzY29w
ZSBiZWxvdy4KLSAgICBpZiAodm0udG9wRW50cnlTY29wZSkgewotICAgICAgICBjaGFyKiB0b3BP
ZlN0YWNrID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0udG9wQ2FsbEZyYW1lLT50b3BPZkZy
YW1lKCkpOwotICAgICAgICBtX3ByZXZTdGFja1VzYWdlID0gdm0udG9wRW50cnlTY29wZS0+c3Rh
Y2tVc2FnZUZvcih0b3BPZlN0YWNrKTsKLSAgICB9Ci0KLSAgICAvLyBTdGVwIDI6IEluc3RhbGwg
dGhlIGN1cnJlbnQgZW50cnkgc2NvcGUuCi0gICAgaWYgKCF2bS5maXJzdEVudHJ5U2NvcGUpIHsK
KyAgICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQogICAgICAg
ICBpZiAoRXhlY3V0YWJsZUFsbG9jYXRvcjo6dW5kZXJNZW1vcnlQcmVzc3VyZSgpKQogICAgICAg
ICAgICAgdm0uaGVhcC5kZWxldGVBbGxDb21waWxlZENvZGUoKTsKICNlbmRpZgotICAgICAgICB2
bS5maXJzdEVudHJ5U2NvcGUgPSB0aGlzOworICAgICAgICB2bS5lbnRyeVNjb3BlID0gdGhpczsK
IAogICAgICAgICAvLyBSZXNldCB0aGUgZGF0ZSBjYWNoZSBiZXR3ZWVuIEpTIGludm9jYXRpb25z
IHRvIGZvcmNlIHRoZSBWTSB0bwogICAgICAgICAvLyBvYnNlcnZlIHRpbWUgeG9uZSBjaGFuZ2Vz
LgogICAgICAgICB2bS5yZXNldERhdGVDYWNoZSgpOwogICAgIH0KLSAgICB2bS5zdGFja1BvaW50
ZXJBdFZNRW50cnkgPSAwOwotICAgIHZtLnRvcEVudHJ5U2NvcGUgPSB0aGlzOworCisgICAgaWYg
KCF2bS5zdGFja1BvaW50ZXJBdFZNRW50cnkpIHsKKyAgICAgICAgdm0uc3RhY2tQb2ludGVyQXRW
TUVudHJ5ID0gdGhpczsKKyAgICAgICAgbV9zYXZlZEhvc3Rab25lU2l6ZSA9IHZtLnVwZGF0ZVN0
YWNrTGltaXRXaXRoSG9zdFpvbmVTaXplKE9wdGlvbnM6Omhvc3Rab25lU2l6ZSgpKTsKKyAgICB9
CiAKICAgICAvLyBDbGVhciB0aGUgY2FwdHVyZWQgZXhjZXB0aW9uIHN0YWNrIGJldHdlZW4gZW50
cmllcwogICAgIHZtLmNsZWFyRXhjZXB0aW9uU3RhY2soKTsKLQotICAgIHZtLnNldExhc3RTdGFj
a1RvcChtX3N0YWNrLm9yaWdpbigpKTsKLQotICAgIC8vIFN0ZXAgMzogQ29tcHV0ZSB0aGUgc3Rh
Y2sgbGltaXQgdXNpbmcgdGhlIGluc3RhbGxlZCBlbnRyeSBzY29wZS4KLSAgICB1cGRhdGVTdGFj
a0xpbWl0cygpOwogfQogCiBWTUVudHJ5U2NvcGU6On5WTUVudHJ5U2NvcGUoKQogewotICAgIGlm
IChtX3ZtLmZpcnN0RW50cnlTY29wZSA9PSB0aGlzKQotICAgICAgICBtX3ZtLmZpcnN0RW50cnlT
Y29wZSA9IG51bGxwdHI7Ci0gICAgbV92bS50b3BFbnRyeVNjb3BlID0gbV9wcmV2VG9wRW50cnlT
Y29wZTsKLSAgICBtX3ZtLnNldFN0YWNrTGltaXQobV9wcmV2U3RhY2tMaW1pdCk7Ci0jaWYgIUVO
QUJMRShMTElOVF9DX0xPT1ApCi0gICAgbV92bS5zZXRKU1N0YWNrTGltaXQobV9wcmV2SlNTdGFj
a0xpbWl0KTsKLSNlbmRpZgotICAgIG1fdm0uc2V0TGFzdFN0YWNrVG9wKG1fcHJldkxhc3RTdGFj
a1RvcCk7Ci0gICAgbV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkgPSBtX3ByZXZTdGFja1BvaW50
ZXJBdFZNRW50cnk7Ci0gICAgbV92bS50b3BDYWxsRnJhbWUgPSBtX3ByZXZUb3BDYWxsRnJhbWU7
Ci19Ci0KLXNpemVfdCBWTUVudHJ5U2NvcGU6OnN0YWNrVXNhZ2VGb3IoY2hhciogdG9wT2ZTdGFj
aykgY29uc3QKLXsKLSAgICBzaXplX3QgY3VycmVudFN0YWNrVXNhZ2UgPSAwOwotICAgIEFTU0VS
VChtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSk7Ci0gICAgY2hhciogc3RhcnRPZlN0YWNrID0g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkpOwotICAg
IEFTU0VSVCh0b3BPZlN0YWNrIDw9IHN0YXJ0T2ZTdGFjayk7Ci0gICAgY3VycmVudFN0YWNrVXNh
Z2UgPSBzdGFydE9mU3RhY2sgLSB0b3BPZlN0YWNrOwotCi0gICAgQVNTRVJUKE9wdGlvbnM6Om1h
eFN0YWNrU2l6ZSgpID49IG1fcHJldlN0YWNrVXNhZ2UgKyBjdXJyZW50U3RhY2tVc2FnZSk7Ci0g
ICAgcmV0dXJuIG1fcHJldlN0YWNrVXNhZ2UgKyBjdXJyZW50U3RhY2tVc2FnZTsKLX0KLQotdm9p
ZCBWTUVudHJ5U2NvcGU6OnVwZGF0ZVN0YWNrTGltaXRzKCkKLXsKLSAgICBBU1NFUlQod3RmVGhy
ZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQoKSk7Ci0gICAgY2hhciogdG9wT2ZT
dGFjayA9IGN1cnJlbnRTdGFja1BvaW50ZXIoKTsKLQotI2lmICFFTkFCTEUoTExJTlRfQ19MT09Q
KQotICAgIGNoYXIqIHRvcE9mSlNTdGFjayA9IG1fdm0udG9wQ2FsbEZyYW1lID8gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4obV92bS50b3BDYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSkgOiB0b3BPZlN0
YWNrOwotCi0gICAgLy8gSWYgd2UgaGF2ZSBub3QgcmUtZW50ZXJlZCB0aGUgVk0geWV0IHZpYSBj
YWxsVG9KYXZhU2NyaXB0IC8gY2FsbFRvTmF0aXZlRnVuY3Rpb24sCi0gICAgLy8gdGhlbiBzdGFj
a1BvaW50ZXJBdFZNRW50cnkgd2lsbCBub3QgaGF2ZSBiZWVuIHNldCB1cCB5ZXQuIEluc3RlYWQs
IHdlJ2xsCi0gICAgLy8gY29tcHV0ZSB0aGUgc3RhY2sgbGltaXQgcmVsYXRpdmUgdG8gdGhlIGN1
cnJlbnQgdG9wT2ZKU1N0YWNrIChhcyBhbiBlc3RpbWF0ZQotICAgIC8vIG9mIHN0YWNrUG9pbnRl
ckF0Vk1FbnRyeSkuIFdoZW4gd2UgZW50ZXIgY2FsbFRvSmF2YVNjcmlwdCBsYXRlciwgd2UnbGwg
YWRqdXN0Ci0gICAgLy8gdGhlIHN0YWNrIGxpbWl0IHdpdGggdGhlIGRlbHRhIGJldHdlZW4gdGhl
IGFjdHVhbCBzdGFja1BvaW50ZXJBdFZNRW50cnkgYW5kCi0gICAgLy8gdGhlIGVzdGltYXRlIHZh
bHVlIHRoYXQgd2UgdXNlIGhlcmUuCi0gICAgaWYgKCFtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRy
eSkKLSAgICAgICAgbV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkgPSB0b3BPZkpTU3RhY2s7Ci0K
LSAgICB2b2lkKiBqc1N0YWNrTGltaXQgPSBtX3N0YWNrLnJlY3Vyc2lvbkxpbWl0KHJlcXVpcmVk
Q2FwYWNpdHkodG9wT2ZKU1N0YWNrLCBKU1N0YWNrQ2FwYWNpdHkpKTsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgY2hhciogc3RhcnRPZlN0YWNrID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV92bS5z
dGFja1BvaW50ZXJBdFZNRW50cnkpOwotICAgIGNoYXIqIHN0YWNrTGltaXQgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihqc1N0YWNrTGltaXQpOwotICAgIEFTU0VSVChtX3ByZXZTdGFja1VzYWdl
ICsgKHN0YXJ0T2ZTdGFjayAtIHN0YWNrTGltaXQpIDw9IE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgp
KTsKLSNlbmRpZgotICAgIG1fdm0uc2V0SlNTdGFja0xpbWl0KGpzU3RhY2tMaW1pdCk7Ci0KLSAg
ICAvLyBTb21lIHNhbml0eSBjaGVja3MgZm9yIG91ciBwb2ludGVycyBpbnRvIHRoZSBzdGFjazoK
LSAgICBBU1NFUlQobV92bS5pbnRlcnByZXRlci0+c3RhY2soKS5jb250YWluc0FkZHJlc3MocmVp
bnRlcnByZXRfY2FzdDxSZWdpc3Rlcio+KG1fdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5KSkpOwot
ICAgIEFTU0VSVChtX3ZtLmludGVycHJldGVyLT5zdGFjaygpLmNvbnRhaW5zQWRkcmVzcyhyZWlu
dGVycHJldF9jYXN0PFJlZ2lzdGVyKj4odG9wT2ZKU1N0YWNrKSkpOwotICAgIEFTU0VSVChjdXJy
ZW50U3RhY2tQb2ludGVyKCkgPD0gdG9wT2ZKU1N0YWNrKTsKLSAgICBBU1NFUlQodG9wT2ZKU1N0
YWNrIDw9IG1fdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5KTsKLSNlbmRpZiAvLyAhRU5BQkxFKExM
SU5UX0NfTE9PUCkKLQotICAgIHZvaWQqIG5hdGl2ZVN0YWNrTGltaXQgPSBtX3N0YWNrLnJlY3Vy
c2lvbkxpbWl0KHJlcXVpcmVkQ2FwYWNpdHkodG9wT2ZTdGFjaywgTmF0aXZlU3RhY2tDYXBhY2l0
eSkpOwotICAgIG1fdm0uc2V0U3RhY2tMaW1pdChuYXRpdmVTdGFja0xpbWl0KTsKLX0KLQotY2hh
ciogVk1FbnRyeVNjb3BlOjpjdXJyZW50U3RhY2tQb2ludGVyKCkgY29uc3QKLXsKLSAgICBjaGFy
KiBwOwotI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAgcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KG1fdm0udG9wQ2FsbEZyYW1lLT50b3BPZkZyYW1lKCkpOwotI2Vsc2UKLSAgICBwID0g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJnApOwotI2VuZGlmCi0gICAgcmV0dXJuIHA7Ci19Ci0K
LXNpemVfdCBWTUVudHJ5U2NvcGU6OnJlcXVpcmVkQ2FwYWNpdHkoY2hhciogdG9wT2ZTdGFjaywg
Q2FwYWNpdHlUeXBlIHR5cGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fc3RhY2suaXNHcm93aW5n
RG93bndhcmQoKSk7Ci0KLSAgICBzaXplX3QgZXhjZXNzQ1N0YWNrU2l6ZSA9IDA7Ci0jaWYgIUVO
QUJMRShMTElOVF9DX0xPT1ApCi0gICAgaWYgKHR5cGUgPT0gSlNTdGFja0NhcGFjaXR5KSB7Ci0g
ICAgICAgIEFTU0VSVChPcHRpb25zOjptYXhTdGFja1NpemUoKSA+PSBzdGFja1VzYWdlRm9yKHRv
cE9mU3RhY2spKTsKLSAgICAgICAgc2l6ZV90IGF2YWlsYWJsZUpTU3RhY2sgPSBPcHRpb25zOjpt
YXhTdGFja1NpemUoKSAtIHN0YWNrVXNhZ2VGb3IodG9wT2ZTdGFjayk7Ci0KLSAgICAgICAgY2hh
ciogYm90dG9tT2ZTdGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fc3RhY2sub3JpZ2lu
KCkpOwotICAgICAgICBzaXplX3QgYXZhaWxhYmxlQ1N0YWNrID0gbV9zdGFjay5zaXplKCkgLSAo
Ym90dG9tT2ZTdGFjayAtIHRvcE9mU3RhY2spOwotICAgICAgICBpZiAoYXZhaWxhYmxlQ1N0YWNr
ID4gYXZhaWxhYmxlSlNTdGFjaykKLSAgICAgICAgICAgIGV4Y2Vzc0NTdGFja1NpemUgPSBhdmFp
bGFibGVDU3RhY2sgLSBhdmFpbGFibGVKU1N0YWNrOworICAgIGlmIChtX3ZtLmVudHJ5U2NvcGUg
PT0gdGhpcykKKyAgICAgICAgbV92bS5lbnRyeVNjb3BlID0gbnVsbHB0cjsKKyAgICBpZiAobV92
bS5zdGFja1BvaW50ZXJBdFZNRW50cnkgPT0gdGhpcykgeworICAgICAgICBtX3ZtLnN0YWNrUG9p
bnRlckF0Vk1FbnRyeSA9IG51bGxwdHI7CisgICAgICAgIG1fdm0udXBkYXRlU3RhY2tMaW1pdFdp
dGhIb3N0Wm9uZVNpemUobV9zYXZlZEhvc3Rab25lU2l6ZSk7CiAgICAgfQotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0odG9wT2ZTdGFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIEFT
U0VSVCh0eXBlID09IE5hdGl2ZVN0YWNrQ2FwYWNpdHkpOwotI2VuZGlmCi0KLSAgICAvLyBXZSBy
ZXF1aXJlIGEgc21hbGxlciBzdGFjayBidWRnZXQgZm9yIHRoZSBlcnJvciBzdGFjay4gVGhpcyBp
cyB0byBhbGxvdwotICAgIC8vIHNvbWUgbWluaW1hbCBKUyBleGVjdXRpb24gdG8gcHJvY2VlZCBh
bmQgZG8gdGhlIHdvcmsgb2YgdGhyb3dpbmcgYSBzdGFjawotICAgIC8vIG92ZXJmbG93IGVycm9y
IGlmIG5lZWRlZC4gSW4gY29udHJhc3QsIGFyYml0cmFyeSBKUyBjb2RlIHdpbGwgcmVxdWlyZSB0
aGUKLSAgICAvLyBtb3JlIGdlbmVyb3VzIHN0YWNrIGJ1ZGdldCBpbiBvcmRlciB0byBwcm9jZWVk
LgotICAgIC8vCi0gICAgLy8gVGhlc2Ugc2l6ZXMgd2VyZSBkZXJpdmVkIGZyb20gdGhlIHN0YWNr
IHVzYWdlIG9mIGEgbnVtYmVyIG9mIHNpdGVzIHdoZW4KLSAgICAvLyBsYXlvdXQgb2NjdXJzIHdo
ZW4gd2UndmUgYWxyZWFkeSBjb25zdW1lZCBtb3N0IG9mIHRoZSBDIHN0YWNrLgotICAgIGNvbnN0
IHNpemVfdCByZXF1aXJlZFN0YWNrID0gMTI4ICogS0I7Ci0gICAgY29uc3Qgc2l6ZV90IGVycm9y
TW9kZVJlcXVpcmVkU3RhY2sgPSA2NCAqIEtCOwotCi0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gbV92bS5pbnRlcnByZXRlcjsKLSAgICBzaXplX3QgcmVxdWlyZWRDYXBhY2l0eSA9IGlu
dGVycHJldGVyLT5pc0luRXJyb3JIYW5kbGluZ01vZGUoKSA/IGVycm9yTW9kZVJlcXVpcmVkU3Rh
Y2sgOiByZXF1aXJlZFN0YWNrOwotICAgIHJlcXVpcmVkQ2FwYWNpdHkgKz0gZXhjZXNzQ1N0YWNr
U2l6ZTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhY2suc2l6ZSgpID49IHJlcXVpcmVkQ2Fw
YWNpdHkpOwotICAgIHJldHVybiByZXF1aXJlZENhcGFjaXR5OyAKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29w
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlT
Y29wZS5oCShyZXZpc2lvbiAxNjEzNzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsMzMgKzQwLDEzIEBAIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBWTUVudHJ5U2NvcGUoVk0mLCBKU0dsb2JhbE9iamVjdCop
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5WTUVudHJ5U2NvcGUoKTsKIAotICAgIHZvaWQgdXBk
YXRlU3RhY2tMaW1pdHMoKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KIAogcHJpdmF0ZToKLSAgICBlbnVtIENhcGFj
aXR5VHlwZSB7Ci0gICAgICAgIEpTU3RhY2tDYXBhY2l0eSwKLSAgICAgICAgTmF0aXZlU3RhY2tD
YXBhY2l0eSwKLSAgICB9OwotICAgIHNpemVfdCByZXF1aXJlZENhcGFjaXR5KGNoYXIqIHRvcE9m
U3RhY2ssIENhcGFjaXR5VHlwZSkgY29uc3Q7Ci0gICAgY2hhciogY3VycmVudFN0YWNrUG9pbnRl
cigpIGNvbnN0OwotICAgIHNpemVfdCBzdGFja1VzYWdlRm9yKGNoYXIqIHRvcE9mU3RhY2spIGNv
bnN0OwotCiAgICAgVk0mIG1fdm07CiAgICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBtX3N0YWNr
Q2hlY2tQb2ludDsKLSAgICBTdGFja0JvdW5kcyBtX3N0YWNrOwogICAgIEpTR2xvYmFsT2JqZWN0
KiBtX2dsb2JhbE9iamVjdDsKLSAgICBzaXplX3QgbV9wcmV2U3RhY2tVc2FnZTsKLQotICAgIC8v
IFRoZSBmb2xsb3dpbmcgcG9pbnRlcnMgbWF5IHBvaW50IHRvIGEgZGlmZmVyZW50IHRocmVhZCdz
IHN0YWNrLgotICAgIFZNRW50cnlTY29wZSogbV9wcmV2VG9wRW50cnlTY29wZTsKLSAgICB2b2lk
KiBtX3ByZXZTdGFja0xpbWl0OwotI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQotICAgIHZvaWQq
IG1fcHJldkpTU3RhY2tMaW1pdDsKLSNlbmRpZgotICAgIHZvaWQqIG1fcHJldkxhc3RTdGFja1Rv
cDsKLSAgICB2b2lkKiBtX3ByZXZTdGFja1BvaW50ZXJBdFZNRW50cnk7Ci0gICAgRXhlY1N0YXRl
KiBtX3ByZXZUb3BDYWxsRnJhbWU7CisgICAgc2l6ZV90IG1fc2F2ZWRIb3N0Wm9uZVNpemU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjE1MTMpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAx
LTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDU3RhY2s6IE5l
ZWQgYSBzZXBhcmF0ZSBzdGFjayBsaW1pdCBmb3IgdGhlIEpTIHN0YWNrIGFuZCB0aGUgQyBzdGFj
ay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMy
MC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9TdGFja0JvdW5kcy5oOgorICAgICAgICAoV1RGOjpTdGFja0JvdW5kczo6cmVjdXJzaW9uTGlt
aXQpOgorICAgICAgICAtIFByZXZpb3VzbHksIFN0YWNrQm91bmRzOjpyZWN1cnNpb25MaW1pdCgp
IG9ubHkgdGFrZXMgYSBob3N0IHpvbmUgc2l6ZQorICAgICAgICAgIHdoaWNoIGl0IHVzZXMgdG8g
Y29tcHV0ZSB0aGUgY2xpZW50J3MgZGVzaXJlZCBzdGFjayBsaW1pdC4gTm93LCB0aGVyZSdzCisg
ICAgICAgICAgYW4gYWx0ZXJuYXRlIHZlcnNpb24gdGhhdCBhbHNvIGFsbG93cyB0aGUgY2xpZW50
IHRvIGV4cGxpY2l0bHkgc3BlY2lmeQorICAgICAgICAgIGl0cyBkZXNpcmVkIHN0YWNrIGxpbWl0
IGluIGFkZGl0aW9uIHRvIGl0cyBob3N0Wm9uZVNpemUgcmVxdWlyZW1lbnQuCisgICAgICAgICAg
SW4gYm90aCBjYXNlcywgU3RhY2tCb3VuZHM6OnJlY3Vyc2lvbkxpbWl0KCkgd2lsbCBjYXAgdGhl
IGxpbWl0ICh3aXRoCisgICAgICAgICAgYWxsb3dhbmNlIGZvciB0aGUgaG9zdFpvbmVTaXplKSB0
byBiZSB3aXRoaW4gaXRzIGJvdW5kcywgYW5kIHJldHVybiB0aGUKKyAgICAgICAgICBjYXBwZWQg
bGltaXQuCisKIDIwMTQtMDEtMDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNZXJnZSB0cnVuayByMTYxMzY0LgpJbmRleDogU291cmNlL1dURi93dGYvU3RhY2tC
b3VuZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCShyZXZp
c2lvbiAxNjEzNzApCisrKyBTb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaWZuZGVmIFN0YWNrQm91bmRzX2gKICNkZWZpbmUgU3Rh
Y2tCb3VuZHNfaAogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCiBuYW1lc3BhY2UgV1RGIHsKIAog
Y2xhc3MgU3RhY2tCb3VuZHMgewpAQCAtNjcsNiArNjksMTcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpIC0gbWluQXZhaWxhYmxlRGVsdGE7CiAg
ICAgfQogCisgICAgdm9pZCogcmVjdXJzaW9uTGltaXQoc2l6ZV90IGhvc3Rab25lU2l6ZSwgdm9p
ZCogZGVzaXJlZExpbWl0KSBjb25zdAorICAgIHsKKyAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OworICAgICAgICBpZiAoaXNHcm93aW5nRG93bndhcmQoKSkgeworICAgICAgICAgICAgY2hhciog
ZW5kT2ZTdGFja1dpdGhIb3N0Wm9uZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYm91bmQp
ICsgaG9zdFpvbmVTaXplOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGRlc2lyZWRMaW1p
dCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZW5kT2ZTdGFja1dpdGhIb3N0Wm9uZSkpOworICAg
ICAgICB9CisgICAgICAgIGNoYXIqIGVuZE9mU3RhY2tXaXRoSG9zdFpvbmUgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihtX2JvdW5kKSAtIGhvc3Rab25lU2l6ZTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWluKGRlc2lyZWRMaW1pdCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZW5kT2ZTdGFja1dp
dGhIb3N0Wm9uZSkpOworICAgIH0KKwogICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQoKSBjb25z
dAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luICYmIG1fYm91bmQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTYxNTEzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDEtMDggIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgorCisgICAgICAgIENTdGFjazogTmVlZCBhIHNlcGFyYXRlIHN0YWNrIGxp
bWl0IGZvciB0aGUgSlMgc3RhY2sgYW5kIHRoZSBDIHN0YWNrLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzIwLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmg6IEFkZGVkLgor
ICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24p
OgorICAgICAgICAtIFVwZGF0ZWQgdG8gdXNlIEVycm9ySGFuZGxpbmdTY29wZSBpbnN0ZWFkIG9m
IEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZS4KKwogMjAxMy0xMi0wNiAgTGFzemxvIFZp
ZGFjcyAgPGxhY0BpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgRGVmaW5lIFNIQTEgaGFzaCBz
aXplIGluIFNIQTEuaCBhbmQgdXNlIGl0IGF0IHZhcmlvdXMgcGxhY2VzLgpJbmRleDogU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Vy
cm9ySGFuZGxpbmdTY29wZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRXJyb3JIYW5kbGluZ1Njb3BlX2gK
KyNkZWZpbmUgV2ViQ29yZV9GV0RfRXJyb3JIYW5kbGluZ1Njb3BlX2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9FcnJvckhhbmRsaW5nU2NvcGUuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjEz
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xODU5MSw2ICsxODU5MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXENvbnN0cnVjdERhdGEuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcRGF0ZUlu
c3RhbmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVy
c1xydW50aW1lXEVycm9yLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xydW50aW1lXEVycm9ySGFuZGxpbmdTY29wZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxFcnJvclByb3RvdHlwZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGlt
ZVxFeGNlcHRpb25IZWxwZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3
YXJkaW5nSGVhZGVyc1xydW50aW1lXEV4ZWN1dGFibGUuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJ
KHJldmlzaW9uIDE2MTM3MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTI2MzQsNiArMTI2MzQsOSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxF
cnJvci5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNccnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGlu
Z0hlYWRlcnNccnVudGltZVxFcnJvckhhbmRsaW5nU2NvcGUuaCI+CisgICAgICA8RmlsdGVyPkZv
cndhcmRpbmdIZWFkZXJzXHJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcRXJyb3JQcm90
b3R5cGUuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gMTYxMzcwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgPGludGVycHJldGVyL0ludGVycHJldGVyLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9EYXRlSW5zdGFuY2UuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8
cnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTQ5LDcgKzE1MCw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlMKICAgICBpZiAoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGV4Y2VwdGlvbikpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludGVycHJldGVyOjpFcnJv
ckhhbmRsaW5nTW9kZSBtb2RlKGV4ZWMpOworICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNj
b3BlKGV4ZWMtPnZtKCkpOwogCiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zyb21FeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uLCBTY3Jp
cHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsKICAgICBleGVjLT5jbGVh
ckV4Y2VwdGlvbigpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTIxKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDEtMDggIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIENTdGFjazogTmVlZCBhIHNl
cGFyYXRlIHN0YWNrIGxpbWl0IGZvciB0aGUgSlMgc3RhY2sgYW5kIHRoZSBDIHN0YWNrLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzIwLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvbGFyZ2Ut
ZXhwcmVzc2lvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9sYXJn
ZS1leHByZXNzaW9ucy5qczoKKyAgICAgICAgLSBDaGFuZ2VkIGV4cGVjdGVkIHJlc3VsdCB0byBy
ZWZsZWN0IHRoZSBtdWNoIG1vcmUgY29uc3RyYWluZWQgc3RhY2sgc2l6ZQorICAgICAgICAgIG5v
dyB0aGF0IHRoZSBKUyBzdGFjayBsaW1pdCBhbHNvIGxpbWl0cyBzdGFjayB1c2FnZSBieSBob3N0
IC8gbmF0aXZlCisgICAgICAgICAgZnVuY3Rpb25zLgorCiAyMDE0LTAxLTA2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgTWVyZ2UgdHJ1bmsgcjE2MTA3Mi4KSW5k
ZXg6IExheW91dFRlc3RzL2pzL2xhcmdlLWV4cHJlc3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9sYXJnZS1leHByZXNzaW9ucy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE2MTM3MCkKKysrIExheW91dFRlc3RzL2pzL2xhcmdlLWV4cHJlc3Npb25zLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiBQQVNTIGV2YWwocmVwZWF0ZWRFeHByZXNzaW9uKCJs
ZXR0ZXJBIiwgIisiLCAxMDApKSBpcyByZXBlYXRlZFN0cmluZygiYSIsIDEwMCkKIFBBU1MgZXZh
bChyZXBlYXRlZEV4cHJlc3Npb24oImxldHRlckEiLCAiKyIsIDEwMDApKSBpcyByZXBlYXRlZFN0
cmluZygiYSIsIDEwMDApCi1QQVNTIGV2YWwocmVwZWF0ZWRFeHByZXNzaW9uKCJsZXR0ZXJBIiwg
IisiLCAxMDAwMCkpIGlzIHJlcGVhdGVkU3RyaW5nKCJhIiwgMTAwMDApCitQQVNTIGV2YWwocmVw
ZWF0ZWRFeHByZXNzaW9uKCJsZXR0ZXJBIiwgIisiLCAxMDAwMCkpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogT3V0IG9mIG1lbW9yeS4KIFBBU1MgZXZhbChyZXBlYXRlZEV4cHJlc3Npb24oImxldHRl
ckEiLCAiKyIsIDEwMDAwMCkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogT3V0IG9mIG1lbW9yeS4K
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2xhcmdlLWV4cHJlc3Npb25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9sYXJnZS1leHByZXNzaW9ucy5qcwkocmV2aXNpb24gMTYxMzcw
KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2xhcmdlLWV4cHJlc3Npb25zLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBAIGZ1bmN0aW9uIHJlcGVhdGVkU3RyaW5nKHZh
bHVlLCBjb3VudCkKIAogc2hvdWxkQmUoJ2V2YWwocmVwZWF0ZWRFeHByZXNzaW9uKCJsZXR0ZXJB
IiwgIisiLCAxMDApKScsICdyZXBlYXRlZFN0cmluZygiYSIsIDEwMCknKTsKIHNob3VsZEJlKCdl
dmFsKHJlcGVhdGVkRXhwcmVzc2lvbigibGV0dGVyQSIsICIrIiwgMTAwMCkpJywgJ3JlcGVhdGVk
U3RyaW5nKCJhIiwgMTAwMCknKTsKLXNob3VsZEJlKCdldmFsKHJlcGVhdGVkRXhwcmVzc2lvbigi
bGV0dGVyQSIsICIrIiwgMTAwMDApKScsICdyZXBlYXRlZFN0cmluZygiYSIsIDEwMDAwKScpOwor
c2hvdWxkVGhyb3coJ2V2YWwocmVwZWF0ZWRFeHByZXNzaW9uKCJsZXR0ZXJBIiwgIisiLCAxMDAw
MCkpJyk7CiBzaG91bGRUaHJvdygnZXZhbChyZXBlYXRlZEV4cHJlc3Npb24oImxldHRlckEiLCAi
KyIsIDEwMDAwMCkpJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220745</attachid>
            <date>2014-01-09 09:27:46 -0800</date>
            <delta_ts>2014-01-09 13:01:22 -0800</delta_ts>
            <desc>patch 4: fixed some C loop bit rot from patch 3.</desc>
            <filename>bug-126320c.patch</filename>
            <type>text/plain</type>
            <size>71065</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3OCBA
QAorMjAxNC0wMS0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
Q1N0YWNrOiBOZWVkIGEgc2VwYXJhdGUgc3RhY2sgbGltaXQgZm9yIHRoZSBKUyBzdGFjayBhbmQg
dGhlIEMgc3RhY2suCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjYzMjAuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXRjaCBpcyBtYWlubHkgdG8gY2hhbmdlIHRoZSB3
YXkgd2UgY29tcHV0ZSB0aGUgc3RhY2sKKyAgICAgICAgbGltaXQgZm9yIEpTIHN0YWNrIGNoZWNr
cy4gUHJldmlvdXNseSwgd2UgdGFsbHkgdXAgdGhlIHN0YWNrIHVzYWdlIHBlcgorICAgICAgICBz
ZXNzaW9uIG9mIFZNIHJlLWVudHJ5IGFzIHRyYWNrZWQgYnkgdGhlIFZNRW50cnlTY29wZSwgYW5k
IHdlIGVuc3VyZSB0aGF0CisgICAgICAgIHRoZSB0b3RhbCB1c2FnZSBkb2VzIG5vdCBleGNlZWQg
T3B0aW9uczo6bWF4U3RhY2tTaXplKCksIGFuZCBvZiBjb3Vyc2UsIGlzCisgICAgICAgIGFsc28g
Y2FwcGVkIGJ5IHRoZSBhbW91bnQgb2YgbmF0aXZlIEMgc3RhY2sgYXZhaWxhYmxlLiBUaGUgdXNh
Z2UgdHJhY2tpbmcKKyAgICAgICAgaGVyZSBkb2VzIG5vdCBjb3VudCBob3N0IC8gbmF0aXZlIGZ1
bmN0aW9uIHN0YWNrIHVzYWdlIGFnYWluc3QgdGhlIG1heAorICAgICAgICBzdGFjayB1c2FnZS4K
KworICAgICAgICBUaGUgbmV3IHdheSBpcyB0byBjb21wdXRlIGEgbGltaXQgYXMgYW4gb2Zmc2V0
IGZyb20gdGhlIFZNRW50cnlTY29wZSBvZgorICAgICAgICB0aGUgZmlyc3QgZW50cnkgaW50byB0
aGUgVk0uIE9wdGlvbnM6Om1heFBlclRocmVhZFJlY3Vyc2lvblN0YWNrVXNhZ2UoKQorICAgICAg
ICB3aWxsIHByb3ZpZGUgdGhhdCBvZmZzZXQuIEFueSBob3N0IC8gbmF0aXZlIGZ1bmN0aW9uIHN0
YWNrIHVzYWdlIGFmdGVyCisgICAgICAgIHdlJ3ZlIGVudGVyZWQgdGhlIFZNIHdpbGwgYmUgY291
bnRlZCBhZ2FpbnN0IHRoZSBtYXggc3RhY2sgdXNhZ2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBz
dXBwbGFudHMgcGFydHMgb3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcgcHJldmlvdXNseSBjb21taXR0
ZWQKKyAgICAgICAgcGF0Y2hlczoKKworICAgICAgICAgICAgcjE2MTEwNDogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjI2NgorICAgICAgICAgICAgICAgICAgICAg
UmVuYW1lIFZNOjplbnRyeVNjb3BlIHRvIGZpcnN0RW50cnlTY29wZS4KKyAgICAgICAgICAgIHIx
NjEyMzI6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjEKKyAg
ICAgICAgICAgICAgICAgICAgIEludHJvZHVjaW5nIE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgpLgor
ICAgICAgICAgICAgcjE2MTE3MjogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNjMzMQorICAgICAgICAgICAgICAgICAgICAgUmVmYWN0b3IgdG8gc3BsaXQgdGhlIHRy
YWNraW5nIG9mIHRoZSBqc1N0YWNrTGltaXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAg
IG5hdGl2ZSBzdGFja0xpbWl0LgorICAgICAgICAgICAgcjE2MTE3NDogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMzNAorICAgICAgICAgICAgICAgICAgICAgSW50
cm9kdWNlIHRyYWNraW5nIG9mIHRoZSB0b3AgVk1FbnRyeVNjb3BlLgorICAgICAgICAgICAgcjE2
MTE3NTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMzNQorICAg
ICAgICAgICAgICAgICAgICAgVGhlIEdDIHNob3VsZCBub3QgYmUgYXNzdW1pbmcgYW55IGxpbWl0
IG9uIHRoZSBzdGFjayBzaXplLgorICAgICAgICAgICAgcjE2MTM2MTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjQ4NworICAgICAgICAgICAgICAgICAgICAgVGhl
IGZpeGVkIHVwIGpzU3RhY2tMaW1pdCBpbiBkb0NhbGxUb0phdmFTY3JpcHQgc2hvdWxkIG5vdAor
ICAgICAgICAgICAgICAgICAgICAgZXhjZWVkIHRoZSBuYXRpdmUgc3RhY2sgbGltaXQuCisgICAg
ICAgICAgICByMTYxMTgwOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI2MzIwCisgICAgICAgICAgICAgICAgICAgICBOZWVkIGEgc2VwYXJhdGUgc3RhY2sgbGltaXQg
Zm9yIHRoZSBKUyBzdGFjayBhbmQgdGhlIEMgc3RhY2suCisgICAgICAgICAgICAgICAgICAgICBU
aGlzIHdhcyBmb3IgdGhlIG9sZCB3YXkgb2YgdHJhY2tpbmcgY2h1bmtzIG9mIHN0YWNrIHVzYWdl
CisgICAgICAgICAgICAgICAgICAgICBwZXIgVk1FbnRyeVNjb3BlLgorCisgICAgICAgIERldGFp
bHMgb2YgdGhpcyBwYXRjaDoKKworICAgICAgICAxLiBSZW5hbWVkIFZNOjpmaXJzdEVudHJ5U2Nv
cGUgYmFjayB0byBWTTo6ZW50cnlTY29wZS4KKyAgICAgICAgICAgUmVtb3ZlZCB0aGUgdHJhY2tp
bmcgb2YgdG9wRW50cnlTY29wZSBhbmQgcmVsYXRlZCBjb2RlLgorCisgICAgICAgIDIuIFJlaW5z
dGF0ZSBhbiBhc3NlcnRpb24gdGhhdCB0aGUgQ29uc2VydmF0aXZlUm9vdHMgc3BhbiBzaXplIHNo
b3VsZAorICAgICAgICAgICBub3QgZXhjZWVkIHRoZSBzaXplIG9mIHRoZSBuYXRpdmUgQyBzdGFj
ay4KKworICAgICAgICAzLiBSZW5hbWVkIE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgpIHRvIG1heFBl
clRocmVhZFJlY3Vyc2lvblN0YWNrVXNhZ2UoKS4KKyAgICAgICAgICAgQWRkZWQgT3B0aW9uczo6
aG9zdFpvbmVTaXplKCkgYW5kIE9wdGlvbnM6OmVycm9yTW9kZUhvc3Rab25lU2l6ZSgpLgorCisg
ICAgICAgIDQuIFRoZSBWTSBub3cgdHJhY2tzIGl0cyBjdXJyZW50IGhvc3Rab25lU2l6ZSBhbmQg
c3RhY2sgbGltaXRzLgorICAgICAgICAgICBWTTo6bV9zdGFja0xpbWl0IGlzIGNvbXB1dGVkIHdo
ZW4gdGhlIGhvc3Rab25lU2l6ZSBpcyBzZXQgdmlhCisgICAgICAgICAgIFZNOjp1cGRhdGVTdGFj
a0xpbWl0V2l0aEhvc3Rab25lU2l6ZSgpLgorCisgICAgICAgICAgIEluIHRoZSBDIExvb3AgTExJ
TlQgY2FzZSwgdGhlIFZNIGFsc28gcHJvdmlkZXMgYSBzZXRKU1N0YWNrTGltaXQoKQorICAgICAg
ICAgICBzaW5jZSBWTTo6bV9zdGFja0xpbWl0IGFuZCBWTTo6bV9qc1N0YWNrTGltaXQgYXJlIDIg
ZGlmZmVyZW50IHZhbHVlcworICAgICAgICAgICBpbiB0aGF0IGNhc2UuCisKKyAgICAgICAgNS4g
UmVwbGFjZWQgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIHdpdGggRXJyb3JIYW5kbGlu
Z1Njb3BlLgorICAgICAgICAgICBUaGUgRXJyb3JIYW5kbGluZ1Njb3BlIGNvbnN0cnVjdG9yIHdp
bGwgc2V0IHRoZSBWTSBob3N0IHpvbmUgc2l6ZSB0bworICAgICAgICAgICBPcHRpb25zOjplcnJv
ck1vZGVIb3N0Wm9uZVNpemUoKSwgYW5kIHJlc3RvcmUgdGhlIHByZXZpb3VzIGhvc3Qgem9uZQor
ICAgICAgICAgICBzaXplLgorCisgICAgICAgICAgIFRoZSBkZXN0cnVjdG9yIGZvciBFcnJvckhh
bmRsaW5nU2NvcGUgd2lsbCByZXN0b3JlIHRoZSBwcmV2aW91cyBzdGFjaworICAgICAgICAgICBs
aW1pdC4gV2UgY2FuIGVudGVyIG11bHRpcGxlIEVycm9ySGFuZGxpbmdTY29wZXMuIE9ubHkgdGhl
IGRlc3RydWN0aW9uCisgICAgICAgICAgIG9mIHRoZSB2ZXJ5IGZpcnN0IG9uZSB3aWxsIHJlc3Rp
cmUgdGhlIHN0YWNrIGxpbWl0IHdpdGggdGhlIG5vbi1lcnJvcgorICAgICAgICAgICBtb2RlIGhv
c3Qgem9uZS4KKworICAgICAgICA2LiBMTElOVCBDIGxvb3AgSlNTdGFjayBjaGFuZ2VzOgorICAg
ICAgICAgICA2LjEgUmVwbGFjZWQgY2FsbHMgdG8gcm91bmRVcFRvQWxsb2NhdGlvblNpemUoKSB3
aXRoIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigpLgorICAgICAgICAgICAgICAgcm91bmRVcFRv
QWxsb2NhdGlvblNpemUoKSBpcyByZWR1bmRhbnQgYW5kIGlzIG5vdyByZW1vdmVkLgorCisgICAg
ICAgICAgIDYuMiBSZW1vdmVkIGVuYWJsZS9kaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKSBhbmQg
dXBkYXRlU3RhY2tMaW1pdCgpLgorICAgICAgICAgICAgICAgVGhlaXIgZnVuY3Rpb24gaXMgbm93
IGhhbmRsZWQgYnkgSlNTdGFjazo6c2V0SG9zdFpvbmVTaXplKCkuCisKKyAgICAgICAgICAgNi4z
IEFkZGVkIGFjY291bnRpbmcgZm9yIGEgaG9zdCB6b25lIGluIHRoZSBMTElOVCBDIGxvb3AgSlNT
dGFjay4KKyAgICAgICAgICAgICAgIFRoaXMgaW5jbHVkZXMgZ3Jvd2luZyB0aGUgSlMgc3RhY2sg
dG8gYWxsb3cgc3BhY2UgZm9yIHRoZSBob3N0IHpvbmUKKyAgICAgICAgICAgICAgIHdoZW5ldmVy
IHRoZSBob3N0IHpvbmUgc2l6ZSBpcyBhZGp1c3RlZCB2aWEgSlNTdGFjazo6c2V0SG9zdFpvbmVT
aXplKCkuCisKKyAgICAgICAgICAgICAgIE5vdGU6IHRob3VnaCBzZXRIb3N0Wm9uZVNpemUoKSBp
cyBiYXNlZCBvbiBkaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKSwKKyAgICAgICAgICAgICAgIHdl
IGRvbid0IHJldGFpbiB0aGUgbG9naWMgdG8gc2hyaW5rIHRoZSBzdGFjayB0aGVyZS4gVGhhdCBs
b2dpYyB3YXMKKyAgICAgICAgICAgICAgIGFsd2F5cyBkZWFkIGNvZGU6IHdlIG9ubHkgY2FsbCBz
aHJpbmsoKSBpZiBtX2VuZCArIDEgPCBtX3VzZWFibGVUb3AsCisgICAgICAgICAgICAgICBidXQg
c2hyaW5rKCkgd2lsbCBvbmx5IHNocmluayB0aGUgc3RhY2sgaWYgbV9lbmQgaXMgcG9pbnRpbmcg
dG8gdGhlCisgICAgICAgICAgICAgICBiYXNlIG9mIHRoZSBzdGFjayBpLmUuIHRoZSAyIGNvbmRp
dGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgYW5kCisgICAgICAgICAgICAgICBubyB3b3Jr
IHRvIHNocmluayB0aGUgc3RhY2sgd2lsbCBldmVyIGJlIGRvbmUgaGVyZS4KKworICAgICAgICAg
ICAgICAgbV91c2VhYmxlVG9wIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIGlzIG5vdyByZW1vdmVk
LgorCisgICAgICAgICAgIDYuNCBDaGFuZ2UgYWxsIG5vbiBDIGxvb3AgY29kZSB0byByZWZlcmVu
Y2UgVk06OnN0YWNrTGltaXQoKSBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICBWTTo6anNTdGFj
a0xpbWl0KCkuIFRob3VnaCB0aGUgMiBhcmUgdGhlIHNhbWUgZm9yIG5vbiBDIGxvb3AgYnVpbGRz
LAorICAgICAgICAgICAgICAgdGhpcyBtYWtlcyBpdCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZC4gV2Ug
bm93IG9ubHkgcmVmZXJlbmNlIHRoZQorICAgICAgICAgICAgICAganNTdGFja0xpbWl0IGluIDIg
Y2FzZXM6CisKKyAgICAgICAgICAgICAgIGEuIExMSU5UIGFuZCBKSVQgY29kZSBwZXJmb3JtaW5n
IHN0YWNrIGNoZWNrcyB3aGVyZSB0aGUgZXhwZWN0IHRoZQorICAgICAgICAgICAgICAgICAganNT
dGFja0xpbWl0IHRvIGJlIGEgcHNldWRvbnltIGZvciB0aGUgc3RhY2tMaW1pdCBpbiBub24gQyBs
b29wCisgICAgICAgICAgICAgICAgICBidWlsZC4KKworICAgICAgICAgICAgICAgYi4gSW4gdGhl
IEMgbG9vcCBidWlsZCwgdGhlIEpTU3RhY2sgaXRzZWxmIHNldHMgVk06Om1fanNTdGFja0xpbWl0
KCkKKyAgICAgICAgICAgICAgICAgIHdoZW4gaXQgYWRqdXN0cyBpdHMgaG9zdCB6b25lIHNpemUu
CisKKyAgICAgICAgICAgICAgIEluIGFsbCBvdGhlciBjYXNlcywgd2Ugd29yayBkaXJlY3RseSB3
aXRoIFZNOjpzdGFja0xpbWl0KCkuCisKKyAgICAgICAgNy4gU2ltcGxpZnkgdGhlIHRyYWNraW5n
IG9mIFZNOjpzdGFja1BvaW50ZXJBdFZNRW50cnkuIFdlIG5vdyBzZXQKKyAgICAgICAgICAgVk06
OnN0YWNrUG9pbnRlckF0Vk1FbnRyeSB3aGVuIHdlIGluc3RhbGwgYSBWTUVudHJ5U2NvcGUgaWYg
YW5kIG9ubHkgaWYKKyAgICAgICAgICAgaXQgaXNuJ3QgYWxyZWFkeSBzZXQuCisKKyAgICAgICAg
ICAgV2hlbiB3ZSBkcm9wIHRoZSBBUEkgbG9ja3MsIHdlJ2xsIHNhdmUgdGhlIGN1cnJlbnQgc3Rh
Y2tQb2ludGVyQXRWTUVudHJ5CisgICAgICAgICAgIGFuZCBzdGFjayBsaW1pdCB2YWx1ZSwgYW5k
IGNsZWFyIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSB0byBhbGxvdyBhIG5ldworICAgICAgICAgICB0
aHJlYWQgYWNxdWlyaW5nIHRoZSBBUEkgbG9ja3MgdG8gcmUtc2V0IGl0IHdoZW4gaXQgaW5zdGFs
bHMgYSBWTUVudHJ5U2NvcGUuCisgICAgICAgICAgIFdoZW4gd2UgcmUtYWNxdWlyZSB0aGUgQVBJ
IGxvY2tzIGFnYWluLCB3ZSdsbCByZXN0b3JlIHRoZSBwcmV2aW91c2x5IHNhdmVkCisgICAgICAg
ICAgIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSBhbmQgc3RhY2sgbGltaXQuCisKKyAgICAgICAgICAg
V2l0aCB0aGlzIGNoYW5nZSwgd2UgYWxzbyBubyBsb25nZXIgbmVlZCB0aGUgc3RhY2tQb2ludGVy
QXRWTUVudHJ5IGZpeCB1cAorICAgICAgICAgICBjb2RlIGluIGRvQ2FsbFRvSmF2YVNjcmlwdCgp
LiBUaGF0IGNvZGUgaXMgbm93IHJlbW92ZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAg
ICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRvRmlu
YWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjpkZWxldGVBbGxDb21waWxlZENvZGUpOgorICAg
ICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFt
ZTo6dm1FbnRyeUdsb2JhbE9iamVjdCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSlNTdGFjay5jcHA6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OkpTU3RhY2sp
OgorICAgICAgICAoSlNDOjpKU1N0YWNrOjp+SlNTdGFjayk6CisgICAgICAgIChKU0M6OkpTU3Rh
Y2s6Omdyb3dTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnJlbGVhc2VFeGNlc3ND
YXBhY2l0eSk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnNldEhvc3Rab25lU2l6ZSk6CisgICAg
ICAgIChKU0M6OkpTU3RhY2s6Omxvd0FkZHJlc3MpOgorICAgICAgICAqIGludGVycHJldGVyL0pT
U3RhY2suaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKU1N0YWNrOjplbnN1cmVDYXBhY2l0eUZvcik6CisgICAgICAgIChKU0M6OkpTU3Rh
Y2s6OnNocmluayk6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaDoKKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2Vy
L1BhcnNlckVycm9yLmg6CisgICAgICAgIChKU0M6OlBhcnNlckVycm9yOjp0b0Vycm9yT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpFcnJvckhhbmRsaW5nU2NvcGU6OkVycm9ySGFuZGxp
bmdTY29wZSk6CisgICAgICAgIChKU0M6OkVycm9ySGFuZGxpbmdTY29wZTo6fkVycm9ySGFuZGxp
bmdTY29wZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuaDogQWRkZWQu
CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
dGhyb3dTdGFja092ZXJmbG93RXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2Nrcyk6CisgICAgICAgIChK
U0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjp+RHJvcEFsbExvY2tzKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlNDOjpWTTo6
cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpWTTo6dXBkYXRlU3RhY2tM
aW1pdFdpdGhIb3N0Wm9uZVNpemUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KiBydW50aW1lL1ZNRW50cnlTY29wZS5jcHA6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6
Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNjb3Bl
KToKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5oOgorCiAyMDE0LTAxLTA4ICBNaWNo
YWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIENTdGFjazogc3RhY2sg
ZnJhbWUgZ2V0cyB1bmFsaWduZWQgYmVmb3JlIGNhbGwgdG8gb3BlcmF0aW9uVk1IYW5kbGVFeGNl
cHRpb24KQEAgLTMxOSw2ICs0OTQsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NDg3LgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwg
U2Fib2ZmLgorICAgICAgICBVcGRhdGU6IHRoaXMgaXMgc3VwcGxhbnRlZCBieSB0aGUgMjAxNC0w
MS0wOCBwYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NjMyMC4KIAogICAgICAgICBJbiBkb0NhbGxUb0phdmFTY3JpcHQsIHdlIGZpeHVwIFZNOjptX2pz
U3RhY2tMaW1pdCBvbmNlIHdlIGtub3cgd2hhdCB0aGUKICAgICAgICAgc3RhY2tQb2ludGVyQXRW
TUVudHJ5IGlzLiBIb3dldmVyLCB3ZSBhbHNvIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZpeGVk
CkBAIC02MzYsNyArODEyLDggQEAKICAgICAgICAgQ1N0YWNrOiBOZWVkIGEgc2VwYXJhdGUgc3Rh
Y2sgbGltaXQgZm9yIHRoZSBKUyBzdGFjayBhbmQgdGhlIEMgc3RhY2suCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjAuCiAKLSAgICAgICAgTm90
IHlldCByZXZpZXdlZC4KKyAgICAgICAgUmVqZWN0ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAg
ICAgIFVwZGF0ZTogdGhpcyBpcyBzdXBwbGFudGVkIGJ5IHRoZSAyMDE0LTAxLTA4IHBhdGNoIGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzIwLgogCiAgICAg
ICAgIFdpdGggdGhpcyBwYXRjaCwgd2Ugbm93IGFjY3VyYXRlbHkgdHJhY2sgaG93IG11Y2ggSlMg
c3RhY2sgc3BhY2UgdGhlCiAgICAgICAgIFZNIGhhcyB1c2VkLCBhbmQgY2FwIHRoYXQgYXQgdGhl
IHZhbHVlIHNwZWNpZmllZCBieSBPcHRpb25zOjptYXhTdGFja1NpemUoKS4KQEAgLTcyMSw3ICs4
OTgsOCBAQAogICAgICAgICBDU3RhY2s6IHRoZSBHQyBzaG91bGQgbm90IGJlIGFzc3VtaW5nIGFu
eSBsaW1pdCBvbiB0aGUgc3RhY2sgc2l6ZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjMzNS4KIAotICAgICAgICBOb3QgeWV0IHJldmlld2VkLgor
ICAgICAgICBSZWplY3RlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgVXBkYXRlOiB0aGlz
IGlzIHN1cHBsYW50ZWQgYnkgdGhlIDIwMTQtMDEtMDggcGF0Y2ggZm9yIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjAuCiAKICAgICAgICAgKiBoZWFwL0NvbnNl
cnZhdGl2ZVJvb3RzLmNwcDoKICAgICAgICAgKEpTQzo6Q29uc2VydmF0aXZlUm9vdHM6OmdlbmVy
aWNBZGRTcGFuKToKQEAgLTczMiw2ICs5MTAsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzM0LgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgorICAgICAgICBVcGRhdGU6IHRoaXMgaXMgc3VwcGxhbnRlZCBieSB0aGUg
MjAxNC0wMS0wOCBwYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNjMyMC4KIAogICAgICAgICBXaGVuIHdlIHN0YXJ0IG1lYXN1cmluZyB0aGUgc3RhY2sg
dXNhZ2Ugb2YgZWFjaCBWTUVudHJ5U2NvcGUsIHdlJ2xsIG5lZWQKICAgICAgICAgdG8ga25vdyB3
aGljaCBWTUVudHJ5U2NvcGUgaXMgdGhlIHRvcCAobW9zdCByZWNlbnQpIG9uZSwgbm90IGp1c3Qg
dGhlCkBAIC03NjEsNyArOTQwLDggQEAKICAgICAgICAgQ1N0YWNrOiBSZWZhY3RvciB0byBzcGxp
dCB0aGUgdHJhY2tpbmcgb2YgdGhlIGpzU3RhY2tMaW1pdCBmcm9tIHRoZSBuYXRpdmUgc3RhY2tM
aW1pdC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NjMzMS4KIAotICAgICAgICBOb3QgeWV0IHJldmlld2VkLgorICAgICAgICBSZWplY3RlZCBieSBH
ZW9mZnJleSBHYXJlbi4KKyAgICAgICAgVXBkYXRlOiB0aGlzIGlzIHN1cHBsYW50ZWQgYnkgdGhl
IDIwMTQtMDEtMDggcGF0Y2ggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjYzMjAuCiAKICAgICAgICAgUHJldmlvdXNseSwgd2hlbiB1c2luZyB0aGUgQyBzdGFj
ayBmb3IgdGhlIEpTIHN0YWNrLCBWTTo6bV9qc1N0YWNrTGltaXQgaXMgYSB1bmlvbgogICAgICAg
ICB3aXRoIFZNOjptX3N0YWNrTGltaXQuIFdlIG5vdyBzZXBhcmF0ZSB0aGVtIGludG8gMiBkaXN0
aW5jdCBmaWVsZHMgYnV0IGhhdmVuJ3QgeWV0CkBAIC03OTYsNiArOTc2LDcgQEAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMyMS4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgVXBkYXRlOiB0aGlzIGlzIHN1
cHBsYW50ZWQgYnkgdGhlIDIwMTQtMDEtMDggcGF0Y2ggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjAuCiAKICAgICAgICAgV2UgbmVlZCBhbiBvcHRpb24g
dG8gbGltaXQgdGhlIEpTIHN0YWNrIHNpemUuIEN1cnJlbnRseSwgd2UganVzdCBjaGFuZ2UKICAg
ICAgICAgdGhlIEpTU3RhY2sgY2xhc3MgdG8gdXNlIHRoaXMgbGltaXQuCkBAIC04MjYsNyArMTAw
Nyw4IEBACiAgICAgICAgIENTdGFjazogQ29zbWV0aWM6IHJlbmFtZSBWTTo6ZW50cnlTY29wZSB0
byBmaXJzdEVudHJ5U2NvcGUuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjYyNjYuCiAKLSAgICAgICAgTm90IHlldCByZXZpZXdlZC4KKyAgICAgICAg
UmVqZWN0ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAgIFVwZGF0ZTogdGhpcyBpcyBzdXBw
bGFudGVkIGJ5IHRoZSAyMDE0LTAxLTA4IHBhdGNoIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzIwLgogCiAgICAgICAgIFRoaXMgcGF0Y2ggaXMgc28gdGhh
dCB3ZSBjYW4gZGlzdGluZ3Vpc2ggZmlyc3RFbnRyeVNjb3BlIGZyb20gdG9wRW50cnlTY29wZQog
ICAgICAgICB3aGljaCB3aWxsIGJlIGludHJvZHVjZWQgbGF0ZXIgaW4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMzNC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzExLDYgKzMxMSw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9EdW1wQ29udGV4dC5jcHAKICAgICBy
dW50aW1lL0Vycm9yLmNwcAogICAgIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKyAgICBy
dW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5jcHAKICAgICBydW50aW1lL0Vycm9ySW5zdGFuY2Uu
Y3BwCiAgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkocmV2aXNpb24gMTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTg1MSw2ICs4NTEsOCBAQCBqYXZhc2NyaXB0
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTU1Myw2ICs1NTMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxEdW1wQ29udGV4dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEVycm9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JD
b25zdHJ1Y3Rvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEVy
cm9ySGFuZGxpbmdTY29wZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEVycm9ySW5zdGFuY2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxFcnJvclByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEV4Y2VwdGlvbkhlbHBlcnMuY3BwIiAvPgpAQCAtMTEzMyw2ICsxMTM0LDcgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRHVtcENvbnRleHQuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3IuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JDb25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvckhhbmRsaW5nU2NvcGUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JJbnN0YW5jZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvclByb3RvdHlwZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFeGNlcHRpb25IZWxwZXJzLmgiIC8+CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZp
c2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTUw
Nyw2ICs1MDcsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvckNv
bnN0cnVjdG9yLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JIYW5kbGlu
Z1Njb3BlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JJbnN0YW5jZS5j
cHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBA
IC0yMDM2LDYgKzIwMzksOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxF
cnJvckNvbnN0cnVjdG9yLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9ySGFu
ZGxpbmdTY29wZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvckluc3RhbmNl
LmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTYxNTMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNzksNiArMTI3OSw4IEBACiAJCUZFNTkzMkE4MTgzQzVB
MjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8q
IEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRUEwODYyMTE4MkI3QTA0MDBGNkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUEwODYxRjE4
MkI3QTA0MDBGNkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVCNThDMTQxODdCOEIxNjAwOThFRjBC
IC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUI1OEMxMjE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGlu
Z1Njb3BlLmNwcCAqLzsgfTsKKwkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFu
ZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRDI4N0IyMTVF
QzlBNTcwMERBODE2MSAvKiBMTEludE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEMjg3QjExNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bj
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkVEOTRGMkUxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAv
KiBXYXRjaGRvZy5jcHAgKi87IH07CiAJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRj
aGRvZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVE
OTRGMkMxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2NDcsNiArMjY0OSw4IEBACiAJCUZFNTkz
MkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkVBMDg2MUYxODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWJ1Z2dlclByaW1pdGl2ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCNThDMTIxODdCOEIxNjAwOThFRjBCIC8q
IEVycm9ySGFuZGxpbmdTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFcnJvckhhbmRsaW5nU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVycm9ySGFuZGxpbmdTY29wZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRUQyODdCMTE1RUM5QTU3MDBEQTgxNjEgLyogTExJbnRP
cGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPcGNvZGUuaDsg
cGF0aCA9IGxsaW50L0xMSW50T3Bjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFRDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXRjaGRvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXRjaGRvZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzQ4MCw2ICszNDg0LDggQEAKIAkJCQlCQzMwNDYwNjBFMUY0OTdGMDAzMjMy
Q0YgLyogRXJyb3IuaCAqLywKIAkJCQlCQzAyRTkwNDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JD
b25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMwMkU5MDUwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9y
Q29uc3RydWN0b3IuaCAqLywKKwkJCQlGRUI1OEMxMjE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JI
YW5kbGluZ1Njb3BlLmNwcCAqLywKKwkJCQlGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJy
b3JIYW5kbGluZ1Njb3BlLmggKi8sCiAJCQkJQkMwMkU5OEEwRTE4M0UzODAwMEY5Mjk3IC8qIEVy
cm9ySW5zdGFuY2UuY3BwICovLAogCQkJCUJDMDJFOThCMEUxODNFMzgwMDBGOTI5NyAvKiBFcnJv
ckluc3RhbmNlLmggKi8sCiAJCQkJQkMwMkU5MDYwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yUHJv
dG90eXBlLmNwcCAqLywKQEAgLTQzMTMsNiArNDMxOSw3IEBACiAJCQkJNjVDMDI4NUQxNzE3OTY2
ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1OTMyQTgx
ODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
NEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdCRkYzQzAxNzk4Njg5NDAwMDJGNDYyIC8qIERGR0ZpbHRyYXRp
b25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTExMTdBOUMyNEUwMDM0QzczNSAv
KiBCeXRlY29kZUJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTEzMTdBOUMy
NEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLApA
QCAtNTQ4Nyw2ICs1NDk0LDcgQEAKIAkJCQkwRjYzOTQ4NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZH
QXJyYXlNb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDlBMjk0MTdBMEJDNzQwMEVFMjYx
OCAvKiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzE0
Q0E0MTZFQTkyRjAwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZFQjU4QzE0MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRs
aW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5
QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4
OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5j
cHAJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgot
I2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogCiBuYW1lc3BhY2UgewogCkBAIC0xOTYsOCArMTk1
LDggQEAgdm9pZCBEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVgogewogICAgIC8v
IElmIEphdmFTY3JpcHQgaXMgcnVubmluZywgaXQncyBub3Qgc2FmZSB0byByZWNvbXBpbGUsIHNp
bmNlIHdlJ2xsIGVuZAogICAgIC8vIHVwIHRocm93aW5nIGF3YXkgY29kZSB0aGF0IGlzIGxpdmUg
b24gdGhlIHN0YWNrLgotICAgIEFTU0VSVCghdm0tPmZpcnN0RW50cnlTY29wZSk7Ci0gICAgaWYg
KHZtLT5maXJzdEVudHJ5U2NvcGUpCisgICAgQVNTRVJUKCF2bS0+ZW50cnlTY29wZSk7CisgICAg
aWYgKHZtLT5lbnRyeVNjb3BlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgdm0tPnByZXBh
cmVUb0Rpc2NhcmRDb2RlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5j
bHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCi0jaW5jbHVkZSAiVk1F
bnRyeVNjb3BlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAxNjE1MzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgdm9pZCBDb25zZXJ2YXRpdmVSb290czo6Z2Vu
ZXJpY0FkZFNwYW4odgogICAgICAgICBlbmQgPSBzd2FwVGVtcDsKICAgICB9CiAKKyAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0aWNfY2FzdDxjaGFyKj4oZW5kKSAtIHN0YXRpY19j
YXN0PGNoYXIqPihiZWdpbikpIDwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuc2l6ZSgpKTsKICAg
ICBBU1NFUlQoaXNQb2ludGVyQWxpZ25lZChiZWdpbikpOwogICAgIEFTU0VSVChpc1BvaW50ZXJB
bGlnbmVkKGVuZCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gMTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQCBib29sIEhlYXA6OmlzUGFnZWRPdXQoZG91
YmxlIGRlYWRsaW5lKQogLy8gUnVuIGFsbCBwZW5kaW5nIGZpbmFsaXplcnMgbm93IGJlY2F1c2Ug
d2Ugd29uJ3QgZ2V0IGFub3RoZXIgY2hhbmNlLgogdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9GaW5h
bGl6ZSgpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0tPmZpcnN0RW50cnlTY29wZSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0tPmVudHJ5U2NvcGUpOwogICAgIFJFTEVBU0VfQVNTRVJU
KG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CiAKICAgICBtX29iamVjdFNw
YWNlLmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CkBAIC02OTUsNyArNjk1LDcgQEAgdm9pZCBIZWFw
OjpkZWxldGVBbGxDb21waWxlZENvZGUoKQogewogICAgIC8vIElmIEphdmFTY3JpcHQgaXMgcnVu
bmluZywgaXQncyBub3Qgc2FmZSB0byBkZWxldGUgY29kZSwgc2luY2Ugd2UnbGwgZW5kCiAgICAg
Ly8gdXAgZGVsZXRpbmcgY29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgotICAgIGlmICht
X3ZtLT5maXJzdEVudHJ5U2NvcGUpCisgICAgaWYgKG1fdm0tPmVudHJ5U2NvcGUpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGZvciAoRXhlY3V0YWJsZUJhc2UqIGN1cnJlbnQgPSBtX2NvbXBpbGVk
Q29kZS5oZWFkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KCkpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShy
ZXZpc2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCw4IEBAIEpTR2xvYmFsT2Jq
ZWN0KiBDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWwKIAogICAgIC8vIEZvciBhbnkgRXhlY1N0YXRl
IHRoYXQncyBub3QgYSBnbG9iYWxFeGVjLCB0aGUgCiAgICAgLy8gZHluYW1pYyBnbG9iYWwgb2Jq
ZWN0IG11c3QgYmUgc2V0IHNpbmNlIGNvZGUgaXMgcnVubmluZwotICAgIEFTU0VSVCh2bSgpLmZp
cnN0RW50cnlTY29wZSk7Ci0gICAgcmV0dXJuIHZtKCkuZmlyc3RFbnRyeVNjb3BlLT5nbG9iYWxP
YmplY3QoKTsKKyAgICBBU1NFUlQodm0oKS5lbnRyeVNjb3BlKTsKKyAgICByZXR1cm4gdm0oKS5l
bnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDIxICs5MSw2IEBAIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbnRlcnByZXRlcjo6RXJyb3JI
YW5kbGluZ01vZGU6OkVycm9ySGFuZGxpbmdNb2RlKEV4ZWNTdGF0ZSAqZXhlYykKLSAgICA6IG1f
aW50ZXJwcmV0ZXIoKmV4ZWMtPmludGVycHJldGVyKCkpCi17Ci0gICAgbV9pbnRlcnByZXRlci5t
X2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeSsrOwotICAgIG1faW50ZXJwcmV0ZXIuc3RhY2soKS51
cGRhdGVTdGFja0xpbWl0KCk7Ci19Ci0KLUludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZTo6
fkVycm9ySGFuZGxpbmdNb2RlKCkKLXsKLSAgICBtX2ludGVycHJldGVyLm1fZXJyb3JIYW5kbGlu
Z01vZGVSZWVudHJ5LS07Ci0gICAgQVNTRVJUKG1faW50ZXJwcmV0ZXIubV9lcnJvckhhbmRsaW5n
TW9kZVJlZW50cnkgPj0gMCk7Ci0gICAgaWYgKCFtX2ludGVycHJldGVyLm1fZXJyb3JIYW5kbGlu
Z01vZGVSZWVudHJ5KQotICAgICAgICBtX2ludGVycHJldGVyLnN0YWNrKCkudXBkYXRlU3RhY2tM
aW1pdCgpOwotfQotCiBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
aWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNjE1MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkwLDE0ICsxOTAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFZNOwogCiAgICAgcHVibGljOgotICAgICAgICBjbGFzcyBFcnJvckhhbmRsaW5n
TW9kZSB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEVy
cm9ySGFuZGxpbmdNb2RlKEV4ZWNTdGF0ZSopOwotICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgfkVycm9ySGFuZGxpbmdNb2RlKCk7Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBJ
bnRlcnByZXRlciYgbV9pbnRlcnByZXRlcjsKLSAgICAgICAgfTsKLQogICAgICAgICBJbnRlcnBy
ZXRlcihWTSAmKTsKICAgICAgICAgfkludGVycHJldGVyKCk7CiAgICAgICAgIApAQCAtMjM3LDgg
KzIyOSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgU2FtcGxpbmdUb29s
KiBzYW1wbGVyKCkgeyByZXR1cm4gbV9zYW1wbGVyLmdldCgpOyB9CiAKLSAgICAgICAgYm9vbCBp
c0luRXJyb3JIYW5kbGluZ01vZGUoKSB7IHJldHVybiBtX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRy
eTsgfQotCiAgICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdW53aW5kKENhbGxGcmFt
ZSomLCBKU1ZhbHVlJik7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFt
ZSosIERlYnVnSG9va0lEKTsKICAgICAgICAgSlNTdHJpbmcqIHN0YWNrVHJhY2VBc1N0cmluZyhF
eGVjU3RhdGUqLCBWZWN0b3I8U3RhY2tGcmFtZT4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkocmV2aXNpb24gMTYxNTMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290
cy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCi0jaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgi
CisjaW5jbHVkZSAiT3B0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTAsMTkgKzUw
LDE4IEBAIEpTU3RhY2s6OkpTU3RhY2soVk0mIHZtKQogICAgICwgbV90b3BDYWxsRnJhbWUodm0u
dG9wQ2FsbEZyYW1lKQogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgLCBtX2VuZCgwKQor
ICAgICwgbV9ob3N0Wm9uZVNpemVJblJlZ2lzdGVycygwKQogI2VuZGlmCiB7CiAjaWYgRU5BQkxF
KExMSU5UX0NfTE9PUCkKLSAgICBzaXplX3QgY2FwYWNpdHkgPSBPcHRpb25zOjptYXhTdGFja1Np
emUoKTsKKyAgICBzaXplX3QgY2FwYWNpdHkgPSBPcHRpb25zOjptYXhQZXJUaHJlYWRSZWN1cnNp
b25TdGFja1VzYWdlKCk7CiAgICAgQVNTRVJUKGNhcGFjaXR5ICYmIGlzUGFnZUFsaWduZWQoY2Fw
YWNpdHkpKTsKIAotICAgIG1fcmVzZXJ2YXRpb24gPSBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmUo
cm91bmRVcEFsbG9jYXRpb25TaXplKGNhcGFjaXR5LCBjb21taXRTaXplKSwgT1NBbGxvY2F0b3I6
OkpTVk1TdGFja1BhZ2VzKTsKKyAgICBtX3Jlc2VydmF0aW9uID0gUGFnZVJlc2VydmF0aW9uOjpy
ZXNlcnZlKFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihjb21taXRTaXplLCBjYXBhY2l0eSksIE9T
QWxsb2NhdG9yOjpKU1ZNU3RhY2tQYWdlcyk7CiAgICAgc2V0U3RhY2tMaW1pdChoaWdoQWRkcmVz
cygpKTsKICAgICBtX2NvbW1pdFRvcCA9IGhpZ2hBZGRyZXNzKCk7CiAgICAgCiAgICAgbV9sYXN0
U3RhY2tUb3AgPSBiYXNlT2ZTdGFjaygpOwotCi0gICAgZGlzYWJsZUVycm9yU3RhY2tSZXNlcnZl
KCk7CiAjZW5kaWYgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKIAogICAgIG1fdG9wQ2FsbEZyYW1l
ID0gMDsKQEAgLTcxLDE3ICs3MCwxOSBAQCBKU1N0YWNrOjpKU1N0YWNrKFZNJiB2bSkKICNpZiBF
TkFCTEUoTExJTlRfQ19MT09QKQogSlNTdGFjazo6fkpTU3RhY2soKQogewotICAgIHZvaWQqIGhp
Z2hBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KG1f
cmVzZXJ2YXRpb24uYmFzZSgpKSArIG1fcmVzZXJ2YXRpb24uc2l6ZSgpKTsKLSAgICBtX3Jlc2Vy
dmF0aW9uLmRlY29tbWl0KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fY29tbWl0VG9wKSwgcmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaGlnaEFkZHJlc3MpIC0gcmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4obV9jb21taXRUb3ApKTsKLSAgICBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudCgtKHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGhpZ2hBZGRyZXNzKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KG1fY29tbWl0VG9wKSkpOworICAgIHB0cmRpZmZfdCBzaXplVG9EZWNvbW1pdCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGhpZ2hBZGRyZXNzKCkpIC0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obV9jb21taXRUb3ApOworICAgIG1fcmVzZXJ2YXRpb24uZGVjb21taXQocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4obV9jb21taXRUb3ApLCBzaXplVG9EZWNvbW1pdCk7CisgICAgYWRk
VG9Db21taXR0ZWRCeXRlQ291bnQoLXNpemVUb0RlY29tbWl0KTsKICAgICBtX3Jlc2VydmF0aW9u
LmRlYWxsb2NhdGUoKTsKIH0KIAogYm9vbCBKU1N0YWNrOjpncm93U2xvd0Nhc2UoUmVnaXN0ZXIq
IG5ld1RvcE9mU3RhY2spCiB7CisgICAgUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2tXaXRoSG9zdFpv
bmUgPSBuZXdUb3BPZlN0YWNrIC0gbV9ob3N0Wm9uZVNpemVJblJlZ2lzdGVyczsKKwogICAgIC8v
IElmIHdlIGhhdmUgYWxyZWFkeSBjb21taXR0ZWQgZW5vdWdoIG1lbW9yeSB0byBzYXRpc2Z5IHRo
aXMgcmVxdWVzdCwKICAgICAvLyBqdXN0IHVwZGF0ZSB0aGUgZW5kIHBvaW50ZXIgYW5kIHJldHVy
bi4KLSAgICBpZiAobmV3VG9wT2ZTdGFjayA+PSBtX2NvbW1pdFRvcCkgeworICAgIGlmIChuZXdU
b3BPZlN0YWNrV2l0aEhvc3Rab25lID49IG1fY29tbWl0VG9wKSB7CiAgICAgICAgIHNldFN0YWNr
TGltaXQobmV3VG9wT2ZTdGFjayk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTg5
LDE1ICs5MCwxNyBAQCBib29sIEpTU3RhY2s6Omdyb3dTbG93Q2FzZShSZWdpc3RlciogbmV3CiAg
ICAgLy8gQ29tcHV0ZSB0aGUgY2h1bmsgc2l6ZSBvZiBhZGRpdGlvbmFsIG1lbW9yeSB0byBjb21t
aXQsIGFuZCBzZWUgaWYgd2UKICAgICAvLyBoYXZlIGl0IGlzIHN0aWxsIHdpdGhpbiBvdXIgYnVk
Z2V0LiBJZiBub3QsIHdlJ2xsIGZhaWwgdG8gZ3JvdyBhbmQKICAgICAvLyByZXR1cm4gZmFsc2Uu
Ci0gICAgbG9uZyBkZWx0YSA9IHJvdW5kVXBBbGxvY2F0aW9uU2l6ZShyZWludGVycHJldF9jYXN0
PGNoYXIqPihtX2NvbW1pdFRvcCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihuZXdUb3BPZlN0
YWNrKSwgY29tbWl0U2l6ZSk7Ci0gICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29t
bWl0VG9wKSAtIGRlbHRhIDw9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fdXNlYWJsZVRvcCkp
CisgICAgcHRyZGlmZl90IGRlbHRhID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9jb21taXRU
b3ApIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obmV3VG9wT2ZTdGFja1dpdGhIb3N0Wm9uZSk7
CisgICAgZGVsdGEgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoY29tbWl0U2l6ZSwgZGVsdGEp
OworICAgIFJlZ2lzdGVyKiBuZXdDb21taXRUb3AgPSBtX2NvbW1pdFRvcCAtIChkZWx0YSAvIHNp
emVvZihSZWdpc3RlcikpOworICAgIGlmIChuZXdDb21taXRUb3AgPCByZXNlcnZhdGlvblRvcCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBPdGhlcndpc2UsIHRoZSBncm93dGgg
aXMgc3RpbGwgd2l0aGluIG91ciBidWRnZXQuIEdvIGFoZWFkIGFuZCBjb21taXQKICAgICAvLyBp
dCBhbmQgcmV0dXJuIHRydWUuCi0gICAgbV9yZXNlcnZhdGlvbi5jb21taXQocmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4obV9jb21taXRUb3ApIC0gZGVsdGEsIGRlbHRhKTsKKyAgICBtX3Jlc2VydmF0
aW9uLmNvbW1pdChuZXdDb21taXRUb3AsIGRlbHRhKTsKICAgICBhZGRUb0NvbW1pdHRlZEJ5dGVD
b3VudChkZWx0YSk7Ci0gICAgbV9jb21taXRUb3AgPSByZWludGVycHJldF9jYXN0X3B0cjxSZWdp
c3Rlcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0VG9wKSAtIGRlbHRhKTsKKyAg
ICBtX2NvbW1pdFRvcCA9IG5ld0NvbW1pdFRvcDsKICAgICBzZXRTdGFja0xpbWl0KG5ld1RvcE9m
U3RhY2spOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTI3LDEwICsxMzAsMTEgQEAgdm9pZCBK
U1N0YWNrOjpzYW5pdGl6ZVN0YWNrKCkKIAogdm9pZCBKU1N0YWNrOjpyZWxlYXNlRXhjZXNzQ2Fw
YWNpdHkoKQogewotICAgIHB0cmRpZmZfdCBkZWx0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihoaWdoQWRkcmVzcygpKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbW1p
dFRvcCk7CisgICAgUmVnaXN0ZXIqIGhpZ2hBZGRyZXNzV2l0aEhvc3Rab25lID0gaGlnaEFkZHJl
c3MoKSAtIG1faG9zdFpvbmVTaXplSW5SZWdpc3RlcnM7CisgICAgcHRyZGlmZl90IGRlbHRhID0g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaGlnaEFkZHJlc3NXaXRoSG9zdFpvbmUpIC0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4obV9jb21taXRUb3ApOwogICAgIG1fcmVzZXJ2YXRpb24uZGVjb21t
aXQobV9jb21taXRUb3AsIGRlbHRhKTsKICAgICBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudCgtZGVs
dGEpOwotICAgIG1fY29tbWl0VG9wID0gaGlnaEFkZHJlc3MoKTsKKyAgICBtX2NvbW1pdFRvcCA9
IGhpZ2hBZGRyZXNzV2l0aEhvc3Rab25lOwogfQogCiB2b2lkIEpTU3RhY2s6OmluaXRpYWxpemVU
aHJlYWRpbmcoKQpAQCAtMTQ1LDI1ICsxNDksMTEgQEAgdm9pZCBKU1N0YWNrOjphZGRUb0NvbW1p
dHRlZEJ5dGVDb3VudChsbwogICAgIGNvbW1pdHRlZEJ5dGVzQ291bnQgKz0gYnl0ZUNvdW50Owog
fQogCi12b2lkIEpTU3RhY2s6OmVuYWJsZUVycm9yU3RhY2tSZXNlcnZlKCkKK3ZvaWQgSlNTdGFj
azo6c2V0SG9zdFpvbmVTaXplKHNpemVfdCBob3N0Wm9uZVNpemUpCiB7Ci0gICAgbV91c2VhYmxl
VG9wID0gcmVzZXJ2YXRpb25Ub3AoKTsKLX0KLQotdm9pZCBKU1N0YWNrOjpkaXNhYmxlRXJyb3JT
dGFja1Jlc2VydmUoKQotewotICAgIGNoYXIqIHVzZWFibGVUb3AgPSByZWludGVycHJldF9jYXN0
PGNoYXIqPihyZXNlcnZhdGlvblRvcCgpKSArIGNvbW1pdFNpemU7Ci0gICAgbV91c2VhYmxlVG9w
ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UmVnaXN0ZXIqPih1c2VhYmxlVG9wKTsKLQotICAgIC8v
IEJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLCB3ZSBhcmUgZ3VhcmFudGVlZCB0byBiZSBkZXN0cnVj
dGluZyB0aGUgbGFzdAotICAgIC8vIEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZSB0aGF0
IGVuYWJsZWQgdGhpcyByZXNlcnZlIGluIHRoZSBmaXJzdAotICAgIC8vIHBsYWNlLiBUaGF0IG1l
YW5zIHRoZSBzdGFjayBzcGFjZSBiZXlvbmQgbV91c2VhYmxlVG9wIGJlZm9yZSB3ZQotICAgIC8v
IGVuYWJsZWQgdGhlIHJlc2VydmUgd2FzIG5vdCBwcmV2aW91c2x5IGluIHVzZS4gSGVuY2UsIGl0
IGlzIHNhZmUgdG8KLSAgICAvLyBzaHJpbmsgYmFjayB0byB0aGF0IG1fdXNlYWJsZVRvcC4KLSAg
ICBpZiAobV9lbmQgKyAxIDwgbV91c2VhYmxlVG9wKSB7Ci0gICAgICAgIEFTU0VSVChtX3RvcENh
bGxGcmFtZS0+dG9wT2ZGcmFtZSgpID4gbV91c2VhYmxlVG9wKTsKLSAgICAgICAgc2hyaW5rKG1f
dXNlYWJsZVRvcCk7Ci0gICAgfQorICAgIG1faG9zdFpvbmVTaXplSW5SZWdpc3RlcnMgPSBob3N0
Wm9uZVNpemUgLyBzaXplb2YoUmVnaXN0ZXIpOworICAgIGlmIChtX2NvbW1pdFRvcCA+PSAobV9l
bmQgKyAxKSAtIG1faG9zdFpvbmVTaXplSW5SZWdpc3RlcnMpCisgICAgICAgIGdyb3dTbG93Q2Fz
ZShtX2VuZCArIDEpOwogfQogI2VuZGlmIC8vIEVOQUJMRShMTElOVF9DX0xPT1ApCiAKQEAgLTE3
MSw3ICsxNjEsNyBAQCB2b2lkIEpTU3RhY2s6OmRpc2FibGVFcnJvclN0YWNrUmVzZXJ2ZSgpCiBS
ZWdpc3RlciogSlNTdGFjazo6bG93QWRkcmVzcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHd0ZlRo
cmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFJlZ2lzdGVyKj4obV92bS5qc1N0YWNrTGltaXQoKSk7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPihtX3ZtLnN0YWNrTGltaXQoKSk7CiB9CiAKIFJl
Z2lzdGVyKiBKU1N0YWNrOjpoaWdoQWRkcmVzcygpIGNvbnN0CkBAIC0xOTYsMTYgKzE4Niw0IEBA
IHNpemVfdCBKU1N0YWNrOjpjb21taXR0ZWRCeXRlQ291bnQoKQogI2VuZGlmCiB9CiAKLXZvaWQg
SlNTdGFjazo6dXBkYXRlU3RhY2tMaW1pdCgpCi17Ci0jaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
LSAgICBpZiAobV92bS5pbnRlcnByZXRlci0+aXNJbkVycm9ySGFuZGxpbmdNb2RlKCkpCi0gICAg
ICAgIGVuYWJsZUVycm9yU3RhY2tSZXNlcnZlKCk7Ci0gICAgZWxzZQotICAgICAgICBkaXNhYmxl
RXJyb3JTdGFja1Jlc2VydmUoKTsKLSNlbmRpZgotICAgIGlmIChtX3ZtLnRvcEVudHJ5U2NvcGUp
Ci0gICAgICAgIG1fdm0udG9wRW50cnlTY29wZS0+dXBkYXRlU3RhY2tMaW1pdHMoKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSlNTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmgJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTgzLDggKzgzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBi
b29sIGVuc3VyZUNhcGFjaXR5Rm9yKFJlZ2lzdGVyKiBuZXdUb3BPZlN0YWNrKTsKIAotICAgICAg
ICB2b2lkIHVwZGF0ZVN0YWNrTGltaXQoKTsKLQogICAgICAgICBib29sIGNvbnRhaW5zQWRkcmVz
cyhSZWdpc3RlciogYWRkcmVzcykgeyByZXR1cm4gKGxvd0FkZHJlc3MoKSA8PSBhZGRyZXNzICYm
IGFkZHJlc3MgPCBoaWdoQWRkcmVzcygpKTsgfQogICAgICAgICBzdGF0aWMgc2l6ZV90IGNvbW1p
dHRlZEJ5dGVDb3VudCgpOwogCkBAIC0xMDksNiArMTA3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCisgICAgICAgIHZv
aWQgc2V0SG9zdFpvbmVTaXplKHNpemVfdCk7CisKICAgICAgICAgQ2FsbEZyYW1lKiBwdXNoRnJh
bWUoY2xhc3MgQ29kZUJsb2NrKiwgSlNTY29wZSosIGludCBhcmdzQ291bnQsIEpTT2JqZWN0KiBj
YWxsZWUpOwogCiAgICAgICAgIHZvaWQgcG9wRnJhbWUoQ2FsbEZyYW1lKik7CkBAIC0xNjcsMTcg
KzE2NywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRTdGFja0xpbWl0KFJl
Z2lzdGVyKiBuZXdUb3BPZlN0YWNrKTsKICNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQog
Ci0gICAgICAgIHZvaWQgZW5hYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKLSAgICAgICAgdm9pZCBk
aXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKLQogICAgICAgICBWTSYgbV92bTsKICAgICAgICAg
Q2FsbEZyYW1lKiYgbV90b3BDYWxsRnJhbWU7CiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAg
ICAgICAgUmVnaXN0ZXIqIG1fZW5kOwogICAgICAgICBSZWdpc3RlciogbV9jb21taXRUb3A7Ci0g
ICAgICAgIFJlZ2lzdGVyKiBtX3VzZWFibGVUb3A7CiAgICAgICAgIFBhZ2VSZXNlcnZhdGlvbiBt
X3Jlc2VydmF0aW9uOwogICAgICAgICBSZWdpc3RlciogbV9sYXN0U3RhY2tUb3A7CisgICAgICAg
IHB0cmRpZmZfdCBtX2hvc3Rab25lU2l6ZUluUmVnaXN0ZXJzOwogI2VuZGlmIC8vIEVOQUJMRShM
TElOVF9DX0xPT1ApCiAKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0
YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzksNyArMzksNyBAQCBpbmxpbmUgYm9vbCBKU1N0YWNrOjplbnN1cmVDYXBhY2l0eUZvcihSCiAg
ICAgcmV0dXJuIGdyb3cobmV3VG9wT2ZTdGFjayk7CiAjZWxzZQogICAgIEFTU0VSVCh3dGZUaHJl
YWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKLSAgICByZXR1cm4gbmV3VG9w
T2ZTdGFjayA+PSBtX3ZtLmpzU3RhY2tMaW1pdCgpOworICAgIHJldHVybiBuZXdUb3BPZlN0YWNr
ID49IG1fdm0uc3RhY2tMaW1pdCgpOwogI2VuZGlmCiB9CiAKQEAgLTE1Nyw3ICsxNTcsMTIgQEAg
aW5saW5lIHZvaWQgSlNTdGFjazo6c2hyaW5rKFJlZ2lzdGVyKiBuZQogICAgIGlmIChuZXdFbmQg
Pj0gbV9lbmQpCiAgICAgICAgIHJldHVybjsKICAgICBzZXRTdGFja0xpbWl0KG5ld1RvcE9mU3Rh
Y2spOwotICAgIGlmIChtX2VuZCA9PSBiYXNlT2ZTdGFjaygpICYmIChoaWdoQWRkcmVzcygpIC0g
bV9jb21taXRUb3ApID49IG1heEV4Y2Vzc0NhcGFjaXR5KQorICAgIC8vIE5vdGU6IENsYW5nIGNv
bXBsYWlucyBvZiBhbiB1bnJlc29sdmVkIGxpbmthZ2UgdG8gbWF4RXhjZXNzQ2FwYWNpdHkgaWYK
KyAgICAvLyBpbnZva2Ugc3RkOjptYXgoKSB3aXRoIGl0IGFzIGFuIGFyZ3VtZW50LiBUbyB3b3Jr
IGFyb3VuZCB0aGlzLCB3ZSBmaXJzdAorICAgIC8vIGFzc2lnbiB0aGUgY29uc3RhbnQgdG8gYSBs
b2NhbCB2YXJpYWJsZSwgYW5kIHVzZSB0aGUgbG9jYWwgaW5zdGVhZC4KKyAgICBwdHJkaWZmX3Qg
bWF4RXhjZXNzSW5SZWdpc3RlcnMgPSBtYXhFeGNlc3NDYXBhY2l0eTsKKyAgICBtYXhFeGNlc3NJ
blJlZ2lzdGVycyA9IHN0ZDo6bWF4KG1heEV4Y2Vzc0luUmVnaXN0ZXJzLCBtX2hvc3Rab25lU2l6
ZUluUmVnaXN0ZXJzKTsKKyAgICBpZiAobV9lbmQgPT0gYmFzZU9mU3RhY2soKSAmJiAoaGlnaEFk
ZHJlc3MoKSAtIG1fY29tbWl0VG9wKSA+PSBtYXhFeGNlc3NJblJlZ2lzdGVycykKICAgICAgICAg
cmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCShyZXZpc2lvbiAxNjE1MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNzgsMjEgKzc4LDYgQEAgdm9pZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeShWTSYp
OwogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaml0QWxsb2NhdGlvbkdyYW51bGUgPSAzMjsKIAot
aW5saW5lIHNpemVfdCByb3VuZFVwQWxsb2NhdGlvblNpemUoc2l6ZV90IHJlcXVlc3QsIHNpemVf
dCBncmFudWxhcml0eSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVCgoc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSAtIGdyYW51bGFyaXR5KSA+IHJlcXVlc3QpOwotICAgIAotICAgIC8v
IFJvdW5kIHVwIHRvIG5leHQgcGFnZSBib3VuZGFyeQotICAgIHNpemVfdCBzaXplID0gcmVxdWVz
dCArIChncmFudWxhcml0eSAtIDEpOwotICAgIHNpemUgPSBzaXplICYgfihncmFudWxhcml0eSAt
IDEpOwotICAgIEFTU0VSVChzaXplID49IHJlcXVlc3QpOwotICAgIHJldHVybiBzaXplOwotfQot
Ci19Ci0KLW5hbWVzcGFjZSBKU0MgewotCiB0eXBlZGVmIFdURjo6TWV0YUFsbG9jYXRvckhhbmRs
ZSBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlOwogCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRGR09TUkVudHJ5Lmgi
CiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUg
IkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJKSVQuaCIKQEAgLTc5LDcgKzgw
LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogICAgICAgICBj
YWxsZXJGcmFtZSA9IGV4ZWM7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsZXJGcmFtZSk7Ci0gICAgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG1vZGUo
Y2FsbGVyRnJhbWUpOworICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKCp2bSk7CiAg
ICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoY2FsbGVyRnJhbWUpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xv
d1BhdGhzLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oIgorI2luY2x1
ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpA
QCAtNDc0LDcgKzQ3NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogCiAg
ICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAgdm0udG9wQ2FsbEZyYW1lID0gZXhl
YzsKLSAgICBJbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGUgbW9kZShleGVjKTsKKyAgICBF
cnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgQ29tbW9uU2xvd1BhdGhzOjpp
bnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4
ZWMpKTsKICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oZXhlYyk7CiAg
ICAgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24g
MTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEyMSwyMyArMTIxLDYgQEAgbWFjcm8gZG9DYWxs
VG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQo
dGVtcDIsIDB4YmFkMGRjMDEpCiAKLSAgICAjIFRoZSBqc1N0YWNrTGltaXQgd2FzIHByZXZpb3Vz
bHkgY29tcHV0ZWQgaW4gVk1FbnRyeVNjb3BlIHVzaW5nIGFuCi0gICAgIyBlc3RpbWF0ZWQgc3Rh
Y2tQb2ludGVyQXRWTUVudHJ5IHZhbHVlLiBBZGp1c3QgdGhlIGpzU3RhY2tMaW1pdCBieQotICAg
ICMgdGhlIGRlbHRhIGJldHdlZW4gdGhlIGFjdHVhbCBzdGFja1BvaW50ZXJBdFZNRW50cnkgYW5k
IHRoZSBlc3RpbWF0ZQotICAgICMgdGhhdCB3ZSB1c2VkIHByZXZpb3VzbHkuCi0gICAgbW92ZSBz
cCwgdGVtcDIKLSAgICBzdWJwIFZNOjpzdGFja1BvaW50ZXJBdFZNRW50cnlbdm1dLCB0ZW1wMiwg
dGVtcDIKLSAgICBzdWJwIFZNOjptX2pzU3RhY2tMaW1pdFt2bV0sIHRlbXAyLCB0ZW1wMgotaWYg
Q19MT09QCi1lbHNlCi0gICAgYnBhZXEgdGVtcDIsIFZNOjptX3N0YWNrTGltaXRbdm1dLCAubm9O
ZWVkVG9DYXBKU1N0YWNrVG9OYXRpdmVTdGFja0xpbWl0Ci0gICAgbG9hZHAgVk06Om1fc3RhY2tM
aW1pdFt2bV0sIHRlbXAyCi0ubm9OZWVkVG9DYXBKU1N0YWNrVG9OYXRpdmVTdGFja0xpbWl0Ogot
ZW5kCi0gICAgc3RvcmVwIHRlbXAyLCBWTTo6bV9qc1N0YWNrTGltaXRbdm1dCi0gICAgbW92ZSBz
cCwgdGVtcDIKLSAgICBzdG9yZXAgdGVtcDIsIFZNOjpzdGFja1BvaW50ZXJBdFZNRW50cnlbdm1d
Ci0KICAgICAjIFRoZSBzdGFjayBob3N0IHpvbmUgZW5zdXJlcyB0aGF0IHdlIGhhdmUgYWRlcXVh
dGUgc3BhY2UgZm9yIHRoZQogICAgICMgVk1FbnRyeVNlbnRpbmVsRnJhbWUuIFByb2NlZWQgd2l0
aCBhbGxvY2F0aW5nIGFuZCBpbml0aWFsaXppbmcgdGhlCiAgICAgIyBzZW50aW5lbCBmcmFtZS4K
QEAgLTE2OSw3ICsxNTIsNiBAQCBlbmQKICAgICAjIHVwIHRocm93aW5nIGEgU3RhY2tPdmVyZmxv
d0Vycm9yLgogICAgIGVuZAogCi0gICAgc3RvcmVwIDAsIFZNOjpzdGFja1BvaW50ZXJBdFZNRW50
cnlbdm1dCiAgICAgY0NhbGwyKF9sbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvciwgdm0s
IHByb3RvQ2FsbEZyYW1lKQogICAgIGNhbGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgpCiAgICAgcmV0
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5oCShyZXZp
c2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGFyc2VyRXJyb3Jf
aAogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2VyVG9rZW5zLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05NSw3ICs5Niw3IEBAIHN0cnVj
dCBQYXJzZXJFcnJvciB7CiAgICAgICAgIGNhc2UgRXZhbEVycm9yOgogICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgbV9tZXNzYWdlKTsKICAgICAgICAg
Y2FzZSBTdGFja092ZXJmbG93OiB7Ci0gICAgICAgICAgICBJbnRlcnByZXRlcjo6RXJyb3JIYW5k
bGluZ01vZGUgbW9kZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7CisgICAgICAgICAgICBF
cnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZShnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3QpOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgT3V0T2ZNZW1vcnk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE2MTUz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
ICNpbmNsdWRlICJDb2RlUHJvZmlsaW5nLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzRXhj
ZXB0aW9ucy5oIgorI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgpAQCAtMTg1LDcgKzE4Niw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jYWxsX2FyaXR5Q2hlY2sKICAgICBpbnQgc2xvdHNUb0FkZCA9IENvbW1vblNsb3dQYXRo
czo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JD
YWxsKTsKICAgICBpZiAoc2xvdHNUb0FkZCA8IDApIHsKICAgICAgICAgZXhlYyA9IGV4ZWMtPmNh
bGxlckZyYW1lKCk7Ci0gICAgICAgIEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZSBtb2Rl
KGV4ZWMpOworICAgICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZShleGVjLT52bSgp
KTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjppbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhl
YywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAgICAgICAgUkVUVVJOX1RXTyhi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKICAg
ICB9CkBAIC0xOTgsNyArMTk5LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVj
dF9hcml0eQogICAgIGludCBzbG90c1RvQWRkID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNr
Rm9yKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNvbnN0cnVjdCk7CiAg
ICAgaWYgKHNsb3RzVG9BZGQgPCAwKSB7CiAgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFt
ZSgpOwotICAgICAgICBJbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGUgbW9kZShleGVjKTsK
KyAgICAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoZXhlYy0+dm0oKSk7CiAgICAg
ICAgIENvbW1vblNsb3dQYXRoczo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckhhbmRsaW5n
U2NvcGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JIYW5kbGluZ1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKKworI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitFcnJvckhhbmRsaW5nU2NvcGU6OkVycm9ySGFuZGxpbmdTY29wZShW
TSYgdm0pCisgICAgOiBtX3ZtKHZtKQoreworICAgIGlmICghbV92bS5zdGFja1BvaW50ZXJBdFZN
RW50cnkpCisgICAgICAgIG1fdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gdGhpczsKKyAgICBz
aXplX3QgbmV3SG9zdFpvbmVTaXplID0gT3B0aW9uczo6ZXJyb3JNb2RlSG9zdFpvbmVTaXplKCk7
CisgICAgbV9zYXZlZEhvc3Rab25lU2l6ZSA9IG1fdm0udXBkYXRlU3RhY2tMaW1pdFdpdGhIb3N0
Wm9uZVNpemUobmV3SG9zdFpvbmVTaXplKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAg
IG1fdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuc2V0SG9zdFpvbmVTaXplKG5ld0hvc3Rab25lU2l6
ZSk7CisjZW5kaWYKK30KKworRXJyb3JIYW5kbGluZ1Njb3BlOjp+RXJyb3JIYW5kbGluZ1Njb3Bl
KCkKK3sKKyAgICBpZiAobV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkgPT0gdGhpcykKKyAgICAg
ICAgbV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkgPSBudWxscHRyOworICAgIG1fdm0udXBkYXRl
U3RhY2tMaW1pdFdpdGhIb3N0Wm9uZVNpemUobV9zYXZlZEhvc3Rab25lU2l6ZSk7CisjaWYgRU5B
QkxFKExMSU5UX0NfTE9PUCkKKyAgICBtX3ZtLmludGVycHJldGVyLT5zdGFjaygpLnNldEhvc3Ra
b25lU2l6ZShtX3NhdmVkSG9zdFpvbmVTaXplKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySGFuZGxpbmdT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SGFuZGxpbmdTY29wZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEVycm9ySGFuZGxpbmdTY29wZV9oCisjZGVmaW5lIEVycm9ySGFuZGxpbmdTY29wZV9oCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsKKworY2xhc3MgRXJyb3JIYW5kbGluZ1Njb3BlIHsK
K3B1YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFcnJvckhhbmRsaW5nU2NvcGUoVk0mKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB+RXJyb3JIYW5kbGluZ1Njb3BlKCk7Citwcml2YXRlOgor
ICAgIFZNJiBtX3ZtOworICAgIHNpemVfdCBtX3NhdmVkSG9zdFpvbmVTaXplOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFcnJvckhhbmRsaW5nU2NvcGVfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcAkocmV2aXNpb24gMTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUg
IkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBA
IC0xNjAsMTQgKzE2MSwxNiBAQCBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNT
dGF0CiAKIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMp
CiB7Ci0gICAgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG1vZGUoZXhlYyk7Ci0gICAg
cmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEVycm9ySGFuZGxp
bmdTY29wZSBlcnJvclNjb3BlKHZtKTsKKyAgICByZXR1cm4gdm0udGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKIH0KIAogSlNPYmplY3QqIHRocm93
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSW50
ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG1vZGUoZXhlYyk7Ci0gICAgcmV0dXJuIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbigmZXhlYy0+dm0oKSkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgRXJyb3JI
YW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0pOworICAgIHJldHVybiB2bS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKCZ2bSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmNwcAkocmV2aXNpb24gMTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxMCBAQCBKU0xvY2s6
OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKEV4ZWNTCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IFNwaW5Mb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOwogI2VuZGlmCisgICAgbV9zYXZlZEhv
c3Rab25lU2l6ZSA9IG1fdm0tPmhvc3Rab25lU2l6ZSgpOworICAgIG1fc2F2ZWRTdGFja1BvaW50
ZXJBdFZNRW50cnkgPSBtX3ZtLT5zdGFja1BvaW50ZXJBdFZNRW50cnk7CisgICAgbV92bS0+c3Rh
Y2tQb2ludGVyQXRWTUVudHJ5ID0gbnVsbHB0cjsKKwogICAgIGlmIChhbHdheXNEcm9wTG9ja3Mp
CiAgICAgICAgIG1fbG9ja0NvdW50ID0gbV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrc1VuY29u
ZGl0aW9uYWxseShzcGluTG9jayk7CiAgICAgZWxzZQpAQCAtMzA2LDYgKzMxMCwxMCBAQCBKU0xv
Y2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKFZNKiB2CiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOwogI2VuZGlmCisgICAgbV9zYXZl
ZEhvc3Rab25lU2l6ZSA9IG1fdm0tPmhvc3Rab25lU2l6ZSgpOworICAgIG1fc2F2ZWRTdGFja1Bv
aW50ZXJBdFZNRW50cnkgPSBtX3ZtLT5zdGFja1BvaW50ZXJBdFZNRW50cnk7CisgICAgbV92bS0+
c3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gbnVsbHB0cjsKKwogICAgIGlmIChhbHdheXNEcm9wTG9j
a3MpCiAgICAgICAgIG1fbG9ja0NvdW50ID0gbV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrc1Vu
Y29uZGl0aW9uYWxseShzcGluTG9jayk7CiAgICAgZWxzZQpAQCAtMzIxLDYgKzMyOSw5IEBAIEpT
TG9jazo6RHJvcEFsbExvY2tzOjp+RHJvcEFsbExvY2tzKCkKICAgICBTcGluTG9ja0hvbGRlciBo
b2xkZXIoJnNwaW5Mb2NrKTsKICNlbmRpZgogICAgIG1fdm0tPmFwaUxvY2soKS5ncmFiQWxsTG9j
a3MobV9sb2NrQ291bnQsIHNwaW5Mb2NrKTsKKworICAgIG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1F
bnRyeSA9IG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7CisgICAgbV92bS0+dXBkYXRlU3Rh
Y2tMaW1pdFdpdGhIb3N0Wm9uZVNpemUobV9zYXZlZEhvc3Rab25lU2l6ZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJ
KHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBpbnRwdHJfdCBtX2xvY2tDb3VudDsKICAgICAg
ICAgICAgIFJlZlB0cjxWTT4gbV92bTsKKyAgICAgICAgICAgIHNpemVfdCBtX3NhdmVkSG9zdFpv
bmVTaXplOworICAgICAgICAgICAgdm9pZCogbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsK
ICAgICAgICAgfTsKIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDkgQEAgdHlw
ZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsKICAgICB2KGJvb2wsIHVzZURGR0pJVCwgdHJ1
ZSkgXAogICAgIHYoYm9vbCwgdXNlUmVnRXhwSklULCB0cnVlKSBcCiAgICAgXAotICAgIHYodW5z
aWduZWQsIG1heFN0YWNrU2l6ZSwgNCAqIE1CKSBcCisgICAgdih1bnNpZ25lZCwgbWF4UGVyVGhy
ZWFkUmVjdXJzaW9uU3RhY2tVc2FnZSwgNCAqIE1CKSBcCisgICAgdih1bnNpZ25lZCwgaG9zdFpv
bmVTaXplLCAxMjggKiBLQikgXAorICAgIHYodW5zaWduZWQsIGVycm9yTW9kZUhvc3Rab25lU2l6
ZSwgNjQgKiBLQikgXAogICAgIFwKICAgICB2KGJvb2wsIGNyYXNoSWZDYW50QWxsb2NhdGVKSVRN
ZW1vcnksIGZhbHNlKSBcCiAgICAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAkocmV2aXNpb24gMTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsOCArMjAwLDcgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwganNBcnJheUNsYXNzSW5mbyhKU0FycmF5
OjppbmZvKCkpCiAgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKEpTRmluYWxPYmplY3Q6Omlu
Zm8oKSkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCi0gICAgLCBmaXJzdEVudHJ5
U2NvcGUoMCkKLSAgICAsIHRvcEVudHJ5U2NvcGUoMCkKKyAgICAsIGVudHJ5U2NvcGUoMCkKICAg
ICAsIG1fZW5hYmxlZFByb2ZpbGVyKDApCiAgICAgLCBtX3JlZ0V4cENhY2hlKG5ldyBSZWdFeHBD
YWNoZSh0aGlzKSkKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC0yMzAsNyArMjI5LDEw
IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKIHsKICAgICBpbnRl
cnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sg
PSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKLSAgICBzZXRTdGFja0xpbWl0KHN0YWNrLnJlY3Vy
c2lvbkxpbWl0KCkpOworICAgIHVwZGF0ZVN0YWNrTGltaXRXaXRoSG9zdFpvbmVTaXplKE9wdGlv
bnM6Omhvc3Rab25lU2l6ZSgpKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIGludGVy
cHJldGVyLT5zdGFjaygpLnNldEhvc3Rab25lU2l6ZShPcHRpb25zOjpob3N0Wm9uZVNpemUoKSk7
CisjZW5kaWYKICAgICBzZXRMYXN0U3RhY2tUb3Aoc3RhY2sub3JpZ2luKCkpOwogCiAgICAgLy8g
TmVlZCB0byBiZSBjYXJlZnVsIHRvIGtlZXAgZXZlcnl0aGluZyBjb25zaXN0ZW50IGhlcmUKQEAg
LTU1Myw3ICs1NTUsNyBAQCB2b2lkIFZNOjpyZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpCiB7CiAg
ICAgcHJlcGFyZVRvRGlzY2FyZENvZGUoKTsKICAgICAKLSAgICBpZiAoZmlyc3RFbnRyeVNjb3Bl
KSB7CisgICAgaWYgKGVudHJ5U2NvcGUpIHsKICAgICAgICAgU3RhY2tQcmVzZXJ2aW5nUmVjb21w
aWxlciByZWNvbXBpbGVyOwogICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2Nv
cGUoaGVhcCk7CiAgICAgICAgIEhhc2hTZXQ8SlNDZWxsKj4gcm9vdHM7CkBAIC03MTMsNiArNzE1
LDI0IEBAIHZvaWQgVk06OiBjbGVhckV4Y2VwdGlvblN0YWNrKCkKICAgICBtX2V4Y2VwdGlvblN0
YWNrID0gUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+KCk7CiB9CiAKK3NpemVfdCBWTTo6dXBk
YXRlU3RhY2tMaW1pdFdpdGhIb3N0Wm9uZVNpemUoc2l6ZV90IGhvc3Rab25lU2l6ZSkKK3sKKyAg
ICBzaXplX3Qgb2xkSG9zdFpvbmVTaXplID0gbV9ob3N0Wm9uZVNpemU7CisgICAgbV9ob3N0Wm9u
ZVNpemUgPSBob3N0Wm9uZVNpemU7CisKKyAgICB2b2lkKiBzdGFja0xpbWl0OworICAgIGlmIChz
dGFja1BvaW50ZXJBdFZNRW50cnkpIHsKKyAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5z
dGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICBjaGFyKiBzdGFydE9mU3RhY2sg
PSByZWludGVycHJldF9jYXN0PGNoYXIqPihzdGFja1BvaW50ZXJBdFZNRW50cnkpOworICAgICAg
ICBjaGFyKiBkZXNpcmVkU3RhY2tMaW1pdCA9IHN0YXJ0T2ZTdGFjayAtIE9wdGlvbnM6Om1heFBl
clRocmVhZFJlY3Vyc2lvblN0YWNrVXNhZ2UoKSArIGhvc3Rab25lU2l6ZTsKKyAgICAgICAgc3Rh
Y2tMaW1pdCA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLnJlY3Vyc2lvbkxpbWl0KGhvc3Rab25l
U2l6ZSwgZGVzaXJlZFN0YWNrTGltaXQpOworICAgIH0gZWxzZQorICAgICAgICBzdGFja0xpbWl0
ID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkucmVjdXJzaW9uTGltaXQoaG9zdFpvbmVTaXplKTsK
KworICAgIHNldFN0YWNrTGltaXQoc3RhY2tMaW1pdCk7CisgICAgcmV0dXJuIG9sZEhvc3Rab25l
U2l6ZTsKK30KKwogdm9pZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeShWTSYgdm0pCiB7CiAgICAg
dm0ucmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkocmV2aXNpb24gMTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMzc1LDEyICszNzUsMTYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhl
Y1N0YXRlKiwgSlNWYWx1ZSk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0
aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCopOwogICAgICAgICAKKyAgICAgICAg
c2l6ZV90IGhvc3Rab25lU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdFpvbmVTaXplOyB9Cisg
ICAgICAgIHNpemVfdCB1cGRhdGVTdGFja0xpbWl0V2l0aEhvc3Rab25lU2l6ZShzaXplX3QgaG9z
dFpvbmVTaXplKTsKKwogICAgICAgICB2b2lkKiogYWRkcmVzc09mSlNTdGFja0xpbWl0KCkgeyBy
ZXR1cm4gJm1fanNTdGFja0xpbWl0OyB9CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAg
ICAgdm9pZCoganNTdGFja0xpbWl0KCkgeyByZXR1cm4gbV9qc1N0YWNrTGltaXQ7IH0KICAgICAg
ICAgdm9pZCBzZXRKU1N0YWNrTGltaXQodm9pZCogbGltaXQpIHsgbV9qc1N0YWNrTGltaXQgPSBs
aW1pdDsgfQotCisjZW5kaWYKICAgICAgICAgdm9pZCogc3RhY2tMaW1pdCgpIHsgcmV0dXJuIG1f
c3RhY2tMaW1pdDsgfQotICAgICAgICB2b2lkIHNldFN0YWNrTGltaXQodm9pZCogbGltaXQpIHsg
bV9zdGFja0xpbWl0ID0gbGltaXQ7IH0KKwogICAgICAgICBib29sIGlzU2FmZVRvUmVjdXJzZShz
aXplX3QgbmVlZGVkU3RhY2tJbkJ5dGVzID0gMCkgY29uc3QKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwpA
QCAtNDI3LDggKzQzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZ2F0aGVy
Q29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKIAotICAgICAgICBWTUVudHJ5
U2NvcGUqIGZpcnN0RW50cnlTY29wZTsKLSAgICAgICAgVk1FbnRyeVNjb3BlKiB0b3BFbnRyeVNj
b3BlOworICAgICAgICBWTUVudHJ5U2NvcGUqIGVudHJ5U2NvcGU7CiAKICAgICAgICAgSGFzaFNl
dDxKU09iamVjdCo+IHN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRlZE9iamVjdHM7CiAKQEAgLTQ5
NSw2ICs0OTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVk0oVk1UeXBlLCBIZWFwVHlw
ZSk7CiAgICAgICAgIHN0YXRpYyBWTSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAg
ICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOworCisgICAgICAgIHZvaWQgc2V0U3RhY2tMaW1p
dCh2b2lkKiBsaW1pdCkgeyBtX3N0YWNrTGltaXQgPSBsaW1pdDsgfQorCiAjaWYgRU5BQkxFKEFT
U0VNQkxFUikKICAgICAgICAgYm9vbCBtX2NhblVzZUFzc2VtYmxlcjsKICNlbmRpZgpAQCAtNTA3
LDggKzUxMywxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikK
ICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2luaXRpYWxpemluZ09iamVjdENsYXNzOwogI2Vu
ZGlmCi0gICAgICAgIHZvaWQqIG1fc3RhY2tMaW1pdDsKLSAgICAgICAgdm9pZCogbV9qc1N0YWNr
TGltaXQ7CisgICAgICAgIHNpemVfdCBtX2hvc3Rab25lU2l6ZTsKKyNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdm9pZCogbV9zdGFja0xpbWl0
OworICAgICAgICAgICAgdm9pZCogbV9qc1N0YWNrTGltaXQ7CisgICAgICAgIH07CisjZWxzZQor
ICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICB2b2lkKiBtX3N0YWNrTGltaXQ7CisgICAgICAg
ICAgICB2b2lkKiBtX2pzU3RhY2tMaW1pdDsKKyAgICAgICAgfTsKKyNlbmRpZgogICAgICAgICB2
b2lkKiBtX2xhc3RTdGFja1RvcDsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2VwdGlvbjsKICAgICAg
ICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM0LDE2MyArMzQsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFZNRW50cnlTY29wZTo6Vk1F
bnRyeVNjb3BlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IG1f
dm0odm0pCi0gICAgLCBtX3N0YWNrKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpKQogICAgICwgbV9n
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICwgbV9wcmV2U3RhY2tVc2FnZSgwKQotICAg
ICwgbV9wcmV2VG9wRW50cnlTY29wZSh2bS50b3BFbnRyeVNjb3BlKQotICAgICwgbV9wcmV2U3Rh
Y2tMaW1pdCh2bS5zdGFja0xpbWl0KCkpCi0jaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAg
LCBtX3ByZXZKU1N0YWNrTGltaXQodm0uanNTdGFja0xpbWl0KCkpCi0jZW5kaWYKLSAgICAsIG1f
cHJldkxhc3RTdGFja1RvcCh2bS5sYXN0U3RhY2tUb3AoKSkKLSAgICAsIG1fcHJldlN0YWNrUG9p
bnRlckF0Vk1FbnRyeSh2bS5zdGFja1BvaW50ZXJBdFZNRW50cnkpCi0gICAgLCBtX3ByZXZUb3BD
YWxsRnJhbWUodm0udG9wQ2FsbEZyYW1lKQogewogICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCku
c3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKLSAgICBBU1NFUlQoIXZtLnRvcENhbGxGcmFt
ZSB8fCBjdXJyZW50U3RhY2tQb2ludGVyKCkgPD0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0u
dG9wQ2FsbEZyYW1lLT50b3BPZkZyYW1lKCkpKTsKLQotICAgIC8vIFN0ZXAgMTogQ29tcHV0ZSB0
aGUgc3RhY2sgdXNhZ2Ugb2YgdGhlIGxhc3QgVk0gZW50cnkgYmVmb3JlIHdlIGluc3RhbGwKLSAg
ICAvLyB0aGUgY3VycmVudCBlbnRyeSBzY29wZSBiZWxvdy4KLSAgICBpZiAodm0udG9wRW50cnlT
Y29wZSkgewotICAgICAgICBjaGFyKiB0b3BPZlN0YWNrID0gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4odm0udG9wQ2FsbEZyYW1lLT50b3BPZkZyYW1lKCkpOwotICAgICAgICBtX3ByZXZTdGFja1Vz
YWdlID0gdm0udG9wRW50cnlTY29wZS0+c3RhY2tVc2FnZUZvcih0b3BPZlN0YWNrKTsKLSAgICB9
Ci0KLSAgICAvLyBTdGVwIDI6IEluc3RhbGwgdGhlIGN1cnJlbnQgZW50cnkgc2NvcGUuCi0gICAg
aWYgKCF2bS5maXJzdEVudHJ5U2NvcGUpIHsKKyAgICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKICNp
ZiBFTkFCTEUoQVNTRU1CTEVSKQogICAgICAgICBpZiAoRXhlY3V0YWJsZUFsbG9jYXRvcjo6dW5k
ZXJNZW1vcnlQcmVzc3VyZSgpKQogICAgICAgICAgICAgdm0uaGVhcC5kZWxldGVBbGxDb21waWxl
ZENvZGUoKTsKICNlbmRpZgotICAgICAgICB2bS5maXJzdEVudHJ5U2NvcGUgPSB0aGlzOworICAg
ICAgICB2bS5lbnRyeVNjb3BlID0gdGhpczsKIAogICAgICAgICAvLyBSZXNldCB0aGUgZGF0ZSBj
YWNoZSBiZXR3ZWVuIEpTIGludm9jYXRpb25zIHRvIGZvcmNlIHRoZSBWTSB0bwogICAgICAgICAv
LyBvYnNlcnZlIHRpbWUgeG9uZSBjaGFuZ2VzLgogICAgICAgICB2bS5yZXNldERhdGVDYWNoZSgp
OwogICAgIH0KLSAgICB2bS5zdGFja1BvaW50ZXJBdFZNRW50cnkgPSAwOwotICAgIHZtLnRvcEVu
dHJ5U2NvcGUgPSB0aGlzOworCisgICAgaWYgKCF2bS5zdGFja1BvaW50ZXJBdFZNRW50cnkpIHsK
KyAgICAgICAgdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gdGhpczsKKyAgICAgICAgbV9zYXZl
ZEhvc3Rab25lU2l6ZSA9IHZtLnVwZGF0ZVN0YWNrTGltaXRXaXRoSG9zdFpvbmVTaXplKE9wdGlv
bnM6Omhvc3Rab25lU2l6ZSgpKTsKKyAgICB9CiAKICAgICAvLyBDbGVhciB0aGUgY2FwdHVyZWQg
ZXhjZXB0aW9uIHN0YWNrIGJldHdlZW4gZW50cmllcwogICAgIHZtLmNsZWFyRXhjZXB0aW9uU3Rh
Y2soKTsKLQotICAgIHZtLnNldExhc3RTdGFja1RvcChtX3N0YWNrLm9yaWdpbigpKTsKLQotICAg
IC8vIFN0ZXAgMzogQ29tcHV0ZSB0aGUgc3RhY2sgbGltaXQgdXNpbmcgdGhlIGluc3RhbGxlZCBl
bnRyeSBzY29wZS4KLSAgICB1cGRhdGVTdGFja0xpbWl0cygpOwogfQogCiBWTUVudHJ5U2NvcGU6
On5WTUVudHJ5U2NvcGUoKQogewotICAgIGlmIChtX3ZtLmZpcnN0RW50cnlTY29wZSA9PSB0aGlz
KQotICAgICAgICBtX3ZtLmZpcnN0RW50cnlTY29wZSA9IG51bGxwdHI7Ci0gICAgbV92bS50b3BF
bnRyeVNjb3BlID0gbV9wcmV2VG9wRW50cnlTY29wZTsKLSAgICBtX3ZtLnNldFN0YWNrTGltaXQo
bV9wcmV2U3RhY2tMaW1pdCk7Ci0jaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAgbV92bS5z
ZXRKU1N0YWNrTGltaXQobV9wcmV2SlNTdGFja0xpbWl0KTsKLSNlbmRpZgotICAgIG1fdm0uc2V0
TGFzdFN0YWNrVG9wKG1fcHJldkxhc3RTdGFja1RvcCk7Ci0gICAgbV92bS5zdGFja1BvaW50ZXJB
dFZNRW50cnkgPSBtX3ByZXZTdGFja1BvaW50ZXJBdFZNRW50cnk7Ci0gICAgbV92bS50b3BDYWxs
RnJhbWUgPSBtX3ByZXZUb3BDYWxsRnJhbWU7Ci19Ci0KLXNpemVfdCBWTUVudHJ5U2NvcGU6OnN0
YWNrVXNhZ2VGb3IoY2hhciogdG9wT2ZTdGFjaykgY29uc3QKLXsKLSAgICBzaXplX3QgY3VycmVu
dFN0YWNrVXNhZ2UgPSAwOwotICAgIEFTU0VSVChtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSk7
Ci0gICAgY2hhciogc3RhcnRPZlN0YWNrID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV92bS5z
dGFja1BvaW50ZXJBdFZNRW50cnkpOwotICAgIEFTU0VSVCh0b3BPZlN0YWNrIDw9IHN0YXJ0T2ZT
dGFjayk7Ci0gICAgY3VycmVudFN0YWNrVXNhZ2UgPSBzdGFydE9mU3RhY2sgLSB0b3BPZlN0YWNr
OwotCi0gICAgQVNTRVJUKE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgpID49IG1fcHJldlN0YWNrVXNh
Z2UgKyBjdXJyZW50U3RhY2tVc2FnZSk7Ci0gICAgcmV0dXJuIG1fcHJldlN0YWNrVXNhZ2UgKyBj
dXJyZW50U3RhY2tVc2FnZTsKLX0KLQotdm9pZCBWTUVudHJ5U2NvcGU6OnVwZGF0ZVN0YWNrTGlt
aXRzKCkKLXsKLSAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93
bndhcmQoKSk7Ci0gICAgY2hhciogdG9wT2ZTdGFjayA9IGN1cnJlbnRTdGFja1BvaW50ZXIoKTsK
LQotI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQotICAgIGNoYXIqIHRvcE9mSlNTdGFjayA9IG1f
dm0udG9wQ2FsbEZyYW1lID8gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV92bS50b3BDYWxsRnJh
bWUtPnRvcE9mRnJhbWUoKSkgOiB0b3BPZlN0YWNrOwotCi0gICAgLy8gSWYgd2UgaGF2ZSBub3Qg
cmUtZW50ZXJlZCB0aGUgVk0geWV0IHZpYSBjYWxsVG9KYXZhU2NyaXB0IC8gY2FsbFRvTmF0aXZl
RnVuY3Rpb24sCi0gICAgLy8gdGhlbiBzdGFja1BvaW50ZXJBdFZNRW50cnkgd2lsbCBub3QgaGF2
ZSBiZWVuIHNldCB1cCB5ZXQuIEluc3RlYWQsIHdlJ2xsCi0gICAgLy8gY29tcHV0ZSB0aGUgc3Rh
Y2sgbGltaXQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdG9wT2ZKU1N0YWNrIChhcyBhbiBlc3Rp
bWF0ZQotICAgIC8vIG9mIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSkuIFdoZW4gd2UgZW50ZXIgY2Fs
bFRvSmF2YVNjcmlwdCBsYXRlciwgd2UnbGwgYWRqdXN0Ci0gICAgLy8gdGhlIHN0YWNrIGxpbWl0
IHdpdGggdGhlIGRlbHRhIGJldHdlZW4gdGhlIGFjdHVhbCBzdGFja1BvaW50ZXJBdFZNRW50cnkg
YW5kCi0gICAgLy8gdGhlIGVzdGltYXRlIHZhbHVlIHRoYXQgd2UgdXNlIGhlcmUuCi0gICAgaWYg
KCFtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSkKLSAgICAgICAgbV92bS5zdGFja1BvaW50ZXJB
dFZNRW50cnkgPSB0b3BPZkpTU3RhY2s7Ci0KLSAgICB2b2lkKiBqc1N0YWNrTGltaXQgPSBtX3N0
YWNrLnJlY3Vyc2lvbkxpbWl0KHJlcXVpcmVkQ2FwYWNpdHkodG9wT2ZKU1N0YWNrLCBKU1N0YWNr
Q2FwYWNpdHkpKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgY2hhciogc3RhcnRPZlN0YWNrID0gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4obV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkpOwotICAgIGNo
YXIqIHN0YWNrTGltaXQgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihqc1N0YWNrTGltaXQpOwot
ICAgIEFTU0VSVChtX3ByZXZTdGFja1VzYWdlICsgKHN0YXJ0T2ZTdGFjayAtIHN0YWNrTGltaXQp
IDw9IE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgpKTsKLSNlbmRpZgotICAgIG1fdm0uc2V0SlNTdGFj
a0xpbWl0KGpzU3RhY2tMaW1pdCk7Ci0KLSAgICAvLyBTb21lIHNhbml0eSBjaGVja3MgZm9yIG91
ciBwb2ludGVycyBpbnRvIHRoZSBzdGFjazoKLSAgICBBU1NFUlQobV92bS5pbnRlcnByZXRlci0+
c3RhY2soKS5jb250YWluc0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxSZWdpc3Rlcio+KG1fdm0u
c3RhY2tQb2ludGVyQXRWTUVudHJ5KSkpOwotICAgIEFTU0VSVChtX3ZtLmludGVycHJldGVyLT5z
dGFjaygpLmNvbnRhaW5zQWRkcmVzcyhyZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4odG9wT2ZK
U1N0YWNrKSkpOwotICAgIEFTU0VSVChjdXJyZW50U3RhY2tQb2ludGVyKCkgPD0gdG9wT2ZKU1N0
YWNrKTsKLSAgICBBU1NFUlQodG9wT2ZKU1N0YWNrIDw9IG1fdm0uc3RhY2tQb2ludGVyQXRWTUVu
dHJ5KTsKLSNlbmRpZiAvLyAhRU5BQkxFKExMSU5UX0NfTE9PUCkKLQotICAgIHZvaWQqIG5hdGl2
ZVN0YWNrTGltaXQgPSBtX3N0YWNrLnJlY3Vyc2lvbkxpbWl0KHJlcXVpcmVkQ2FwYWNpdHkodG9w
T2ZTdGFjaywgTmF0aXZlU3RhY2tDYXBhY2l0eSkpOwotICAgIG1fdm0uc2V0U3RhY2tMaW1pdChu
YXRpdmVTdGFja0xpbWl0KTsKLX0KLQotY2hhciogVk1FbnRyeVNjb3BlOjpjdXJyZW50U3RhY2tQ
b2ludGVyKCkgY29uc3QKLXsKLSAgICBjaGFyKiBwOwotI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
Ci0gICAgcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fdm0udG9wQ2FsbEZyYW1lLT50b3BP
ZkZyYW1lKCkpOwotI2Vsc2UKLSAgICBwID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJnApOwot
I2VuZGlmCi0gICAgcmV0dXJuIHA7Ci19Ci0KLXNpemVfdCBWTUVudHJ5U2NvcGU6OnJlcXVpcmVk
Q2FwYWNpdHkoY2hhciogdG9wT2ZTdGFjaywgQ2FwYWNpdHlUeXBlIHR5cGUpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKG1fc3RhY2suaXNHcm93aW5nRG93bndhcmQoKSk7Ci0KLSAgICBzaXplX3QgZXhj
ZXNzQ1N0YWNrU2l6ZSA9IDA7Ci0jaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAgaWYgKHR5
cGUgPT0gSlNTdGFja0NhcGFjaXR5KSB7Ci0gICAgICAgIEFTU0VSVChPcHRpb25zOjptYXhTdGFj
a1NpemUoKSA+PSBzdGFja1VzYWdlRm9yKHRvcE9mU3RhY2spKTsKLSAgICAgICAgc2l6ZV90IGF2
YWlsYWJsZUpTU3RhY2sgPSBPcHRpb25zOjptYXhTdGFja1NpemUoKSAtIHN0YWNrVXNhZ2VGb3Io
dG9wT2ZTdGFjayk7Ci0KLSAgICAgICAgY2hhciogYm90dG9tT2ZTdGFjayA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KG1fc3RhY2sub3JpZ2luKCkpOwotICAgICAgICBzaXplX3QgYXZhaWxhYmxl
Q1N0YWNrID0gbV9zdGFjay5zaXplKCkgLSAoYm90dG9tT2ZTdGFjayAtIHRvcE9mU3RhY2spOwot
ICAgICAgICBpZiAoYXZhaWxhYmxlQ1N0YWNrID4gYXZhaWxhYmxlSlNTdGFjaykKLSAgICAgICAg
ICAgIGV4Y2Vzc0NTdGFja1NpemUgPSBhdmFpbGFibGVDU3RhY2sgLSBhdmFpbGFibGVKU1N0YWNr
OworICAgIGlmIChtX3ZtLmVudHJ5U2NvcGUgPT0gdGhpcykKKyAgICAgICAgbV92bS5lbnRyeVNj
b3BlID0gbnVsbHB0cjsKKyAgICBpZiAobV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkgPT0gdGhp
cykgeworICAgICAgICBtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IG51bGxwdHI7CisgICAg
ICAgIG1fdm0udXBkYXRlU3RhY2tMaW1pdFdpdGhIb3N0Wm9uZVNpemUobV9zYXZlZEhvc3Rab25l
U2l6ZSk7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odG9wT2ZTdGFjayk7Ci0gICAg
VU5VU0VEX1BBUkFNKHR5cGUpOwotICAgIEFTU0VSVCh0eXBlID09IE5hdGl2ZVN0YWNrQ2FwYWNp
dHkpOwotI2VuZGlmCi0KLSAgICAvLyBXZSByZXF1aXJlIGEgc21hbGxlciBzdGFjayBidWRnZXQg
Zm9yIHRoZSBlcnJvciBzdGFjay4gVGhpcyBpcyB0byBhbGxvdwotICAgIC8vIHNvbWUgbWluaW1h
bCBKUyBleGVjdXRpb24gdG8gcHJvY2VlZCBhbmQgZG8gdGhlIHdvcmsgb2YgdGhyb3dpbmcgYSBz
dGFjawotICAgIC8vIG92ZXJmbG93IGVycm9yIGlmIG5lZWRlZC4gSW4gY29udHJhc3QsIGFyYml0
cmFyeSBKUyBjb2RlIHdpbGwgcmVxdWlyZSB0aGUKLSAgICAvLyBtb3JlIGdlbmVyb3VzIHN0YWNr
IGJ1ZGdldCBpbiBvcmRlciB0byBwcm9jZWVkLgotICAgIC8vCi0gICAgLy8gVGhlc2Ugc2l6ZXMg
d2VyZSBkZXJpdmVkIGZyb20gdGhlIHN0YWNrIHVzYWdlIG9mIGEgbnVtYmVyIG9mIHNpdGVzIHdo
ZW4KLSAgICAvLyBsYXlvdXQgb2NjdXJzIHdoZW4gd2UndmUgYWxyZWFkeSBjb25zdW1lZCBtb3N0
IG9mIHRoZSBDIHN0YWNrLgotICAgIGNvbnN0IHNpemVfdCByZXF1aXJlZFN0YWNrID0gMTI4ICog
S0I7Ci0gICAgY29uc3Qgc2l6ZV90IGVycm9yTW9kZVJlcXVpcmVkU3RhY2sgPSA2NCAqIEtCOwot
Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV92bS5pbnRlcnByZXRlcjsKLSAgICBz
aXplX3QgcmVxdWlyZWRDYXBhY2l0eSA9IGludGVycHJldGVyLT5pc0luRXJyb3JIYW5kbGluZ01v
ZGUoKSA/IGVycm9yTW9kZVJlcXVpcmVkU3RhY2sgOiByZXF1aXJlZFN0YWNrOwotICAgIHJlcXVp
cmVkQ2FwYWNpdHkgKz0gZXhjZXNzQ1N0YWNrU2l6ZTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKG1f
c3RhY2suc2l6ZSgpID49IHJlcXVpcmVkQ2FwYWNpdHkpOwotICAgIHJldHVybiByZXF1aXJlZENh
cGFjaXR5OyAKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCShyZXZpc2lvbiAxNjE1MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDAsMzMgKzQwLDEzIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBWTUVudHJ5
U2NvcGUoVk0mLCBKU0dsb2JhbE9iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5WTUVu
dHJ5U2NvcGUoKTsKIAotICAgIHZvaWQgdXBkYXRlU3RhY2tMaW1pdHMoKTsKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0K
IAogcHJpdmF0ZToKLSAgICBlbnVtIENhcGFjaXR5VHlwZSB7Ci0gICAgICAgIEpTU3RhY2tDYXBh
Y2l0eSwKLSAgICAgICAgTmF0aXZlU3RhY2tDYXBhY2l0eSwKLSAgICB9OwotICAgIHNpemVfdCBy
ZXF1aXJlZENhcGFjaXR5KGNoYXIqIHRvcE9mU3RhY2ssIENhcGFjaXR5VHlwZSkgY29uc3Q7Ci0g
ICAgY2hhciogY3VycmVudFN0YWNrUG9pbnRlcigpIGNvbnN0OwotICAgIHNpemVfdCBzdGFja1Vz
YWdlRm9yKGNoYXIqIHRvcE9mU3RhY2spIGNvbnN0OwotCiAgICAgVk0mIG1fdm07CiAgICAgU3Rh
Y2tTdGF0czo6Q2hlY2tQb2ludCBtX3N0YWNrQ2hlY2tQb2ludDsKLSAgICBTdGFja0JvdW5kcyBt
X3N0YWNrOwogICAgIEpTR2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdDsKLSAgICBzaXplX3Qg
bV9wcmV2U3RhY2tVc2FnZTsKLQotICAgIC8vIFRoZSBmb2xsb3dpbmcgcG9pbnRlcnMgbWF5IHBv
aW50IHRvIGEgZGlmZmVyZW50IHRocmVhZCdzIHN0YWNrLgotICAgIFZNRW50cnlTY29wZSogbV9w
cmV2VG9wRW50cnlTY29wZTsKLSAgICB2b2lkKiBtX3ByZXZTdGFja0xpbWl0OwotI2lmICFFTkFC
TEUoTExJTlRfQ19MT09QKQotICAgIHZvaWQqIG1fcHJldkpTU3RhY2tMaW1pdDsKLSNlbmRpZgot
ICAgIHZvaWQqIG1fcHJldkxhc3RTdGFja1RvcDsKLSAgICB2b2lkKiBtX3ByZXZTdGFja1BvaW50
ZXJBdFZNRW50cnk7Ci0gICAgRXhlY1N0YXRlKiBtX3ByZXZUb3BDYWxsRnJhbWU7CisgICAgc2l6
ZV90IG1fc2F2ZWRIb3N0Wm9uZVNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBDU3RhY2s6IE5lZWQgYSBzZXBhcmF0ZSBzdGFjayBsaW1pdCBmb3Ig
dGhlIEpTIHN0YWNrIGFuZCB0aGUgQyBzdGFjay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMyMC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9TdGFja0JvdW5kcy5oOgorICAgICAgICAoV1RG
OjpTdGFja0JvdW5kczo6cmVjdXJzaW9uTGltaXQpOgorICAgICAgICAtIFByZXZpb3VzbHksIFN0
YWNrQm91bmRzOjpyZWN1cnNpb25MaW1pdCgpIG9ubHkgdGFrZXMgYSBob3N0IHpvbmUgc2l6ZQor
ICAgICAgICAgIHdoaWNoIGl0IHVzZXMgdG8gY29tcHV0ZSB0aGUgY2xpZW50J3MgZGVzaXJlZCBz
dGFjayBsaW1pdC4gTm93LCB0aGVyZSdzCisgICAgICAgICAgYW4gYWx0ZXJuYXRlIHZlcnNpb24g
dGhhdCBhbHNvIGFsbG93cyB0aGUgY2xpZW50IHRvIGV4cGxpY2l0bHkgc3BlY2lmeQorICAgICAg
ICAgIGl0cyBkZXNpcmVkIHN0YWNrIGxpbWl0IGluIGFkZGl0aW9uIHRvIGl0cyBob3N0Wm9uZVNp
emUgcmVxdWlyZW1lbnQuCisgICAgICAgICAgSW4gYm90aCBjYXNlcywgU3RhY2tCb3VuZHM6OnJl
Y3Vyc2lvbkxpbWl0KCkgd2lsbCBjYXAgdGhlIGxpbWl0ICh3aXRoCisgICAgICAgICAgYWxsb3dh
bmNlIGZvciB0aGUgaG9zdFpvbmVTaXplKSB0byBiZSB3aXRoaW4gaXRzIGJvdW5kcywgYW5kIHJl
dHVybiB0aGUKKyAgICAgICAgICBjYXBwZWQgbGltaXQuCisKIDIwMTQtMDEtMDYgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBNZXJnZSB0cnVuayByMTYxMzY0LgpJ
bmRleDogU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9TdGFja0JvdW5kcy5oCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvV1RGL3d0
Zi9TdGFja0JvdW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaWZuZGVm
IFN0YWNrQm91bmRzX2gKICNkZWZpbmUgU3RhY2tCb3VuZHNfaAogCisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgU3RhY2tCb3VuZHMgewpAQCAtNjcsNiAr
NjksMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91
bmQpIC0gbWluQXZhaWxhYmxlRGVsdGE7CiAgICAgfQogCisgICAgdm9pZCogcmVjdXJzaW9uTGlt
aXQoc2l6ZV90IGhvc3Rab25lU2l6ZSwgdm9pZCogZGVzaXJlZExpbWl0KSBjb25zdAorICAgIHsK
KyAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOworICAgICAgICBpZiAoaXNHcm93aW5nRG93bndh
cmQoKSkgeworICAgICAgICAgICAgY2hhciogZW5kT2ZTdGFja1dpdGhIb3N0Wm9uZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYm91bmQpICsgaG9zdFpvbmVTaXplOworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWF4KGRlc2lyZWRMaW1pdCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZW5k
T2ZTdGFja1dpdGhIb3N0Wm9uZSkpOworICAgICAgICB9CisgICAgICAgIGNoYXIqIGVuZE9mU3Rh
Y2tXaXRoSG9zdFpvbmUgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2JvdW5kKSAtIGhvc3Ra
b25lU2l6ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGRlc2lyZWRMaW1pdCwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZW5kT2ZTdGFja1dpdGhIb3N0Wm9uZSkpOworICAgIH0KKwogICAgIGJv
b2wgaXNHcm93aW5nRG93bndhcmQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3Jp
Z2luICYmIG1fYm91bmQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTMxKQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTQtMDEtMDggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIENTdGFj
azogTmVlZCBhIHNlcGFyYXRlIHN0YWNrIGxpbWl0IGZvciB0aGUgSlMgc3RhY2sgYW5kIHRoZSBD
IHN0YWNrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI2MzIwLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRXJy
b3JIYW5kbGluZ1Njb3BlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAtIFVwZGF0ZWQgdG8gdXNlIEVy
cm9ySGFuZGxpbmdTY29wZSBpbnN0ZWFkIG9mIEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9k
ZS4KKwogMjAxMy0xMi0wNiAgTGFzemxvIFZpZGFjcyAgPGxhY0BpbmYudS1zemVnZWQuaHU+CiAK
ICAgICAgICAgRGVmaW5lIFNIQTEgaGFzaCBzaXplIGluIFNIQTEuaCBhbmQgdXNlIGl0IGF0IHZh
cmlvdXMgcGxhY2VzLgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9FcnJvckhhbmRsaW5nU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9FcnJvckhhbmRs
aW5nU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29y
ZV9GV0RfRXJyb3JIYW5kbGluZ1Njb3BlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfRXJyb3JIYW5k
bGluZ1Njb3BlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FcnJvckhhbmRsaW5nU2NvcGUu
aD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODU5MSw2ICsxODU5
MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50
aW1lXENvbnN0cnVjdERhdGEuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXHJ1bnRpbWVcRGF0ZUluc3RhbmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEVycm9yLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEVycm9ySGFuZGxp
bmdTY29wZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRl
cnNccnVudGltZVxFcnJvclByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxFeGNlcHRpb25IZWxwZXJzLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEV4ZWN1dGFi
bGUuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBj
b3B5KQpAQCAtMTI2MzQsNiArMTI2MzQsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Rm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxFcnJvci5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2Fy
ZGluZ0hlYWRlcnNccnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxFcnJvckhhbmRsaW5n
U2NvcGUuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRp
bmdIZWFkZXJzXHJ1bnRpbWVcRXJyb3JQcm90b3R5cGUuaCI+CiAgICAgICA8RmlsdGVyPkZvcndh
cmRpbmdIZWFkZXJzXHJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gMTYx
NTMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPGludGVycHJldGVyL0ludGVy
cHJldGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8cnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTQ5LDcgKzE1
MCw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlMKICAgICBpZiAo
aXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbikpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZSBtb2RlKGV4ZWMpOworICAg
IEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKGV4ZWMtPnZtKCkpOwogCiAgICAgUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zyb21FeGNl
cHRpb24oZXhlYywgZXhjZXB0aW9uLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVU
b0NhcHR1cmUpKTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTYxNTMxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTQtMDEtMDggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgor
CisgICAgICAgIENTdGFjazogTmVlZCBhIHNlcGFyYXRlIHN0YWNrIGxpbWl0IGZvciB0aGUgSlMg
c3RhY2sgYW5kIHRoZSBDIHN0YWNrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI2MzIwLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICoganMvbGFyZ2UtZXhwcmVzc2lvbnMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGpzL3NjcmlwdC10ZXN0cy9sYXJnZS1leHByZXNzaW9ucy5qczoKKyAgICAgICAgLSBD
aGFuZ2VkIGV4cGVjdGVkIHJlc3VsdCB0byByZWZsZWN0IHRoZSBtdWNoIG1vcmUgY29uc3RyYWlu
ZWQgc3RhY2sgc2l6ZQorICAgICAgICAgIG5vdyB0aGF0IHRoZSBKUyBzdGFjayBsaW1pdCBhbHNv
IGxpbWl0cyBzdGFjayB1c2FnZSBieSBob3N0IC8gbmF0aXZlCisgICAgICAgICAgZnVuY3Rpb25z
LgorCiAyMDE0LTAxLTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgTWVyZ2UgdHJ1bmsgcjE2MTA3Mi4KSW5kZXg6IExheW91dFRlc3RzL2pzL2xhcmdlLWV4cHJl
c3Npb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9sYXJnZS1l
eHByZXNzaW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE2MTUzMSkKKysrIExheW91dFRlc3Rz
L2pzL2xhcmdlLWV4cHJlc3Npb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3
ICs1LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiBQQVNT
IGV2YWwocmVwZWF0ZWRFeHByZXNzaW9uKCJsZXR0ZXJBIiwgIisiLCAxMDApKSBpcyByZXBlYXRl
ZFN0cmluZygiYSIsIDEwMCkKIFBBU1MgZXZhbChyZXBlYXRlZEV4cHJlc3Npb24oImxldHRlckEi
LCAiKyIsIDEwMDApKSBpcyByZXBlYXRlZFN0cmluZygiYSIsIDEwMDApCi1QQVNTIGV2YWwocmVw
ZWF0ZWRFeHByZXNzaW9uKCJsZXR0ZXJBIiwgIisiLCAxMDAwMCkpIGlzIHJlcGVhdGVkU3RyaW5n
KCJhIiwgMTAwMDApCitQQVNTIGV2YWwocmVwZWF0ZWRFeHByZXNzaW9uKCJsZXR0ZXJBIiwgIisi
LCAxMDAwMCkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogT3V0IG9mIG1lbW9yeS4KIFBBU1MgZXZh
bChyZXBlYXRlZEV4cHJlc3Npb24oImxldHRlckEiLCAiKyIsIDEwMDAwMCkpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogT3V0IG9mIG1lbW9yeS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIApJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2xhcmdlLWV4cHJlc3Npb25z
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9sYXJnZS1leHBy
ZXNzaW9ucy5qcwkocmV2aXNpb24gMTYxNTMxKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2xhcmdlLWV4cHJlc3Npb25zLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBA
IGZ1bmN0aW9uIHJlcGVhdGVkU3RyaW5nKHZhbHVlLCBjb3VudCkKIAogc2hvdWxkQmUoJ2V2YWwo
cmVwZWF0ZWRFeHByZXNzaW9uKCJsZXR0ZXJBIiwgIisiLCAxMDApKScsICdyZXBlYXRlZFN0cmlu
ZygiYSIsIDEwMCknKTsKIHNob3VsZEJlKCdldmFsKHJlcGVhdGVkRXhwcmVzc2lvbigibGV0dGVy
QSIsICIrIiwgMTAwMCkpJywgJ3JlcGVhdGVkU3RyaW5nKCJhIiwgMTAwMCknKTsKLXNob3VsZEJl
KCdldmFsKHJlcGVhdGVkRXhwcmVzc2lvbigibGV0dGVyQSIsICIrIiwgMTAwMDApKScsICdyZXBl
YXRlZFN0cmluZygiYSIsIDEwMDAwKScpOworc2hvdWxkVGhyb3coJ2V2YWwocmVwZWF0ZWRFeHBy
ZXNzaW9uKCJsZXR0ZXJBIiwgIisiLCAxMDAwMCkpJyk7CiBzaG91bGRUaHJvdygnZXZhbChyZXBl
YXRlZEV4cHJlc3Npb24oImxldHRlckEiLCAiKyIsIDEwMDAwMCkpJyk7Cg==
</data>
<flag name="review"
          id="244521"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220762</attachid>
            <date>2014-01-09 13:01:22 -0800</date>
            <delta_ts>2014-01-09 13:01:22 -0800</delta_ts>
            <desc>patch 5: updated patch for landing.</desc>
            <filename>bug-126320d.patch</filename>
            <type>text/plain</type>
            <size>70119</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MyBA
QAorMjAxNC0wMS0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
Q1N0YWNrOiBOZWVkIGEgc2VwYXJhdGUgc3RhY2sgbGltaXQgZm9yIHRoZSBKUyBzdGFjayBhbmQg
dGhlIEMgc3RhY2suCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjYzMjAuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXRjaCBpcyBtYWlubHkgdG8gY2hhbmdlIHRoZSB3
YXkgd2UgY29tcHV0ZSB0aGUgc3RhY2sKKyAgICAgICAgbGltaXQgZm9yIEpTIHN0YWNrIGNoZWNr
cy4gUHJldmlvdXNseSwgd2UgdGFsbHkgdXAgdGhlIHN0YWNrIHVzYWdlIHBlcgorICAgICAgICBz
ZXNzaW9uIG9mIFZNIHJlLWVudHJ5IGFzIHRyYWNrZWQgYnkgdGhlIFZNRW50cnlTY29wZSwgYW5k
IHdlIGVuc3VyZSB0aGF0CisgICAgICAgIHRoZSB0b3RhbCB1c2FnZSBkb2VzIG5vdCBleGNlZWQg
T3B0aW9uczo6bWF4U3RhY2tTaXplKCksIGFuZCBvZiBjb3Vyc2UsIGlzCisgICAgICAgIGFsc28g
Y2FwcGVkIGJ5IHRoZSBhbW91bnQgb2YgbmF0aXZlIEMgc3RhY2sgYXZhaWxhYmxlLiBUaGUgdXNh
Z2UgdHJhY2tpbmcKKyAgICAgICAgaGVyZSBkb2VzIG5vdCBjb3VudCBob3N0IC8gbmF0aXZlIGZ1
bmN0aW9uIHN0YWNrIHVzYWdlIGFnYWluc3QgdGhlIG1heAorICAgICAgICBzdGFjayB1c2FnZS4K
KworICAgICAgICBUaGUgbmV3IHdheSBpcyB0byBjb21wdXRlIGEgbGltaXQgYXMgYW4gb2Zmc2V0
IGZyb20gdGhlIFZNRW50cnlTY29wZSBvZgorICAgICAgICB0aGUgZmlyc3QgZW50cnkgaW50byB0
aGUgVk0uIE9wdGlvbnM6Om1heFBlclRocmVhZFN0YWNrVXNhZ2UoKQorICAgICAgICB3aWxsIHBy
b3ZpZGUgdGhhdCBvZmZzZXQuIEFueSBob3N0IC8gbmF0aXZlIGZ1bmN0aW9uIHN0YWNrIHVzYWdl
IGFmdGVyCisgICAgICAgIHdlJ3ZlIGVudGVyZWQgdGhlIFZNIHdpbGwgYmUgY291bnRlZCBhZ2Fp
bnN0IHRoZSBtYXggc3RhY2sgdXNhZ2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzdXBwbGFudHMg
cGFydHMgb3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcgcHJldmlvdXNseSBjb21taXR0ZWQKKyAgICAg
ICAgcGF0Y2hlczoKKworICAgICAgICAgICAgcjE2MTEwNDogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjI2NgorICAgICAgICAgICAgICAgICAgICAgUmVuYW1lIFZN
OjplbnRyeVNjb3BlIHRvIGZpcnN0RW50cnlTY29wZS4KKyAgICAgICAgICAgIHIxNjEyMzI6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjEKKyAgICAgICAgICAg
ICAgICAgICAgIEludHJvZHVjaW5nIE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgpLgorICAgICAgICAg
ICAgcjE2MTE3MjogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMz
MQorICAgICAgICAgICAgICAgICAgICAgUmVmYWN0b3IgdG8gc3BsaXQgdGhlIHRyYWNraW5nIG9m
IHRoZSBqc1N0YWNrTGltaXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZSBz
dGFja0xpbWl0LgorICAgICAgICAgICAgcjE2MTE3NDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNjMzNAorICAgICAgICAgICAgICAgICAgICAgSW50cm9kdWNlIHRy
YWNraW5nIG9mIHRoZSB0b3AgVk1FbnRyeVNjb3BlLgorICAgICAgICAgICAgcjE2MTM2MTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjQ4NworICAgICAgICAgICAg
ICAgICAgICAgVGhlIGZpeGVkIHVwIGpzU3RhY2tMaW1pdCBpbiBkb0NhbGxUb0phdmFTY3JpcHQg
c2hvdWxkIG5vdAorICAgICAgICAgICAgICAgICAgICAgZXhjZWVkIHRoZSBuYXRpdmUgc3RhY2sg
bGltaXQuCisgICAgICAgICAgICByMTYxMTgwOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI2MzIwCisgICAgICAgICAgICAgICAgICAgICBOZWVkIGEgc2VwYXJhdGUg
c3RhY2sgbGltaXQgZm9yIHRoZSBKUyBzdGFjayBhbmQgdGhlIEMgc3RhY2suCisgICAgICAgICAg
ICAgICAgICAgICBUaGlzIHdhcyBmb3IgdGhlIG9sZCB3YXkgb2YgdHJhY2tpbmcgY2h1bmtzIG9m
IHN0YWNrIHVzYWdlCisgICAgICAgICAgICAgICAgICAgICBwZXIgVk1FbnRyeVNjb3BlLgorCisg
ICAgICAgIERldGFpbHMgb2YgdGhpcyBwYXRjaDoKKworICAgICAgICAxLiBSZW5hbWVkIFZNOjpm
aXJzdEVudHJ5U2NvcGUgYmFjayB0byBWTTo6ZW50cnlTY29wZS4KKyAgICAgICAgICAgUmVtb3Zl
ZCB0aGUgdHJhY2tpbmcgb2YgdG9wRW50cnlTY29wZSBhbmQgcmVsYXRlZCBjb2RlLgorCisgICAg
ICAgIDIuIFJlbmFtZWQgT3B0aW9uczo6bWF4U3RhY2tTaXplKCkgdG8gbWF4UGVyVGhyZWFkU3Rh
Y2tVc2FnZSgpLgorICAgICAgICAgICBBZGRlZCBPcHRpb25zOjpob3N0Wm9uZVNpemUoKSBhbmQg
T3B0aW9uczo6ZXJyb3JNb2RlSG9zdFpvbmVTaXplKCkuCisKKyAgICAgICAgMy4gVGhlIFZNIG5v
dyB0cmFja3MgaXRzIGN1cnJlbnQgaG9zdFpvbmVTaXplIGFuZCBzdGFjayBsaW1pdHMuCisgICAg
ICAgICAgIFZNOjptX3N0YWNrTGltaXQgaXMgY29tcHV0ZWQgd2hlbiB0aGUgaG9zdFpvbmVTaXpl
IGlzIHNldCB2aWEKKyAgICAgICAgICAgVk06OnVwZGF0ZVN0YWNrTGltaXRXaXRoSG9zdFpvbmVT
aXplKCkuCisKKyAgICAgICAgICAgSW4gdGhlIEMgTG9vcCBMTElOVCBjYXNlLCB0aGUgVk0gYWxz
byBwcm92aWRlcyBhIHNldEpTU3RhY2tMaW1pdCgpCisgICAgICAgICAgIHNpbmNlIFZNOjptX3N0
YWNrTGltaXQgYW5kIFZNOjptX2pzU3RhY2tMaW1pdCBhcmUgMiBkaWZmZXJlbnQgdmFsdWVzCisg
ICAgICAgICAgIGluIHRoYXQgY2FzZS4KKworICAgICAgICA0LiBSZXBsYWNlZCBJbnRlcnByZXRl
cjo6RXJyb3JIYW5kbGluZ01vZGUgd2l0aCBFcnJvckhhbmRsaW5nU2NvcGUuCisgICAgICAgICAg
IFRoZSBFcnJvckhhbmRsaW5nU2NvcGUgY29uc3RydWN0b3Igd2lsbCBzZXQgdGhlIFZNIGhvc3Qg
em9uZSBzaXplIHRvCisgICAgICAgICAgIE9wdGlvbnM6OmVycm9yTW9kZUhvc3Rab25lU2l6ZSgp
LCBhbmQgcmVzdG9yZSB0aGUgcHJldmlvdXMgaG9zdCB6b25lCisgICAgICAgICAgIHNpemUuCisK
KyAgICAgICAgICAgVGhlIGRlc3RydWN0b3IgZm9yIEVycm9ySGFuZGxpbmdTY29wZSB3aWxsIHJl
c3RvcmUgdGhlIHByZXZpb3VzIHN0YWNrCisgICAgICAgICAgIGxpbWl0LiBXZSBjYW4gZW50ZXIg
bXVsdGlwbGUgRXJyb3JIYW5kbGluZ1Njb3Blcy4gT25seSB0aGUgZGVzdHJ1Y3Rpb24KKyAgICAg
ICAgICAgb2YgdGhlIHZlcnkgZmlyc3Qgb25lIHdpbGwgcmVzdG9yZSB0aGUgc3RhY2sgbGltaXQg
d2l0aCB0aGUgbm9uLWVycm9yCisgICAgICAgICAgIG1vZGUgaG9zdCB6b25lLgorCisgICAgICAg
IDUuIExMSU5UIEMgbG9vcCBKU1N0YWNrIGNoYW5nZXM6CisgICAgICAgICAgIDUuMSBSZXBsYWNl
ZCBjYWxscyB0byByb3VuZFVwVG9BbGxvY2F0aW9uU2l6ZSgpIHdpdGggV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKCkuCisgICAgICAgICAgICAgICByb3VuZFVwVG9BbGxvY2F0aW9uU2l6ZSgpIGlz
IHJlZHVuZGFudCBhbmQgaXMgbm93IHJlbW92ZWQuCisKKyAgICAgICAgICAgNS4yIFJlbW92ZWQg
ZW5hYmxlL2Rpc2FibGVFcnJvclN0YWNrUmVzZXJ2ZSgpIGFuZCB1cGRhdGVTdGFja0xpbWl0KCku
CisgICAgICAgICAgICAgICBUaGVpciBmdW5jdGlvbiBpcyBub3cgaGFuZGxlZCBieSBKU1N0YWNr
OjpzZXRIb3N0Wm9uZVNpemUoKS4KKworICAgICAgICAgICA1LjMgQWRkZWQgYWNjb3VudGluZyBm
b3IgYSBob3N0IHpvbmUgaW4gdGhlIExMSU5UIEMgbG9vcCBKU1N0YWNrLgorICAgICAgICAgICAg
ICAgVGhpcyBpbmNsdWRlcyBncm93aW5nIHRoZSBKUyBzdGFjayB0byBhbGxvdyBzcGFjZSBmb3Ig
dGhlIGhvc3Qgem9uZQorICAgICAgICAgICAgICAgd2hlbmV2ZXIgdGhlIGhvc3Qgem9uZSBzaXpl
IGlzIGFkanVzdGVkIHZpYSBKU1N0YWNrOjpzZXRIb3N0Wm9uZVNpemUoKS4KKworICAgICAgICAg
ICAgICAgTm90ZTogdGhvdWdoIHNldEhvc3Rab25lU2l6ZSgpIGlzIGJhc2VkIG9uIGRpc2FibGVF
cnJvclN0YWNrUmVzZXJ2ZSgpLAorICAgICAgICAgICAgICAgd2UgZG9uJ3QgcmV0YWluIHRoZSBs
b2dpYyB0byBzaHJpbmsgdGhlIHN0YWNrIHRoZXJlLiBUaGF0IGxvZ2ljIHdhcworICAgICAgICAg
ICAgICAgYWx3YXlzIGRlYWQgY29kZTogd2Ugb25seSBjYWxsIHNocmluaygpIGlmIG1fZW5kICsg
MSA8IG1fdXNlYWJsZVRvcCwKKyAgICAgICAgICAgICAgIGJ1dCBzaHJpbmsoKSB3aWxsIG9ubHkg
c2hyaW5rIHRoZSBzdGFjayBpZiBtX2VuZCBpcyBwb2ludGluZyB0byB0aGUKKyAgICAgICAgICAg
ICAgIGJhc2Ugb2YgdGhlIHN0YWNrIGkuZS4gdGhlIDIgY29uZGl0aW9ucyBhcmUgbXV0dWFsbHkg
ZXhjbHVzaXZlLCBhbmQKKyAgICAgICAgICAgICAgIG5vIHdvcmsgdG8gc2hyaW5rIHRoZSBzdGFj
ayB3aWxsIGV2ZXIgYmUgZG9uZSBoZXJlLgorCisgICAgICAgICAgICAgICBtX3VzZWFibGVUb3Ag
aXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgaXMgbm93IHJlbW92ZWQuCisKKyAgICAgICAgICAgNS40
IENoYW5nZSBhbGwgbm9uIEMgbG9vcCBjb2RlIHRvIHJlZmVyZW5jZSBWTTo6c3RhY2tMaW1pdCgp
IGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgIFZNOjpqc1N0YWNrTGltaXQoKS4gVGhvdWdoIHRo
ZSAyIGFyZSB0aGUgc2FtZSBmb3Igbm9uIEMgbG9vcCBidWlsZHMsCisgICAgICAgICAgICAgICB0
aGlzIG1ha2VzIGl0IG1vcmUgc3RyYWlnaHRmb3J3YXJkLiBXZSBub3cgb25seSByZWZlcmVuY2Ug
dGhlCisgICAgICAgICAgICAgICBqc1N0YWNrTGltaXQgaW4gMiBjYXNlczoKKworICAgICAgICAg
ICAgICAgYS4gTExJTlQgYW5kIEpJVCBjb2RlIHBlcmZvcm1pbmcgc3RhY2sgY2hlY2tzIHdoZXJl
IHRoZXkgZXhwZWN0IHRoZQorICAgICAgICAgICAgICAgICAganNTdGFja0xpbWl0IHRvIGJlIGEg
cHNldWRvbnltIGZvciB0aGUgc3RhY2tMaW1pdCBpbiBub24gQyBsb29wCisgICAgICAgICAgICAg
ICAgICBidWlsZHMuCisKKyAgICAgICAgICAgICAgIGIuIEluIHRoZSBDIGxvb3AgYnVpbGQsIHRo
ZSBKU1N0YWNrIGl0c2VsZiBzZXRzIFZNOjptX2pzU3RhY2tMaW1pdCgpCisgICAgICAgICAgICAg
ICAgICB3aGVuIGl0IGFkanVzdHMgaXRzIGhvc3Qgem9uZSBzaXplLgorCisgICAgICAgICAgICAg
ICBJbiBhbGwgb3RoZXIgY2FzZXMsIHdlIHdvcmsgZGlyZWN0bHkgd2l0aCBWTTo6c3RhY2tMaW1p
dCgpLgorCisgICAgICAgIDYuIFNpbXBsaWZ5IHRoZSB0cmFja2luZyBvZiBWTTo6c3RhY2tQb2lu
dGVyQXRWTUVudHJ5LiBXZSBub3cgc2V0CisgICAgICAgICAgIFZNOjpzdGFja1BvaW50ZXJBdFZN
RW50cnkgd2hlbiB3ZSBpbnN0YWxsIGEgVk1FbnRyeVNjb3BlIGlmIGFuZCBvbmx5IGlmCisgICAg
ICAgICAgIGl0IGlzbid0IGFscmVhZHkgc2V0LgorCisgICAgICAgICAgIFdoZW4gd2UgZHJvcCB0
aGUgQVBJIGxvY2tzLCB3ZSdsbCBzYXZlIHRoZSBjdXJyZW50IHN0YWNrUG9pbnRlckF0Vk1FbnRy
eQorICAgICAgICAgICBhbmQgc3RhY2sgbGltaXQgdmFsdWUsIGFuZCBjbGVhciBzdGFja1BvaW50
ZXJBdFZNRW50cnkgdG8gYWxsb3cgYSBuZXcKKyAgICAgICAgICAgdGhyZWFkIGFjcXVpcmluZyB0
aGUgQVBJIGxvY2tzIHRvIHJlLXNldCBpdCB3aGVuIGl0IGluc3RhbGxzIGEgVk1FbnRyeVNjb3Bl
LgorICAgICAgICAgICBXaGVuIHdlIHJlLWFjcXVpcmUgdGhlIEFQSSBsb2NrcyBhZ2Fpbiwgd2Un
bGwgcmVzdG9yZSB0aGUgcHJldmlvdXNseSBzYXZlZAorICAgICAgICAgICBzdGFja1BvaW50ZXJB
dFZNRW50cnkgYW5kIHN0YWNrIGxpbWl0LgorCisgICAgICAgICAgIFdpdGggdGhpcyBjaGFuZ2Us
IHdlIGFsc28gbm8gbG9uZ2VyIG5lZWQgdGhlIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSBmaXggdXAK
KyAgICAgICAgICAgY29kZSBpbiBkb0NhbGxUb0phdmFTY3JpcHQoKS4gVGhhdCBjb2RlIGlzIG5v
dyByZW1vdmVkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyk6CisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6ZGVsZXRlQWxsQ29tcGlsZWRDb2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxP
YmplY3QpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3Rh
Y2suY3BwOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpKU1N0YWNrKToKKyAgICAgICAgKEpTQzo6
SlNTdGFjazo6fkpTU3RhY2spOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpncm93U2xvd0Nhc2Up
OgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpyZWxlYXNlRXhjZXNzQ2FwYWNpdHkpOgorICAgICAg
ICAoSlNDOjpKU1N0YWNrOjpzZXRIb3N0Wm9uZVNpemUpOgorICAgICAgICAoSlNDOjpKU1N0YWNr
Ojpsb3dBZGRyZXNzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrLmg6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6
ZW5zdXJlQ2FwYWNpdHlGb3IpOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpzaHJpbmspOgorICAg
ICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJFcnJvci5oOgor
ICAgICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dG9FcnJvck9iamVjdCk6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6RXJyb3JIYW5kbGluZ1Njb3BlOjpFcnJvckhhbmRsaW5nU2NvcGUpOgorICAgICAg
ICAoSlNDOjpFcnJvckhhbmRsaW5nU2NvcGU6On5FcnJvckhhbmRsaW5nU2NvcGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OnRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6
RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MpOgorICAgICAgICAoSlNDOjpKU0xvY2s6OkRyb3BB
bGxMb2Nrczo6fkRyb3BBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06OnJlbGVhc2VFeGVjdXRhYmxl
TWVtb3J5KToKKyAgICAgICAgKEpTQzo6Vk06OnVwZGF0ZVN0YWNrTGltaXRXaXRoSG9zdFpvbmVT
aXplKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogcnVudGltZS9WTUVudHJ5
U2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZSk6Cisg
ICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSk6CisgICAgICAgICogcnVu
dGltZS9WTUVudHJ5U2NvcGUuaDoKKwogMjAxNC0wMS0wOCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fi
b2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDU3RhY2s6IHN0YWNrIGZyYW1lIGdldHMgdW5hbGln
bmVkIGJlZm9yZSBjYWxsIHRvIG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0aW9uCkBAIC0zMTksNiAr
NDg5LDcgQEAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNjQ4Ny4KIAogICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIFNhYm9mZi4KKyAgICAgICAg
VXBkYXRlOiB0aGlzIGlzIHN1cHBsYW50ZWQgYnkgdGhlIDIwMTQtMDEtMDggcGF0Y2ggZm9yIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjAuCiAKICAgICAgICAg
SW4gZG9DYWxsVG9KYXZhU2NyaXB0LCB3ZSBmaXh1cCBWTTo6bV9qc1N0YWNrTGltaXQgb25jZSB3
ZSBrbm93IHdoYXQgdGhlCiAgICAgICAgIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSBpcy4gSG93ZXZl
ciwgd2UgYWxzbyBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBmaXhlZApAQCAtNjM2LDcgKzgwNyw4
IEBACiAgICAgICAgIENTdGFjazogTmVlZCBhIHNlcGFyYXRlIHN0YWNrIGxpbWl0IGZvciB0aGUg
SlMgc3RhY2sgYW5kIHRoZSBDIHN0YWNrLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzIwLgogCi0gICAgICAgIE5vdCB5ZXQgcmV2aWV3ZWQuCisg
ICAgICAgIFJlamVjdGVkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICBVcGRhdGU6IHRoaXMg
aXMgc3VwcGxhbnRlZCBieSB0aGUgMjAxNC0wMS0wOCBwYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMyMC4KIAogICAgICAgICBXaXRoIHRoaXMgcGF0
Y2gsIHdlIG5vdyBhY2N1cmF0ZWx5IHRyYWNrIGhvdyBtdWNoIEpTIHN0YWNrIHNwYWNlIHRoZQog
ICAgICAgICBWTSBoYXMgdXNlZCwgYW5kIGNhcCB0aGF0IGF0IHRoZSB2YWx1ZSBzcGVjaWZpZWQg
YnkgT3B0aW9uczo6bWF4U3RhY2tTaXplKCkuCkBAIC03MjMsNiArODk1LDEwIEBACiAKICAgICAg
ICAgTm90IHlldCByZXZpZXdlZC4KIAorICAgICAgICBXZSBjYW5ub3QgZG8gYSBtZWFuaW5nZnVs
IGFzc2VydGlvbiBoZXJlIG9uIHRoZSBzaXplIG9mIHRoZSBzdGFjayBzcGFuCisgICAgICAgIGJl
Y2F1c2Ugd2UgZG9uJ3Qga25vdyB0aGUgc3RhY2sgYm91bmRzIHRoYXQgdGhlIHNwYW4gY2FtZSBm
cm9tLiBIZW5jZSwKKyAgICAgICAgdGhlIGFzc2VydGlvbiBpcyBub3cgcmVtb3ZlZC4KKwogICAg
ICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwOgogICAgICAgICAoSlNDOjpDb25zZXJ2
YXRpdmVSb290czo6Z2VuZXJpY0FkZFNwYW4pOgogCkBAIC03MzIsNiArOTA4LDcgQEAKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMzNC4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgVXBkYXRlOiB0aGlzIGlz
IHN1cHBsYW50ZWQgYnkgdGhlIDIwMTQtMDEtMDggcGF0Y2ggZm9yIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjAuCiAKICAgICAgICAgV2hlbiB3ZSBzdGFydCBt
ZWFzdXJpbmcgdGhlIHN0YWNrIHVzYWdlIG9mIGVhY2ggVk1FbnRyeVNjb3BlLCB3ZSdsbCBuZWVk
CiAgICAgICAgIHRvIGtub3cgd2hpY2ggVk1FbnRyeVNjb3BlIGlzIHRoZSB0b3AgKG1vc3QgcmVj
ZW50KSBvbmUsIG5vdCBqdXN0IHRoZQpAQCAtNzYxLDcgKzkzOCw4IEBACiAgICAgICAgIENTdGFj
azogUmVmYWN0b3IgdG8gc3BsaXQgdGhlIHRyYWNraW5nIG9mIHRoZSBqc1N0YWNrTGltaXQgZnJv
bSB0aGUgbmF0aXZlIHN0YWNrTGltaXQuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjYzMzEuCiAKLSAgICAgICAgTm90IHlldCByZXZpZXdlZC4KKyAg
ICAgICAgUmVqZWN0ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAgIFVwZGF0ZTogdGhpcyBp
cyBzdXBwbGFudGVkIGJ5IHRoZSAyMDE0LTAxLTA4IHBhdGNoIGZvciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzIwLgogCiAgICAgICAgIFByZXZpb3VzbHksIHdo
ZW4gdXNpbmcgdGhlIEMgc3RhY2sgZm9yIHRoZSBKUyBzdGFjaywgVk06Om1fanNTdGFja0xpbWl0
IGlzIGEgdW5pb24KICAgICAgICAgd2l0aCBWTTo6bV9zdGFja0xpbWl0LiBXZSBub3cgc2VwYXJh
dGUgdGhlbSBpbnRvIDIgZGlzdGluY3QgZmllbGRzIGJ1dCBoYXZlbid0IHlldApAQCAtNzk2LDYg
Kzk3NCw3IEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjYzMjEuCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAg
IFVwZGF0ZTogdGhpcyBpcyBzdXBwbGFudGVkIGJ5IHRoZSAyMDE0LTAxLTA4IHBhdGNoIGZvciBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzIwLgogCiAgICAgICAg
IFdlIG5lZWQgYW4gb3B0aW9uIHRvIGxpbWl0IHRoZSBKUyBzdGFjayBzaXplLiBDdXJyZW50bHks
IHdlIGp1c3QgY2hhbmdlCiAgICAgICAgIHRoZSBKU1N0YWNrIGNsYXNzIHRvIHVzZSB0aGlzIGxp
bWl0LgpAQCAtODI2LDcgKzEwMDUsOCBAQAogICAgICAgICBDU3RhY2s6IENvc21ldGljOiByZW5h
bWUgVk06OmVudHJ5U2NvcGUgdG8gZmlyc3RFbnRyeVNjb3BlLgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjY2LgogCi0gICAgICAgIE5vdCB5ZXQg
cmV2aWV3ZWQuCisgICAgICAgIFJlamVjdGVkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICBV
cGRhdGU6IHRoaXMgaXMgc3VwcGxhbnRlZCBieSB0aGUgMjAxNC0wMS0wOCBwYXRjaCBmb3IgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjMyMC4KIAogICAgICAgICBU
aGlzIHBhdGNoIGlzIHNvIHRoYXQgd2UgY2FuIGRpc3Rpbmd1aXNoIGZpcnN0RW50cnlTY29wZSBm
cm9tIHRvcEVudHJ5U2NvcGUKICAgICAgICAgd2hpY2ggd2lsbCBiZSBpbnRyb2R1Y2VkIGxhdGVy
IGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMzQuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjE1MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMx
MSw2ICszMTEsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRHVt
cENvbnRleHQuY3BwCiAgICAgcnVudGltZS9FcnJvci5jcHAKICAgICBydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuY3BwCisgICAgcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuY3BwCiAgICAgcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcAogICAgIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC04NTEsNiAr
ODUxLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5j
cHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDcgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRHVtcENvbnRleHQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxFcnJvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEVycm9yQ29uc3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxFcnJvckhhbmRsaW5nU2NvcGUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxFcnJvckluc3RhbmNlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxFeGNlcHRpb25IZWxwZXJzLmNwcCIgLz4KQEAgLTEx
MzMsNiArMTEzNCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXER1bXBD
b250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9yLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9yQ29uc3RydWN0b3Iu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JIYW5kbGluZ1Nj
b3BlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEVycm9ySW5zdGFu
Y2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JQcm90b3R5
cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRXhjZXB0aW9uSGVs
cGVycy5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwkocmV2aXNpb24gMTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3
b3JraW5nIGNvcHkpCkBAIC01MDcsNiArNTA3LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcRXJyb3JDb25zdHJ1Y3Rvci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEVycm9ySGFuZGxpbmdTY29wZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEVycm9ySW5zdGFuY2UuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMjAzNiw2ICsyMDM5LDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcRXJyb3JDb25zdHJ1Y3Rvci5oIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxFcnJvckhhbmRsaW5nU2NvcGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcRXJyb3JJbnN0YW5jZS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc5LDYgKzEyNzksOCBA
QAogCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU5MzJBNjE4M0M1QTI2MDBB
MUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTA4NjFF
MTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVBMDg2MjExODJCN0EwNDAwRjZEODUxIC8qIERl
YnVnZ2VyUHJpbWl0aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVBMDg2MUYxODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFQjU4
QzE0MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCNThDMTIxODdCOEIxNjAwOThF
RjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgKi87IH07CisJCUZFQjU4QzE1MTg3QjhCMTYw
MDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjU4QzEzMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhh
bmRsaW5nU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRUQyODdCMjE1RUM5QTU3MDBEQTgxNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDI4N0IxMTVFQzlBNTcw
MERBODE2MSAvKiBMTEludE9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYy
QjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovOyB9OwogCQlGRUQ5NEYyRjE3MUUz
RTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjQ3LDYg
KzI2NDksOCBAQAogCQlGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNRW50cnlTY29wZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtw
b2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmVha3BvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1MSAvKiBE
ZWJ1Z2dlclByaW1pdGl2ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVi
dWdnZXJQcmltaXRpdmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQjU4QzEy
MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JIYW5kbGluZ1Njb3BlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFu
ZGxpbmdTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFcnJvckhhbmRs
aW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEMjg3QjExNUVDOUE1
NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExMSW50T3Bjb2RlLmg7IHBhdGggPSBsbGludC9MTEludE9wY29kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2F0Y2hkb2cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyog
V2F0Y2hkb2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0Y2hkb2cuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0ODAsNiArMzQ4NCw4IEBACiAJCQkJQkMz
MDQ2MDYwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggKi8sCiAJCQkJQkMwMkU5MDQwRTE4MzlE
QjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuY3BwICovLAogCQkJCUJDMDJFOTA1MEUxODM5
REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVjdG9yLmggKi8sCisJCQkJRkVCNThDMTIxODdCOEIx
NjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgKi8sCisJCQkJRkVCNThDMTMxODdC
OEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovLAogCQkJCUJDMDJFOThBMEUx
ODNFMzgwMDBGOTI5NyAvKiBFcnJvckluc3RhbmNlLmNwcCAqLywKIAkJCQlCQzAyRTk4QjBFMTgz
RTM4MDAwRjkyOTcgLyogRXJyb3JJbnN0YW5jZS5oICovLAogCQkJCUJDMDJFOTA2MEUxODM5REIw
MDBGOTI5NyAvKiBFcnJvclByb3RvdHlwZS5jcHAgKi8sCkBAIC00MzEzLDYgKzQzMTksNyBAQAog
CQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJT
ZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJv
ckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QkZGM0MwMTc5ODY4OTQwMDAy
RjQ2MiAvKiBERkdGaWx0cmF0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUx
MTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkZDQUUxMzE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmggaW4gSGVhZGVycyAqLywKQEAgLTU0ODcsNiArNTQ5NCw3IEBACiAJCQkJMEY2Mzk0ODQxNUU0
ODExODAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q5
QTI5NDE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjcxNENBNDE2RUE5MkYwMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJv
cGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRUI1OEMxNDE4N0I4QjE2MDA5
OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5
Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw2IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2lu
Y2x1ZGUgIlByb3RlY3QuaCIKLSNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKIAogbmFtZXNwYWNl
IHsKIApAQCAtMTk2LDggKzE5NSw4IEBAIHZvaWQgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zKFYKIHsKICAgICAvLyBJZiBKYXZhU2NyaXB0IGlzIHJ1bm5pbmcsIGl0J3Mgbm90IHNh
ZmUgdG8gcmVjb21waWxlLCBzaW5jZSB3ZSdsbCBlbmQKICAgICAvLyB1cCB0aHJvd2luZyBhd2F5
IGNvZGUgdGhhdCBpcyBsaXZlIG9uIHRoZSBzdGFjay4KLSAgICBBU1NFUlQoIXZtLT5maXJzdEVu
dHJ5U2NvcGUpOwotICAgIGlmICh2bS0+Zmlyc3RFbnRyeVNjb3BlKQorICAgIEFTU0VSVCghdm0t
PmVudHJ5U2NvcGUpOworICAgIGlmICh2bS0+ZW50cnlTY29wZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIHZtLT5wcmVwYXJlVG9EaXNjYXJkQ29kZSgpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZp
c2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRv
ci5oIgotI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEs
NyArMjkxLDcgQEAgYm9vbCBIZWFwOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSkKIC8vIFJ1
biBhbGwgcGVuZGluZyBmaW5hbGl6ZXJzIG5vdyBiZWNhdXNlIHdlIHdvbid0IGdldCBhbm90aGVy
IGNoYW5jZS4KIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewotICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3ZtLT5maXJzdEVudHJ5U2NvcGUpOworICAgIFJFTEVBU0VfQVNTRVJUKCFt
X3ZtLT5lbnRyeVNjb3BlKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPT0gTm9PcGVyYXRpb24pOwogCiAgICAgbV9vYmplY3RTcGFjZS5sYXN0Q2hhbmNlVG9GaW5h
bGl6ZSgpOwpAQCAtNjk1LDcgKzY5NSw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29tcGlsZWRD
b2RlKCkKIHsKICAgICAvLyBJZiBKYXZhU2NyaXB0IGlzIHJ1bm5pbmcsIGl0J3Mgbm90IHNhZmUg
dG8gZGVsZXRlIGNvZGUsIHNpbmNlIHdlJ2xsIGVuZAogICAgIC8vIHVwIGRlbGV0aW5nIGNvZGUg
dGhhdCBpcyBsaXZlIG9uIHRoZSBzdGFjay4KLSAgICBpZiAobV92bS0+Zmlyc3RFbnRyeVNjb3Bl
KQorICAgIGlmIChtX3ZtLT5lbnRyeVNjb3BlKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3Ig
KEV4ZWN1dGFibGVCYXNlKiBjdXJyZW50ID0gbV9jb21waWxlZENvZGUuaGVhZCgpOyBjdXJyZW50
OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTYxNTMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMCw4ICsxMzAsOCBAQCBKU0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjp2bUVu
dHJ5R2xvYmFsCiAKICAgICAvLyBGb3IgYW55IEV4ZWNTdGF0ZSB0aGF0J3Mgbm90IGEgZ2xvYmFs
RXhlYywgdGhlIAogICAgIC8vIGR5bmFtaWMgZ2xvYmFsIG9iamVjdCBtdXN0IGJlIHNldCBzaW5j
ZSBjb2RlIGlzIHJ1bm5pbmcKLSAgICBBU1NFUlQodm0oKS5maXJzdEVudHJ5U2NvcGUpOwotICAg
IHJldHVybiB2bSgpLmZpcnN0RW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJU
KHZtKCkuZW50cnlTY29wZSk7CisgICAgcmV0dXJuIHZtKCkuZW50cnlTY29wZS0+Z2xvYmFsT2Jq
ZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNjE1MzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MSwyMSArOTEsNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBu
YW1lc3BhY2UgSlNDIHsKIAotSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlOjpFcnJvckhh
bmRsaW5nTW9kZShFeGVjU3RhdGUgKmV4ZWMpCi0gICAgOiBtX2ludGVycHJldGVyKCpleGVjLT5p
bnRlcnByZXRlcigpKQotewotICAgIG1faW50ZXJwcmV0ZXIubV9lcnJvckhhbmRsaW5nTW9kZVJl
ZW50cnkrKzsKLSAgICBtX2ludGVycHJldGVyLnN0YWNrKCkudXBkYXRlU3RhY2tMaW1pdCgpOwot
fQotCi1JbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGU6On5FcnJvckhhbmRsaW5nTW9kZSgp
Ci17Ci0gICAgbV9pbnRlcnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeS0tOwotICAg
IEFTU0VSVChtX2ludGVycHJldGVyLm1fZXJyb3JIYW5kbGluZ01vZGVSZWVudHJ5ID49IDApOwot
ICAgIGlmICghbV9pbnRlcnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeSkKLSAgICAg
ICAgbV9pbnRlcnByZXRlci5zdGFjaygpLnVwZGF0ZVN0YWNrTGltaXQoKTsKLX0KLQogSlNWYWx1
ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGlmICghY2FsbEZyYW1lLT5hcmd1
bWVudENvdW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxNCAr
MTkwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBWTTsKIAogICAg
IHB1YmxpYzoKLSAgICAgICAgY2xhc3MgRXJyb3JIYW5kbGluZ01vZGUgewotICAgICAgICBwdWJs
aWM6Ci0gICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBFcnJvckhhbmRsaW5nTW9kZShFeGVj
U3RhdGUqKTsKLSAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5FcnJvckhhbmRsaW5nTW9k
ZSgpOwotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgSW50ZXJwcmV0ZXImIG1faW50ZXJw
cmV0ZXI7Ci0gICAgICAgIH07Ci0KICAgICAgICAgSW50ZXJwcmV0ZXIoVk0gJik7CiAgICAgICAg
IH5JbnRlcnByZXRlcigpOwogICAgICAgICAKQEAgLTIzNyw4ICsyMjksNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIFNhbXBsaW5nVG9vbCogc2FtcGxlcigpIHsgcmV0dXJu
IG1fc2FtcGxlci5nZXQoKTsgfQogCi0gICAgICAgIGJvb2wgaXNJbkVycm9ySGFuZGxpbmdNb2Rl
KCkgeyByZXR1cm4gbV9lcnJvckhhbmRsaW5nTW9kZVJlZW50cnk7IH0KLQogICAgICAgICBORVZF
Ul9JTkxJTkUgSGFuZGxlckluZm8qIHVud2luZChDYWxsRnJhbWUqJiwgSlNWYWx1ZSYpOwogICAg
ICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tJRCk7CiAg
ICAgICAgIEpTU3RyaW5nKiBzdGFja1RyYWNlQXNTdHJpbmcoRXhlY1N0YXRlKiwgVmVjdG9yPFN0
YWNrRnJhbWU+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0
YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SlNTdGFjay5jcHAJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9KU1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNyAr
MzEsNyBAQAogCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgotI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgorI2luY2x1ZGUgIk9wdGlvbnMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUwLDE5ICs1MCwxOCBAQCBKU1N0YWNrOjpKU1N0
YWNrKFZNJiB2bSkKICAgICAsIG1fdG9wQ2FsbEZyYW1lKHZtLnRvcENhbGxGcmFtZSkKICNpZiBF
TkFCTEUoTExJTlRfQ19MT09QKQogICAgICwgbV9lbmQoMCkKKyAgICAsIG1faG9zdFpvbmVTaXpl
SW5SZWdpc3RlcnMoMCkKICNlbmRpZgogewogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAg
c2l6ZV90IGNhcGFjaXR5ID0gT3B0aW9uczo6bWF4U3RhY2tTaXplKCk7CisgICAgc2l6ZV90IGNh
cGFjaXR5ID0gT3B0aW9uczo6bWF4UGVyVGhyZWFkU3RhY2tVc2FnZSgpOwogICAgIEFTU0VSVChj
YXBhY2l0eSAmJiBpc1BhZ2VBbGlnbmVkKGNhcGFjaXR5KSk7CiAKLSAgICBtX3Jlc2VydmF0aW9u
ID0gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKHJvdW5kVXBBbGxvY2F0aW9uU2l6ZShjYXBhY2l0
eSwgY29tbWl0U2l6ZSksIE9TQWxsb2NhdG9yOjpKU1ZNU3RhY2tQYWdlcyk7CisgICAgbV9yZXNl
cnZhdGlvbiA9IFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZShXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2YoY29tbWl0U2l6ZSwgY2FwYWNpdHkpLCBPU0FsbG9jYXRvcjo6SlNWTVN0YWNrUGFnZXMpOwog
ICAgIHNldFN0YWNrTGltaXQoaGlnaEFkZHJlc3MoKSk7CiAgICAgbV9jb21taXRUb3AgPSBoaWdo
QWRkcmVzcygpOwogICAgIAogICAgIG1fbGFzdFN0YWNrVG9wID0gYmFzZU9mU3RhY2soKTsKLQot
ICAgIGRpc2FibGVFcnJvclN0YWNrUmVzZXJ2ZSgpOwogI2VuZGlmIC8vIEVOQUJMRShMTElOVF9D
X0xPT1ApCiAKICAgICBtX3RvcENhbGxGcmFtZSA9IDA7CkBAIC03MSwxNyArNzAsMTkgQEAgSlNT
dGFjazo6SlNTdGFjayhWTSYgdm0pCiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKIEpTU3RhY2s6
On5KU1N0YWNrKCkKIHsKLSAgICB2b2lkKiBoaWdoQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jlc2VydmF0aW9uLmJhc2UoKSkgKyBtX3Jlc2Vy
dmF0aW9uLnNpemUoKSk7Ci0gICAgbV9yZXNlcnZhdGlvbi5kZWNvbW1pdChyZWludGVycHJldF9j
YXN0PHZvaWQqPihtX2NvbW1pdFRvcCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGhpZ2hB
ZGRyZXNzKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fY29tbWl0VG9wKSk7Ci0gICAg
YWRkVG9Db21taXR0ZWRCeXRlQ291bnQoLShyZWludGVycHJldF9jYXN0PGludHB0cl90PihoaWdo
QWRkcmVzcykgLSByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX2NvbW1pdFRvcCkpKTsKKyAg
ICBwdHJkaWZmX3Qgc2l6ZVRvRGVjb21taXQgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihoaWdo
QWRkcmVzcygpKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0VG9wKTsKKyAgICBt
X3Jlc2VydmF0aW9uLmRlY29tbWl0KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fY29tbWl0VG9w
KSwgc2l6ZVRvRGVjb21taXQpOworICAgIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KC1zaXplVG9E
ZWNvbW1pdCk7CiAgICAgbV9yZXNlcnZhdGlvbi5kZWFsbG9jYXRlKCk7CiB9CiAKIGJvb2wgSlNT
dGFjazo6Z3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKiBuZXdUb3BPZlN0YWNrKQogeworICAgIFJlZ2lz
dGVyKiBuZXdUb3BPZlN0YWNrV2l0aEhvc3Rab25lID0gbmV3VG9wT2ZTdGFjayAtIG1faG9zdFpv
bmVTaXplSW5SZWdpc3RlcnM7CisKICAgICAvLyBJZiB3ZSBoYXZlIGFscmVhZHkgY29tbWl0dGVk
IGVub3VnaCBtZW1vcnkgdG8gc2F0aXNmeSB0aGlzIHJlcXVlc3QsCiAgICAgLy8ganVzdCB1cGRh
dGUgdGhlIGVuZCBwb2ludGVyIGFuZCByZXR1cm4uCi0gICAgaWYgKG5ld1RvcE9mU3RhY2sgPj0g
bV9jb21taXRUb3ApIHsKKyAgICBpZiAobmV3VG9wT2ZTdGFja1dpdGhIb3N0Wm9uZSA+PSBtX2Nv
bW1pdFRvcCkgewogICAgICAgICBzZXRTdGFja0xpbWl0KG5ld1RvcE9mU3RhY2spOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC04OSwxNSArOTAsMTcgQEAgYm9vbCBKU1N0YWNrOjpn
cm93U2xvd0Nhc2UoUmVnaXN0ZXIqIG5ldwogICAgIC8vIENvbXB1dGUgdGhlIGNodW5rIHNpemUg
b2YgYWRkaXRpb25hbCBtZW1vcnkgdG8gY29tbWl0LCBhbmQgc2VlIGlmIHdlCiAgICAgLy8gaGF2
ZSBpdCBpcyBzdGlsbCB3aXRoaW4gb3VyIGJ1ZGdldC4gSWYgbm90LCB3ZSdsbCBmYWlsIHRvIGdy
b3cgYW5kCiAgICAgLy8gcmV0dXJuIGZhbHNlLgotICAgIGxvbmcgZGVsdGEgPSByb3VuZFVwQWxs
b2NhdGlvblNpemUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9jb21taXRUb3ApIC0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4obmV3VG9wT2ZTdGFjayksIGNvbW1pdFNpemUpOwotICAgIGlmIChy
ZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdFRvcCkgLSBkZWx0YSA8PSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihtX3VzZWFibGVUb3ApKQorICAgIHB0cmRpZmZfdCBkZWx0YSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0VG9wKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KG5ld1RvcE9mU3RhY2tXaXRoSG9zdFpvbmUpOworICAgIGRlbHRhID0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKGNvbW1pdFNpemUsIGRlbHRhKTsKKyAgICBSZWdpc3RlciogbmV3Q29tbWl0VG9w
ID0gbV9jb21taXRUb3AgLSAoZGVsdGEgLyBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICBpZiAobmV3
Q29tbWl0VG9wIDwgcmVzZXJ2YXRpb25Ub3AoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gT3RoZXJ3aXNlLCB0aGUgZ3Jvd3RoIGlzIHN0aWxsIHdpdGhpbiBvdXIgYnVkZ2V0LiBH
byBhaGVhZCBhbmQgY29tbWl0CiAgICAgLy8gaXQgYW5kIHJldHVybiB0cnVlLgotICAgIG1fcmVz
ZXJ2YXRpb24uY29tbWl0KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0VG9wKSAtIGRl
bHRhLCBkZWx0YSk7CisgICAgbV9yZXNlcnZhdGlvbi5jb21taXQobmV3Q29tbWl0VG9wLCBkZWx0
YSk7CiAgICAgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQoZGVsdGEpOwotICAgIG1fY29tbWl0VG9w
ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UmVnaXN0ZXIqPihyZWludGVycHJldF9jYXN0PGNoYXIq
PihtX2NvbW1pdFRvcCkgLSBkZWx0YSk7CisgICAgbV9jb21taXRUb3AgPSBuZXdDb21taXRUb3A7
CiAgICAgc2V0U3RhY2tMaW1pdChuZXdUb3BPZlN0YWNrKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTEyNywxMCArMTMwLDExIEBAIHZvaWQgSlNTdGFjazo6c2FuaXRpemVTdGFjaygpCiAKIHZv
aWQgSlNTdGFjazo6cmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCkKIHsKLSAgICBwdHJkaWZmX3QgZGVs
dGEgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaGlnaEFkZHJlc3MoKSkgLSByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4obV9jb21taXRUb3ApOworICAgIFJlZ2lzdGVyKiBoaWdoQWRk
cmVzc1dpdGhIb3N0Wm9uZSA9IGhpZ2hBZGRyZXNzKCkgLSBtX2hvc3Rab25lU2l6ZUluUmVnaXN0
ZXJzOworICAgIHB0cmRpZmZfdCBkZWx0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGhpZ2hB
ZGRyZXNzV2l0aEhvc3Rab25lKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0VG9w
KTsKICAgICBtX3Jlc2VydmF0aW9uLmRlY29tbWl0KG1fY29tbWl0VG9wLCBkZWx0YSk7CiAgICAg
YWRkVG9Db21taXR0ZWRCeXRlQ291bnQoLWRlbHRhKTsKLSAgICBtX2NvbW1pdFRvcCA9IGhpZ2hB
ZGRyZXNzKCk7CisgICAgbV9jb21taXRUb3AgPSBoaWdoQWRkcmVzc1dpdGhIb3N0Wm9uZTsKIH0K
IAogdm9pZCBKU1N0YWNrOjppbml0aWFsaXplVGhyZWFkaW5nKCkKQEAgLTE0NSwyNSArMTQ5LDEx
IEBAIHZvaWQgSlNTdGFjazo6YWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG8KICAgICBjb21taXR0
ZWRCeXRlc0NvdW50ICs9IGJ5dGVDb3VudDsKIH0KIAotdm9pZCBKU1N0YWNrOjplbmFibGVFcnJv
clN0YWNrUmVzZXJ2ZSgpCit2b2lkIEpTU3RhY2s6OnNldEhvc3Rab25lU2l6ZShzaXplX3QgaG9z
dFpvbmVTaXplKQogewotICAgIG1fdXNlYWJsZVRvcCA9IHJlc2VydmF0aW9uVG9wKCk7Ci19Ci0K
LXZvaWQgSlNTdGFjazo6ZGlzYWJsZUVycm9yU3RhY2tSZXNlcnZlKCkKLXsKLSAgICBjaGFyKiB1
c2VhYmxlVG9wID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzZXJ2YXRpb25Ub3AoKSkgKyBj
b21taXRTaXplOwotICAgIG1fdXNlYWJsZVRvcCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFJlZ2lz
dGVyKj4odXNlYWJsZVRvcCk7Ci0KLSAgICAvLyBCeSB0aGUgdGltZSB3ZSBnZXQgaGVyZSwgd2Ug
YXJlIGd1YXJhbnRlZWQgdG8gYmUgZGVzdHJ1Y3RpbmcgdGhlIGxhc3QKLSAgICAvLyBJbnRlcnBy
ZXRlcjo6RXJyb3JIYW5kbGluZ01vZGUgdGhhdCBlbmFibGVkIHRoaXMgcmVzZXJ2ZSBpbiB0aGUg
Zmlyc3QKLSAgICAvLyBwbGFjZS4gVGhhdCBtZWFucyB0aGUgc3RhY2sgc3BhY2UgYmV5b25kIG1f
dXNlYWJsZVRvcCBiZWZvcmUgd2UKLSAgICAvLyBlbmFibGVkIHRoZSByZXNlcnZlIHdhcyBub3Qg
cHJldmlvdXNseSBpbiB1c2UuIEhlbmNlLCBpdCBpcyBzYWZlIHRvCi0gICAgLy8gc2hyaW5rIGJh
Y2sgdG8gdGhhdCBtX3VzZWFibGVUb3AuCi0gICAgaWYgKG1fZW5kICsgMSA8IG1fdXNlYWJsZVRv
cCkgewotICAgICAgICBBU1NFUlQobV90b3BDYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSA+IG1fdXNl
YWJsZVRvcCk7Ci0gICAgICAgIHNocmluayhtX3VzZWFibGVUb3ApOwotICAgIH0KKyAgICBtX2hv
c3Rab25lU2l6ZUluUmVnaXN0ZXJzID0gaG9zdFpvbmVTaXplIC8gc2l6ZW9mKFJlZ2lzdGVyKTsK
KyAgICBpZiAobV9jb21taXRUb3AgPj0gKG1fZW5kICsgMSkgLSBtX2hvc3Rab25lU2l6ZUluUmVn
aXN0ZXJzKQorICAgICAgICBncm93U2xvd0Nhc2UobV9lbmQgKyAxKTsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoTExJTlRfQ19MT09QKQogCkBAIC0xNzEsNyArMTYxLDcgQEAgdm9pZCBKU1N0YWNrOjpk
aXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKQogUmVnaXN0ZXIqIEpTU3RhY2s6Omxvd0FkZHJlc3Mo
KSBjb25zdAogewogICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdE
b3dud2FyZCgpKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZWdpc3Rlcio+KG1fdm0u
anNTdGFja0xpbWl0KCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4o
bV92bS5zdGFja0xpbWl0KCkpOwogfQogCiBSZWdpc3RlciogSlNTdGFjazo6aGlnaEFkZHJlc3Mo
KSBjb25zdApAQCAtMTk2LDE2ICsxODYsNCBAQCBzaXplX3QgSlNTdGFjazo6Y29tbWl0dGVkQnl0
ZUNvdW50KCkKICNlbmRpZgogfQogCi12b2lkIEpTU3RhY2s6OnVwZGF0ZVN0YWNrTGltaXQoKQot
ewotI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAgaWYgKG1fdm0uaW50ZXJwcmV0ZXItPmlz
SW5FcnJvckhhbmRsaW5nTW9kZSgpKQotICAgICAgICBlbmFibGVFcnJvclN0YWNrUmVzZXJ2ZSgp
OwotICAgIGVsc2UKLSAgICAgICAgZGlzYWJsZUVycm9yU3RhY2tSZXNlcnZlKCk7Ci0jZW5kaWYK
LSAgICBpZiAobV92bS50b3BFbnRyeVNjb3BlKQotICAgICAgICBtX3ZtLnRvcEVudHJ5U2NvcGUt
PnVwZGF0ZVN0YWNrTGltaXRzKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCShyZXZpc2lvbiAxNjE1
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDksIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Myw4ICs4Myw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBlbnN1cmVDYXBhY2l0eUZvcihSZWdpc3Rl
ciogbmV3VG9wT2ZTdGFjayk7CiAKLSAgICAgICAgdm9pZCB1cGRhdGVTdGFja0xpbWl0KCk7Ci0K
ICAgICAgICAgYm9vbCBjb250YWluc0FkZHJlc3MoUmVnaXN0ZXIqIGFkZHJlc3MpIHsgcmV0dXJu
IChsb3dBZGRyZXNzKCkgPD0gYWRkcmVzcyAmJiBhZGRyZXNzIDwgaGlnaEFkZHJlc3MoKSk7IH0K
ICAgICAgICAgc3RhdGljIHNpemVfdCBjb21taXR0ZWRCeXRlQ291bnQoKTsKIApAQCAtMTA5LDYg
KzEwNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVUaHJlYWRpbmcoKTsKIAorICAgICAgICB2b2lkIHNldEhvc3Rab25lU2l6ZShzaXplX3QpOwor
CiAgICAgICAgIENhbGxGcmFtZSogcHVzaEZyYW1lKGNsYXNzIENvZGVCbG9jayosIEpTU2NvcGUq
LCBpbnQgYXJnc0NvdW50LCBKU09iamVjdCogY2FsbGVlKTsKIAogICAgICAgICB2b2lkIHBvcEZy
YW1lKENhbGxGcmFtZSopOwpAQCAtMTY3LDE3ICsxNjcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgc2V0U3RhY2tMaW1pdChSZWdpc3RlciogbmV3VG9wT2ZTdGFjayk7CiAjZW5k
aWYgLy8gRU5BQkxFKExMSU5UX0NfTE9PUCkKIAotICAgICAgICB2b2lkIGVuYWJsZUVycm9yU3Rh
Y2tSZXNlcnZlKCk7Ci0gICAgICAgIHZvaWQgZGlzYWJsZUVycm9yU3RhY2tSZXNlcnZlKCk7Ci0K
ICAgICAgICAgVk0mIG1fdm07CiAgICAgICAgIENhbGxGcmFtZSomIG1fdG9wQ2FsbEZyYW1lOwog
I2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIFJlZ2lzdGVyKiBtX2VuZDsKICAgICAg
ICAgUmVnaXN0ZXIqIG1fY29tbWl0VG9wOwotICAgICAgICBSZWdpc3RlciogbV91c2VhYmxlVG9w
OwogICAgICAgICBQYWdlUmVzZXJ2YXRpb24gbV9yZXNlcnZhdGlvbjsKICAgICAgICAgUmVnaXN0
ZXIqIG1fbGFzdFN0YWNrVG9wOworICAgICAgICBwdHJkaWZmX3QgbV9ob3N0Wm9uZVNpemVJblJl
Z2lzdGVyczsKICNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQogCiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaAkocmV2aXNpb24gMTYxNTMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2tJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgaW5saW5lIGJvb2wgSlNT
dGFjazo6ZW5zdXJlQ2FwYWNpdHlGb3IoUgogICAgIHJldHVybiBncm93KG5ld1RvcE9mU3RhY2sp
OwogI2Vsc2UKICAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93
bndhcmQoKSk7Ci0gICAgcmV0dXJuIG5ld1RvcE9mU3RhY2sgPj0gbV92bS5qc1N0YWNrTGltaXQo
KTsKKyAgICByZXR1cm4gbmV3VG9wT2ZTdGFjayA+PSBtX3ZtLnN0YWNrTGltaXQoKTsKICNlbmRp
ZgogfQogCkBAIC0xNTcsNyArMTU3LDEyIEBAIGlubGluZSB2b2lkIEpTU3RhY2s6OnNocmluayhS
ZWdpc3RlciogbmUKICAgICBpZiAobmV3RW5kID49IG1fZW5kKQogICAgICAgICByZXR1cm47CiAg
ICAgc2V0U3RhY2tMaW1pdChuZXdUb3BPZlN0YWNrKTsKLSAgICBpZiAobV9lbmQgPT0gYmFzZU9m
U3RhY2soKSAmJiAoaGlnaEFkZHJlc3MoKSAtIG1fY29tbWl0VG9wKSA+PSBtYXhFeGNlc3NDYXBh
Y2l0eSkKKyAgICAvLyBOb3RlOiBDbGFuZyBjb21wbGFpbnMgb2YgYW4gdW5yZXNvbHZlZCBsaW5r
YWdlIHRvIG1heEV4Y2Vzc0NhcGFjaXR5IGlmCisgICAgLy8gaW52b2tlIHN0ZDo6bWF4KCkgd2l0
aCBpdCBhcyBhbiBhcmd1bWVudC4gVG8gd29yayBhcm91bmQgdGhpcywgd2UgZmlyc3QKKyAgICAv
LyBhc3NpZ24gdGhlIGNvbnN0YW50IHRvIGEgbG9jYWwgdmFyaWFibGUsIGFuZCB1c2UgdGhlIGxv
Y2FsIGluc3RlYWQuCisgICAgcHRyZGlmZl90IG1heEV4Y2Vzc0NhcGFjaXR5ID0gSlNTdGFjazo6
bWF4RXhjZXNzQ2FwYWNpdHk7CisgICAgcHRyZGlmZl90IG1heEV4Y2Vzc0luUmVnaXN0ZXJzID0g
c3RkOjptYXgobWF4RXhjZXNzQ2FwYWNpdHksIG1faG9zdFpvbmVTaXplSW5SZWdpc3RlcnMpOwor
ICAgIGlmIChtX2VuZCA9PSBiYXNlT2ZTdGFjaygpICYmIChoaWdoQWRkcmVzcygpIC0gbV9jb21t
aXRUb3ApID49IG1heEV4Y2Vzc0luUmVnaXN0ZXJzKQogICAgICAgICByZWxlYXNlRXhjZXNzQ2Fw
YWNpdHkoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmgJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMSAr
NzgsNiBAQCB2b2lkIHJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KFZNJik7CiAKIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBqaXRBbGxvY2F0aW9uR3JhbnVsZSA9IDMyOwogCi1pbmxpbmUgc2l6ZV90IHJv
dW5kVXBBbGxvY2F0aW9uU2l6ZShzaXplX3QgcmVxdWVzdCwgc2l6ZV90IGdyYW51bGFyaXR5KQot
ewotICAgIFJFTEVBU0VfQVNTRVJUKChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
IC0gZ3JhbnVsYXJpdHkpID4gcmVxdWVzdCk7Ci0gICAgCi0gICAgLy8gUm91bmQgdXAgdG8gbmV4
dCBwYWdlIGJvdW5kYXJ5Ci0gICAgc2l6ZV90IHNpemUgPSByZXF1ZXN0ICsgKGdyYW51bGFyaXR5
IC0gMSk7Ci0gICAgc2l6ZSA9IHNpemUgJiB+KGdyYW51bGFyaXR5IC0gMSk7Ci0gICAgQVNTRVJU
KHNpemUgPj0gcmVxdWVzdCk7Ci0gICAgcmV0dXJuIHNpemU7Ci19Ci0KLX0KLQotbmFtZXNwYWNl
IEpTQyB7Ci0KIHR5cGVkZWYgV1RGOjpNZXRhQWxsb2NhdG9ySGFuZGxlIEV4ZWN1dGFibGVNZW1v
cnlIYW5kbGU7CiAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiREZHT1NSRW50cnkuaCIKICNpbmNsdWRlICJERkdX
b3JrbGlzdC5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Nj
b3BlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkpJVC5oIgpAQCAtNzksNyArODAsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092CiAgICAgICAgIGNhbGxlckZyYW1lID0gZXhl
YzsKIAogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlckZyYW1lKTsK
LSAgICBJbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGUgbW9kZShjYWxsZXJGcmFtZSk7Cisg
ICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoKnZtKTsKICAgICB2bS0+dGhyb3dFeGNl
cHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNs
dWRlICJDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiRXJyb3JIYW5kbGlu
Z1Njb3BlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC00NzQsNyArNDc1LDcg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiAKICAgICBleGVjID0gZXhlYy0+
Y2FsbGVyRnJhbWUoKTsKICAgICB2bS50b3BDYWxsRnJhbWUgPSBleGVjOwotICAgIEludGVycHJl
dGVyOjpFcnJvckhhbmRsaW5nTW9kZSBtb2RlKGV4ZWMpOworICAgIEVycm9ySGFuZGxpbmdTY29w
ZSBlcnJvclNjb3BlKHZtKTsKICAgICBDb21tb25TbG93UGF0aHM6OmludGVycHJldGVyVGhyb3dJ
bkNhbGxlcihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogICAgIHBjID0g
cmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsKICAgICBMTElOVF9SRVRVUk5f
VFdPKHBjLCBleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTIxLDIzICsxMjEsNiBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFr
ZUNhbGwpCiAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0ZW1wMiwgMHhiYWQwZGMw
MSkKIAotICAgICMgVGhlIGpzU3RhY2tMaW1pdCB3YXMgcHJldmlvdXNseSBjb21wdXRlZCBpbiBW
TUVudHJ5U2NvcGUgdXNpbmcgYW4KLSAgICAjIGVzdGltYXRlZCBzdGFja1BvaW50ZXJBdFZNRW50
cnkgdmFsdWUuIEFkanVzdCB0aGUganNTdGFja0xpbWl0IGJ5Ci0gICAgIyB0aGUgZGVsdGEgYmV0
d2VlbiB0aGUgYWN0dWFsIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSBhbmQgdGhlIGVzdGltYXRlCi0g
ICAgIyB0aGF0IHdlIHVzZWQgcHJldmlvdXNseS4KLSAgICBtb3ZlIHNwLCB0ZW1wMgotICAgIHN1
YnAgVk06OnN0YWNrUG9pbnRlckF0Vk1FbnRyeVt2bV0sIHRlbXAyLCB0ZW1wMgotICAgIHN1YnAg
Vk06Om1fanNTdGFja0xpbWl0W3ZtXSwgdGVtcDIsIHRlbXAyCi1pZiBDX0xPT1AKLWVsc2UKLSAg
ICBicGFlcSB0ZW1wMiwgVk06Om1fc3RhY2tMaW1pdFt2bV0sIC5ub05lZWRUb0NhcEpTU3RhY2tU
b05hdGl2ZVN0YWNrTGltaXQKLSAgICBsb2FkcCBWTTo6bV9zdGFja0xpbWl0W3ZtXSwgdGVtcDIK
LS5ub05lZWRUb0NhcEpTU3RhY2tUb05hdGl2ZVN0YWNrTGltaXQ6Ci1lbmQKLSAgICBzdG9yZXAg
dGVtcDIsIFZNOjptX2pzU3RhY2tMaW1pdFt2bV0KLSAgICBtb3ZlIHNwLCB0ZW1wMgotICAgIHN0
b3JlcCB0ZW1wMiwgVk06OnN0YWNrUG9pbnRlckF0Vk1FbnRyeVt2bV0KLQogICAgICMgVGhlIHN0
YWNrIGhvc3Qgem9uZSBlbnN1cmVzIHRoYXQgd2UgaGF2ZSBhZGVxdWF0ZSBzcGFjZSBmb3IgdGhl
CiAgICAgIyBWTUVudHJ5U2VudGluZWxGcmFtZS4gUHJvY2VlZCB3aXRoIGFsbG9jYXRpbmcgYW5k
IGluaXRpYWxpemluZyB0aGUKICAgICAjIHNlbnRpbmVsIGZyYW1lLgpAQCAtMTY5LDcgKzE1Miw2
IEBAIGVuZAogICAgICMgdXAgdGhyb3dpbmcgYSBTdGFja092ZXJmbG93RXJyb3IuCiAgICAgZW5k
CiAKLSAgICBzdG9yZXAgMCwgVk06OnN0YWNrUG9pbnRlckF0Vk1FbnRyeVt2bV0KICAgICBjQ2Fs
bDIoX2xsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yLCB2bSwgcHJvdG9DYWxsRnJhbWUp
CiAgICAgY2FsbFRvSmF2YVNjcmlwdEVwaWxvZ3VlKCkKICAgICByZXQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgJKHJldmlzaW9uIDE2MTUzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBQYXJzZXJFcnJvcl9oCiAKICNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJQYXJzZXJUb2tlbnMuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTk1LDcgKzk2LDcgQEAgc3RydWN0IFBhcnNlckVycm9yIHsK
ICAgICAgICAgY2FzZSBFdmFsRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlU3ludGF4
RXJyb3IoZ2xvYmFsT2JqZWN0LCBtX21lc3NhZ2UpOwogICAgICAgICBjYXNlIFN0YWNrT3ZlcmZs
b3c6IHsKLSAgICAgICAgICAgIEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZSBtb2RlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKKyAgICAgICAgICAgIEVycm9ySGFuZGxpbmdTY29w
ZSBlcnJvclNjb3BlKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBPdXRPZk1lbW9yeToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTYxNTMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVQ
cm9maWxpbmcuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmgiCisjaW5j
bHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CkBAIC0xODUsNyArMTg2LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJpdHlD
aGVjawogICAgIGludCBzbG90c1RvQWRkID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9y
KGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNhbGwpOwogICAgIGlmIChz
bG90c1RvQWRkIDwgMCkgewogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKLSAg
ICAgICAgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG1vZGUoZXhlYyk7CisgICAgICAg
IEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKGV4ZWMtPnZtKCkpOwogICAgICAgICBDb21t
b25TbG93UGF0aHM6OmludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICBSRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOwogICAgIH0KQEAgLTE5OCw3ICsx
OTksNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5CiAgICAgaW50
IHNsb3RzVG9BZGQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJnZtLmlu
dGVycHJldGVyLT5zdGFjaygpLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoc2xvdHNUb0Fk
ZCA8IDApIHsKICAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7Ci0gICAgICAgIElu
dGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZSBtb2RlKGV4ZWMpOworICAgICAgICBFcnJvckhh
bmRsaW5nU2NvcGUgZXJyb3JTY29wZShleGVjLT52bSgpKTsKICAgICAgICAgQ29tbW9uU2xvd1Bh
dGhzOjppbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKGV4ZWMpKTsKICAgICAgICAgUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckhhbmRsaW5nU2Nv
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgorCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K0Vycm9ySGFuZGxpbmdTY29wZTo6RXJyb3JIYW5kbGluZ1Njb3BlKFZNJiB2bSkKKyAgICA6IG1f
dm0odm0pCit7CisgICAgaWYgKCFtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSkKKyAgICAgICAg
bV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkgPSB0aGlzOworICAgIHNpemVfdCBuZXdIb3N0Wm9u
ZVNpemUgPSBPcHRpb25zOjplcnJvck1vZGVIb3N0Wm9uZVNpemUoKTsKKyAgICBtX3NhdmVkSG9z
dFpvbmVTaXplID0gbV92bS51cGRhdGVTdGFja0xpbWl0V2l0aEhvc3Rab25lU2l6ZShuZXdIb3N0
Wm9uZVNpemUpOworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgbV92bS5pbnRlcnByZXRl
ci0+c3RhY2soKS5zZXRIb3N0Wm9uZVNpemUobmV3SG9zdFpvbmVTaXplKTsKKyNlbmRpZgorfQor
CitFcnJvckhhbmRsaW5nU2NvcGU6On5FcnJvckhhbmRsaW5nU2NvcGUoKQoreworICAgIGlmICht
X3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9PSB0aGlzKQorICAgICAgICBtX3ZtLnN0YWNrUG9p
bnRlckF0Vk1FbnRyeSA9IG51bGxwdHI7CisgICAgbV92bS51cGRhdGVTdGFja0xpbWl0V2l0aEhv
c3Rab25lU2l6ZShtX3NhdmVkSG9zdFpvbmVTaXplKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQorICAgIG1fdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuc2V0SG9zdFpvbmVTaXplKG1fc2F2ZWRI
b3N0Wm9uZVNpemUpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckhhbmRs
aW5nU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXJyb3JIYW5kbGluZ1Nj
b3BlX2gKKyNkZWZpbmUgRXJyb3JIYW5kbGluZ1Njb3BlX2gKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFZNOworCitjbGFzcyBFcnJvckhhbmRsaW5nU2NvcGUgeworcHVibGljOgorICAgIEpT
X0VYUE9SVF9QUklWQVRFIEVycm9ySGFuZGxpbmdTY29wZShWTSYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIH5FcnJvckhhbmRsaW5nU2NvcGUoKTsKK3ByaXZhdGU6CisgICAgVk0mIG1fdm07Cisg
ICAgc2l6ZV90IG1fc2F2ZWRIb3N0Wm9uZVNpemU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEVycm9ySGFuZGxpbmdTY29wZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiAx
NjE1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Nj
b3BlLmgiCiAjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKQEAgLTE2MCwxNCArMTYxLDE2
IEBAIEpTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXQKIAogSlNPYmplY3Qq
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBJbnRlcnBy
ZXRlcjo6RXJyb3JIYW5kbGluZ01vZGUgbW9kZShleGVjKTsKLSAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2Nv
cGUodm0pOworICAgIHJldHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoZXhlYykpOwogfQogCiBKU09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBJbnRlcnByZXRlcjo6RXJyb3JI
YW5kbGluZ01vZGUgbW9kZShleGVjKTsKLSAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKCZleGVjLT52bSgp
KSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJy
b3JTY29wZSh2bSk7CisgICAgcmV0dXJuIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVRl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZpc2lv
biAxNjE1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTAsNiArMjkwLDEwIEBAIEpTTG9jazo6RHJvcEFsbExvY2tzOjpE
cm9wQWxsTG9ja3MoRXhlY1MKICNpZiBQTEFURk9STShJT1MpCiAgICAgU3BpbkxvY2tIb2xkZXIg
aG9sZGVyKCZzcGluTG9jayk7CiAjZW5kaWYKKyAgICBtX3NhdmVkSG9zdFpvbmVTaXplID0gbV92
bS0+aG9zdFpvbmVTaXplKCk7CisgICAgbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IG1f
dm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKKyAgICBtX3ZtLT5zdGFja1BvaW50ZXJBdFZNRW50
cnkgPSBudWxscHRyOworCiAgICAgaWYgKGFsd2F5c0Ryb3BMb2NrcykKICAgICAgICAgbV9sb2Nr
Q291bnQgPSBtX3ZtLT5hcGlMb2NrKCkuZHJvcEFsbExvY2tzVW5jb25kaXRpb25hbGx5KHNwaW5M
b2NrKTsKICAgICBlbHNlCkBAIC0zMDYsNiArMzEwLDEwIEBAIEpTTG9jazo6RHJvcEFsbExvY2tz
OjpEcm9wQWxsTG9ja3MoVk0qIHYKICNpZiBQTEFURk9STShJT1MpCiAgICAgU3BpbkxvY2tIb2xk
ZXIgaG9sZGVyKCZzcGluTG9jayk7CiAjZW5kaWYKKyAgICBtX3NhdmVkSG9zdFpvbmVTaXplID0g
bV92bS0+aG9zdFpvbmVTaXplKCk7CisgICAgbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9
IG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKKyAgICBtX3ZtLT5zdGFja1BvaW50ZXJBdFZN
RW50cnkgPSBudWxscHRyOworCiAgICAgaWYgKGFsd2F5c0Ryb3BMb2NrcykKICAgICAgICAgbV9s
b2NrQ291bnQgPSBtX3ZtLT5hcGlMb2NrKCkuZHJvcEFsbExvY2tzVW5jb25kaXRpb25hbGx5KHNw
aW5Mb2NrKTsKICAgICBlbHNlCkBAIC0zMjEsNiArMzI5LDkgQEAgSlNMb2NrOjpEcm9wQWxsTG9j
a3M6On5Ecm9wQWxsTG9ja3MoKQogICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2sp
OwogI2VuZGlmCiAgICAgbV92bS0+YXBpTG9jaygpLmdyYWJBbGxMb2NrcyhtX2xvY2tDb3VudCwg
c3BpbkxvY2spOworCisgICAgbV92bS0+c3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gbV9zYXZlZFN0
YWNrUG9pbnRlckF0Vk1FbnRyeTsKKyAgICBtX3ZtLT51cGRhdGVTdGFja0xpbWl0V2l0aEhvc3Ra
b25lU2l6ZShtX3NhdmVkSG9zdFpvbmVTaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gMTYxNTMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMCw2ICsxMTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGludHB0cl90IG1fbG9ja0NvdW50OwogICAgICAgICAgICAgUmVmUHRyPFZN
PiBtX3ZtOworICAgICAgICAgICAgc2l6ZV90IG1fc2F2ZWRIb3N0Wm9uZVNpemU7CisgICAgICAg
ICAgICB2b2lkKiBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5OwogICAgICAgICB9OwogCiAg
ICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJ
KHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsOSBAQCB0eXBlZGVmIE9wdGlvblJhbmdl
IG9wdGlvblJhbmdlOwogICAgIHYoYm9vbCwgdXNlREZHSklULCB0cnVlKSBcCiAgICAgdihib29s
LCB1c2VSZWdFeHBKSVQsIHRydWUpIFwKICAgICBcCi0gICAgdih1bnNpZ25lZCwgbWF4U3RhY2tT
aXplLCA0ICogTUIpIFwKKyAgICB2KHVuc2lnbmVkLCBtYXhQZXJUaHJlYWRTdGFja1VzYWdlLCA0
ICogTUIpIFwKKyAgICB2KHVuc2lnbmVkLCBob3N0Wm9uZVNpemUsIDEyOCAqIEtCKSBcCisgICAg
dih1bnNpZ25lZCwgZXJyb3JNb2RlSG9zdFpvbmVTaXplLCA2NCAqIEtCKSBcCiAgICAgXAogICAg
IHYoYm9vbCwgY3Jhc2hJZkNhbnRBbGxvY2F0ZUpJVE1lbW9yeSwgZmFsc2UpIFwKICAgICBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNjE1MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwMCw4ICsyMDAsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgLCBqc0FycmF5Q2xhc3NJbmZvKEpTQXJyYXk6OmluZm8oKSkKICAgICAsIGpzRmluYWxP
YmplY3RDbGFzc0luZm8oSlNGaW5hbE9iamVjdDo6aW5mbygpKQogICAgICwgc2l6ZU9mTGFzdFNj
cmF0Y2hCdWZmZXIoMCkKLSAgICAsIGZpcnN0RW50cnlTY29wZSgwKQotICAgICwgdG9wRW50cnlT
Y29wZSgwKQorICAgICwgZW50cnlTY29wZSgwKQogICAgICwgbV9lbmFibGVkUHJvZmlsZXIoMCkK
ICAgICAsIG1fcmVnRXhwQ2FjaGUobmV3IFJlZ0V4cENhY2hlKHRoaXMpKQogI2lmIEVOQUJMRShS
RUdFWFBfVFJBQ0lORykKQEAgLTIzMCw3ICsyMjksMTAgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlKQogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVy
KCp0aGlzKTsKICAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygp
OwotICAgIHNldFN0YWNrTGltaXQoc3RhY2sucmVjdXJzaW9uTGltaXQoKSk7CisgICAgdXBkYXRl
U3RhY2tMaW1pdFdpdGhIb3N0Wm9uZVNpemUoT3B0aW9uczo6aG9zdFpvbmVTaXplKCkpOworI2lm
IEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgaW50ZXJwcmV0ZXItPnN0YWNrKCkuc2V0SG9zdFpv
bmVTaXplKE9wdGlvbnM6Omhvc3Rab25lU2l6ZSgpKTsKKyNlbmRpZgogICAgIHNldExhc3RTdGFj
a1RvcChzdGFjay5vcmlnaW4oKSk7CiAKICAgICAvLyBOZWVkIHRvIGJlIGNhcmVmdWwgdG8ga2Vl
cCBldmVyeXRoaW5nIGNvbnNpc3RlbnQgaGVyZQpAQCAtNTUzLDcgKzU1NSw3IEBAIHZvaWQgVk06
OnJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KCkKIHsKICAgICBwcmVwYXJlVG9EaXNjYXJkQ29kZSgp
OwogICAgIAotICAgIGlmIChmaXJzdEVudHJ5U2NvcGUpIHsKKyAgICBpZiAoZW50cnlTY29wZSkg
ewogICAgICAgICBTdGFja1ByZXNlcnZpbmdSZWNvbXBpbGVyIHJlY29tcGlsZXI7CiAgICAgICAg
IEhlYXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZShoZWFwKTsKICAgICAgICAgSGFzaFNl
dDxKU0NlbGwqPiByb290czsKQEAgLTcxMyw2ICs3MTUsMjQgQEAgdm9pZCBWTTo6IGNsZWFyRXhj
ZXB0aW9uU3RhY2soKQogICAgIG1fZXhjZXB0aW9uU3RhY2sgPSBSZWZDb3VudGVkQXJyYXk8U3Rh
Y2tGcmFtZT4oKTsKIH0KIAorc2l6ZV90IFZNOjp1cGRhdGVTdGFja0xpbWl0V2l0aEhvc3Rab25l
U2l6ZShzaXplX3QgaG9zdFpvbmVTaXplKQoreworICAgIHNpemVfdCBvbGRIb3N0Wm9uZVNpemUg
PSBtX2hvc3Rab25lU2l6ZTsKKyAgICBtX2hvc3Rab25lU2l6ZSA9IGhvc3Rab25lU2l6ZTsKKwor
ICAgIHZvaWQqIHN0YWNrTGltaXQ7CisgICAgaWYgKHN0YWNrUG9pbnRlckF0Vk1FbnRyeSkgewor
ICAgICAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkuaXNHcm93aW5nRG93bndhcmQo
KSk7CisgICAgICAgIGNoYXIqIHN0YXJ0T2ZTdGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KHN0YWNrUG9pbnRlckF0Vk1FbnRyeSk7CisgICAgICAgIGNoYXIqIGRlc2lyZWRTdGFja0xpbWl0
ID0gc3RhcnRPZlN0YWNrIC0gT3B0aW9uczo6bWF4UGVyVGhyZWFkU3RhY2tVc2FnZSgpICsgaG9z
dFpvbmVTaXplOworICAgICAgICBzdGFja0xpbWl0ID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCku
cmVjdXJzaW9uTGltaXQoaG9zdFpvbmVTaXplLCBkZXNpcmVkU3RhY2tMaW1pdCk7CisgICAgfSBl
bHNlCisgICAgICAgIHN0YWNrTGltaXQgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5yZWN1cnNp
b25MaW1pdChob3N0Wm9uZVNpemUpOworCisgICAgc2V0U3RhY2tMaW1pdChzdGFja0xpbWl0KTsK
KyAgICByZXR1cm4gb2xkSG9zdFpvbmVTaXplOworfQorCiB2b2lkIHJlbGVhc2VFeGVjdXRhYmxl
TWVtb3J5KFZNJiB2bSkKIHsKICAgICB2bS5yZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzUsMTIg
KzM3NSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
Kik7CiAgICAgICAgIAorICAgICAgICBzaXplX3QgaG9zdFpvbmVTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9ob3N0Wm9uZVNpemU7IH0KKyAgICAgICAgc2l6ZV90IHVwZGF0ZVN0YWNrTGltaXRXaXRo
SG9zdFpvbmVTaXplKHNpemVfdCBob3N0Wm9uZVNpemUpOworCiAgICAgICAgIHZvaWQqKiBhZGRy
ZXNzT2ZKU1N0YWNrTGltaXQoKSB7IHJldHVybiAmbV9qc1N0YWNrTGltaXQ7IH0KKyNpZiBFTkFC
TEUoTExJTlRfQ19MT09QKQogICAgICAgICB2b2lkKiBqc1N0YWNrTGltaXQoKSB7IHJldHVybiBt
X2pzU3RhY2tMaW1pdDsgfQogICAgICAgICB2b2lkIHNldEpTU3RhY2tMaW1pdCh2b2lkKiBsaW1p
dCkgeyBtX2pzU3RhY2tMaW1pdCA9IGxpbWl0OyB9Ci0KKyNlbmRpZgogICAgICAgICB2b2lkKiBz
dGFja0xpbWl0KCkgeyByZXR1cm4gbV9zdGFja0xpbWl0OyB9Ci0gICAgICAgIHZvaWQgc2V0U3Rh
Y2tMaW1pdCh2b2lkKiBsaW1pdCkgeyBtX3N0YWNrTGltaXQgPSBsaW1pdDsgfQorCiAgICAgICAg
IGJvb2wgaXNTYWZlVG9SZWN1cnNlKHNpemVfdCBuZWVkZWRTdGFja0luQnl0ZXMgPSAwKSBjb25z
dAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQod3RmVGhyZWFkRGF0YSgpLnN0YWNrKCku
aXNHcm93aW5nRG93bndhcmQoKSk7CkBAIC00MjcsOCArNDMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgdm9pZCBnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290
cyYpOwogCi0gICAgICAgIFZNRW50cnlTY29wZSogZmlyc3RFbnRyeVNjb3BlOwotICAgICAgICBW
TUVudHJ5U2NvcGUqIHRvcEVudHJ5U2NvcGU7CisgICAgICAgIFZNRW50cnlTY29wZSogZW50cnlT
Y29wZTsKIAogICAgICAgICBIYXNoU2V0PEpTT2JqZWN0Kj4gc3RyaW5nUmVjdXJzaW9uQ2hlY2tW
aXNpdGVkT2JqZWN0czsKIApAQCAtNDk1LDYgKzQ5OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBWTShWTVR5cGUsIEhlYXBUeXBlKTsKICAgICAgICAgc3RhdGljIFZNKiYgc2hhcmVkSW5z
dGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7CisKKyAg
ICAgICAgdm9pZCBzZXRTdGFja0xpbWl0KHZvaWQqIGxpbWl0KSB7IG1fc3RhY2tMaW1pdCA9IGxp
bWl0OyB9CisKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQogICAgICAgICBib29sIG1fY2FuVXNlQXNz
ZW1ibGVyOwogI2VuZGlmCkBAIC01MDcsOCArNTEzLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogI2lm
IEVOQUJMRShHQ19WQUxJREFUSU9OKQogICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1faW5pdGlh
bGl6aW5nT2JqZWN0Q2xhc3M7CiAjZW5kaWYKLSAgICAgICAgdm9pZCogbV9zdGFja0xpbWl0Owot
ICAgICAgICB2b2lkKiBtX2pzU3RhY2tMaW1pdDsKKyAgICAgICAgc2l6ZV90IG1faG9zdFpvbmVT
aXplOworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAgIHN0cnVjdCB7CisgICAgICAg
ICAgICB2b2lkKiBtX3N0YWNrTGltaXQ7CisgICAgICAgICAgICB2b2lkKiBtX2pzU3RhY2tMaW1p
dDsKKyAgICAgICAgfTsKKyNlbHNlCisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIHZvaWQq
IG1fc3RhY2tMaW1pdDsKKyAgICAgICAgICAgIHZvaWQqIG1fanNTdGFja0xpbWl0OworICAgICAg
ICB9OworI2VuZGlmCiAgICAgICAgIHZvaWQqIG1fbGFzdFN0YWNrVG9wOwogICAgICAgICBKU1Zh
bHVlIG1fZXhjZXB0aW9uOwogICAgICAgICBib29sIG1faW5EZWZpbmVPd25Qcm9wZXJ0eTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAko
cmV2aXNpb24gMTYxNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRy
eVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTYzICszNCwzOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIDogbV92bSh2bSkKLSAgICAsIG1fc3RhY2sod3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCkpCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCi0gICAgLCBt
X3ByZXZTdGFja1VzYWdlKDApCi0gICAgLCBtX3ByZXZUb3BFbnRyeVNjb3BlKHZtLnRvcEVudHJ5
U2NvcGUpCi0gICAgLCBtX3ByZXZTdGFja0xpbWl0KHZtLnN0YWNrTGltaXQoKSkKLSNpZiAhRU5B
QkxFKExMSU5UX0NfTE9PUCkKLSAgICAsIG1fcHJldkpTU3RhY2tMaW1pdCh2bS5qc1N0YWNrTGlt
aXQoKSkKLSNlbmRpZgotICAgICwgbV9wcmV2TGFzdFN0YWNrVG9wKHZtLmxhc3RTdGFja1RvcCgp
KQotICAgICwgbV9wcmV2U3RhY2tQb2ludGVyQXRWTUVudHJ5KHZtLnN0YWNrUG9pbnRlckF0Vk1F
bnRyeSkKLSAgICAsIG1fcHJldlRvcENhbGxGcmFtZSh2bS50b3BDYWxsRnJhbWUpCiB7CiAgICAg
QVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwotICAg
IEFTU0VSVCghdm0udG9wQ2FsbEZyYW1lIHx8IGN1cnJlbnRTdGFja1BvaW50ZXIoKSA8PSByZWlu
dGVycHJldF9jYXN0PGNoYXIqPih2bS50b3BDYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSkpOwotCi0g
ICAgLy8gU3RlcCAxOiBDb21wdXRlIHRoZSBzdGFjayB1c2FnZSBvZiB0aGUgbGFzdCBWTSBlbnRy
eSBiZWZvcmUgd2UgaW5zdGFsbAotICAgIC8vIHRoZSBjdXJyZW50IGVudHJ5IHNjb3BlIGJlbG93
LgotICAgIGlmICh2bS50b3BFbnRyeVNjb3BlKSB7Ci0gICAgICAgIGNoYXIqIHRvcE9mU3RhY2sg
PSByZWludGVycHJldF9jYXN0PGNoYXIqPih2bS50b3BDYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7
Ci0gICAgICAgIG1fcHJldlN0YWNrVXNhZ2UgPSB2bS50b3BFbnRyeVNjb3BlLT5zdGFja1VzYWdl
Rm9yKHRvcE9mU3RhY2spOwotICAgIH0KLQotICAgIC8vIFN0ZXAgMjogSW5zdGFsbCB0aGUgY3Vy
cmVudCBlbnRyeSBzY29wZS4KLSAgICBpZiAoIXZtLmZpcnN0RW50cnlTY29wZSkgeworICAgIGlm
ICghdm0uZW50cnlTY29wZSkgewogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAgICAgICAgIGlmIChF
eGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkpCiAgICAgICAgICAgICB2
bS5oZWFwLmRlbGV0ZUFsbENvbXBpbGVkQ29kZSgpOwogI2VuZGlmCi0gICAgICAgIHZtLmZpcnN0
RW50cnlTY29wZSA9IHRoaXM7CisgICAgICAgIHZtLmVudHJ5U2NvcGUgPSB0aGlzOwogCiAgICAg
ICAgIC8vIFJlc2V0IHRoZSBkYXRlIGNhY2hlIGJldHdlZW4gSlMgaW52b2NhdGlvbnMgdG8gZm9y
Y2UgdGhlIFZNIHRvCiAgICAgICAgIC8vIG9ic2VydmUgdGltZSB4b25lIGNoYW5nZXMuCiAgICAg
ICAgIHZtLnJlc2V0RGF0ZUNhY2hlKCk7CiAgICAgfQotICAgIHZtLnN0YWNrUG9pbnRlckF0Vk1F
bnRyeSA9IDA7Ci0gICAgdm0udG9wRW50cnlTY29wZSA9IHRoaXM7CisKKyAgICBpZiAoIXZtLnN0
YWNrUG9pbnRlckF0Vk1FbnRyeSkgeworICAgICAgICB2bS5zdGFja1BvaW50ZXJBdFZNRW50cnkg
PSB0aGlzOworICAgICAgICBtX3NhdmVkSG9zdFpvbmVTaXplID0gdm0udXBkYXRlU3RhY2tMaW1p
dFdpdGhIb3N0Wm9uZVNpemUoT3B0aW9uczo6aG9zdFpvbmVTaXplKCkpOworICAgIH0KIAogICAg
IC8vIENsZWFyIHRoZSBjYXB0dXJlZCBleGNlcHRpb24gc3RhY2sgYmV0d2VlbiBlbnRyaWVzCiAg
ICAgdm0uY2xlYXJFeGNlcHRpb25TdGFjaygpOwotCi0gICAgdm0uc2V0TGFzdFN0YWNrVG9wKG1f
c3RhY2sub3JpZ2luKCkpOwotCi0gICAgLy8gU3RlcCAzOiBDb21wdXRlIHRoZSBzdGFjayBsaW1p
dCB1c2luZyB0aGUgaW5zdGFsbGVkIGVudHJ5IHNjb3BlLgotICAgIHVwZGF0ZVN0YWNrTGltaXRz
KCk7CiB9CiAKIFZNRW50cnlTY29wZTo6flZNRW50cnlTY29wZSgpCiB7Ci0gICAgaWYgKG1fdm0u
Zmlyc3RFbnRyeVNjb3BlID09IHRoaXMpCi0gICAgICAgIG1fdm0uZmlyc3RFbnRyeVNjb3BlID0g
bnVsbHB0cjsKLSAgICBtX3ZtLnRvcEVudHJ5U2NvcGUgPSBtX3ByZXZUb3BFbnRyeVNjb3BlOwot
ICAgIG1fdm0uc2V0U3RhY2tMaW1pdChtX3ByZXZTdGFja0xpbWl0KTsKLSNpZiAhRU5BQkxFKExM
SU5UX0NfTE9PUCkKLSAgICBtX3ZtLnNldEpTU3RhY2tMaW1pdChtX3ByZXZKU1N0YWNrTGltaXQp
OwotI2VuZGlmCi0gICAgbV92bS5zZXRMYXN0U3RhY2tUb3AobV9wcmV2TGFzdFN0YWNrVG9wKTsK
LSAgICBtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IG1fcHJldlN0YWNrUG9pbnRlckF0Vk1F
bnRyeTsKLSAgICBtX3ZtLnRvcENhbGxGcmFtZSA9IG1fcHJldlRvcENhbGxGcmFtZTsKLX0KLQot
c2l6ZV90IFZNRW50cnlTY29wZTo6c3RhY2tVc2FnZUZvcihjaGFyKiB0b3BPZlN0YWNrKSBjb25z
dAotewotICAgIHNpemVfdCBjdXJyZW50U3RhY2tVc2FnZSA9IDA7Ci0gICAgQVNTRVJUKG1fdm0u
c3RhY2tQb2ludGVyQXRWTUVudHJ5KTsKLSAgICBjaGFyKiBzdGFydE9mU3RhY2sgPSByZWludGVy
cHJldF9jYXN0PGNoYXIqPihtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSk7Ci0gICAgQVNTRVJU
KHRvcE9mU3RhY2sgPD0gc3RhcnRPZlN0YWNrKTsKLSAgICBjdXJyZW50U3RhY2tVc2FnZSA9IHN0
YXJ0T2ZTdGFjayAtIHRvcE9mU3RhY2s7Ci0KLSAgICBBU1NFUlQoT3B0aW9uczo6bWF4U3RhY2tT
aXplKCkgPj0gbV9wcmV2U3RhY2tVc2FnZSArIGN1cnJlbnRTdGFja1VzYWdlKTsKLSAgICByZXR1
cm4gbV9wcmV2U3RhY2tVc2FnZSArIGN1cnJlbnRTdGFja1VzYWdlOwotfQotCi12b2lkIFZNRW50
cnlTY29wZTo6dXBkYXRlU3RhY2tMaW1pdHMoKQotewotICAgIEFTU0VSVCh3dGZUaHJlYWREYXRh
KCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKLSAgICBjaGFyKiB0b3BPZlN0YWNrID0g
Y3VycmVudFN0YWNrUG9pbnRlcigpOwotCi0jaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAg
Y2hhciogdG9wT2ZKU1N0YWNrID0gbV92bS50b3BDYWxsRnJhbWUgPyByZWludGVycHJldF9jYXN0
PGNoYXIqPihtX3ZtLnRvcENhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpKSA6IHRvcE9mU3RhY2s7Ci0K
LSAgICAvLyBJZiB3ZSBoYXZlIG5vdCByZS1lbnRlcmVkIHRoZSBWTSB5ZXQgdmlhIGNhbGxUb0ph
dmFTY3JpcHQgLyBjYWxsVG9OYXRpdmVGdW5jdGlvbiwKLSAgICAvLyB0aGVuIHN0YWNrUG9pbnRl
ckF0Vk1FbnRyeSB3aWxsIG5vdCBoYXZlIGJlZW4gc2V0IHVwIHlldC4gSW5zdGVhZCwgd2UnbGwK
LSAgICAvLyBjb21wdXRlIHRoZSBzdGFjayBsaW1pdCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB0
b3BPZkpTU3RhY2sgKGFzIGFuIGVzdGltYXRlCi0gICAgLy8gb2Ygc3RhY2tQb2ludGVyQXRWTUVu
dHJ5KS4gV2hlbiB3ZSBlbnRlciBjYWxsVG9KYXZhU2NyaXB0IGxhdGVyLCB3ZSdsbCBhZGp1c3QK
LSAgICAvLyB0aGUgc3RhY2sgbGltaXQgd2l0aCB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgYWN0dWFs
IHN0YWNrUG9pbnRlckF0Vk1FbnRyeSBhbmQKLSAgICAvLyB0aGUgZXN0aW1hdGUgdmFsdWUgdGhh
dCB3ZSB1c2UgaGVyZS4KLSAgICBpZiAoIW1fdm0uc3RhY2tQb2ludGVyQXRWTUVudHJ5KQotICAg
ICAgICBtX3ZtLnN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IHRvcE9mSlNTdGFjazsKLQotICAgIHZv
aWQqIGpzU3RhY2tMaW1pdCA9IG1fc3RhY2sucmVjdXJzaW9uTGltaXQocmVxdWlyZWRDYXBhY2l0
eSh0b3BPZkpTU3RhY2ssIEpTU3RhY2tDYXBhY2l0eSkpOwotI2lmbmRlZiBOREVCVUcKLSAgICBj
aGFyKiBzdGFydE9mU3RhY2sgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3ZtLnN0YWNrUG9p
bnRlckF0Vk1FbnRyeSk7Ci0gICAgY2hhciogc3RhY2tMaW1pdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGpzU3RhY2tMaW1pdCk7Ci0gICAgQVNTRVJUKG1fcHJldlN0YWNrVXNhZ2UgKyAoc3Rh
cnRPZlN0YWNrIC0gc3RhY2tMaW1pdCkgPD0gT3B0aW9uczo6bWF4U3RhY2tTaXplKCkpOwotI2Vu
ZGlmCi0gICAgbV92bS5zZXRKU1N0YWNrTGltaXQoanNTdGFja0xpbWl0KTsKLQotICAgIC8vIFNv
bWUgc2FuaXR5IGNoZWNrcyBmb3Igb3VyIHBvaW50ZXJzIGludG8gdGhlIHN0YWNrOgotICAgIEFT
U0VSVChtX3ZtLmludGVycHJldGVyLT5zdGFjaygpLmNvbnRhaW5zQWRkcmVzcyhyZWludGVycHJl
dF9jYXN0PFJlZ2lzdGVyKj4obV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkpKSk7Ci0gICAgQVNT
RVJUKG1fdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuY29udGFpbnNBZGRyZXNzKHJlaW50ZXJwcmV0
X2Nhc3Q8UmVnaXN0ZXIqPih0b3BPZkpTU3RhY2spKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRTdGFj
a1BvaW50ZXIoKSA8PSB0b3BPZkpTU3RhY2spOwotICAgIEFTU0VSVCh0b3BPZkpTU3RhY2sgPD0g
bV92bS5zdGFja1BvaW50ZXJBdFZNRW50cnkpOwotI2VuZGlmIC8vICFFTkFCTEUoTExJTlRfQ19M
T09QKQotCi0gICAgdm9pZCogbmF0aXZlU3RhY2tMaW1pdCA9IG1fc3RhY2sucmVjdXJzaW9uTGlt
aXQocmVxdWlyZWRDYXBhY2l0eSh0b3BPZlN0YWNrLCBOYXRpdmVTdGFja0NhcGFjaXR5KSk7Ci0g
ICAgbV92bS5zZXRTdGFja0xpbWl0KG5hdGl2ZVN0YWNrTGltaXQpOwotfQotCi1jaGFyKiBWTUVu
dHJ5U2NvcGU6OmN1cnJlbnRTdGFja1BvaW50ZXIoKSBjb25zdAotewotICAgIGNoYXIqIHA7Ci0j
aWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKLSAgICBwID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bV92bS50b3BDYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7Ci0jZWxzZQotICAgIHAgPSByZWludGVy
cHJldF9jYXN0PGNoYXIqPigmcCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcDsKLX0KLQotc2l6ZV90
IFZNRW50cnlTY29wZTo6cmVxdWlyZWRDYXBhY2l0eShjaGFyKiB0b3BPZlN0YWNrLCBDYXBhY2l0
eVR5cGUgdHlwZSkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9zdGFjay5pc0dyb3dpbmdEb3dud2Fy
ZCgpKTsKLQotICAgIHNpemVfdCBleGNlc3NDU3RhY2tTaXplID0gMDsKLSNpZiAhRU5BQkxFKExM
SU5UX0NfTE9PUCkKLSAgICBpZiAodHlwZSA9PSBKU1N0YWNrQ2FwYWNpdHkpIHsKLSAgICAgICAg
QVNTRVJUKE9wdGlvbnM6Om1heFN0YWNrU2l6ZSgpID49IHN0YWNrVXNhZ2VGb3IodG9wT2ZTdGFj
aykpOwotICAgICAgICBzaXplX3QgYXZhaWxhYmxlSlNTdGFjayA9IE9wdGlvbnM6Om1heFN0YWNr
U2l6ZSgpIC0gc3RhY2tVc2FnZUZvcih0b3BPZlN0YWNrKTsKLQotICAgICAgICBjaGFyKiBib3R0
b21PZlN0YWNrID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9zdGFjay5vcmlnaW4oKSk7Ci0g
ICAgICAgIHNpemVfdCBhdmFpbGFibGVDU3RhY2sgPSBtX3N0YWNrLnNpemUoKSAtIChib3R0b21P
ZlN0YWNrIC0gdG9wT2ZTdGFjayk7Ci0gICAgICAgIGlmIChhdmFpbGFibGVDU3RhY2sgPiBhdmFp
bGFibGVKU1N0YWNrKQotICAgICAgICAgICAgZXhjZXNzQ1N0YWNrU2l6ZSA9IGF2YWlsYWJsZUNT
dGFjayAtIGF2YWlsYWJsZUpTU3RhY2s7CisgICAgaWYgKG1fdm0uZW50cnlTY29wZSA9PSB0aGlz
KQorICAgICAgICBtX3ZtLmVudHJ5U2NvcGUgPSBudWxscHRyOworICAgIGlmIChtX3ZtLnN0YWNr
UG9pbnRlckF0Vk1FbnRyeSA9PSB0aGlzKSB7CisgICAgICAgIG1fdm0uc3RhY2tQb2ludGVyQXRW
TUVudHJ5ID0gbnVsbHB0cjsKKyAgICAgICAgbV92bS51cGRhdGVTdGFja0xpbWl0V2l0aEhvc3Ra
b25lU2l6ZShtX3NhdmVkSG9zdFpvbmVTaXplKTsKICAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTSh0b3BPZlN0YWNrKTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgQVNTRVJUKHR5
cGUgPT0gTmF0aXZlU3RhY2tDYXBhY2l0eSk7Ci0jZW5kaWYKLQotICAgIC8vIFdlIHJlcXVpcmUg
YSBzbWFsbGVyIHN0YWNrIGJ1ZGdldCBmb3IgdGhlIGVycm9yIHN0YWNrLiBUaGlzIGlzIHRvIGFs
bG93Ci0gICAgLy8gc29tZSBtaW5pbWFsIEpTIGV4ZWN1dGlvbiB0byBwcm9jZWVkIGFuZCBkbyB0
aGUgd29yayBvZiB0aHJvd2luZyBhIHN0YWNrCi0gICAgLy8gb3ZlcmZsb3cgZXJyb3IgaWYgbmVl
ZGVkLiBJbiBjb250cmFzdCwgYXJiaXRyYXJ5IEpTIGNvZGUgd2lsbCByZXF1aXJlIHRoZQotICAg
IC8vIG1vcmUgZ2VuZXJvdXMgc3RhY2sgYnVkZ2V0IGluIG9yZGVyIHRvIHByb2NlZWQuCi0gICAg
Ly8KLSAgICAvLyBUaGVzZSBzaXplcyB3ZXJlIGRlcml2ZWQgZnJvbSB0aGUgc3RhY2sgdXNhZ2Ug
b2YgYSBudW1iZXIgb2Ygc2l0ZXMgd2hlbgotICAgIC8vIGxheW91dCBvY2N1cnMgd2hlbiB3ZSd2
ZSBhbHJlYWR5IGNvbnN1bWVkIG1vc3Qgb2YgdGhlIEMgc3RhY2suCi0gICAgY29uc3Qgc2l6ZV90
IHJlcXVpcmVkU3RhY2sgPSAxMjggKiBLQjsKLSAgICBjb25zdCBzaXplX3QgZXJyb3JNb2RlUmVx
dWlyZWRTdGFjayA9IDY0ICogS0I7Ci0KLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBt
X3ZtLmludGVycHJldGVyOwotICAgIHNpemVfdCByZXF1aXJlZENhcGFjaXR5ID0gaW50ZXJwcmV0
ZXItPmlzSW5FcnJvckhhbmRsaW5nTW9kZSgpID8gZXJyb3JNb2RlUmVxdWlyZWRTdGFjayA6IHJl
cXVpcmVkU3RhY2s7Ci0gICAgcmVxdWlyZWRDYXBhY2l0eSArPSBleGNlc3NDU3RhY2tTaXplOwot
Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9zdGFjay5zaXplKCkgPj0gcmVxdWlyZWRDYXBhY2l0eSk7
Ci0gICAgcmV0dXJuIHJlcXVpcmVkQ2FwYWNpdHk7IAogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
LQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJ
KHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50
cnlTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCwzMyArNDAsMTMgQEAgcHVibGljOgogICAgIEpT
X0VYUE9SVF9QUklWQVRFIFZNRW50cnlTY29wZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgflZNRW50cnlTY29wZSgpOwogCi0gICAgdm9pZCB1cGRhdGVTdGFj
a0xpbWl0cygpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBtX2dsb2JhbE9iamVjdDsgfQogCiBwcml2YXRlOgotICAgIGVudW0gQ2FwYWNpdHlUeXBl
IHsKLSAgICAgICAgSlNTdGFja0NhcGFjaXR5LAotICAgICAgICBOYXRpdmVTdGFja0NhcGFjaXR5
LAotICAgIH07Ci0gICAgc2l6ZV90IHJlcXVpcmVkQ2FwYWNpdHkoY2hhciogdG9wT2ZTdGFjaywg
Q2FwYWNpdHlUeXBlKSBjb25zdDsKLSAgICBjaGFyKiBjdXJyZW50U3RhY2tQb2ludGVyKCkgY29u
c3Q7Ci0gICAgc2l6ZV90IHN0YWNrVXNhZ2VGb3IoY2hhciogdG9wT2ZTdGFjaykgY29uc3Q7Ci0K
ICAgICBWTSYgbV92bTsKICAgICBTdGFja1N0YXRzOjpDaGVja1BvaW50IG1fc3RhY2tDaGVja1Bv
aW50OwotICAgIFN0YWNrQm91bmRzIG1fc3RhY2s7CiAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xv
YmFsT2JqZWN0OwotICAgIHNpemVfdCBtX3ByZXZTdGFja1VzYWdlOwotCi0gICAgLy8gVGhlIGZv
bGxvd2luZyBwb2ludGVycyBtYXkgcG9pbnQgdG8gYSBkaWZmZXJlbnQgdGhyZWFkJ3Mgc3RhY2su
Ci0gICAgVk1FbnRyeVNjb3BlKiBtX3ByZXZUb3BFbnRyeVNjb3BlOwotICAgIHZvaWQqIG1fcHJl
dlN0YWNrTGltaXQ7Ci0jaWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCi0gICAgdm9pZCogbV9wcmV2
SlNTdGFja0xpbWl0OwotI2VuZGlmCi0gICAgdm9pZCogbV9wcmV2TGFzdFN0YWNrVG9wOwotICAg
IHZvaWQqIG1fcHJldlN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKLSAgICBFeGVjU3RhdGUqIG1fcHJl
dlRvcENhbGxGcmFtZTsKKyAgICBzaXplX3QgbV9zYXZlZEhvc3Rab25lU2l6ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTUzMSkKKysrIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMDEtMDggIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIENTdGFjazogTmVlZCBhIHNl
cGFyYXRlIHN0YWNrIGxpbWl0IGZvciB0aGUgSlMgc3RhY2sgYW5kIHRoZSBDIHN0YWNrLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MzIwLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1N0YWNr
Qm91bmRzLmg6CisgICAgICAgIChXVEY6OlN0YWNrQm91bmRzOjpyZWN1cnNpb25MaW1pdCk6Cisg
ICAgICAgIC0gUHJldmlvdXNseSwgU3RhY2tCb3VuZHM6OnJlY3Vyc2lvbkxpbWl0KCkgb25seSB0
YWtlcyBhIGhvc3Qgem9uZSBzaXplCisgICAgICAgICAgd2hpY2ggaXQgdXNlcyB0byBjb21wdXRl
IHRoZSBjbGllbnQncyBkZXNpcmVkIHN0YWNrIGxpbWl0LiBOb3csIHRoZXJlJ3MKKyAgICAgICAg
ICBhbiBhbHRlcm5hdGUgdmVyc2lvbiB0aGF0IGFsc28gYWxsb3dzIHRoZSBjbGllbnQgdG8gZXhw
bGljaXRseSBzcGVjaWZ5CisgICAgICAgICAgaXRzIGRlc2lyZWQgc3RhY2sgbGltaXQgaW4gYWRk
aXRpb24gdG8gaXRzIGhvc3Rab25lU2l6ZSByZXF1aXJlbWVudC4KKyAgICAgICAgICBJbiBib3Ro
IGNhc2VzLCBTdGFja0JvdW5kczo6cmVjdXJzaW9uTGltaXQoKSB3aWxsIGNhcCB0aGUgbGltaXQg
KHdpdGgKKyAgICAgICAgICBhbGxvd2FuY2UgZm9yIHRoZSBob3N0Wm9uZVNpemUpIHRvIGJlIHdp
dGhpbiBpdHMgYm91bmRzLCBhbmQgcmV0dXJuIHRoZQorICAgICAgICAgIGNhcHBlZCBsaW1pdC4K
KwogMjAxNC0wMS0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IE1lcmdlIHRydW5rIHIxNjEzNjQuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgJKHJldmlzaW9uIDE2
MTUzMSkKKysrIFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDggQEAKICNpZm5kZWYgU3RhY2tCb3VuZHNfaAogI2RlZmluZSBTdGFja0JvdW5k
c19oCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBT
dGFja0JvdW5kcyB7CkBAIC02Nyw2ICs2OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgLSBtaW5BdmFpbGFibGVEZWx0YTsKICAgICB9CiAK
KyAgICB2b2lkKiByZWN1cnNpb25MaW1pdChzaXplX3QgaG9zdFpvbmVTaXplLCB2b2lkKiBkZXNp
cmVkTGltaXQpIGNvbnN0CisgICAgeworICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CisgICAg
ICAgIGlmIChpc0dyb3dpbmdEb3dud2FyZCgpKSB7CisgICAgICAgICAgICBjaGFyKiBlbmRPZlN0
YWNrV2l0aEhvc3Rab25lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9ib3VuZCkgKyBob3N0
Wm9uZVNpemU7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoZGVzaXJlZExpbWl0LCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihlbmRPZlN0YWNrV2l0aEhvc3Rab25lKSk7CisgICAgICAgIH0K
KyAgICAgICAgY2hhciogZW5kT2ZTdGFja1dpdGhIb3N0Wm9uZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KG1fYm91bmQpIC0gaG9zdFpvbmVTaXplOworICAgICAgICByZXR1cm4gc3RkOjptaW4o
ZGVzaXJlZExpbWl0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZlN0YWNrV2l0aEhvc3Ra
b25lKSk7CisgICAgfQorCiAgICAgYm9vbCBpc0dyb3dpbmdEb3dud2FyZCgpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlQobV9vcmlnaW4gJiYgbV9ib3VuZCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMS0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ1N0YWNrOiBOZWVkIGEgc2VwYXJhdGUgc3RhY2sgbGltaXQgZm9y
IHRoZSBKUyBzdGFjayBhbmQgdGhlIEMgc3RhY2suCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjAuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuaDogQWRkZWQuCisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAg
ICAgIC0gVXBkYXRlZCB0byB1c2UgRXJyb3JIYW5kbGluZ1Njb3BlIGluc3RlYWQgb2YgSW50ZXJw
cmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlLgorCiAyMDEzLTEyLTA2ICBMYXN6bG8gVmlkYWNzICA8
bGFjQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBEZWZpbmUgU0hBMSBoYXNoIHNpemUgaW4g
U0hBMS5oIGFuZCB1c2UgaXQgYXQgdmFyaW91cyBwbGFjZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvRXJyb3JIYW5k
bGluZ1Njb3BlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9FcnJvckhhbmRsaW5nU2NvcGVfaAorI2RlZmlu
ZSBXZWJDb3JlX0ZXRF9FcnJvckhhbmRsaW5nU2NvcGVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Vycm9ySGFuZGxpbmdTY29wZS5oPgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2MTUzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NTkxLDYgKzE4NTkxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcQ29uc3RydWN0RGF0YS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxEYXRlSW5zdGFuY2Uu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRp
bWVcRXJyb3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFk
ZXJzXHJ1bnRpbWVcRXJyb3JIYW5kbGluZ1Njb3BlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEVycm9yUHJvdG90eXBlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEV4Y2Vw
dGlvbkhlbHBlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXHJ1bnRpbWVcRXhlY3V0YWJsZS5oIiAvPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNp
b24gMTYxNTMxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYzNCw2ICsxMjYzNCw5IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEVycm9yLmgi
PgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVy
c1xydW50aW1lXEVycm9ySGFuZGxpbmdTY29wZS5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGlu
Z0hlYWRlcnNccnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxFcnJvclByb3RvdHlwZS5o
Ij4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNccnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwCShyZXZpc2lvbiAxNjE1MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0RhdGVJ
bnN0YW5jZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0Vycm9ySGFuZGxpbmdTY29wZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CkBAIC0xNDksNyArMTUwLDcgQEAgdm9pZCByZXBvcnRFeGNlcHRpb24oRXhlY1N0
YXRlKiBleGVjLCBKUwogICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhj
ZXB0aW9uKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxp
bmdNb2RlIG1vZGUoZXhlYyk7CisgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoZXhl
Yy0+dm0oKSk7CiAKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrRnJvbUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb24sIFNjcmlwdENhbGxT
dGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSkpOwogICAgIGV4ZWMtPmNsZWFyRXhjZXB0
aW9uKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjE1MzEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wMS0wOCAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ1N0YWNrOiBOZWVkIGEgc2VwYXJhdGUg
c3RhY2sgbGltaXQgZm9yIHRoZSBKUyBzdGFjayBhbmQgdGhlIEMgc3RhY2suCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYzMjAuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9sYXJnZS1leHByZXNz
aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2xhcmdlLWV4cHJl
c3Npb25zLmpzOgorICAgICAgICAtIENoYW5nZWQgZXhwZWN0ZWQgcmVzdWx0IHRvIHJlZmxlY3Qg
dGhlIG11Y2ggbW9yZSBjb25zdHJhaW5lZCBzdGFjayBzaXplCisgICAgICAgICAgbm93IHRoYXQg
dGhlIEpTIHN0YWNrIGxpbWl0IGFsc28gbGltaXRzIHN0YWNrIHVzYWdlIGJ5IGhvc3QgLyBuYXRp
dmUKKyAgICAgICAgICBmdW5jdGlvbnMuCisKIDIwMTQtMDEtMDYgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBNZXJnZSB0cnVuayByMTYxMDcyLgpJbmRleDogTGF5
b3V0VGVzdHMvanMvbGFyZ2UtZXhwcmVzc2lvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL2xhcmdlLWV4cHJlc3Npb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTYxNTMxKQorKysgTGF5b3V0VGVzdHMvanMvbGFyZ2UtZXhwcmVzc2lvbnMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBCiAKIFBBU1MgZXZhbChyZXBlYXRlZEV4cHJlc3Npb24oImxldHRlckEi
LCAiKyIsIDEwMCkpIGlzIHJlcGVhdGVkU3RyaW5nKCJhIiwgMTAwKQogUEFTUyBldmFsKHJlcGVh
dGVkRXhwcmVzc2lvbigibGV0dGVyQSIsICIrIiwgMTAwMCkpIGlzIHJlcGVhdGVkU3RyaW5nKCJh
IiwgMTAwMCkKLVBBU1MgZXZhbChyZXBlYXRlZEV4cHJlc3Npb24oImxldHRlckEiLCAiKyIsIDEw
MDAwKSkgaXMgcmVwZWF0ZWRTdHJpbmcoImEiLCAxMDAwMCkKK1BBU1MgZXZhbChyZXBlYXRlZEV4
cHJlc3Npb24oImxldHRlckEiLCAiKyIsIDEwMDAwKSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBP
dXQgb2YgbWVtb3J5LgogUEFTUyBldmFsKHJlcGVhdGVkRXhwcmVzc2lvbigibGV0dGVyQSIsICIr
IiwgMTAwMDAwKSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBPdXQgb2YgbWVtb3J5LgogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvbGFyZ2UtZXhwcmVzc2lvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2xhcmdlLWV4cHJlc3Npb25zLmpzCShyZXZpc2lvbiAxNjE1MzEpCisrKyBM
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvbGFyZ2UtZXhwcmVzc2lvbnMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDUgKzMwLDUgQEAgZnVuY3Rpb24gcmVwZWF0ZWRTdHJpbmcodmFsdWUsIGNv
dW50KQogCiBzaG91bGRCZSgnZXZhbChyZXBlYXRlZEV4cHJlc3Npb24oImxldHRlckEiLCAiKyIs
IDEwMCkpJywgJ3JlcGVhdGVkU3RyaW5nKCJhIiwgMTAwKScpOwogc2hvdWxkQmUoJ2V2YWwocmVw
ZWF0ZWRFeHByZXNzaW9uKCJsZXR0ZXJBIiwgIisiLCAxMDAwKSknLCAncmVwZWF0ZWRTdHJpbmco
ImEiLCAxMDAwKScpOwotc2hvdWxkQmUoJ2V2YWwocmVwZWF0ZWRFeHByZXNzaW9uKCJsZXR0ZXJB
IiwgIisiLCAxMDAwMCkpJywgJ3JlcGVhdGVkU3RyaW5nKCJhIiwgMTAwMDApJyk7CitzaG91bGRU
aHJvdygnZXZhbChyZXBlYXRlZEV4cHJlc3Npb24oImxldHRlckEiLCAiKyIsIDEwMDAwKSknKTsK
IHNob3VsZFRocm93KCdldmFsKHJlcGVhdGVkRXhwcmVzc2lvbigibGV0dGVyQSIsICIrIiwgMTAw
MDAwKSknKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>